From e94dc5a8985e092aba64fb4e54eccc22372b0eb7 Mon Sep 17 00:00:00 2001 From: "rginda%netscape.com" Date: Mon, 5 Nov 2001 21:46:17 +0000 Subject: [PATCH] removing dead code, see mozilla/js2 git-svn-id: svn://10.0.0.236/trunk@107357 18797224-902f-48f8-a5cc-f745e15eee43 --- .../js/js2/cplusplustests/CPlusPlusTests.dsp | 111 - .../js/js2/cplusplustests/CPlusPlusTests.dsw | 29 - .../js/js2/cplusplustests/CPlusPlusTests.mcp | Bin 63384 -> 0 bytes .../js/js2/cplusplustests/cplusplustests.cpp | 129 - mozilla/js/js2/jsc/build/java/makefile | 59 - mozilla/js/js2/jsc/macbuild/build.xml | 2281 ------ mozilla/js/js2/jsc/macbuild/importXML | Bin 5739 -> 0 bytes mozilla/js/js2/jsc/readme | 92 - .../jsc/src/java/generator/JSILGenerator.java | 1506 ---- .../jsc/src/java/input/CharacterClasses.java | 4175 ---------- .../js/js2/jsc/src/java/input/Debugger.java | 93 - .../js2/jsc/src/java/input/InputBuffer.java | 512 -- .../js/js2/jsc/src/java/lexer/Scanner.java | 4825 ------------ mozilla/js/js2/jsc/src/java/lexer/States.java | 419 -- mozilla/js/js2/jsc/src/java/lexer/Token.java | 83 - mozilla/js/js2/jsc/src/java/lexer/Tokens.java | 325 - mozilla/js/js2/jsc/src/java/main/Main.java | 194 - .../js2/jsc/src/java/parser/Attributes.java | 37 - mozilla/js/js2/jsc/src/java/parser/Block.java | 53 - .../js/js2/jsc/src/java/parser/Context.java | 236 - .../js/js2/jsc/src/java/parser/Errors.java | 38 - .../js/js2/jsc/src/java/parser/Evaluator.java | 265 - mozilla/js/js2/jsc/src/java/parser/Init.java | 40 - mozilla/js/js2/jsc/src/java/parser/Node.java | 86 - .../js2/jsc/src/java/parser/NodeFactory.java | 295 - mozilla/js/js2/jsc/src/java/parser/Nodes.java | 2037 ----- .../js/js2/jsc/src/java/parser/Parser.java | 6701 ----------------- mozilla/js/js2/jsc/src/java/parser/Scope.java | 37 - mozilla/js/js2/jsc/src/java/parser/Slot.java | 43 - mozilla/js/js2/jsc/src/java/parser/Store.java | 45 - mozilla/js/js2/jsc/src/java/parser/Type.java | 42 - mozilla/js/js2/jsc/src/java/parser/Value.java | 114 - .../src/java/semantics/BlockEvaluator.java | 984 --- .../src/java/semantics/ConstantEvaluator.java | 2430 ------ .../src/java/semantics/types/ArrayType.java | 78 - .../src/java/semantics/types/BooleanType.java | 48 - .../java/semantics/types/CharacterType.java | 48 - .../src/java/semantics/types/ClassType.java | 75 - .../java/semantics/types/CompletionType.java | 43 - .../java/semantics/types/FunctionType.java | 56 - .../src/java/semantics/types/IntegerType.java | 48 - .../java/semantics/types/NamespaceType.java | 60 - .../src/java/semantics/types/NoneType.java | 48 - .../src/java/semantics/types/NullType.java | 48 - .../src/java/semantics/types/NumberType.java | 65 - .../src/java/semantics/types/ObjectType.java | 231 - .../src/java/semantics/types/RegExpType.java | 63 - .../src/java/semantics/types/StringType.java | 48 - .../src/java/semantics/types/TypeType.java | 61 - .../java/semantics/types/UndefinedType.java | 47 - .../java/semantics/values/BooleanValue.java | 73 - .../java/semantics/values/CharacterValue.java | 66 - .../src/java/semantics/values/CodeValue.java | 62 - .../semantics/values/CompletionValue.java | 55 - .../java/semantics/values/GlobalObject.java | 206 - .../src/java/semantics/values/ListValue.java | 80 - .../src/java/semantics/values/NullValue.java | 43 - .../java/semantics/values/NumberValue.java | 52 - .../java/semantics/values/ObjectValue.java | 223 - .../java/semantics/values/ReferenceValue.java | 207 - .../java/semantics/values/StringValue.java | 48 - .../src/java/semantics/values/TypeValue.java | 192 - .../java/semantics/values/UndefinedValue.java | 46 - .../test/ecma-e4/02.expressions/binary.1.js | 65 - .../ecma-e4/02.expressions/postfixunary.1.js | 37 - .../ecma-e4/02.expressions/prefixunary.1.js | 24 - .../test/ecma-e4/02.expressions/primary.1.js | 26 - .../jsc/test/ecma-e4/03.statements/break.1.js | 16 - .../test/ecma-e4/03.statements/continue.1.js | 16 - .../jsc/test/ecma-e4/03.statements/do.1.js | 23 - .../jsc/test/ecma-e4/03.statements/for.1.js | 18 - .../jsc/test/ecma-e4/03.statements/forin.1.js | 16 - .../jsc/test/ecma-e4/03.statements/if.1.js | 35 - .../test/ecma-e4/03.statements/labeled.1.js | 19 - .../test/ecma-e4/03.statements/return.1.js | 16 - .../test/ecma-e4/03.statements/switch.1.js | 26 - .../jsc/test/ecma-e4/03.statements/throw.1.js | 15 - .../jsc/test/ecma-e4/03.statements/try.1.js | 24 - .../jsc/test/ecma-e4/03.statements/while.1.js | 18 - .../jsc/test/ecma-e4/03.statements/with.1.js | 18 - .../ecma-e4/04.definitions/definition.1.js | 36 - .../ecma-e4/04.definitions/definition.2.js | 19 - .../jsc/test/ecma-e4/07.classes/class.1.js | 25 - .../jsc/test/ecma-e4/09.packages/package.1.js | 29 - .../js2/jsc/test/ecma-e4/11.errors/dom.1.js | 16 - .../js2/jsc/test/ecma-e4/11.errors/error.js | 17 - .../jsc/test/js2/03.statements/include.1.js | 16 - mozilla/js/js2/jsc/test/sanity.js | 20 - mozilla/js/js2/macbuild/GCTest.mcp | Bin 81747 -> 0 bytes mozilla/js/js2/macbuild/JS2.mcp | Bin 184344 -> 0 bytes mozilla/js/js2/macbuild/JS2.prefix | 1 - mozilla/js/js2/macbuild/JS2.xml | 5684 -------------- mozilla/js/js2/macbuild/JS2Debug.prefix | 2 - mozilla/js/js2/macbuild/JS2MPW.prefix | 2 - mozilla/js/js2/macbuild/JS2MPWDebug.prefix | 3 - mozilla/js/js2/macbuild/gc.mcp | Bin 59282 -> 0 bytes mozilla/js/js2/macbuild/gc.o | Bin 206103 -> 0 bytes mozilla/js/js2/macbuild/gc_config.h | 91 - mozilla/js/js2/tests/calls.js | 85 - mozilla/js/js2/tests/class.xml | 81 - mozilla/js/js2/tests/classes.js | 28 - mozilla/js/js2/tests/constructors.js | 22 - mozilla/js/js2/tests/fields.js | 25 - mozilla/js/js2/tests/methods.js | 16 - mozilla/js/js2/tests/statics.js | 61 - mozilla/js/js2/tests/verify.js | 11 - mozilla/js/js2/tools/gencode.pl | 278 - mozilla/js/js2/tools/genmap.pl | 213 - mozilla/js/js2/tools/icode_query.pl | 56 - mozilla/js/js2/tools/jsicodes.pm | 444 -- mozilla/js/js2/winbuild/buildgc.bat | 5 - mozilla/js/js2/winbuild/js2.dsp | 282 - mozilla/js/js2/winbuild/js2.dsw | 29 - 113 files changed, 38745 deletions(-) delete mode 100644 mozilla/js/js2/cplusplustests/CPlusPlusTests.dsp delete mode 100644 mozilla/js/js2/cplusplustests/CPlusPlusTests.dsw delete mode 100644 mozilla/js/js2/cplusplustests/CPlusPlusTests.mcp delete mode 100644 mozilla/js/js2/cplusplustests/cplusplustests.cpp delete mode 100644 mozilla/js/js2/jsc/build/java/makefile delete mode 100644 mozilla/js/js2/jsc/macbuild/build.xml delete mode 100644 mozilla/js/js2/jsc/macbuild/importXML delete mode 100644 mozilla/js/js2/jsc/readme delete mode 100644 mozilla/js/js2/jsc/src/java/generator/JSILGenerator.java delete mode 100644 mozilla/js/js2/jsc/src/java/input/CharacterClasses.java delete mode 100644 mozilla/js/js2/jsc/src/java/input/Debugger.java delete mode 100644 mozilla/js/js2/jsc/src/java/input/InputBuffer.java delete mode 100644 mozilla/js/js2/jsc/src/java/lexer/Scanner.java delete mode 100644 mozilla/js/js2/jsc/src/java/lexer/States.java delete mode 100644 mozilla/js/js2/jsc/src/java/lexer/Token.java delete mode 100644 mozilla/js/js2/jsc/src/java/lexer/Tokens.java delete mode 100644 mozilla/js/js2/jsc/src/java/main/Main.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Attributes.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Block.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Context.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Errors.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Evaluator.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Init.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Node.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/NodeFactory.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Nodes.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Parser.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Scope.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Slot.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Store.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Type.java delete mode 100644 mozilla/js/js2/jsc/src/java/parser/Value.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/BlockEvaluator.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/ConstantEvaluator.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/ArrayType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/BooleanType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/CharacterType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/ClassType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/CompletionType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/FunctionType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/IntegerType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/NamespaceType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/NoneType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/NullType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/NumberType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/ObjectType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/RegExpType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/StringType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/TypeType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/types/UndefinedType.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/BooleanValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/CharacterValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/CodeValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/CompletionValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/GlobalObject.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/ListValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/NullValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/NumberValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/ObjectValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/ReferenceValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/StringValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/TypeValue.java delete mode 100644 mozilla/js/js2/jsc/src/java/semantics/values/UndefinedValue.java delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/02.expressions/binary.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/02.expressions/postfixunary.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/02.expressions/prefixunary.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/02.expressions/primary.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/break.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/continue.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/do.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/for.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/forin.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/if.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/labeled.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/return.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/switch.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/throw.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/try.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/while.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/03.statements/with.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/04.definitions/definition.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/04.definitions/definition.2.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/07.classes/class.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/09.packages/package.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/11.errors/dom.1.js delete mode 100644 mozilla/js/js2/jsc/test/ecma-e4/11.errors/error.js delete mode 100644 mozilla/js/js2/jsc/test/js2/03.statements/include.1.js delete mode 100644 mozilla/js/js2/jsc/test/sanity.js delete mode 100644 mozilla/js/js2/macbuild/GCTest.mcp delete mode 100644 mozilla/js/js2/macbuild/JS2.mcp delete mode 100644 mozilla/js/js2/macbuild/JS2.prefix delete mode 100644 mozilla/js/js2/macbuild/JS2.xml delete mode 100644 mozilla/js/js2/macbuild/JS2Debug.prefix delete mode 100644 mozilla/js/js2/macbuild/JS2MPW.prefix delete mode 100644 mozilla/js/js2/macbuild/JS2MPWDebug.prefix delete mode 100644 mozilla/js/js2/macbuild/gc.mcp delete mode 100644 mozilla/js/js2/macbuild/gc.o delete mode 100644 mozilla/js/js2/macbuild/gc_config.h delete mode 100644 mozilla/js/js2/tests/calls.js delete mode 100644 mozilla/js/js2/tests/class.xml delete mode 100644 mozilla/js/js2/tests/classes.js delete mode 100644 mozilla/js/js2/tests/constructors.js delete mode 100644 mozilla/js/js2/tests/fields.js delete mode 100644 mozilla/js/js2/tests/methods.js delete mode 100644 mozilla/js/js2/tests/statics.js delete mode 100644 mozilla/js/js2/tests/verify.js delete mode 100644 mozilla/js/js2/tools/gencode.pl delete mode 100644 mozilla/js/js2/tools/genmap.pl delete mode 100644 mozilla/js/js2/tools/icode_query.pl delete mode 100644 mozilla/js/js2/tools/jsicodes.pm delete mode 100755 mozilla/js/js2/winbuild/buildgc.bat delete mode 100644 mozilla/js/js2/winbuild/js2.dsp delete mode 100644 mozilla/js/js2/winbuild/js2.dsw diff --git a/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsp b/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsp deleted file mode 100644 index 278e28e3dec..00000000000 --- a/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsp +++ /dev/null @@ -1,111 +0,0 @@ -# Microsoft Developer Studio Project File - Name="CPlusPlusTests" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=CPlusPlusTests - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "CPlusPlusTests.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "CPlusPlusTests.mak" CFG="CPlusPlusTests - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "CPlusPlusTests - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "CPlusPlusTests - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "CPlusPlusTests - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "CPlusPlusTests - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "CPlusPlusTests - Win32 Release" -# Name "CPlusPlusTests - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\cplusplustests.cpp - -!IF "$(CFG)" == "CPlusPlusTests - Win32 Release" - -!ELSEIF "$(CFG)" == "CPlusPlusTests - Win32 Debug" - -# ADD CPP /Ob1 /FR -# SUBTRACT CPP /O /YX - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsw b/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsw deleted file mode 100644 index 144c5e20c51..00000000000 --- a/mozilla/js/js2/cplusplustests/CPlusPlusTests.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "CPlusPlusTests"=.\CPlusPlusTests.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/mozilla/js/js2/cplusplustests/CPlusPlusTests.mcp b/mozilla/js/js2/cplusplustests/CPlusPlusTests.mcp deleted file mode 100644 index fd13dfdc1e2542a4719158178699afa77d7057dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63384 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 LMAlm8MUnnL1J6BB diff --git a/mozilla/js/js2/cplusplustests/cplusplustests.cpp b/mozilla/js/js2/cplusplustests/cplusplustests.cpp deleted file mode 100644 index 41e0542b078..00000000000 --- a/mozilla/js/js2/cplusplustests/cplusplustests.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include -#include -#include -#include - -using namespace std; - -struct Arena { - const char *name; - - Arena(const char *name): name(name) {} -}; - - -void *operator new(size_t size, Arena &arena); -void operator delete(void *p); - -void *operator new(size_t size, Arena &arena) -{ - void *p = malloc(size); - printf("Allocating %d bytes at %p using arena \"%s\"\n", size, p, arena.name); - return p; -} - -#ifndef __MWERKS__ -void operator delete(void *p, Arena &arena) -{ - printf("Deleting object at %p using arena \"%s\"\n", p, arena.name); -} -#endif - - -void operator delete(void *p) -{ - printf("Deleting object at %p\n", p); -} - - -struct C { - int n; - - C(int n, bool bad = false); - ~C(); -}; - -struct Exception { - int num; - - explicit Exception(int n): num(n) {} -}; - - -C::C(int n, bool bad): n(n) -{ - printf("Constructing C #%d at %p\n", n, this); - if (bad) { - printf("Throwing %d; constructor aborted\n", n); - throw Exception(n); - } -} - -C::~C() -{ - printf("Destroying C #%d at %p\n", n, this); -} - - -static void constructorTest1(int n, bool bad) -{ - try { - printf("Calling C(%d,%d)\n", n, (int)bad); - { - C c(n, bad); - printf("We have C #%d\n", c.n); - } - printf("C is out of scope\n"); - } catch (Exception &e) { - printf("Caught exception %d\n", e.num); - } - printf("\n"); -} - - -static void constructorTest2(int n, bool bad) -{ - try { - printf("Calling new C(%d,%d)\n", n, (int)bad); - { - C *c = new C(n, bad); - printf("We have C #%d\n", c->n); - delete c; - } - printf("C is out of scope\n"); - } catch (Exception &e) { - printf("Caught exception %d\n", e.num); - } - printf("\n"); -} - - -static void constructorTest3(int n, bool bad) -{ - try { - printf("Calling new(arena) C(%d,%d)\n", n, (int)bad); - { - Arena arena("My arena"); - C *c = new(arena) C(n, bad); - printf("We have C #%d\n", c->n); - } - printf("C is out of scope\n"); - } catch (Exception &e) { - printf("Caught exception %d\n", e.num); - } - printf("\n"); -} - - -int main() -{ - printf("Beginning constructor tests\n\n"); - constructorTest1(1, false); - constructorTest1(2, true); - constructorTest2(3, false); - constructorTest2(4, true); - constructorTest3(5, false); - constructorTest3(6, true); - printf("Ending constructor tests\n"); - return 0; -} diff --git a/mozilla/js/js2/jsc/build/java/makefile b/mozilla/js/js2/jsc/build/java/makefile deleted file mode 100644 index 25489f881a1..00000000000 --- a/mozilla/js/js2/jsc/build/java/makefile +++ /dev/null @@ -1,59 +0,0 @@ -# Makefile for JSC in Java -# Targets: -# all -- to build all parts. -# input, lexer, parser, semantics, generator -- to build a specfic part. -# sanity -- to run the compiler against a simple script. If things are -# working the compiler will return the value: completion( 0, okay, null ) - - -all: input lexer parser semantics generator main sanity - -main: - javac -d classes -classpath classes ../../src/java/main/*.java - -input: - javac -d classes -classpath classes ../../src/java/input/*.java - -lexer: - javac -d classes -classpath classes ../../src/java/lexer/*.java - -parser: - javac -d classes -classpath classes ../../src/java/parser/*.java - -semantics: - javac -d classes -classpath classes ../../src/java/semantics/*.java ../../src/java/semantics/values/*.java ../../src/java/semantics/types/*.java - -generator: - javac -d classes -classpath classes ../../src/java/generator/*.java - -sanity: - java -classpath classes Main -a ../../test/sanity.js - -testgen: - java -classpath classes Main -d ../../test/ecma-e4/02.expressions/primary.1.js - java -classpath classes Main -d ../../test/ecma-e4/06.functions/function.1.js - -test: - java -classpath classes Main -d ../../test/ecma-e4/02.expressions/primary.1.js - java -classpath classes Main -d ../../test/ecma-e4/02.expressions/prefixunary.1.js - java -classpath classes Main -d ../../test/ecma-e4/02.expressions/postfixunary.1.js - java -classpath classes Main -d ../../test/ecma-e4/02.expressions/binary.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/break.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/continue.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/do.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/for.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/forin.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/if.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/labeled.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/return.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/switch.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/throw.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/try.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/while.1.js - java -classpath classes Main -d ../../test/ecma-e4/03.statements/with.1.js - java -classpath classes Main -d ../../test/ecma-e4/04.definitions/definition.1.js - java -classpath classes Main -d ../../test/ecma-e4/04.definitions/definition.2.js - -test_functions: - java -classpath classes Main -debug -asm ../../test/ecma-e4/06.functions/function.1.js - diff --git a/mozilla/js/js2/jsc/macbuild/build.xml b/mozilla/js/js2/jsc/macbuild/build.xml deleted file mode 100644 index 05cf7015ed9..00000000000 --- a/mozilla/js/js2/jsc/macbuild/build.xml +++ /dev/null @@ -1,2281 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - jsc.jar - - - - UserSourceTrees - - - AlwaysSearchUserPathsfalse - InterpretDOSAndUnixPathsfalse - UserSearchPaths - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path:Extensions:MRJ Libraries:MRJClasses: - PathFormatMacOS - PathRootSystem - - Recursivetrue - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerJava Linker - PreLinker - PostLinker - Targetnamejsc.jar - OutputDirectory - Path:: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathstrue - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeCOŒk - FileExtension - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeClss - FileExtension - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeJjrf - FileExtension.jrf - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.html - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.java - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.mf - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeZIP - FileExtension - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeZipF - FileExtension - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileExtension.au - CompilerJAR Importer - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.class - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.gif - CompilerJAR Importer - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.html - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileExtension.jar - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.java - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.jpeg - CompilerJAR Importer - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.mf - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.properties - CompilerJAR Importer - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.zip - CompilerMW Java - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - - - LogSystemMessagesfalse - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - Remote Debug - 0003000000626A20496D706F1D69E8F01D6B82B000000000000003001E1C8400 - 0000000000000000000000001D69E8F000000000000000000000000000000000 - 0000000000000000000000004C696220496D706F727420783836000000000000 - 00000000000000000000000000000000000000002E646F630000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000050000000000000002E6C6962 - 000000000000000000000000000000000000000000000000000000004C696220 - 496D706F72742078383600000000000000000000000000000000000000000000 - 00000000006F0000000000000000000000000000000000000000000000000000 - 000000004F626A20496D706F7274207838360000000000000000000000000000 - 0000000000000000000000002E6F626A00000000000000000000000000000000 - 0000000000000000000000004F626A20496D706F727420783836000000000000 - 00000000000000000000000000000000000000002E7265730000000000000000 - 000000000000000000000000000000000000000057696E52657320496D706F72 - 7400000000000000000000000000000000000000000000000000000000000000 - 1D6B7EA01000000000AFEEB01E1C84000000000000000000000000001D6B7E60 - 00000000000000000000000000004D505720496D706F72742036384B00000000 - 000000000000000000000000000000000000000000002E70706F620000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000060000000000000002E72 - 7372630000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000006000 - 00004D61634F53204D6572676500000000000000000000000000000000000000 - 000000084150504C000000000000000000000000000000000000000000000000 - 000000000000 - - Auto-target - 00010000 - - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWCodeGen_68K_codesizeSmall - MWCodeGen_68K_structalignmentMC68K - MWCodeGen_68K_fp_modeSANE - MWCodeGen_68K_code680200 - MWCodeGen_68K_profiler0 - MWCodeGen_68K_mpwc0 - MWCodeGen_68K_fourbyteints0 - MWCodeGen_68K_IEEEdoubles0 - MWCodeGen_68K_fardata0 - MWCodeGen_68K_farvtables0 - MWCodeGen_68K_farstrings0 - MWCodeGen_68K_pcrelstrings0 - MWCodeGen_68K_macsbugNew - MWCodeGen_68K_a6frames1 - - - MWDisassembler_68K_showcode1 - MWDisassembler_68K_mix0 - MWDisassembler_68K_nohex0 - MWDisassembler_68K_showdata1 - MWDisassembler_68K_showexceptions1 - MWDisassembler_68K_showsym0 - MWDisassembler_68K_shownames1 - - - GlobalOptimizer_68K_optimizationlevelLevel0 - GlobalOptimizer_68K_optforSpeed - - - MWLinker_68K_linksym1 - MWLinker_68K_symfullpath1 - MWLinker_68K_linksingle0 - MWLinker_68K_fastlink1 - MWLinker_68K_generateMap0 - MWLinker_68K_nolinkwarnings0 - MWLinker_68K_glueintosegone1 - MWLinker_68K_dontdeadstripinitcode0 - - - MWProject_68K_typeApplication - MWProject_68K_outfilea.out - MWProject_68K_symfilename - MWProject_68K_filecreator1061109567 - MWProject_68K_filetype1095782476 - MWProject_68K_size384 - MWProject_68K_flags22720 - MWProject_68K_rsrcheaderStandard - MWProject_68K_rsrcname - MWProject_68K_rsrctype1061109567 - MWProject_68K_rsrcid0 - MWProject_68K_rsrcmulti0 - MWProject_68K_rsrcstore0 - MWProject_68K_rsrcmerge0 - MWProject_68K_rsrcflags0 - MWProject_68K_a40 - MWProject_68K_minsize384 - MWProject_68K_rsrcsegtype0 - MWProject_68K_cfm68kcodegen0 - MWProject_68K_stacksize0 - MWProject_68K_thedebugger0 - MWProject_68K_rsrc_custom0 - MWProject_68K_is_rseg_app0 - MWProject_68K_is_pilot_lib0 - MWProject_68K_pilot_main_entry - - - MWFrontEnd_C_cplusplus0 - MWFrontEnd_C_checkprotos0 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixname - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline0 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma0 - MWWarning_C_warn_emptydecl0 - MWWarning_C_warn_possunwant0 - MWWarning_C_warn_unusedvar0 - MWWarning_C_warn_unusedarg0 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic0 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual0 - MWWarning_C_warn_implicitconv0 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass0 - - - MWCFM68K_exportsNone - MWCFM68K_olddefversion0 - MWCFM68K_oldimpversion0 - MWCFM68K_currentversion0 - MWCFM68K_farthreshold256 - PCFM68K_sharedata0 - MWCFM68K_fragmentname - MWCFM68K_initname - MWCFM68K_mainname__start - MWCFM68K_termname - MWCFM68K_libfolder0 - MWCFM68K_alignmentAlign_2 - - - MWFTP_Post_hostName - MWFTP_Post_username - MWFTP_Post_password35jgbe85pwjei5iwk38ø - MWFTP_Post_remoteDir - MWFTP_Post_ftp_PathVersion0 - MWFTP_Post_ftp_PathType0 - MWFTP_Post_ftp_PathFormat0 - MWFTP_Post_ftp_tree - MWFTP_Post_uploadDir - MWFTP_Post_ftp_port21 - MWFTP_Post_SendBin1 - MWFTP_Post_ShouldLog1 - - - MWCommandLine_Java_clsNameMain - MWCommandLine_Java_argstest - - - MWJava_Language_optimizefalse - MWJava_Language_warnDeprecatedtrue - MWJava_Language_emitMapfalse - MWJava_Language_strictFileNamesfalse - MWJava_Language_strictFileHierarchyfalse - MWJava_Language_1_1_Compatiblefalse - MWJava_Language_emitHeaders0 - MWJava_Language_headerTypeJNINativeHeaders - MWJava_Language_packageFilter - MWJava_Language_genCommentstrue - MWJava_Language_genHeadersfalse - - - MWJava_MRJAppBuilder_outFileMRJApplication - MWJava_MRJAppBuilder_mergefalse - MWJava_MRJAppBuilder_quitMenutrue - MWJava_MRJAppBuilder_growfalse - MWJava_MRJAppBuilder_stdoutTypeConsole - MWJava_MRJAppBuilder_stderrTypeConsole - MWJava_MRJAppBuilder_stdinTypeConsole - MWJava_MRJAppBuilder_appIconPVersion0 - MWJava_MRJAppBuilder_appIconPType0 - MWJava_MRJAppBuilder_appIconPFormat0 - MWJava_MRJAppBuilder_appIconPTree - MWJava_MRJAppBuilder_appIconFile - MWJava_MRJAppBuilder_splashScreenPVersion0 - MWJava_MRJAppBuilder_splashScreenPType0 - MWJava_MRJAppBuilder_splashScreenPFormat0 - MWJava_MRJAppBuilder_splashScreenPTree - MWJava_MRJAppBuilder_splashScreenPICTFile - MWJava_MRJAppBuilder_aboutName - MWJava_MRJAppBuilder_stdoutPVersion0 - MWJava_MRJAppBuilder_stdoutPType0 - MWJava_MRJAppBuilder_stdoutPFormat0 - MWJava_MRJAppBuilder_stdoutPTree - MWJava_MRJAppBuilder_stdoutFile - MWJava_MRJAppBuilder_stdoutAppendfalse - MWJava_MRJAppBuilder_stderrPType0 - MWJava_MRJAppBuilder_stderrPFormat0 - MWJava_MRJAppBuilder_stderrPTree - MWJava_MRJAppBuilder_stderrFile - MWJava_MRJAppBuilder_stderrAppendfalse - MWJava_MRJAppBuilder_stdinPType0 - MWJava_MRJAppBuilder_stdinPFormat0 - MWJava_MRJAppBuilder_stdinPTree - MWJava_MRJAppBuilder_stdinFile - - - MWJava_Output_outputtypeJarFile - MWJava_Output_outfilejsc.jar - MWJava_Output_ftype1514754080 - MWJava_Output_fcreator1297570384 - MWJava_Output_compress0 - MWJava_Output_genManifest0 - MWJava_Output_trunctypeFront - MWJava_Output_deleteClasses0 - MWJava_Output_consoleApp2 - - - MWJava_Proj_projtypeApplication - MWJava_Proj_mainClassNameMain - MWJava_Proj_HTMLAppCreator1145457748 - MWJava_Proj_HTMLAppNameMetrowerks Java - MWJava_Proj_PathVersion1 - MWJava_Proj_PathType0 - MWJava_Proj_PathFormat0 - MWJava_Proj_tree - MWJava_Proj_HTMLAppWin32NameInternet Explorer - MWJava_Proj_compress0 - MWJava_Proj_useVM0 - MWJava_Proj_vmarguments - MWJava_Proj_vmName - - - MWJavaDoc_Proj_Version1 - MWJavaDoc_Proj_Depricated1 - MWJavaDoc_Proj_Author1 - MWJavaDoc_Proj_Index1 - MWJavaDoc_Proj_Tree1 - MWJavaDoc_Proj_SunResolveToSame0 - MWJavaDoc_Proj_Shortnames0 - MWJavaDoc_Proj_Folder0 - MWJavaDoc_Proj_GenerateAPILinks0 - MWJavaDoc_Proj_scopePublic - MWJavaDoc_Proj_fcreator1297303877 - MWJavaDoc_Proj_encodingName - MWJavaDoc_Proj_decodingName - MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - - èP - Wc8 - ‚,@ - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - Packager Panel - 000100003F3F3F3F4150504C1D6B0001006BB8B000000000000006101E1C8400 - 1EC8000001011AD670F81DEC1D6B96D045F00000000000000000000000000000 - 0401000000001AD670F81DEC45D0000000000000000000000000000000000000 - 3800000000001E24A3201E26F058000000000000000000000000000000000000 - 36C8000000011AD670F81DEC46101DEC47001E298F4800000000000000000000 - 3800000000001E24A3C81E298F68000000000000000000000000000000000000 - 000000001DEC464000000000000000000401000100001E26F4201DEC46600000 - 000000000000000000000000000000003800000100001E24A3A81E26F4300000 - 0000000000000000000000000000000000EC46301DEC46900000000000000000 - 0401000100001E26F3681DEC46B0000000000000000000000000000000000000 - 3800000100001E24A3981E26F378000000000000000000000000000000000000 - 1DEC46801DEC46E000000000000000000401000000001E24A3881DEBE4801E24 - A36000000000000000000000000000001DEC46D01DEC47100000000000000000 - 0401000000001E24A3501DEC4730000000000000000000000000000000000000 - 3800000000001E24A3401E2BF910000000000000000000000000000000000000 - 1DEC4770030100000008000000001E2C3900000000000000AEB7000000000000 - 1DEC4790020100000008000000001E242C28000000000000AEC6000000000000 - 1DEC48300401000000081DEC47B000000000000000000000AEDB000000000000 - 1E01000001001E385C101DEC47F01DEC48100000000000000000000000000000 - 0401000000001E385C101DEC47F0000000000000000000000000000000000000 - 3800000000001E24A3F01E26F1B8000000000000000000000000000000000000 - 3200000000001E385C1000000000000000000000000000000000000000000000 - 1DEC4A500401000000081DEC485000000000000000000000AF0C000000000000 - 1EC8000101011E26F3B01DEC48901DEC48B00000000000000000000000000000 - 0401000100001E26F3B01DEC4890000000000001000000000000000000000000 - 3800000100001E24A4001E26F3C0000000000000000000000000000000000000 - 0FC8000000011E297C781DEC48D01DEC49700000000000000000000000000000 - 0401000000001E297C781DEC48F0000000000000000000000000000000000000 - 0F01000000001E24A4201DEC49101DEC49500000000000000000000000000000 - 0401000000001E24A4201DEC4930000000000000000000000000000000000000 - 3800000000001E24A4101E2BF910000000000000000000000000000000000000 - 3200000000001AD6710000000000000000080000000000000000000000000000 - 36C8000000011AD670F81DEC49901DEC4A001E26006800000000000000000000 - 3800000000001E24A4701E26B088000000000000000000000000000000000000 - 000000001DEC49C000000000000000000401000000001E385C101DEC49E00000 - 000000000000000000000000000000003800000000001E24A4501E26F1B80000 - 000000000000000000000000D00F00C01DEC49B01DEC4A100000000000000000 - 0401000000001E26ED581DEC4A30000000000000000000000000000000000000 - 3800000000001E24A4401E2BF910000000000000000000000000000000000000 - 1DEC4C700401000000081DEC4A7000000000000000000000AF20000000000000 - 1EC8000101011E26F4201DEC4AB01DEC4AD00000000000000000000000000000 - 0401000100001E26F4201DEC4AB0000000000000000000000000000000000000 - 3800000100001E24A4801E26F430000000000000000000000000000000000000 - 0FC8000000011E297C781DEC4AF01DEC4B900000000000000000000000000000 - 0401000000001E297C781DEC4B10000000000000000000000000000000000000 - 0F01000000001E24A4A01DEC4B301DEC4B700000000000000000000000000000 - 0401000000001E24A4A01DEC4B50000000000000000000000000000000000000 - 3800000000001E24A4901E2BF910000000000000000000000000000000000000 - 3200000000001AD6710000000000000000080000 - - - - MWCodeGen_PPC_structalignmentMC68K - MWCodeGen_PPC_tracebacktablesNone - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings0 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel0 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeFast - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfilea.out - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size384 - MWProject_PPC_minsize384 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - MWWinRC_prefixname - - - MWCodeGen_X86_processorGeneric - MWCodeGen_X86_alignmentbytes8 - MWCodeGen_X86_exceptionsZeroOverhead - MWCodeGen_X86_extinst_mmx0 - MWCodeGen_X86_extinst_3dnow0 - MWCodeGen_X86_use_mmx_3dnow_convention0 - MWCodeGen_X86_machinecodelisting0 - MWCodeGen_X86_intrinsics0 - MWCodeGen_X86_syminfo0 - MWCodeGen_X86_codeviewinfo1 - MWCodeGen_X86_extinst_cmov_fcomi0 - MWCodeGen_X86_extinst_sse0 - - - PDisasmX86_showHeaderstrue - PDisasmX86_showSymTabtrue - PDisasmX86_showCodetrue - PDisasmX86_showSourcefalse - PDisasmX86_showHextrue - PDisasmX86_showRelocationtrue - PDisasmX86_showCommentsfalse - PDisasmX86_showDebugfalse - PDisasmX86_showExceptionsfalse - PDisasmX86_showDatatrue - PDisasmX86_showRawfalse - PDisasmX86_verbosetrue - - - MWDebugger_X86_Exceptions - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - GlobalOptimizer_X86_optimizationlevelLevel0 - GlobalOptimizer_X86_optforSpeed - - - MWLinker_X86_entrypointusageDefault - MWLinker_X86_entrypoint - MWLinker_X86_subsystemWinGUI - MWLinker_X86_subsysmajorid4 - MWLinker_X86_subsysminorid0 - MWLinker_X86_usrmajorid0 - MWLinker_X86_usrminorid0 - MWLinker_X86_commandfile - MWLinker_X86_generatemap0 - MWLinker_X86_linksym0 - MWLinker_X86_linkCV1 - - - MWProject_X86_typeApplication - MWProject_X86_outfilenoname.exe - MWProject_X86_baseaddress4194304 - MWProject_X86_maxstacksize1024 - MWProject_X86_minstacksize4 - MWProject_X86_size1024 - MWProject_X86_minsize4 - MWProject_X86_importlib - - - - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKClasses.zip - MacOS - Unknown - Debug - - - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKToolsClasses.zip - MacOS - Library - Debug - - - PathRelative - Project - :: - :src:java:generator:JSILGenerator.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:input:CharacterClasses.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:input:Debugger.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:input:InputBuffer.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:lexer:Scanner.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:lexer:States.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:lexer:Token.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:lexer:Tokens.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:main:Main.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:main:Util.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Attributes.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Block.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Context.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Errors.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Evaluator.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Init.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Node.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:NodeFactory.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Nodes.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Parser.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Scope.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Slot.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Type.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:parser:Value.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:BlockEvaluator.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:ConstantEvaluator.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:ArrayType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:BooleanType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:CharacterType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:ClassType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:CompletionType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:FunctionType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:IntegerType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:NamespaceType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:NoneType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:NullType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:NumberType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:ObjectType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:RegExpType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:StringType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:TypeType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:types:UndefinedType.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:BooleanValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:CharacterValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:CodeValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:CompletionValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:GlobalObject.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:ListValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:NullValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:NumberValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:ObjectValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:ReferenceValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:StringValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:TypeValue.java - MacOS - Text - Debug - - - PathRelative - Project - :: - :src:java:semantics:values:UndefinedValue.java - MacOS - Text - Debug - - - - - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKClasses.zip - MacOS - - - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKToolsClasses.zip - MacOS - - - PathRelative - Project - :: - :src:java:generator:JSILGenerator.java - MacOS - - - PathRelative - Project - :: - :src:java:input:CharacterClasses.java - MacOS - - - PathRelative - Project - :: - :src:java:input:Debugger.java - MacOS - - - PathRelative - Project - :: - :src:java:input:InputBuffer.java - MacOS - - - PathRelative - Project - :: - :src:java:lexer:Scanner.java - MacOS - - - PathRelative - Project - :: - :src:java:lexer:States.java - MacOS - - - PathRelative - Project - :: - :src:java:lexer:Token.java - MacOS - - - PathRelative - Project - :: - :src:java:lexer:Tokens.java - MacOS - - - PathRelative - Project - :: - :src:java:main:Main.java - MacOS - - - PathRelative - Project - :: - :src:java:main:Util.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Attributes.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Block.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Context.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Errors.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Evaluator.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Init.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Node.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:NodeFactory.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Nodes.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Parser.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Scope.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Slot.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Type.java - MacOS - - - PathRelative - Project - :: - :src:java:parser:Value.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:BlockEvaluator.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:ConstantEvaluator.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:ArrayType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:BooleanType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:CharacterType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:ClassType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:CompletionType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:FunctionType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:IntegerType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:NamespaceType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:NoneType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:NullType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:NumberType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:ObjectType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:RegExpType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:StringType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:TypeType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:types:UndefinedType.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:BooleanValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:CharacterValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:CodeValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:CompletionValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:GlobalObject.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:ListValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:NullValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:NumberValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:ObjectValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:ReferenceValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:StringValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:TypeValue.java - MacOS - - - PathRelative - Project - :: - :src:java:semantics:values:UndefinedValue.java - MacOS - - - - - - - jsc.jar - - - - Libraries - - jsc.jar - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKClasses.zip - MacOS - - - jsc.jar - PathRelative - System - :Extensions:MRJ Libraries:MRJClasses: - :JDKToolsClasses.zip - MacOS - - - semantics - types - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:ArrayType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:BooleanType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:CharacterType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:ClassType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:CompletionType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:FunctionType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:IntegerType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:NamespaceType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:NoneType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:NullType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:NumberType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:ObjectType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:RegExpType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:StringType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:TypeType.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:types:UndefinedType.java - MacOS - - - values - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:BooleanValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:CharacterValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:CodeValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:CompletionValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:GlobalObject.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:ListValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:NullValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:NumberValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:ObjectValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:ReferenceValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:StringValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:TypeValue.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:values:UndefinedValue.java - MacOS - - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:BlockEvaluator.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:semantics:ConstantEvaluator.java - MacOS - - - parser - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Attributes.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Block.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Context.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Errors.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Evaluator.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Init.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Node.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:NodeFactory.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Nodes.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Parser.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Scope.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Slot.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Type.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:parser:Value.java - MacOS - - - main - - jsc.jar - PathRelative - Project - :: - :src:java:main:Main.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:main:Util.java - MacOS - - - lexer - - jsc.jar - PathRelative - Project - :: - :src:java:lexer:Scanner.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:lexer:States.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:lexer:Token.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:lexer:Tokens.java - MacOS - - - input - - jsc.jar - PathRelative - Project - :: - :src:java:input:CharacterClasses.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:input:Debugger.java - MacOS - - - jsc.jar - PathRelative - Project - :: - :src:java:input:InputBuffer.java - MacOS - - - generator - - jsc.jar - PathRelative - Project - :: - :src:java:generator:JSILGenerator.java - MacOS - - - - - diff --git a/mozilla/js/js2/jsc/macbuild/importXML b/mozilla/js/js2/jsc/macbuild/importXML deleted file mode 100644 index a9289763e42f421c5aa6a759b347645012701e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5739 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 diff --git a/mozilla/js/js2/jsc/readme b/mozilla/js/js2/jsc/readme deleted file mode 100644 index b3a44beb350..00000000000 --- a/mozilla/js/js2/jsc/readme +++ /dev/null @@ -1,92 +0,0 @@ -J S C R E A D M E F I L E -Jeff Dyer, Mountain View Compiler Company -Jan-26-2001 - -OVERVIEW - -JSC (JavaScript Compiler) is a stand-alone front-end implementation -of the JS2 language specification. Its purpose is to demonstrate how -JS2 programs are statically prepared for execution by a JS2 interpreter. -Its output is assembly code that is assembled by the JS engine. - -BUILDING JSC - -Before you start make sure you have a current version of the Java SDK -installed on your system. If it is correctly installed, you can type -'javac' at the command-line and see something like: - - Usage: javac - -followed by a bunch of other documentation text. - -NOTE: I've only tried to build on NT40 using Java2 1.3.0_01. You may -get different results in different environments. - -Go to the directory ./build/java, and run your favorite make -utility, such as: - - make - -If all goes well, the sanity test will run and you will see something -like - - ../../test/sanity.js: 0 errors [120 msec] - -on the last line of the console output. To run more extensive tests, -use the build command: - - make test - -There are also build targets for each of the components (input, lexer, -parser, semantics, and generator) of the compiler. Thus, a useful idiom -is to give 'make' two targets, the component you just modified followed -by the sanity test target like this: - - make parser sanity - -To automatically rebuild the parser and run the sanity test. What's -missing is any kind of dependency rules, so using the root target -always rebuilds everything. This, for the sake of keeping it simple. - - -RUNNING JSC - -From the ./build/java directory, use the following command: - - java -classpath classes Main program.js - -where 'program.js' is the name of the file to compile. JSC will -produce a new file given the name of the original source file -with the suffix '.jsil' appended to it. Errors are written to a -file with the suffix '.err' appended to it. - -CHANGES - -Jan-26-2001 ------------ -Added first cut at xml icode generation. In particular function definitions, -call and binary expressions are implemented. Object and array literals are -also implemented. Many of the tests used for verifying the parser and semantic -analyzer, are not yet working. - -Dec-15-2000 ------------ -Removed dependency on sun.tools packages. - -Dec-1-2000 ----------- -* Original checkin to mozilla.org. -* Updated readme. -* NPL copyright notice added to all source files. - -Nov-30-2000 ------------ -* Folded definition evaluation into constant evaluation since annotated - definitions cannot be evaluated until the constant attribute values - have been computed. Now there is a BlockEvaluator and a ConstantEvaluator. -* Added an error handler to the constant evaluator. -* Simplified the type system. - -Nov-16-2000 ------------ -* Original release. \ No newline at end of file diff --git a/mozilla/js/js2/jsc/src/java/generator/JSILGenerator.java b/mozilla/js/js2/jsc/src/java/generator/JSILGenerator.java deleted file mode 100644 index aaa645b1800..00000000000 --- a/mozilla/js/js2/jsc/src/java/generator/JSILGenerator.java +++ /dev/null @@ -1,1506 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.io.*; -import java.util.*; - -/* - * Generates code for the JSVM. - */ - -public class JSILGenerator extends Evaluator implements Tokens { - - public static boolean debug = false; - - private static PrintStream out; - public static void setOut(String filename) throws Exception { - out = new PrintStream( new FileOutputStream(filename) ); - } - - private boolean doASM; - public JSILGenerator(boolean doASM) { - this.doASM = doASM; - } - - private static void emit(String str) { - if( debug ) { - Debugger.trace("emitln " + str); - } - - if( out!=null ) { - out.print(str); - } - else { - } - } - - private static void emitln(String str) { - if( out!=null ) { - out.println(""); - emit(str); - } - else { - } - } - - private static String opName(int id) { - String name = ""; - switch(id) { - case plus_token: - name = "Add"; - break; - case minus_token: - name = "Subtract"; - break; - case mult_token: - name = "Multiply"; - break; - case div_token: - name = "Divide"; - break; - case modulus_token: - name = "Remainder"; - break; - case leftshift_token: - name = "LeftShift"; - break; - case rightshift_token: - name = "RightShift"; - break; - case unsignedrightshift_token: - name = "LogicalRightShift"; - break; - case bitwiseand_token: - name = "BitwiseAnd"; - break; - case bitwiseor_token: - name = "BitwiseOr"; - break; - case bitwisexor_token: - name = "BitwiseXor"; - break; - case logicaland_token: - name = "LogicalAnd"; - break; - case logicalor_token: - name = "LogicalOr"; - break; - case logicalxor_token: - name = "LogicalXor"; - break; - case lessthan_token: - name = "Less"; - break; - case lessthanorequals_token: - name = "LessOrEqual"; - break; - case equals_token: - name = "Equal"; - break; - case strictequals_token: - name = "Identical"; - break; - default: - break; - } - return name; - } - - - Value evaluate( Context context, Node node ) throws Exception { - String tag = "missing evaluator for " + node.getClass(); emitln(context.getIndent()+tag); return null; - } - - // Expression evaluators - - /* - * This reference - */ - - Value evaluate( Context context, ThisExpressionNode node ) throws Exception { - emitln("this"); - return null; - } - - /* - * Unqualified identifier - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates a dynamic name lookup of an unqualified identifier. - * Identifier nodes that can be statically bound, are converted - * to reference values during constant evaluation, and gen'd as - * static property accesses. - */ - - Value evaluate( Context context, IdentifierNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"LOAD_NAME "+rname+",'"+node.name+"'"); - return null; - } - - /* - * Qualified identifier - * - * STATUS - * Jan-09-2001: Coded - * - * NOTES - * Generates a dynamic name lookup of a qualified identifier. - * Identifier nodes that can be statically bound, are converted - * to reference values during constant evaluation, and gen'd as - * static property accesses. - */ - - Value evaluate( Context context, QualifiedIdentifierNode node ) throws Exception { - if( node.qualifier != null ) { - node.qualifier.evaluate(context,this); - } - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - String qname = Machine.nameRegister(node.qualifier.store); - emitln(context.getIndent()+"LOAD_QNAME "+rname+","+qname+",'"+node.name+"'"); - return null; - } - - /* - * Boolean literal - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates an immediate load of a boolean value. - */ - - Value evaluate( Context context, LiteralBooleanNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"LOAD_BOOLEAN "+rname+",'"+node.value+"'"); - return null; - } - - /* - * Null literal - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates an immediate load of null. - */ - - Value evaluate( Context context, LiteralNullNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"LOAD_NULL "+rname); - return null; - } - - /* - * Number literal - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates an immediate load of a number. - */ - - Value evaluate( Context context, LiteralNumberNode node ) throws Exception { - Debugger.trace("evaluate(LiteralNumber) with node = "+node); - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"LOAD_IMMEDIATE "+rname+","+node.value); - Debugger.trace("evaluate(LiteralNumber) with node = "+node+", store = " + node.store); - return null; - } - - /* - * String literal - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates an immediate load of a string value. - */ - - Value evaluate( Context context, LiteralStringNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"LOAD_STRING "+rname+",'"+node.value+"'"); - return null; - } - - /* - * Regular expression literal - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, LiteralRegExpNode node ) throws Exception { - if( doASM ) { - } else { - String tag = "LiteralRegExp: " + node.value; - emitln(context.getIndent()+tag); - } - return null; - } - - /* - * Unit expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, UnitExpressionNode node ) throws Exception { - if( node.value != null ) { - node.value.evaluate(context,this); - } - if( node.type != null ) { - node.type.evaluate(context,this); - } - return null; - } - - /* - * Parenthesized expression - * - * STATUS - * Jan-09-2001: Coded - * - * NOTES - * Simply evaluates the constituent part. - */ - - Value evaluate( Context context, ParenthesizedExpressionNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Parenthesized list expression - * - * STATUS - * Jan-09-2001: Coded - * - * NOTES - * Simply evaluates the constituent part. - */ - - Value evaluate( Context context, ParenthesizedListExpressionNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Function literal - * - * STATUS - * Not implemented. - * - * NOTES - * Generates the code for an anonymous function nested in - * the lexical scope of its definition. - */ - - Value evaluate( Context context, FunctionExpressionNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"NEW_CLOSURE "+rname+",ICodeModule"); - - /* - if( node.name != null ) { - node.name.evaluate(context,this); - } - if( node.signature != null ) { - node.signature.evaluate(context,this); - } - if( node.body != null ) { - node.body.evaluate(context,this); - } - */ - return null; - } - - /* - * Object literal - * - * STATUS - * Jan-03-2001: Coded - * - * NOTES - * Generates code for object creation and initialization - * to make an object value with the form of the literal. - */ - - Value evaluate( Context context, LiteralObjectNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"NEW_OBJECT "+rname+",'Object'"); - - // for each property in value, init a property in the new object. - - ObjectValue value = (ObjectValue) node.value; - Enumeration k = value.slots.keys(); - Enumeration e = value.slots.elements(); - while(k.hasMoreElements()) { - String tname = Machine.nameRegister(new Store(null,Machine.allocateTempRegister())); - Slot s = (Slot) e.nextElement(); - String p = (String) k.nextElement(); - if(s.value.getType(context)==NumberType.type) { - emitln(context.getIndent()+"LOAD_IMMEDIATE "+tname+","+s.value); - } - else - if(s.value.getType(context)==StringType.type) { - emitln(context.getIndent()+"LOAD_STRING "+tname+",'"+s.value+"'"); - } - emitln(context.getIndent()+"SET_PROP "+rname+",'"+p+"',"+tname); - } - return null; - } - - /* - * Array literal - * - * STATUS - * Jan-09-2001: Coded - * - * NOTES - * Generates code for object creation and initialization - * to make an object value with the form of the literal. - * [Only handles number and string values.] - */ - - Value evaluate( Context context, LiteralArrayNode node ) throws Exception { - node.store = new Store(null,Machine.allocateTempRegister()); - String rname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"NEW_ARRAY "+rname); - - // for each property in value, init a property in the new object. - - if(node.value == null) { - return null; - } - - int p = 0; - ListValue value = (ListValue) node.value; - Enumeration e = value.elements(); - while(e.hasMoreElements()) { - String tname = Machine.nameRegister(new Store(null,Machine.allocateTempRegister())); - Value v = (Value) e.nextElement(); - if(v.getType(context)==NumberType.type) { - emitln(context.getIndent()+"LOAD_IMMEDIATE "+tname+","+v); - } - else - if(v.getType(context)==StringType.type) { - emitln(context.getIndent()+"LOAD_STRING "+tname+",'"+v+"'"); - } - emitln(context.getIndent()+"SET_PROP "+rname+",'"+p+++"',"+tname); - } - return null; - } - - /* - * Postfix expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, PostfixExpressionNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * New expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, NewExpressionNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Indexed member expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, IndexedMemberExpressionNode node ) throws Exception { - if( node.base != null ) { - node.base.evaluate(context,this); - } - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Property access - * - * STATUS - * Jan-05-2001: Coded - * - * NOTES - * Generates code for getting a property of a value. - */ - - Value evaluate( Context context, MemberExpressionNode node ) throws Exception { - if( node.base != null ) { - node.base.evaluate(context,this); - } - String dname,rname; - node.store = new Store(null,Machine.allocateTempRegister()); - - rname = Machine.nameRegister(node.base.store); - dname = Machine.nameRegister(node.store); - ReferenceValue ref = (ReferenceValue) node.ref; - emitln(context.getIndent()+"GET_PROP "+ - dname+","+rname+",'"+ref.getName()+"'"); - return null; - } - - /* - * Classof - * - * STATUS - * Jan-05-2001: Coded - * - * NOTES - * Generates code for getting the class object of a value. - */ - - Value evaluate( Context context, ClassofExpressionNode node ) throws Exception { - - if( node.base != null ) { - node.base.evaluate(context,this); - } - - String dname,lname,rname; - node.store = new Store(null,Machine.allocateTempRegister()); - rname = Machine.nameRegister(node.base.store); - dname = Machine.nameRegister(node.store); - emitln(context.getIndent()+"GET_CLASS "+ - dname+","+rname); - return null; - } - - /* - * Coersion - * - * STATUS - * Jan-05-2001: Coded - * - * NOTES - * Generates code for coercing a value to another value of a specific type. - */ - - Value evaluate( Context context, CoersionExpressionNode node ) throws Exception { - - Debugger.trace("CoersionExpressionNode with type = " + node.type); - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - - if( node.type != null ) { - node.type.evaluate(context,this); - } - - String dreg,ereg,treg; - node.store = new Store(null,Machine.allocateTempRegister()); - ereg = Machine.nameRegister(node.expr.store); - treg = Machine.nameRegister(node.type.store); - dreg = Machine.nameRegister(node.store); - emitln(context.getIndent()+"CAST "+ - dreg+","+ereg+","+treg); - Debugger.trace("JSILGenerator.evaluate(CoersionExpressionNode) with node.store = " + node.store); - return null; - } - - /* - * Call expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, CallExpressionNode node ) throws Exception { - if( node.member != null ) { - node.member.evaluate(context,this); - } - String args = ""; - Debugger.trace("evaluate(CallExpressionNode) with node.args = " + node.args); - if( node.args != null ) { - node.args.evaluate(context,this); - ListNode list = (ListNode)node.args; - while(list!=null) { - args = Machine.nameRegister(list.item.store)+((args=="")?"":",")+args; - list = (ListNode)list.list; - } - } - node.store = new Store(null,Machine.allocateTempRegister()); - String reg1 = Machine.nameRegister(node.store); - String reg2 = Machine.nameRegister(node.member.store); - emitln(context.getIndent()+"CALL "+ - reg1+","+reg2+",("+args+")"); - return null; - } - - /* - * Unary expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, UnaryExpressionNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Binary expression - * - * STATUS - * Partially implemented - */ - - Value evaluate( Context context, BinaryExpressionNode node ) throws Exception { - Value rhs,lhs; - - - // compute the lhs value using either - // 1 lhs expression - // 2 unbound reference - // 3 bound reference - - String dname,lname,rname; - - if( node.lhs_slot != null ) { - lname = Machine.nameRegister(node.lhs_slot.store); - } else if ( node.lhs_ref != null ) { - // get the value of the reference and map lname to its location. - lname = "TBD"; - } else { - node.lhs.evaluate(context,this); - lname = Machine.nameRegister(node.lhs.store); - } - - if( node.rhs_slot != null ) { - rname = Machine.nameRegister(node.rhs_slot.store); - } else if ( node.rhs_ref != null ) { - // get the value of the reference and map rname to its location. - rname = "TBD"; - } else { - node.rhs.evaluate(context,this); - rname = Machine.nameRegister(node.rhs.store); - } - - node.store = new Store(null,Machine.allocateTempRegister()); - dname = Machine.nameRegister(node.store); - - emitln(context.getIndent()+"GENERIC_BINARY_OP "+ - dname+","+opName(node.op)+ - ","+lname + "," + rname); - - return null; - } - - /* - * Conditional expression - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ConditionalExpressionNode node ) throws Exception { - if( node.condition != null ) { - node.condition.evaluate(context,this); - } - if( node.thenexpr != null ) { - node.thenexpr.evaluate(context,this); - } - if( node.elseexpr != null ) { - node.elseexpr.evaluate(context,this); - } - return null; - } - - /* - * Assignment expression - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, AssignmentExpressionNode node ) throws Exception { - // during constant eval, - // save reference to lhs in node. (key!) - - // 1 Load the rhs value into temporary storage - // 2 Load the lhs value into temporary storage - // 3 Operate (move,generic_binary_op) - // 4 Store the result in the place indicated by the lhs reference. - - if( node.rhs != null ) { - node.rhs.evaluate(context,this); - } - if( node.lhs != null ) { - node.lhs.evaluate(context,this); - } - - String dname,lname,rname; - node.store = new Store(null,Machine.allocateTempRegister()); - lname = Machine.nameRegister(node.lhs.store); - rname = Machine.nameRegister(node.rhs.store); - dname = Machine.nameRegister(node.store); - if( node.op == assign_token ) { - emitln(context.getIndent()+"MOVE "+dname+","+rname); - } else { - emitln(context.getIndent()+"GENERIC_BINARY_OP "+dname+",OP,"+lname+","+rname); - } - - ReferenceValue ref = (ReferenceValue) node.ref; - if( ref.scope == null ) { - emitln(context.getIndent()+"SAVE_NAME '"+ - ref.getName()+"',"+dname); - } else { - String bname = Machine.nameRegister(((MemberExpressionNode)node.lhs).base.store); - emitln(context.getIndent()+"SET_PROP "+bname+",'"+ - ref.getName()+"',"+dname); - } - return null; - } - - /* - * List - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ListNode node ) throws Exception { - if( node.list != null ) { - node.list.evaluate(context,this); - } - if( node.item != null ) { - node.item.evaluate(context,this); - } - return null; - } - - // Statements - - /* - * Statement list - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, StatementListNode node ) throws Exception { - if( node.list != null ) { - node.list.evaluate(context,this); - } - if( node.item != null ) { - node.item.evaluate(context,this); - } - return null; - } - - /* - * Empty statement - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, EmptyStatementNode node ) throws Exception { - return null; - } - - /* - * Expression statement - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ExpressionStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Annotated block - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, AnnotatedBlockNode node ) throws Exception { - if( node.attributes != null ) { - node.attributes.evaluate(context,this); - } - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } - - /* - * Labeled statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, LabeledStatementNode node ) throws Exception { - if( node.label != null ) { - node.label.evaluate(context,this); - } - if( node.statement != null ) { - node.statement.evaluate(context,this); - } - return null; - } - - /* - * If statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, IfStatementNode node ) throws Exception { - if( node.condition != null ) { - node.condition.evaluate(context,this); - } - if( node.thenactions != null ) { - node.thenactions.evaluate(context,this); - } - if( node.elseactions != null ) { - node.elseactions.evaluate(context,this); - } - return null; - } - - /* - * Switch statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, SwitchStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } - - /* - * Case label - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, CaseLabelNode node ) throws Exception { - if( node.label != null ) { - node.label.evaluate(context,this); - } else { - emitln(context.getIndent()+"default"); - } - return null; - } - - /* - * Do statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, DoStatementNode node ) throws Exception { - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * While statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, WhileStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - if( node.statement != null ) { - node.statement.evaluate(context,this); - } - return null; - } - - /* - * For statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ForStatementNode node ) throws Exception { - if( node.initialize != null ) { - node.initialize.evaluate(context,this); - } - if( node.test != null ) { - node.test.evaluate(context,this); - } - if( node.increment != null ) { - node.increment.evaluate(context,this); - } - if( node.statement != null ) { - node.statement.evaluate(context,this); - } - return null; - } - - /* - * For in statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ForInStatementNode node ) throws Exception { - if( node.property != null ) { - node.property.evaluate(context,this); - } - if( node.object != null ) { - node.object.evaluate(context,this); - } - if( node.statement != null ) { - node.statement.evaluate(context,this); - } - return null; - } - - /* - * With statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, WithStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - if( node.statement != null ) { - node.statement.evaluate(context,this); - } - return null; - } - - /* - * Continue statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ContinueStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Break statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, BreakStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Return statement - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ReturnStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - String rname = Machine.nameRegister(node.expr.store); - emitln(context.getIndent()+"RETURN "+rname); - return null; - } - - /* - * Throw statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ThrowStatementNode node ) throws Exception { - String tag = (node.isLeader ? "*"+node.block+":" : ""+node.block+": ")+"ThrowStatement"; - emitln(context.getIndent()+tag); - context.indent++; - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Try statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, TryStatementNode node ) throws Exception { - if( node.tryblock != null ) { - node.tryblock.evaluate(context,this); - } - if( node.catchlist != null ) { - node.catchlist.evaluate(context,this); - } - if( node.finallyblock != null ) { - node.finallyblock.evaluate(context,this); - } - return null; - } - - /* - * Catch clause - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, CatchClauseNode node ) throws Exception { - if( node.parameter != null ) { - node.parameter.evaluate(context,this); - } - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } - - /* - * Finally clause - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, FinallyClauseNode node ) throws Exception { - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } - - /* - * Use statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, UseStatementNode node ) throws Exception { - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - return null; - } - - /* - * Include statement - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, IncludeStatementNode node ) throws Exception { - if( node.item != null ) { - node.item.evaluate(context,this); - } - return null; - } - - // Definitions - - /* - * Import definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ImportDefinitionNode node ) throws Exception { - if( node.item != null ) { - node.item.evaluate(context,this); - } - if( node.list != null ) { - node.list.evaluate(context,this); - } - return null; - } - - /* - * Import binding - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ImportBindingNode node ) throws Exception { - if( node.identifier != null ) { - node.identifier.evaluate(context,this); - } - if( node.item != null ) { - node.item.evaluate(context,this); - } - return null; - } - - /* - * Annotated definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, AnnotatedDefinitionNode node ) throws Exception { - if( node.attributes != null ) { - node.attributes.evaluate(context,this); - } - if( node.definition != null ) { - node.definition.evaluate(context,this); - } - return null; - } - - /* - * Attribute list - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, AttributeListNode node ) throws Exception { - if( node.item != null ) { - node.item.evaluate(context,this); - } - if( node.list != null ) { - node.list.evaluate(context,this); - } - return null; - } - - /* - * Export definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ExportDefinitionNode node ) throws Exception { - if( node.list != null ) { - node.list.evaluate(context,this); - } - return null; - } - - /* - * Export binding - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, ExportBindingNode node ) throws Exception { - if( node.name != null ) { - node.name.evaluate(context,this); - } - if( node.value != null ) { - node.value.evaluate(context,this); - } - return null; - } - - /* - * Variable definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, VariableDefinitionNode node ) throws Exception { - if( node.list != null ) { - node.list.evaluate(context,this); - } - return null; - } - - /* - * Variable binding - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, VariableBindingNode node ) throws Exception { - if( node.variable != null ) { - node.variable.evaluate(context,this); - } - if( node.initializer != null ) { - node.initializer.evaluate(context,this); - } - return null; - } - - /* - * Typed variable - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, TypedVariableNode node ) throws Exception { - if( node.identifier != null ) { - node.identifier.evaluate(context,this); - } - if( node.type != null ) { - node.type.evaluate(context,this); - } - return null; - } - - /* - * Function definition - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, FunctionDefinitionNode node ) throws Exception { - Machine.init(node.fixedCount); - emitln(context.getIndent()+""); - return null; - } - - /* - * Function declaration - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, FunctionDeclarationNode node ) throws Exception { - ReferenceValue ref = (ReferenceValue) node.ref; - emit("name="+ref.getName()); - //if( node.name != null ) { - // node.name.evaluate(context,this); - //} - if( node.signature != null ) { - node.signature.evaluate(context,this); - } - return null; - } - - /* - * Function signature - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, FunctionSignatureNode node ) throws Exception { - emit(" type="); - if( node.result != null ) { - ReferenceValue ref = (ReferenceValue) node.ref; - emit(ref.getName()); - } else { - emit("Object"); - } - emit("/>"); - -Debugger.trace("evaluate(FunctionSignatureNode) with node.parameter = " + node.parameter); - - if( node.parameter != null ) { - node.parameter.evaluate(context,this); - } - return null; - } - - /* - * Function name - * - * STATUS - * Not used - */ - - Value evaluate( Context context, FunctionNameNode node ) throws Exception { - return null; - } - - /* - * Parameter - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ParameterNode node ) throws Exception { - emitln(context.getIndent()+""); - return null; - } - - /* - * Optional parameter - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, OptionalParameterNode node ) throws Exception { - if( node.parameter != null ) { - node.parameter.evaluate(context,this); - } - if( node.initializer != null ) { - node.initializer.evaluate(context,this); - } - return null; - } - - /* - * Class definition - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ClassDefinitionNode node ) throws Exception { - emitln(""); - context.indent++; - if( node.name != null ) { - node.name.evaluate(context,this); - } - if( node.inheritance != null ) { - node.inheritance.evaluate(context,this); - } - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - context.indent--; - return null; - } - - /* - * Inheritance definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, InheritanceNode node ) throws Exception { - if( node.baseclass != null ) { - node.baseclass.evaluate(context,this); - } - if( node.interfaces != null ) { - node.interfaces.evaluate(context,this); - } - return null; - } - - /* - * Class declaration - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ClassDeclarationNode node ) throws Exception { - if( node.name != null ) { - node.name.evaluate(context,this); - } - return null; - } - - /* - * Namespace definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, NamespaceDefinitionNode node ) throws Exception { - if( node.name != null ) { - node.name.evaluate(context,this); - } - if( node.extendslist != null ) { - node.extendslist.evaluate(context,this); - } - return null; - } - - /* - * Package definition - * - * STATUS - * Not implemented - */ - - Value evaluate( Context context, PackageDefinitionNode node ) throws Exception { - if( node.name != null ) { - node.name.evaluate(context,this); - } - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } - - /* - * Program - * - * STATUS - * Jan-24-2001: Coded - */ - - Value evaluate( Context context, ProgramNode node ) throws Exception { - if( node.statements != null ) { - node.statements.evaluate(context,this); - } - return null; - } -} - -/* - * Static model of the virtual machine. - */ - -class Machine { - - private static boolean debug = true; - - static int registerCount; - static int fixedRegisterCount; - - static void init(int fixedCount) { - Debugger.trace("Machine.init() with fixedCount = " + fixedCount); - registerCount = fixedRegisterCount = fixedCount; - } - - static int allocateTempRegister() { - return registerCount++; - } - - static void resetTempRegisters() { - } - - static void resetAllRegisters() { - } - - static String nameRegister(Store store) { - return "R"+ (store.index+1); - } - - static String nameTemp() { - return "R"+ (registerCount+1); - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/input/CharacterClasses.java b/mozilla/js/js2/jsc/src/java/input/CharacterClasses.java deleted file mode 100644 index 357bdf26c68..00000000000 --- a/mozilla/js/js2/jsc/src/java/input/CharacterClasses.java +++ /dev/null @@ -1,4175 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -/* - * Unicode character classes. - */ - -package com.compilercompany.ecmascript; - -interface CharacterClasses { - -static final byte nu = 0x00; // Not used. (Not a general category.) - -// Normative classes. - -static final byte Lu = 0x01; // Letter, Uppercase -static final byte Ll = 0x02; // Letter, Lowercase -static final byte Lt = 0x03; // Letter, Titlecase -static final byte Mn = 0x04; // Mark, Non-Spacing -static final byte Mc = 0x05; // Mark, Spacing Combining -static final byte Me = 0x06; // Mark, Enclosing -static final byte Nd = 0x07; // Number, Decimal Digit -static final byte Nl = 0x08; // Number, Letter -static final byte No = 0x09; // Number, Other -static final byte Zs = 0x0a; // Separator, Space -static final byte Zl = 0x0b; // Separator, Line -static final byte Zp = 0x0c; // Separator, Paragraph -static final byte Cc = 0x0d; // Other, Control -static final byte Cf = 0x0e; // Other, Format -static final byte Cs = 0x0f; // Other, Surrogate -static final byte Co = 0x10; // Other, Private Use -static final byte Cn = 0x11; // Other, Not Assigned (no characters in the file have this property) - -// Non-normative classes. - -static final byte Lm = 0x12; // Letter, Modifier -static final byte Lo = 0x13; // Letter, Other -static final byte Pc = 0x14; // Punctuation, Connector -static final byte Pd = 0x15; // Punctuation, Dash -static final byte Ps = 0x16; // Punctuation, Open -static final byte Pe = 0x17; // Punctuation, Close -static final byte Pi = 0x18; // Punctuation, Initial quote (may behave like Ps or Pe depending on usage) -static final byte Pf = 0x19; // Punctuation, Final quote (may behave like Ps or Pe depending on usage) -static final byte Po = 0x1a; // Punctuation, Other -static final byte Sm = 0x1b; // Symbol, Math -static final byte Sc = 0x1c; // Symbol, Currency -static final byte Sk = 0x1d; // Symbol, Modifier -static final byte So = 0x1e; // Symbol, Other - - - -static byte[] data = { -Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc, // 0 -Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc, // 1 -Zs,Po,Po,Po,Sc,Po,Po,Po,Ps,Pe,Po,Sm,Po,Pd,Po,Po, // 2 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Po,Po,Sm,Sm,Sm,Po, // 3 -Po,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 4 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Ps,Po,Pe,Sk,Pc, // 5 -Sk,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 6 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ps,Sm,Pe,Sm,Cc, // 7 -Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc, // 8 -Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc,Cc, // 9 -Zs,Po,Sc,Sc,Sc,Sc,So,So,Sk,So,Ll,Pi,Sm,Pd,So,Sk, // a -So,Sm,No,No,Sk,Ll,So,Po,Sk,No,Ll,Pf,No,No,No,Po, // b -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // c -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Sm,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Ll, // d -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // e -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Sm,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // f -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 10 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 11 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 12 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu, // 13 -Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 14 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 15 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 16 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Lu,Ll,Lu,Ll,Lu,Ll,Ll, // 17 -Ll,Lu,Lu,Ll,Lu,Ll,Lu,Lu,Ll,Lu,Lu,Lu,Ll,Ll,Lu,Lu, // 18 -Lu,Lu,Ll,Lu,Lu,Ll,Lu,Lu,Lu,Ll,Ll,Ll,Lu,Lu,Ll,Lu, // 19 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Lu,Ll,Lu,Ll,Ll,Lu,Ll,Lu,Lu, // 1a -Ll,Lu,Lu,Lu,Ll,Lu,Ll,Lu,Lu,Ll,Ll,Lo,Lu,Ll,Ll,Ll, // 1b -Lo,Lo,Lo,Lo,Lu,Lt,Ll,Lu,Lt,Ll,Lu,Lt,Ll,Lu,Ll,Lu, // 1c -Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Ll,Lu,Ll, // 1d -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e -Ll,Lu,Lt,Ll,Lu,Ll,Lu,Lu,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1f -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 20 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 21 -nu,nu,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 22 -Lu,Ll,Lu,Ll,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 24 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 25 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 26 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 27 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 28 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 29 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,nu, // 2a -Lm,Lm,Lm,Lm,Lm,Lm,Lm,Lm,Lm,Sk,Sk,Lm,Lm,Lm,Lm,Lm, // 2b -Lm,Lm,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk, // 2c -Lm,Lm,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk, // 2d -Lm,Lm,Lm,Lm,Lm,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Sk,Lm,nu, // 2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2f -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 30 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 31 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 32 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 33 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu, // 34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35 -Mn,Mn,Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36 -nu,nu,nu,nu,Sk,Sk,nu,nu,nu,nu,Lm,nu,nu,nu,Po,nu, // 37 -nu,nu,nu,nu,Sk,Sk,Lu,Po,Lu,Lu,Lu,nu,Lu,nu,Lu,Lu, // 38 -Ll,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 39 -Lu,Lu,nu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Ll,Ll,Ll,Ll, // 3a -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 3b -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu, // 3c -Ll,Ll,Lu,Lu,Lu,Ll,Ll,Ll,nu,nu,Lu,Ll,Lu,Ll,Lu,Ll, // 3d -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 3e -Ll,Ll,Ll,Ll,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 40 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 41 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 42 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 43 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 44 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 45 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 46 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 47 -Lu,Ll,So,Mn,Mn,Mn,Mn,nu,Me,Me,nu,nu,Lu,Ll,Lu,Ll, // 48 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 49 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 4a -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 4b -Lu,Lu,Ll,Lu,Ll,nu,nu,Lu,Ll,nu,nu,Lu,Ll,nu,nu,nu, // 4c -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 4d -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 4e -Lu,Ll,Lu,Ll,Lu,Ll,nu,nu,Lu,Ll,nu,nu,nu,nu,nu,nu, // 4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52 -nu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 53 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 54 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,nu,nu,Lm,Po,Po,Po,Po,Po,Po, // 55 -nu,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 56 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // 57 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,Po,Pd,nu,nu,nu,nu,nu, // 58 -nu,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 59 -Mn,Mn,nu,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 5a -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu,Mn,Mn,Mn,Po,Mn, // 5b -Po,Mn,Mn,Po,Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 5d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu, // 5e -Lo,Lo,Lo,Po,Po,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Po,nu,nu,nu, // 60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Po,nu,nu,nu,Po, // 61 -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 62 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu, // 63 -Lm,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Mn,Mn,Mn,Mn,Mn, // 64 -Mn,Mn,Mn,Mn,Mn,Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Po,Po,Po,Po,nu,nu, // 66 -Mn,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 67 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 68 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 69 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 6a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 6b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 6c -Lo,Lo,Lo,Lo,Po,Lo,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Me,Me,Mn, // 6d -Mn,Mn,Mn,Mn,Mn,Lm,Lm,Mn,Mn,So,Mn,Mn,Mn,Mn,nu,nu, // 6e -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Lo,Lo,Lo,So,So,nu, // 6f -Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,nu,Cf, // 70 -Lo,Mn,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 71 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu, // 72 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 73 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu,nu,nu,nu,nu, // 74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 78 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 79 -Lo,Lo,Lo,Lo,Lo,Lo,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 7a -Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f -nu,Mn,Mn,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 90 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 91 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 92 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Mn,Lo,Mc,Mc, // 93 -Mc,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mc,Mc,Mc,Mc,Mn,nu,nu, // 94 -Lo,Mn,Mn,Mn,Mn,nu,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 95 -Lo,Lo,Mn,Mn,Po,Po,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // 96 -Po,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97 -nu,Mn,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Lo, // 98 -Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 99 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // 9a -Lo,nu,Lo,nu,nu,nu,Lo,Lo,Lo,Lo,nu,nu,Mn,nu,Mc,Mc, // 9b -Mc,Mn,Mn,Mn,Mn,nu,nu,Mc,Mc,nu,nu,Mc,Mc,Mn,nu,nu, // 9c -nu,nu,nu,nu,nu,nu,nu,Mc,nu,nu,nu,nu,Lo,Lo,nu,Lo, // 9d -Lo,Lo,Mn,Mn,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // 9e -Lo,Lo,Sc,Sc,No,No,No,No,No,No,So,nu,nu,nu,nu,nu, // 9f -nu,nu,Mn,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Lo, // a0 -Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // a2 -Lo,nu,Lo,Lo,nu,Lo,Lo,nu,Lo,Lo,nu,nu,Mn,nu,Mc,Mc, // a3 -Mc,Mn,Mn,nu,nu,nu,nu,Mn,Mn,nu,nu,Mn,Mn,Mn,nu,nu, // a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,Lo,Lo,Lo,Lo,nu,Lo,nu, // a5 -nu,nu,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // a6 -Mn,Mn,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7 -nu,Mn,Mn,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu,Lo, // a8 -Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // aa -Lo,nu,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,nu,nu,Mn,Lo,Mc,Mc, // ab -Mc,Mn,Mn,Mn,Mn,Mn,nu,Mn,Mn,Mc,nu,Mc,Mc,Mn,nu,nu, // ac -Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad -Lo,nu,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af -nu,Mn,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Lo, // b0 -Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // b1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // b2 -Lo,nu,Lo,Lo,nu,nu,Lo,Lo,Lo,Lo,nu,nu,Mn,Lo,Mc,Mn, // b3 -Mc,Mn,Mn,Mn,nu,nu,nu,Mc,Mc,nu,nu,Mc,Mc,Mn,nu,nu, // b4 -nu,nu,nu,nu,nu,nu,Mn,Mc,nu,nu,nu,nu,Lo,Lo,nu,Lo, // b5 -Lo,Lo,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // b6 -So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7 -nu,nu,Mn,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,Lo,Lo, // b8 -Lo,nu,Lo,Lo,Lo,Lo,nu,nu,nu,Lo,Lo,nu,Lo,nu,Lo,Lo, // b9 -nu,nu,nu,Lo,Lo,nu,nu,nu,Lo,Lo,Lo,nu,nu,nu,Lo,Lo, // ba -Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,nu,nu,nu,nu,Mc,Mc, // bb -Mn,Mc,Mc,nu,nu,nu,Mc,Mc,Mc,nu,Mc,Mc,Mc,Mn,nu,nu, // bc -nu,nu,nu,nu,nu,nu,nu,Mc,nu,nu,nu,nu,nu,nu,nu,nu, // bd -nu,nu,nu,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // be -No,No,No,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf -nu,Mc,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo, // c0 -Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // c1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // c2 -Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Mn,Mn, // c3 -Mn,Mc,Mc,Mc,Mc,nu,Mn,Mn,Mn,nu,Mn,Mn,Mn,Mn,nu,nu, // c4 -nu,nu,nu,nu,nu,Mn,Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5 -Lo,Lo,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7 -nu,nu,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo, // c8 -Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // c9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // ca -Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Mc,Mn, // cb -Mc,Mc,Mc,Mc,Mc,nu,Mn,Mc,Mc,nu,Mc,Mc,Mn,Mn,nu,nu, // cc -nu,nu,nu,nu,nu,Mc,Mc,nu,nu,nu,nu,nu,nu,nu,Lo,nu, // cd -Lo,Lo,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf -nu,nu,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo, // d0 -Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // d1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo, // d2 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Mc,Mc, // d3 -Mc,Mn,Mn,Mn,nu,nu,Mc,Mc,Mc,nu,Mc,Mc,Mc,Mn,nu,nu, // d4 -nu,nu,nu,nu,nu,nu,nu,Mc,nu,nu,nu,nu,nu,nu,nu,nu, // d5 -Lo,Lo,nu,nu,nu,nu,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7 -nu,nu,Mc,Mc,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // d8 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo, // d9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // da -Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu,nu, // db -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,Mn,nu,nu,nu,nu,Mc, // dc -Mc,Mc,Mn,Mn,Mn,nu,Mn,nu,Mc,Mc,Mc,Mc,Mc,Mc,Mc,Mc, // dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de -nu,nu,Mc,Mc,Po,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // e0 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // e1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // e2 -Lo,Mn,Lo,Lo,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu,nu,nu,nu,Sc, // e3 -Lo,Lo,Lo,Lo,Lo,Lo,Lm,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Po, // e4 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Po,Po,nu,nu,nu,nu, // e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7 -nu,Lo,Lo,nu,Lo,nu,nu,Lo,Lo,nu,Lo,nu,nu,Lo,nu,nu, // e8 -nu,nu,nu,nu,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // e9 -nu,Lo,Lo,Lo,nu,Lo,nu,Lo,nu,nu,Lo,Lo,nu,Lo,Lo,Lo, // ea -Lo,Mn,Lo,Lo,Mn,Mn,Mn,Mn,Mn,Mn,nu,Mn,Mn,Lo,nu,nu, // eb -Lo,Lo,Lo,Lo,Lo,nu,Lm,nu,Mn,Mn,Mn,Mn,Mn,Mn,nu,nu, // ec -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,nu,nu,Lo,Lo,nu,nu, // ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef -Lo,So,So,So,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po,Po, // f0 -Po,Po,Po,So,So,So,So,So,Mn,Mn,So,So,So,So,So,So, // f1 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,No,No,No,No,No,No, // f2 -No,No,No,No,So,Mn,So,Mn,So,Mn,Ps,Pe,Ps,Pe,Mc,Mc, // f3 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f4 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f5 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu, // f6 -nu,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mc, // f7 -Mn,Mn,Mn,Mn,Mn,Po,Mn,Mn,Lo,Lo,Lo,Lo,nu,nu,nu,nu, // f8 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // f9 -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // fa -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,nu,So,So, // fb -So,So,So,So,So,So,Mn,So,So,So,So,So,So,nu,nu,So, // fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ff -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 100 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 101 -Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,nu,Mc,Mn,Mn,Mn, // 102 -Mn,Mc,Mn,nu,nu,nu,Mn,Mn,Mc,Mn,nu,nu,nu,nu,nu,nu, // 103 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Po,Po,Po,Po,Po,Po, // 104 -Lo,Lo,Lo,Lo,Lo,Lo,Mc,Mc,Mn,Mn,nu,nu,nu,nu,nu,nu, // 105 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 106 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 107 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 108 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 109 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 10a -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 10b -Lu,Lu,Lu,Lu,Lu,Lu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 10c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 10d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 10e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Po,nu,nu,nu,nu, // 10f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 110 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 111 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 112 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 113 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 114 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,Lo, // 115 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 116 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 117 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 118 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 119 -Lo,Lo,Lo,nu,nu,nu,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 11a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 11b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 11c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 11d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 11e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu, // 11f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 120 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 121 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 122 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 123 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu,Lo,Lo,Lo,Lo,nu,nu, // 124 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu,Lo,Lo,Lo,Lo,nu,nu, // 125 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 126 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 127 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu,Lo,Lo,Lo,Lo,nu,nu, // 128 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 129 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 12a -Lo,nu,Lo,Lo,Lo,Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 12b -Lo,nu,Lo,Lo,Lo,Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 12c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 12d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 12e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 12f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 130 -Lo,nu,Lo,Lo,Lo,Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 131 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 132 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 133 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 134 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu, // 135 -nu,Po,Po,Po,Po,Po,Po,Po,Po,Nd,Nd,Nd,Nd,Nd,Nd,Nd, // 136 -Nd,Nd,No,No,No,No,No,No,No,No,No,No,No,nu,nu,nu, // 137 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 138 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 139 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 13a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 13b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 13c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 13d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 13e -Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 13f -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 140 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 141 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 142 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 143 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 144 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 145 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 146 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 147 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 148 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 149 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 14f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 150 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 151 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 152 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 153 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 154 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 155 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 156 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 157 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 158 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 159 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 15f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 160 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 161 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 162 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 163 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 164 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 165 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Po,Po,Lo, // 166 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 167 -Zs,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 168 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Ps,Pe,nu,nu,nu, // 169 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 16a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 16b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 16c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 16d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Po,Po,Po,No,No, // 16e -No,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 16f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 170 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 171 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 172 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 173 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 174 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 175 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 176 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 177 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 178 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 179 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 17a -Lo,Lo,Lo,Lo,Mc,Mc,Mc,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mc,Mc, // 17b -Mc,Mc,Mc,Mc,Mc,Mc,Mn,Mc,Mc,Mn,Mn,Mn,Mn,Mn,Mn,Mn, // 17c -Mn,Mn,Mn,Mn,Po,Po,Po,Po,Po,Po,Po,Sc,Po,nu,nu,nu, // 17d -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,nu,nu,nu,nu,nu,nu, // 17e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 17f -Po,Po,Po,Po,Po,Po,Pd,Po,Po,Po,Po,Cf,Cf,Cf,Cf,nu, // 180 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,nu,nu,nu,nu,nu,nu, // 181 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 182 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 183 -Lo,Lo,Lo,Lm,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 184 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 185 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 186 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu, // 187 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 188 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 189 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Mn,nu,nu,nu,nu,nu,nu, // 18a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 18b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 18c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 18d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 18e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 18f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 190 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 191 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 192 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 193 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 194 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 195 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 196 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 197 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 198 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 199 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 19f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 1df -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e0 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e1 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e2 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e3 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e4 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e5 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e6 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e7 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1e8 -Lu,Ll,Lu,Ll,Lu,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,nu,nu,nu, // 1e9 -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1ea -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1eb -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1ec -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1ed -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll, // 1ee -Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,Lu,Ll,nu,nu,nu,nu,nu,nu, // 1ef -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 1f0 -Ll,Ll,Ll,Ll,Ll,Ll,nu,nu,Lu,Lu,Lu,Lu,Lu,Lu,nu,nu, // 1f1 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 1f2 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 1f3 -Ll,Ll,Ll,Ll,Ll,Ll,nu,nu,Lu,Lu,Lu,Lu,Lu,Lu,nu,nu, // 1f4 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,Lu,nu,Lu,nu,Lu,nu,Lu, // 1f5 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // 1f6 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,nu, // 1f7 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lt,Lt,Lt,Lt,Lt,Lt,Lt,Lt, // 1f8 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lt,Lt,Lt,Lt,Lt,Lt,Lt,Lt, // 1f9 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lt,Lt,Lt,Lt,Lt,Lt,Lt,Lt, // 1fa -Ll,Ll,Ll,Ll,Ll,nu,Ll,Ll,Lu,Lu,Lu,Lu,Lt,Sk,Ll,Sk, // 1fb -Sk,Sk,Ll,Ll,Ll,nu,Ll,Ll,Lu,Lu,Lu,Lu,Lt,Sk,Sk,Sk, // 1fc -Ll,Ll,Ll,Ll,nu,nu,Ll,Ll,Lu,Lu,Lu,Lu,nu,Sk,Sk,Sk, // 1fd -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Lu,Lu,Lu,Lu,Lu,Sk,Sk,Sk, // 1fe -nu,nu,Ll,Ll,Ll,nu,Ll,Ll,Lu,Lu,Lu,Lu,Lt,Sk,Sk,nu, // 1ff -/* -Zs,Zs,Zs,Zs,Zs,Zs,Zs,Zs,Zs,Zs,Zs,Zs,Cf,Cf,Cf,Cf, // 200 -Pd,Pd,Pd,Pd,Pd,Pd,Po,Po,Pi,Pf,Ps,Pi,Pi,Pf,Ps,Pi, // 201 -Po,Po,Po,Po,Po,Po,Po,Po,Zl,Zp,Cf,Cf,Cf,Cf,Cf,Zs, // 202 -Po,Po,Po,Po,Po,Po,Po,Po,Po,Pi,Pf,Po,Po,Po,Po,Pc, // 203 -Pc,Po,Po,Po,Sm,Ps,Pe,nu,Po,Po,Po,Po,Po,Po,nu,nu, // 204 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 205 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Cf,Cf,Cf,Cf,Cf,Cf, // 206 -No,nu,nu,nu,No,No,No,No,No,No,Sm,Sm,Sm,Ps,Pe,Ll, // 207 -No,No,No,No,No,No,No,No,No,No,Sm,Sm,Sm,Ps,Pe,nu, // 208 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 209 -Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc,Sc, // 20a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 20b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 20c -Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Mn,Me,Me,Me, // 20d -Me,Mn,Me,Me,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 20e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 20f -So,So,Lu,So,So,So,So,Lu,So,So,Ll,Lu,Lu,Lu,Ll,Ll, // 210 -Lu,Lu,Lu,Ll,So,Lu,So,So,So,Lu,Lu,Lu,Lu,Lu,So,So, // 211 -So,So,So,So,Lu,So,Lu,So,Lu,So,Lu,Lu,Lu,Lu,So,Ll, // 212 -Lu,Lu,So,Lu,Ll,Lo,Lo,Lo,Lo,Ll,So,nu,nu,nu,nu,nu, // 213 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 214 -nu,nu,nu,No,No,No,No,No,No,No,No,No,No,No,No,No, // 215 -Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl, // 216 -Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl, // 217 -Nl,Nl,Nl,Nl,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 218 -Sm,Sm,Sm,Sm,Sm,So,So,So,So,So,Sm,Sm,So,So,So,So, // 219 -Sm,So,So,Sm,So,So,Sm,So,So,So,So,So,So,So,Sm,So, // 21a -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 21b -So,So,So,So,So,So,So,So,So,So,So,So,So,So,Sm,Sm, // 21c -So,So,Sm,So,Sm,So,So,So,So,So,So,So,So,So,So,So, // 21d -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 21e -So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 21f -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 220 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 221 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 222 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 223 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 224 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 225 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 226 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 227 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 228 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 229 -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 22a -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 22b -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 22c -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 22d -Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm,Sm, // 22e -Sm,Sm,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 22f -So,So,So,So,So,So,So,So,Sm,Sm,Sm,Sm,So,So,So,So, // 230 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 231 -Sm,Sm,So,So,So,So,So,So,So,Ps,Pe,So,So,So,So,So, // 232 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 233 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 234 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 235 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 236 -So,So,So,So,So,So,So,So,So,So,So,So,nu,So,So,So, // 237 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 238 -So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu,nu,nu, // 239 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 23f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 240 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 241 -So,So,So,So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 242 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 243 -So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu,nu,nu, // 244 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 245 -No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No, // 246 -No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No, // 247 -No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No, // 248 -No,No,No,No,No,No,No,No,No,No,No,No,So,So,So,So, // 249 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 24a -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 24b -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 24c -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 24d -So,So,So,So,So,So,So,So,So,So,No,nu,nu,nu,nu,nu, // 24e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 24f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 250 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 251 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 252 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 253 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 254 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 255 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 256 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 257 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 258 -So,So,So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 259 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 25a -So,So,So,So,So,So,So,Sm,So,So,So,So,So,So,So,So, // 25b -So,Sm,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 25c -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 25d -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 25e -So,So,So,So,So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu, // 25f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 260 -So,So,So,So,nu,nu,nu,nu,nu,So,So,So,So,So,So,So, // 261 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 262 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 263 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 264 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 265 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,Sm, // 266 -So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 267 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 268 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 269 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 26f -nu,So,So,So,So,nu,So,So,So,So,nu,nu,So,So,So,So, // 270 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 271 -So,So,So,So,So,So,So,So,nu,So,So,So,So,So,So,So, // 272 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 273 -So,So,So,So,So,So,So,So,So,So,So,So,nu,So,nu,So, // 274 -So,So,So,nu,nu,nu,So,nu,So,So,So,So,So,So,So,nu, // 275 -nu,So,So,So,So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu, // 276 -nu,nu,nu,nu,nu,nu,No,No,No,No,No,No,No,No,No,No, // 277 -No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No, // 278 -No,No,No,No,So,nu,nu,nu,So,So,So,So,So,So,So,So, // 279 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 27a -nu,So,So,So,So,So,So,So,So,So,So,So,So,So,So,nu, // 27b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 27c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 27d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 27e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 27f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 280 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 281 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 282 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 283 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 284 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 285 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 286 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 287 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 288 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 289 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28a -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28b -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28c -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28d -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28e -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 28f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 290 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 291 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 292 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 293 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 294 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 295 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 296 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 297 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 298 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 299 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 29f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2e7 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2e8 -So,So,So,So,So,So,So,So,So,So,nu,So,So,So,So,So, // 2e9 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2ea -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2eb -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2ec -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2ed -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2ee -So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2ef -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f0 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f1 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f2 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f3 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f4 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f5 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f6 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f7 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f8 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2f9 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2fa -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2fb -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 2fc -So,So,So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 2fe -So,So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu,nu, // 2ff -Zs,Po,Po,Po,So,Lm,Lo,Nl,Ps,Pe,Ps,Pe,Ps,Pe,Ps,Pe, // 300 -Ps,Pe,So,So,Ps,Pe,Ps,Pe,Ps,Pe,Ps,Pe,Pd,Ps,Pe,Pe, // 301 -So,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Nl,Mn,Mn,Mn,Mn,Mn,Mn, // 302 -Pd,Lm,Lm,Lm,Lm,Lm,So,So,Nl,Nl,Nl,nu,nu,nu,So,So, // 303 -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 304 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 305 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 306 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 307 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 308 -Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,Mn,Mn,Sk,Sk,Lm,Lm,nu, // 309 -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 30a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 30b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 30c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 30d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 30e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Pc,Lm,Lm,Lm,nu, // 30f -nu,nu,nu,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 310 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 311 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu, // 312 -nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 313 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 314 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 315 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 316 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 317 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // 318 -So,So,No,No,No,No,So,So,So,So,So,So,So,So,So,So, // 319 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // 31a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu, // 31b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 31c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 31d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 31e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 31f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 320 -So,So,So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu, // 321 -No,No,No,No,No,No,No,No,No,No,So,So,So,So,So,So, // 322 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 323 -So,So,So,So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 324 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 325 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 326 -So,So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu,So, // 327 -No,No,No,No,No,No,No,No,No,No,So,So,So,So,So,So, // 328 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 329 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 32a -So,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 32b -So,So,So,So,So,So,So,So,So,So,So,So,nu,nu,nu,nu, // 32c -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 32d -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 32e -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,nu, // 32f -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 330 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 331 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 332 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 333 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 334 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 335 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 336 -So,So,So,So,So,So,So,nu,nu,nu,nu,So,So,So,So,So, // 337 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 338 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 339 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 33a -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 33b -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 33c -So,So,So,So,So,So,So,So,So,So,So,So,So,So,nu,nu, // 33d -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // 33e -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,nu, // 33f -Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 340 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 341 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 342 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 343 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 344 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 345 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 346 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 347 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 348 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 349 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 34f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 350 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 351 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 352 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 353 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 354 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 355 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 356 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 357 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 358 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 359 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 35f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 360 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 361 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 362 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 363 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 364 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 365 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 366 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 367 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 368 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 369 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 36f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 370 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 371 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 372 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 373 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 374 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 375 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 376 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 377 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 378 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 379 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 37f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 380 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 381 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 382 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 383 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 384 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 385 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 386 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 387 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 388 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 389 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 38f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 390 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 391 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 392 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 393 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 394 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 395 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 396 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 397 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 398 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 399 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 39f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 3ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 400 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 401 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 402 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 403 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 404 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 405 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 406 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 407 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 408 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 409 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 40f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 410 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 411 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 412 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 413 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 414 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 415 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 416 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 417 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 418 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 419 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 41f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 420 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 421 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 422 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 423 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 424 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 425 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 426 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 427 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 428 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 429 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 42f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 430 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 431 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 432 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 433 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 434 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 435 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 436 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 437 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 438 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 439 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 43f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 440 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 441 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 442 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 443 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 444 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 445 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 446 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 447 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 448 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 449 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 44f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 450 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 451 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 452 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 453 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 454 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 455 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 456 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 457 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 458 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 459 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 45f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 460 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 461 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 462 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 463 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 464 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 465 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 466 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 467 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 468 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 469 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 46f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 470 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 471 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 472 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 473 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 474 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 475 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 476 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 477 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 478 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 479 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 47f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 480 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 481 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 482 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 483 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 484 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 485 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 486 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 487 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 488 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 489 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 48f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 490 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 491 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 492 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 493 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 494 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 495 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 496 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 497 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 498 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 499 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 49f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4da -nu,nu,nu,nu,nu,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4df -Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 4ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 500 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 501 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 502 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 503 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 504 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 505 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 506 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 507 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 508 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 509 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 50f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 510 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 511 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 512 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 513 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 514 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 515 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 516 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 517 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 518 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 519 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 51f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 520 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 521 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 522 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 523 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 524 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 525 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 526 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 527 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 528 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 529 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 52f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 530 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 531 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 532 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 533 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 534 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 535 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 536 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 537 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 538 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 539 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 53f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 540 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 541 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 542 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 543 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 544 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 545 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 546 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 547 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 548 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 549 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 54f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 550 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 551 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 552 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 553 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 554 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 555 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 556 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 557 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 558 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 559 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 55f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 560 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 561 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 562 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 563 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 564 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 565 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 566 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 567 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 568 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 569 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 56f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 570 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 571 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 572 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 573 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 574 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 575 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 576 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 577 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 578 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 579 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 57f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 580 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 581 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 582 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 583 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 584 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 585 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 586 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 587 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 588 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 589 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 58f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 590 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 591 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 592 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 593 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 594 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 595 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 596 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 597 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 598 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 599 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 59f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 5ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 600 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 601 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 602 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 603 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 604 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 605 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 606 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 607 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 608 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 609 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 60f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 610 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 611 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 612 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 613 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 614 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 615 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 616 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 617 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 618 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 619 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 61f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 620 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 621 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 622 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 623 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 624 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 625 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 626 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 627 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 628 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 629 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 62f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 630 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 631 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 632 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 633 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 634 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 635 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 636 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 637 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 638 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 639 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 63f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 640 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 641 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 642 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 643 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 644 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 645 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 646 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 647 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 648 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 649 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 64f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 650 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 651 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 652 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 653 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 654 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 655 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 656 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 657 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 658 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 659 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 65f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 660 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 661 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 662 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 663 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 664 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 665 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 666 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 667 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 668 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 669 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 66f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 670 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 671 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 672 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 673 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 674 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 675 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 676 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 677 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 678 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 679 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 67f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 680 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 681 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 682 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 683 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 684 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 685 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 686 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 687 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 688 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 689 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 68f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 690 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 691 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 692 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 693 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 694 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 695 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 696 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 697 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 698 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 699 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 69f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 6ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 700 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 701 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 702 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 703 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 704 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 705 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 706 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 707 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 708 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 709 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 70f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 710 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 711 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 712 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 713 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 714 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 715 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 716 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 717 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 718 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 719 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 71f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 720 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 721 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 722 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 723 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 724 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 725 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 726 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 727 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 728 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 729 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 72f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 730 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 731 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 732 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 733 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 734 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 735 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 736 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 737 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 738 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 739 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 73f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 740 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 741 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 742 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 743 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 744 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 745 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 746 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 747 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 748 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 749 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 74f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 750 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 751 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 752 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 753 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 754 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 755 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 756 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 757 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 758 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 759 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 75f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 760 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 761 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 762 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 763 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 764 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 765 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 766 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 767 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 768 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 769 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 76f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 770 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 771 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 772 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 773 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 774 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 775 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 776 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 777 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 778 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 779 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 77f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 780 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 781 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 782 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 783 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 784 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 785 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 786 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 787 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 788 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 789 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 78f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 790 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 791 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 792 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 793 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 794 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 795 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 796 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 797 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 798 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 799 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 79f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 7ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 800 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 801 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 802 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 803 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 804 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 805 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 806 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 807 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 808 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 809 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 80f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 810 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 811 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 812 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 813 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 814 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 815 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 816 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 817 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 818 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 819 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 81f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 820 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 821 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 822 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 823 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 824 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 825 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 826 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 827 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 828 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 829 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 82f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 830 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 831 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 832 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 833 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 834 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 835 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 836 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 837 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 838 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 839 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 83f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 840 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 841 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 842 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 843 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 844 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 845 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 846 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 847 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 848 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 849 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 84f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 850 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 851 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 852 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 853 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 854 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 855 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 856 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 857 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 858 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 859 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 85f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 860 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 861 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 862 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 863 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 864 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 865 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 866 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 867 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 868 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 869 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 86f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 870 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 871 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 872 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 873 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 874 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 875 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 876 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 877 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 878 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 879 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 87f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 880 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 881 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 882 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 883 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 884 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 885 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 886 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 887 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 888 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 889 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 88f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 890 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 891 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 892 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 893 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 894 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 895 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 896 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 897 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 898 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 899 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 89f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8f9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 8ff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 900 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 901 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 902 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 903 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 904 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 905 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 906 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 907 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 908 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 909 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 90f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 910 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 911 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 912 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 913 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 914 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 915 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 916 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 917 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 918 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 919 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 91f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 920 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 921 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 922 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 923 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 924 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 925 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 926 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 927 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 928 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 929 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 92f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 930 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 931 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 932 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 933 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 934 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 935 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 936 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 937 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 938 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 939 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 93f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 940 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 941 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 942 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 943 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 944 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 945 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 946 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 947 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 948 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 949 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 94f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 950 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 951 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 952 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 953 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 954 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 955 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 956 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 957 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 958 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 959 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 95f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 960 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 961 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 962 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 963 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 964 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 965 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 966 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 967 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 968 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 969 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 96f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 970 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 971 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 972 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 973 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 974 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 975 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 976 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 977 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 978 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 979 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 97f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 980 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 981 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 982 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 983 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 984 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 985 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 986 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 987 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 988 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 989 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 98f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 990 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 991 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 992 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 993 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 994 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 995 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 996 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 997 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 998 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 999 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 99f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9a9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9aa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9af -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9b9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9bb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9bc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9bd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9be -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9bf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9c9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9cb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9cc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9cd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9cf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9d9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9da -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9db -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9dc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9dd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9de -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9df -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9e9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9eb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9f9 -nu,nu,nu,nu,nu,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9fa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9fb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9fc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9fd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9fe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // 9ff -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a00 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a01 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a02 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a03 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a04 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a05 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a06 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a07 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a08 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a09 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a0f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a10 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a11 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a12 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a13 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a14 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a15 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a16 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a17 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a18 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a19 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a1f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a20 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a21 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a22 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a23 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a24 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a25 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a26 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a27 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a28 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a29 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a2f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a30 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a31 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a32 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a33 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a34 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a35 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a36 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a37 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a38 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a39 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a3f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a40 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a41 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a42 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a43 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a44 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a45 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a46 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // a47 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu, // a48 -So,So,So,So,So,So,So,So,So,So,So,So,So,So,So,So, // a49 -So,So,nu,nu,So,So,So,So,So,So,So,So,So,So,So,So, // a4a -So,So,So,So,nu,So,So,So,So,So,So,So,So,So,So,So, // a4b -So,nu,So,So,So,nu,So,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a79 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a8f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a90 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a91 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a92 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a93 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a94 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a95 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a96 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a97 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a98 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a99 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // a9f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aa9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aaa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aaf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ab9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // abb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // abc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // abd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // abe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // abf -Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ac9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // acb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // acc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // acd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ace -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // acf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ad9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ada -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // adb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // adc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // add -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ade -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // adf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ae9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aeb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // af9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // afa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // afb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // afc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // afd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // afe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // aff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b00 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b01 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b02 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b03 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b04 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b05 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b06 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b07 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b08 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b09 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b0f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b10 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b11 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b12 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b13 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b14 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b15 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b16 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b17 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b18 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b19 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b1f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b20 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b21 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b22 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b24 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b25 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b26 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b27 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b28 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b29 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b2f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b30 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b31 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b32 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b33 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b35 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b36 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b37 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b38 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b39 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b3f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b40 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b41 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b42 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b43 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b44 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b45 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b46 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b47 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b48 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b49 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b79 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b8f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b90 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b91 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b92 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b93 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b94 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b95 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b96 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b97 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b98 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b99 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // b9f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ba9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // baa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // baf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bb9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bbb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bbc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bbd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bbe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bbf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bc9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bcb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bcc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bcd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bcf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bd9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bda -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bdb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bdc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bdd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bde -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bdf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // be9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // beb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bf9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bfa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bfb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bfc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bfd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bfe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // bff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c00 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c01 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c02 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c03 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c04 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c05 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c06 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c07 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c08 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c09 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c0f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c10 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c11 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c12 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c13 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c14 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c15 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c16 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c17 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c18 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c19 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c1f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c20 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c21 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c22 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c24 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c25 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c26 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c27 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c28 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c29 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c2f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c30 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c31 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c32 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c33 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c35 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c36 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c37 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c38 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c39 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c3f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c40 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c41 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c42 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c43 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c44 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c45 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c46 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c47 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c48 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c49 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c79 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c8f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c90 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c91 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c92 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c93 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c94 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c95 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c96 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c97 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c98 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c99 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // c9f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ca9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // caa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // caf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cb9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cbb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cbc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cbd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cbe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cbf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cc9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ccb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ccc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ccd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ccf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cd9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cda -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cdb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cdc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cdd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cde -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cdf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ce9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ceb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ced -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cf9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cfa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cfb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cfc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cfd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cfe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // cff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d00 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d01 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d02 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d03 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d04 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d05 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d06 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d07 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d08 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d09 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d0f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d10 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d11 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d12 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d13 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d14 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d15 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d16 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d17 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d18 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d19 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d1f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d20 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d21 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d22 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d24 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d25 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d26 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d27 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d28 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d29 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d2f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d30 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d31 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d32 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d33 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d35 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d36 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d37 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d38 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d39 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d3f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d40 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d41 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d42 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d43 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d44 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d45 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d46 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d47 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d48 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d49 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d79 -nu,nu,nu,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d7f -Cs,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d8f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d90 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d91 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d92 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d93 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d94 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d95 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d96 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d97 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d98 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d99 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // d9f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // da9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // daa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // daf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Cs, // db7 -Cs,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // db9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dbb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dbc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dbd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dbe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Cs, // dbf -Cs,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dc9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dcb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dcc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dcd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dce -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dcf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dd9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dda -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ddb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ddc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ddd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dde -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ddf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // de9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // deb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ded -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // def -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // df9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dfa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dfb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dfc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dfd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // dfe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Cs, // dff -Co,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e00 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e01 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e02 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e03 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e04 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e05 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e06 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e07 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e08 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e09 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e0f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e10 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e11 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e12 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e13 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e14 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e15 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e16 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e17 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e18 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e19 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e1f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e20 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e21 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e22 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e24 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e25 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e26 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e27 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e28 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e29 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e2f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e30 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e31 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e32 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e33 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e35 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e36 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e37 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e38 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e39 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e3f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e40 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e41 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e42 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e43 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e44 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e45 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e46 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e47 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e48 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e49 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e79 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e8f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e90 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e91 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e92 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e93 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e94 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e95 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e96 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e97 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e98 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e99 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // e9f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ea9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eaa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ead -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eaf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eb9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eba -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ebb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ebc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ebd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ebe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ebf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ec9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eca -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ecb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ecc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ecd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ece -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ecf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ed9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eda -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // edb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // edc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // edd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ede -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // edf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ee9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eea -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eeb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eec -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eed -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eee -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eef -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef1 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // ef9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // efa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // efb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // efc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // efd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // efe -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // eff -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f00 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f01 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f02 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f03 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f04 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f05 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f06 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f07 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f08 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f09 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f0f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f10 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f11 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f12 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f13 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f14 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f15 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f16 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f17 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f18 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f19 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f1f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f20 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f21 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f22 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f23 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f24 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f25 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f26 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f27 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f28 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f29 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f2f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f30 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f31 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f32 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f33 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f34 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f35 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f36 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f37 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f38 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f39 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f3f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f40 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f41 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f42 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f43 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f44 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f45 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f46 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f47 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f48 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f49 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f4f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f50 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f51 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f52 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f53 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f54 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f55 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f56 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f57 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f58 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f59 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f5f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f60 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f61 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f62 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f63 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f64 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f65 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f66 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f67 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f68 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f69 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f6f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f70 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f71 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f72 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f73 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f74 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f75 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f76 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f77 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f78 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f79 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f7f -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f80 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f81 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f82 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f83 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f84 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f85 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f86 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f87 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f88 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f89 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f8a -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f8b -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f8c -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f8d -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // f8e -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,Co, // f8f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f90 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f91 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f92 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f93 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f94 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f95 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f96 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f97 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f98 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f99 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9a -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9b -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9c -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9d -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9e -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // f9f -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fa0 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fa1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu, // fa2 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa4 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa5 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa6 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa7 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa8 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fa9 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // faa -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fab -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fac -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fad -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fae -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // faf -Ll,Ll,Ll,Ll,Ll,Ll,Ll,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fb0 -nu,nu,nu,Ll,Ll,Ll,Ll,Ll,nu,nu,nu,nu,nu,Lo,Mn,Lo, // fb1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Sm,Lo,Lo,Lo,Lo,Lo,Lo, // fb2 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,nu,Lo,nu, // fb3 -Lo,Lo,nu,Lo,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb4 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb5 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb6 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb7 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb8 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fb9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fba -Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fbb -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fbc -nu,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fbd -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fbe -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fbf -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc0 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc2 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc3 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc4 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc5 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc6 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc7 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc8 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fc9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fca -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fcb -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fcc -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fcd -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fce -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fcf -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd0 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd1 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd2 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Ps,Pe, // fd3 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fd4 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd5 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd6 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd7 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd8 -nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fd9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fda -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fdb -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu,nu,nu,nu,nu, // fdc -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fdd -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fde -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,nu,nu, // fdf -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fe0 -nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fe1 -Mn,Mn,Mn,Mn,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu,nu, // fe2 -Po,Pd,Pd,Pc,Pc,Ps,Pe,Ps,Pe,Ps,Pe,Ps,Pe,Ps,Pe,Ps, // fe3 -Pe,Ps,Pe,Ps,Pe,nu,nu,nu,nu,Po,Po,Po,Po,Pc,Pc,Pc, // fe4 -Po,Po,Po,nu,Po,Po,Po,Po,Pd,Ps,Pe,Ps,Pe,Ps,Pe,Po, // fe5 -Po,Po,Sm,Pd,Sm,Sm,Sm,nu,Po,Sc,Po,Po,nu,nu,nu,nu, // fe6 -Lo,Lo,Lo,nu,Lo,nu,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fe7 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fe8 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fe9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fea -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // feb -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fec -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fed -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // fee -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Cf, // fef -nu,Po,Po,Po,Sc,Po,Po,Po,Ps,Pe,Po,Sm,Po,Pd,Po,Po, // ff0 -Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Nd,Po,Po,Sm,Sm,Sm,Po, // ff1 -Po,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu, // ff2 -Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Lu,Ps,Po,Pe,Sk,Pc, // ff3 -Sk,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll, // ff4 -Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ll,Ps,Sm,Pe,Sm,nu, // ff5 -nu,Po,Ps,Pe,Po,Pc,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // ff6 -Lm,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // ff7 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // ff8 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lm,Lm, // ff9 -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo, // ffa -Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,nu, // ffb -nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Lo,Lo,Lo,Lo,Lo,Lo, // ffc -nu,nu,Lo,Lo,Lo,Lo,Lo,Lo,nu,nu,Lo,Lo,Lo,nu,nu,nu, // ffd -Sc,Sc,Sm,Sk,So,Sc,Sc,nu,So,Sm,Sm,Sm,Sm,So,So,nu, // ffe -nu,nu,nu,nu,nu,nu,nu,nu,nu,Cf,Cf,Cf,So,So,nu,nu, // fff -*/ -}; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/input/Debugger.java b/mozilla/js/js2/jsc/src/java/input/Debugger.java deleted file mode 100644 index 0df2605a651..00000000000 --- a/mozilla/js/js2/jsc/src/java/input/Debugger.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.io.*; - -/* - * Debugging tool. - */ - -public final class Debugger { - - public static PrintStream dbg = null; - private static boolean useSystemOut = false; - - public static void setOutFile(String filename) { - try { - PrintStream out = new PrintStream( new FileOutputStream( filename ) ); - System.setOut( out ); - //System.setErr( outfile ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - public static void setErrFile(String filename) { - try { - PrintStream err = new PrintStream( new FileOutputStream( filename ) ); - //System.setOut( out ); - System.setErr( err ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - public static void setDbgFile(String filename) { - try { - if( dbg!=null) { - dbg.close(); - } - dbg = new PrintStream( new FileOutputStream( filename ) ); - //System.setOut( outfile ); - //System.setErr( outfile ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - public static void trace( String str ) { - try { - if( useSystemOut ) - System.out.println( str ); - else { - if( dbg == null ) { - dbg = new PrintStream( new FileOutputStream( "debug.out" ) ); - //System.setOut( outfile ); - //System.setErr( outfile ); - } - dbg.println( str ); - } - } - catch( SecurityException e ) { - useSystemOut = true; - System.out.println( str ); - } - catch( Exception e ) { - e.printStackTrace(); - } - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/input/InputBuffer.java b/mozilla/js/js2/jsc/src/java/input/InputBuffer.java deleted file mode 100644 index ae0e30327bc..00000000000 --- a/mozilla/js/js2/jsc/src/java/input/InputBuffer.java +++ /dev/null @@ -1,512 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -/** - * Filters and buffers characters from a input reader. - */ - -package com.compilercompany.ecmascript; -import java.io.*; - -public class InputBuffer implements CharacterClasses { - - private static final boolean debug = false; - private static final boolean debug_nextchar = true; - private static final boolean debug_retract = false; - - StringBuffer lineA = new StringBuffer(); - StringBuffer lineB = new StringBuffer(); - StringBuffer curr_line,prev_line; - int curr_line_offset,prev_line_offset; - int lineA_offset, lineB_offset; - - private StringBuffer text; - private int[] line_breaks = new int[1000]; - - Reader in; - PrintStream err; - String origin; - - int pos; - int colPos, lnNum=-1; // <0,0> is the position of the first character. - - public static PrintStream out; - public static void setOut(String filename) throws Exception { - out = new PrintStream( new FileOutputStream(filename) ); - } - - public static void main(String[] args) { - test_retract(); - test_markandcopy(); - test_getLineText(); - } - - public InputBuffer( Reader in, PrintStream err, String origin ) { - this(in,err,origin,0); - } - - public InputBuffer( Reader in, PrintStream err, String origin, int pos ) { - this.in = in; - this.err = err; - this.origin = origin; - this.pos = pos; - this.text = new StringBuffer(); - } - - /** - * read() - * - * Read the next character from the input reader and store it in a buffer - * of the full text. - */ - - private int read() throws Exception { - int c = in.read(); - text.append((char)c); - pos++; - return c; - } - - /** - * text() - */ - - public String source() { - return text.toString(); - } - - /** - * nextchar() -- - * - * The basic function of nextchar() is to fetch the next character, - * in the input array, increment next and return the fetched character. - * - * To simplify the Scanner, this method also does the following: - * 1. normalizes certain special characters to a common character. - * 2. skips unicode format control characters (category Cf). - * 3. keeps track of line breaks, line position and line number. - * 4. treats + as a single line terminator. - * 5. returns 0 when the end of input is reached. - */ - - public final int nextchar() throws Exception { - - int c = -1; - - // If the last character was at the end of a line, - // then swap buffers and fill the new one with characters - // from the input reader. - - if( curr_line==null || colPos==curr_line.length() ) { - - lnNum++; - colPos=0; - - // If the current character is a newline, then read - // the next line of input into the other input buffer. - - if( curr_line == lineA ) { - if( lineB == null ) { - lineB = new StringBuffer(); - lineB_offset = pos; - } - curr_line = lineB; curr_line_offset = lineB_offset; - prev_line = lineA; prev_line_offset = lineA_offset; - lineA = null; - } else { - if( lineA == null ) { - lineA = new StringBuffer(); - lineA_offset = pos; - } - curr_line = lineA; curr_line_offset = lineA_offset; - prev_line = lineB; prev_line_offset = lineB_offset; - lineB = null; - } - - while(c != '\n' && c != 0) { - - c = read(); - - if( false ) { - Debugger.trace( "c = " + c ); - } - - // Skip Unicode 3.0 format-control (general category Cf in - // Unicode Character Database) characters. - - while(true) { - - switch(c) { - case 0x070f: // SYRIAC ABBREVIATION MARK - case 0x180b: // MONGOLIAN FREE VARIATION SELECTOR ONE - case 0x180c: // MONGOLIAN FREE VARIATION SELECTOR TWO - case 0x180d: // MONGOLIAN FREE VARIATION SELECTOR THREE - case 0x180e: // MONGOLIAN VOWEL SEPARATOR - case 0x200c: // ZERO WIDTH NON-JOINER - case 0x200d: // ZERO WIDTH JOINER - case 0x200e: // LEFT-TO-RIGHT MARK - case 0x200f: // RIGHT-TO-LEFT MARK - case 0x202a: // LEFT-TO-RIGHT EMBEDDING - case 0x202b: // RIGHT-TO-LEFT EMBEDDING - case 0x202c: // POP DIRECTIONAL FORMATTING - case 0x202d: // LEFT-TO-RIGHT OVERRIDE - case 0x202e: // RIGHT-TO-LEFT OVERRIDE - case 0x206a: // INHIBIT SYMMETRIC SWAPPING - case 0x206b: // ACTIVATE SYMMETRIC SWAPPING - case 0x206c: // INHIBIT ARABIC FORM SHAPING - case 0x206d: // ACTIVATE ARABIC FORM SHAPING - case 0x206e: // NATIONAL DIGIT SHAPES - case 0x206f: // NOMINAL DIGIT SHAPES - case 0xfeff: // ZERO WIDTH NO-BREAK SPACE - case 0xfff9: // INTERLINEAR ANNOTATION ANCHOR - case 0xfffa: // INTERLINEAR ANNOTATION SEPARATOR - case 0xfffb: // INTERLINEAR ANNOTATION TERMINATOR - c = read(); - continue; // skip it. - default: - break; - } - break; // out of while loop. - } - - - if( c == 0x000a && prev_line.length()!=0 && prev_line.charAt(prev_line.length()-1) == 0x000d ) { - - // If this is one of those funny double line terminators, - // Then ignore the second character by reading on. - - line_breaks[lnNum] = pos; // adjust if forward. - c = read(); - } - - // Line terminators. - - if( c == 0x000a || - c == 0x000d || - c == 0x2028 || - c == 0x2029 ) { - - curr_line.append((char)c); - c = '\n'; - line_breaks[lnNum+1] = pos; - - // White space - - } else if( c == 0x0009 || - c == 0x000b || - c == 0x000c || - c == 0x0020 || - c == 0x00a0 || - false /* other cat Zs' */ ) { - - c = ' '; - curr_line.append((char)c); - - // End of line - - } else if( c == -1 ) { - - c = 0; - curr_line.append((char)c); - - // All other characters. - - } else { - - // Use c as is. - curr_line.append((char)c); - - } - } - } - - // Get the next character. - - int ln = lnNum; - int col = colPos; - - if( curr_line.length() != 0 && curr_line.charAt(colPos) == 0 ) { - c = 0; - colPos++; - } else if( colPos == curr_line.length()-1 ) { - c = '\n'; - colPos++; - } else { - c = curr_line.charAt(colPos++); - } - - if( out != null ) { - out.println("Ln " + ln + ", Col " + col + ": nextchar " + Integer.toHexString(c) + " = " + (char)c + " @ " + positionOfNext()); - } - if( debug || debug_nextchar ) { - Debugger.trace("Ln " + ln + ", Col " + col + ": nextchar " + Integer.toHexString(c) + " = " + (char)c + " @ " + positionOfNext()); - } - - return c; - } - - /** - * test_nextchar() -- - * Return an indication of how nextchar() performs - * in various situations, relative to expectations. - */ - - boolean test_nextchar() { - return true; - } - - /** - * time_nextchar() -- - * Return the milliseconds taken to do various ordinary - * tasks with nextchar(). - */ - - int time_nextchar() { - return 0; - } - - /** - * retract - * - * Backup one character position in the input. If at the beginning - * of the line, then swap buffers and point to the last character - * in the other buffer. - */ - - public final void retract() throws Exception { - colPos--; - if( colPos<0 ) { - if( curr_line == prev_line ) { - // Can only retract over one line. - throw new Exception("Can only retract past one line at a time."); - } else if( curr_line == lineA ) { - curr_line = lineB = prev_line; - } else { - curr_line = lineA = prev_line; - } - lnNum--; - colPos = curr_line.length()-1; - curr_line_offset = prev_line_offset; - } - if( debug || debug_retract ) { - Debugger.trace("Ln " + lnNum + ", Col " + colPos + ": retract"); - } - return; - } - - static boolean test_retract() { - Debugger.trace("test_retract"); - Reader reader = new StringReader("abc\ndef\nghi"); - try { - InputBuffer inbuf = new InputBuffer(reader,System.err,"test"); - int c=-1; - for(int i=0;i<9;i++) { - c = inbuf.nextchar(); - } - for(int i=0;i<3;i++) { - inbuf.retract(); - c = inbuf.nextchar(); - inbuf.retract(); - } - while(c!=0) { - c = inbuf.nextchar(); - } - } catch (Exception x) { - x.printStackTrace(); - System.out.println(x); - } - return true; - } - - /** - * classOfNext - */ - - public byte classOfNext() { - - // return the Unicode character class of the current - // character, which is pointed to by 'next-1'. - - return CharacterClasses.data[curr_line.charAt(colPos-1)]; - } - - /** - * positionOfNext - */ - - public int positionOfNext() { - return curr_line_offset+colPos-1; - } - - /** - * positionOfMark - */ - - public int positionOfMark() { - return line_breaks[markLn]+markCol-1; - } - - /** - * mark - */ - - int markCol; - int markLn; - - public int mark() { - markLn = (lnNum==-1)?0:lnNum; // In case nextchar hasn't been called yet. - markCol = colPos; - - if( debug ) { - Debugger.trace("Ln " + markLn + ", Col " + markCol + ": mark"); - } - - return markCol; - } - - /** - * copy - */ - - public String copy() throws Exception { - StringBuffer buf = new StringBuffer(); - - if( debug ) { - Debugger.trace("Ln " + lnNum + ", Col " + colPos + ": copy " + buf); - } - - if(markLn!=lnNum || markCol>colPos) { - throw new Exception("Internal error: InputBuffer.copy() markLn = " + markLn + ", lnNum = " + lnNum + ", markCol = " + - markCol + ", colPos = " + colPos ); - } - - for (int i = markCol-1; i < colPos; i++) { - buf.append(curr_line.charAt(i)); - } - - return buf.toString(); - } - - static boolean test_markandcopy() { - Debugger.trace("test_copy"); - Reader reader = new StringReader("abc\ndef\nghijklmnopqrst\nuvwxyz"); - String s; - try { - InputBuffer inbuf = new InputBuffer(reader,System.err,"test"); - int c=-1; - int i; - for(i=0;i<10;i++) { - c = inbuf.nextchar(); - } - inbuf.mark(); - for(;i<13;i++) { - c = inbuf.nextchar(); - } - s = inbuf.copy(); - if(s.equals("ijk")) { - Debugger.trace("1: passed: " + s); - } else { - Debugger.trace("1: failed: " + s); - } - while(c!=0) { - c = inbuf.nextchar(); - } - s = inbuf.copy(); - } catch (Exception x) { - s = x.getMessage(); - //x.printStackTrace(); - } - if(s.equals("Internal error: InputBuffer.copy() markLn = 2, lnNum = 3, markCol = 2, colPos = 6")) { - Debugger.trace("2: passed: " + s); - } else { - Debugger.trace("2: failed: " + s); - } - return true; - } - - public String getLineText(int pos) { - int i,len; - for(i = 0; line_breaks[i] <= pos && i <= lnNum; i++) - ; - - int offset = line_breaks[i-1]; - - for(len = offset ; (text.charAt(len)!=(char)-1 && - text.charAt(len)!=0x0a && - text.charAt(len)!=0x0d && - text.charAt(len)!=0x2028 && - text.charAt(len)!=0x2029) ; len++) { - } - - return text.toString().substring(offset,len); - } - - static boolean test_getLineText() { - Debugger.trace("test_getLineText"); - Reader reader = new StringReader("abc\ndef\nghi"); - try { - InputBuffer inbuf = new InputBuffer(reader,System.err,"test"); - int c=-1; - for(int i=0;i<9;i++) { - c = inbuf.nextchar(); - } - for(int i=0;i<3;i++) { - inbuf.retract(); - c = inbuf.nextchar(); - inbuf.retract(); - } - while(c!=0) { - c = inbuf.nextchar(); - } - for(int i=0;i - */ - -/** - * Scans input for tokens. - */ - - -package com.compilercompany.ecmascript; -import java.util.Vector; -import java.io.*; - - -public class Scanner implements Tokens, States, CharacterClasses { - - private static final boolean debug = false; - - private Vector tokens; // vector of token instances. - private int slash_context; // slashdiv_context or slashregexp_context - private String codebase; - private boolean foundNewlineInComment; - private boolean isFirstTokenOnLine; - protected int errorCount = 0; - - InputBuffer input; - - public static PrintStream err; - public static PrintStream out; - public static void setOut(String filename) throws Exception { - out = new PrintStream( new FileOutputStream(filename) ); - } - - /** - * - * self tests. - * - */ - - static int failureCount = 0; - - public static void main( String[] args ) { - - PrintStream outfile = null; - - try { - - outfile = new PrintStream( new FileOutputStream( "Scanner.test" ) ); - System.setOut( outfile ); - - System.out.println( "Scanner test begin" ); - - test_nexttoken(); - - if( failureCount != 0 ) - System.out.println( "Scanner test completed: " + failureCount + " tests failed" ); - else - System.out.println( "Scanner test completed successfully" ); - - } catch( Exception e ) { - e.printStackTrace(); - } finally { - outfile.close(); - System.setOut( null ); - } - } - - /** - * Scanner constructors. - */ - - private Scanner() { - this.tokens = new Vector(); - this.slash_context |= slashregexp_context_flag; - } - - public Scanner( Reader reader, PrintStream errout, String codebase ) { - this(); - this.input = new InputBuffer(reader, errout, codebase); - this.codebase = codebase; - this.err = errout; - } - - /** - * nextchar() -- - * Get the next character that has lexical significance. WhiteSpace, - * LineTerminators and Comments are normalized to various combinations - * of ' ' and '\n'. Unicode format control character are not significant - * in the lexical grammar and so are removed from the character stream. - * If the end of the input stream is reached, then 0 is returned. - */ - - private final char nextchar() throws Exception { - - return (char)input.nextchar(); - - } - - public final String lexeme() throws Exception { - return input.copy(); - } - - /** - * retract() -- - * Causes one character of input to be 'put back' onto the - * que. [Test whether this works for comments and white space.] - */ - - public final void retract() throws Exception { - input.retract(); - return; - } - - /** - * Various helper methods for managing and testing the - * scanning context for slashes. - */ - - private static final int slashdiv_context_flag = 0x00000001; - private static final int slashregexp_context_flag = 0x00000002; - - public final void enterSlashDivContext() { - slash_context |= slashdiv_context_flag; - } - - public final void exitSlashDivContext() { - slash_context ^= slashdiv_context_flag; - } - - public final void enterSlashRexexpContext() { - slash_context |= slashregexp_context_flag; - } - - public final void exitSlashRegexpContext() { - slash_context ^= slashregexp_context_flag; - } - - private final int isSlashDivContext() { - return slash_context & slashdiv_context_flag; - } - - private final int isSlashRegexpContext() { - return slash_context & slashregexp_context_flag; - } - - /** - * makeTokenInstance() -- - * Make an instance of the specified token class using the lexeme string. - * Return the index of the token which is its identifier. - */ - - protected final int makeTokenInstance( int token_class, String lexeme ) { - tokens.addElement( new Token( token_class, lexeme ) ); - return tokens.size()-1; /* return the tokenid */ - } - - /** - * getTokenClass() -- - * Get the class of a token instance. - */ - - public final int getTokenClass( int token_id ) { - - // if the token id is negative, it is a token_class. - if( token_id < 0 ) { - return token_id; - } - - // otherwise, get instance data from the instance vector. - return ((Token)tokens.elementAt( token_id )).getTokenClass(); - } - - /** - * getTokenText() -- - * Get the text of a token instance. - * - */ - - public final String getTokenText( int token_id ) { - - // if the token id is negative, it is a token_class. - if( token_id < 0 ) { - return Token.getTokenClassName(token_id); - } - - // otherwise, get instance data from the instance vector. - return ((Token)tokens.elementAt( token_id )).getTokenText(); - } - - /** - * getPersistentTokenText() -- - * Get the persistent text of a token instance. - * - */ - - public final String getPersistentTokenText( int token_id ) { - - // if the token id is negative, it is a token_class. - if( token_id < 0 ) { - return Token.getTokenClassName(token_id); - } - - // otherwise, get instance data from the instance vector. - return Token.getTokenClassName(getTokenClass(token_id)) - + "(" + ((Token)tokens.elementAt( token_id )).getTokenText() + ")"; - } - - /** - * getTokenSource() -- - * get the source of a token instance. - */ - - public final String getTokenSource( int token_id ) { - - // if the token id is negative, it is a token_class. - if( token_id < 0 ) { - return Token.getTokenClassName(token_id); - } - - // otherwise, get instance data from the instance vector. - return ((Token)tokens.elementAt( token_id )).getTokenSource(); - } - - /** - * getLineText() -- - * Get the text of the current line. - */ - - public final String getLineText() { - return input.curr_line.toString(); - } - - /** - * getLinePointer() -- - * Generate a string that contains a carat character at - * a specified position. - */ - - public final String getLinePointer() { - return getLinePointer( "" ); - } - - public final String getLinePointer(String header) { - StringBuffer padding = new StringBuffer(); - for ( int i = header.length() ; i > 0 ; i-- ) { - padding.append( " " ); - } - for( int i=1 ; i < input.colPos ; i++ ) { - padding.append( " " ); - } - return new String(padding + "^"); - } - - public final String getLinePointer(int pos) { - StringBuffer padding = new StringBuffer(); - for( int i=0 ; i < pos ; i++ ) { - padding.append( " " ); - } - return new String(padding + "^"); - } - - public final String getErrorText() { - return input.curr_line.toString(); - } - - /** - * Record an error. - */ - - public static final int lexical_error = 0; - public static final int lexical_lineterminatorinsinglequotedstringliteral_error = lexical_error+1; - public static final int lexical_lineterminatorindoublequotedstringliteral_error = lexical_lineterminatorinsinglequotedstringliteral_error+1; - public static final int lexical_backslashinsinglequotedstring_error = lexical_lineterminatorindoublequotedstringliteral_error +1; - public static final int lexical_backslashindoublequotedstring_error = lexical_backslashinsinglequotedstring_error +1; - public static final int lexical_endofstreaminstringliteral_error = lexical_backslashindoublequotedstring_error +1; - public static final int lexical_nondecimalidentifiercharindecmial_error = lexical_endofstreaminstringliteral_error +1; - public static final int syntax_error = lexical_nondecimalidentifiercharindecmial_error+1; - - private static final String[] error_messages = { - "Lexical error.", - "String literal must be terminated before line break.", - "String literal must be terminated before line break.", - "Backslash characters are not allowed in string literals.", - "Backslash characters are not allowed in string literals.", - "End of input reached before closing quote for string literal.", - "Decimal numbers may not contain non-decimal identifier characters.", - "Syntax error." - }; - - public final void error(int kind, String msg, int tokenid) { - errorCount++; - String loc = null; - switch(kind) { - case lexical_error: - case lexical_lineterminatorinsinglequotedstringliteral_error: - case lexical_lineterminatorindoublequotedstringliteral_error: - case lexical_backslashindoublequotedstring_error: - case lexical_backslashinsinglequotedstring_error: - case lexical_endofstreaminstringliteral_error: - case syntax_error: - default: - loc = ((codebase==null||codebase.length()==0)?"":codebase+": ") + "Ln " + (input.markLn+1) + ", Col " + (input.markCol+1) + ": "; - msg = msg==null?error_messages[kind]:msg; - break; - } - System.err.println(loc+msg); - System.err.println(input.getLineText(input.positionOfMark())); - System.err.println(getLinePointer(input.markCol-1)); - skiperror(kind); - } - - public final void error(int kind, String msg) { - error(kind,msg,error_token); - } - - public final void error(int kind) { - error(kind,null); - } - - /** - * skip ahead after an error is detected. this simply goes until the next - * whitespace or end of input. - */ - - private final void skiperror() { - skiperror(lexical_error); - } - - private final void skiperror(int kind) { - Debugger.trace("start error recovery"); - try { - switch(kind) { - case lexical_error: - while ( true ) { - char nc = nextchar(); - Debugger.trace("nc " + nc); - if( nc == ' ' || - nc == '\n' || - nc == 0 ) { - return; - } - } - case lexical_lineterminatorinsinglequotedstringliteral_error: - case lexical_backslashinsinglequotedstring_error: - case lexical_lineterminatorindoublequotedstringliteral_error: - case lexical_backslashindoublequotedstring_error: - while ( true ) { - char nc = nextchar(); - if( nc == '\'' || nc == 0 ) { - return; - } - } - case lexical_nondecimalidentifiercharindecmial_error: - while ( true ) { - char nc = nextchar(); - if( nc == ' ' || nc == '\n' || nc == 0 ) { - return; - } - } - case syntax_error: - default: - while ( true ) { - char nc = nextchar(); - if( nc == ';' || nc == '\n' || nc == 0 ) { - return; - } - } - } - } catch (Exception x) { - x.printStackTrace(); - } finally { - Debugger.trace("stop error recovery"); - } - } - - /** - * - */ - - boolean test_skiperror() { - return true; - } - - /** - * - * - **/ - - public final boolean followsLineTerminator() { - if( debug ) { - Debugger.trace("isFirstTokenOnLine = " + isFirstTokenOnLine); - } - return isFirstTokenOnLine; - } - - /** - * - * - **/ - - final public int nexttoken() throws Exception { - - int state = start_state; - isFirstTokenOnLine = false; - - while ( true ) { - if( debug ) { - Debugger.trace( "\nstate = " + state + ", next = " + input.positionOfNext() ); - } - - switch( state ) { - - case start_state: - int c = nextchar(); - input.mark(); - switch( c ) { - case '@': return ampersand_token; - case '\'': state = singlequote_state; continue; - case '\"': state = doublequote_state; continue; - case '-': state = minus_state; continue; - case '!': state = not_state; continue; - case '%': state = remainder_state; continue; - case '&': state = and_state; continue; - case '(': return leftparen_token; - case ')': return rightparen_token; - case '*': state = star_state; continue; - case ',': return comma_token; - case '.': state = dot_state; continue; - case '/': state = slash_state; continue; - case ':': state = colon_state; continue; - case ';': return semicolon_token; - case '?': return questionmark_token; - case '[': return leftbracket_token; - case ']': return rightbracket_token; - case '^': state = bitwisexor_state; continue; - case '{': return leftbrace_token; - case '|': state = or_state; continue; - case '}': return rightbrace_token; - case '~': return bitwisenot_token; - case '+': state = plus_state; continue; - case '<': state = lessthan_state; continue; - case '=': state = equal_state; continue; - case '>': state = greaterthan_state;continue; - case 'a': state = a_state; continue; - case 'b': state = b_state; continue; - case 'c': state = c_state; continue; - case 'd': state = d_state; continue; - case 'e': state = e_state; continue; - case 'f': state = f_state; continue; - case 'g': state = g_state; continue; - case 'i': state = i_state; continue; - case 'l': state = l_state; continue; - case 'n': state = n_state; continue; - case 'p': state = p_state; continue; - case 'r': state = r_state; continue; - case 's': state = s_state; continue; - case 't': state = t_state; continue; - case 'u': state = u_state; continue; - case 'v': state = v_state; continue; - case 'w': state = w_state; continue; - case 'A': case 'B': case 'C': case 'D': case 'E': - case 'F': case 'G': case 'H': case 'h': case 'I': - case 'J': case 'j': case 'K': case 'k': case 'L': - case 'M': case 'm': case 'N': case 'O': case 'o': case 'P': - case 'Q': case 'q': case 'R': case 'S': case 'T': - case 'U': case 'V': case 'W': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - state = A_state; continue; - case '0': state = zero_state; continue; - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = decimalinteger_state; continue; - case ' ': state = start_state; continue; - case '\n': state = start_state; - isFirstTokenOnLine = true; continue; - case 0: return eos_token; - default: switch(input.classOfNext()) { - case Lu: case Ll: case Lt: - case Lm: case Lo: Nl: - state = A_state; continue; - default: - state = error_state; continue; - } - } - case A_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - case 0: case ' ': case '\n': - default: switch(input.classOfNext()) { - case Lu: case Ll: case Lt: - case Lm: case Lo: case Nl: - case Mn: case Mc: case Nd: - case Pc: state = A_state; continue; - default: retract(); - return makeTokenInstance( identifier_token, input.copy() ); - } - } - - /** - * prefix: - **/ - - case eol_state: - isFirstTokenOnLine = true; - switch ( nextchar() ) { - case '\n': Debugger.trace("eating eol"); state = eol_state; continue; /* eat extra eols */ - default: Debugger.trace("returning eol"); - state = start_state; /*first = input.positionOfNext();*/ - retract(); state = start_state; continue; - } - - /** - * prefix: ' - **/ - - case singlequote_state: - switch ( nextchar() ) { - case '\'': return makeTokenInstance( stringliteral_token, input.copy() ); - // case '\\': error(lexical_backslashinsinglequotedstring_error); return error_token; - case '\n': error(lexical_lineterminatorinsinglequotedstringliteral_error); return error_token; - case 0: error(lexical_endofstreaminstringliteral_error); return error_token; - default: state = singlequote_state; continue; - } - - /** - * prefix: " - **/ - - case doublequote_state: - switch ( nextchar() ) { - case '\"': return makeTokenInstance( stringliteral_token, input.copy() ); - // case '\\': error(lexical_backslashindoublequotedstring_error); return error_token; - case '\n': error(lexical_lineterminatorindoublequotedstringliteral_error); return error_token; - case 0: error(lexical_endofstreaminstringliteral_error); return error_token; - default: state = doublequote_state; continue; - } - - /** - * prefix: 0 - * accepts: 0x... | 0X... | 01... | 0... | 0 - **/ - - case zero_state: - switch ( nextchar() ) { - case 'x': case 'X': - state = hexinteger_state; continue; - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - state = octalinteger_state; continue; - case '.': state = decimalinteger_state; continue; - case 'E': case 'e': - state = exponent_state; continue; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - } - - /** - * prefix: 0x - * accepts: 0x123f - **/ - - case hexinteger_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': case 'a': case 'b': - case 'c': case 'd': case 'e': case 'f': - case 'A': case 'B': case 'C': case 'D': - case 'E': case 'F': - state = hexinteger_state; continue; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - // skip the 0x prefix - } - - /** - * prefix: 0 - * accepts: 0123 - **/ - - case octalinteger_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - state = octalinteger_state; continue; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - } - - /** - * prefix: . - * accepts: .123 | . - **/ - - case dot_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': - state = decimal_state; continue; - case '.': state = doubledot_state; continue; - default: retract(); return dot_token; - } - - /** - * accepts: .. - **/ - - case doubledot_state: - switch ( nextchar() ) { - case '.': return tripledot_token; - default: retract(); return doubledot_token; - } - - /** - * prefix: N - * accepts: 0.123 | 1.23 | 123 | 1e23 | 1e-23 - **/ - - case decimalinteger_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': case '.': - state = decimalinteger_state; continue; - case 'E': case 'e': - state = exponent_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - error(lexical_nondecimalidentifiercharindecmial_error); return error_token; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - } - - /** - * prefix: N. - * accepts: 0.1 | 1e23 | 1e-23 - **/ - - case decimal_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': - state = decimal_state; continue; - case 'E': case 'e': - state = exponent_state; continue; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - } - - /** - * prefix: ..e - * accepts: ..eN | ..e+N | ..e-N - **/ - - case exponent_state: - switch ( nextchar() ) { - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': case '+': case '-': - state = exponent_state; continue; - default: retract(); return makeTokenInstance( numberliteral_token, input.copy() ); - } - - /** - * tokens: -- -= - - **/ - - case minus_state: - switch ( nextchar() ) { - case '-': return minusminus_token; - case '=': return minusassign_token; - default: retract(); return minus_token; - } - - /** - * prefix: ! - * tokens: != ! - **/ - - case not_state: - switch ( nextchar() ) { - case '=': return notequals_token; - default: retract(); return not_token; - } - - /** - * prefix: % - * tokens: %= % - **/ - - case remainder_state: - switch ( nextchar() ) { - case '=': return modulusassign_token; - default: retract(); return modulus_token; - } - - /** - * tokens: && &= & - **/ - - case and_state: - switch ( nextchar() ) { - case '&': return logicaland_token; - case '=': return bitwiseandassign_token; - default: retract(); return bitwiseand_token; - } - - /** - * tokens: *= * - **/ - - case star_state: - switch ( nextchar() ) { - case '=': return multassign_token; - default: retract(); return mult_token; - } - - /** - * tokens: // /* - */ - - case slash_state: - switch ( nextchar() ) { - case '/': state = linecomment_state; continue; - case '*': foundNewlineInComment=false; state = blockcomment_state; continue; - default: - retract(); /* since we didn't use the current character - for this decision. */ - if(isSlashDivContext()!=0) { - state = slashdiv_state; continue; - } else { - state = slashregexp_state; continue; - } - } - - /** - * tokens: / /= - */ - - case slashdiv_state: - switch ( nextchar() ) { - case '=': return divassign_token; - default: retract(); return div_token; - } - - /** - * tokens: : :: - */ - - case colon_state: - switch ( nextchar() ) { - case ':': return doublecolon_token; - default: retract(); return colon_token; - } - - /** - * tokens: // - */ - - case slashregexp_state: - switch ( nextchar() ) { - case '/': state = regexp_state; continue; - case 0: case '\n': error(lexical_error); return error_token; - default: state = slashregexp_state; continue; - } - - /** - * tokens: g | i | m - */ - - case regexp_state: - switch ( nextchar() ) { - case 'g': state = regexpg_state; continue; - case 'i': state = regexpi_state; continue; - case 'm': state = regexpm_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'H': case 'h': case 'I': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: i | m - */ - - case regexpg_state: - switch ( nextchar() ) { - case 'i': state = regexpgi_state; continue; - case 'm': state = regexpgm_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: g | m - */ - - case regexpi_state: - switch ( nextchar() ) { - case 'g': state = regexpgi_state; continue; - case 'm': state = regexpim_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: g | i - */ - - case regexpm_state: - switch ( nextchar() ) { - case 'g': state = regexpgm_state; continue; - case 'i': state = regexpim_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'H': case 'h': case 'I': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: g - */ - - case regexpim_state: - switch ( nextchar() ) { - case 'g': state = regexpgim_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: i - */ - - case regexpgm_state: - switch ( nextchar() ) { - case 'i': state = regexpgim_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: m - */ - - case regexpgi_state: - switch ( nextchar() ) { - case 'm': state = regexpgim_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: - */ - - case regexpgim_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - error(lexical_error); return error_token; - case 0: case ' ': case '\n': - default: retract(); return makeTokenInstance( regexpliteral_token, input.copy() ); - } - - /** - * tokens: ^^ ^^= ^= ^ - **/ - - case bitwisexor_state: - switch ( nextchar() ) { - case '=': return bitwisexorassign_token; - case '^': state = logicalxor_token; break; - default: retract(); return bitwisexor_token; - } - - /** - * tokens: ^^ ^= ^ - **/ - - case logicalxor_state: - switch ( nextchar() ) { - case '=': return logicalxorassign_token; - default: retract(); return logicalxor_token; - } - - /** - * tokens: || |= | - **/ - - case or_state: - switch ( nextchar() ) { - case '|': return logicalor_token; - case '=': return bitwiseorassign_token; - default: retract(); return bitwiseor_token; - } - - /** - * tokens: ++ += + - **/ - - case plus_state: - switch ( nextchar() ) { - case '+': return plusplus_token; - case '=': return plusassign_token; - default: retract(); return plus_token; - } - - - /** - * tokens: <= < - **/ - - case lessthan_state: - switch ( nextchar() ) { - case '<': state = leftshift_state; break; - case '=': return lessthanorequals_token; - default: retract(); return lessthan_token; - } - - /** - * tokens: <<= << - **/ - - case leftshift_state: - switch ( nextchar() ) { - case '=': return leftshiftassign_token; - default: retract(); return leftshift_token; - } - - /** - * tokens: == = - **/ - - case equal_state: - switch ( nextchar() ) { - case '=': state = equalequal_state; break; - default: retract(); return assign_token; - } - - /** - * tokens: === == - **/ - - case equalequal_state: - switch ( nextchar() ) { - case '=': return strictequals_token; - default: retract(); return equals_token; - } - - /** - * prefix: > - **/ - - case greaterthan_state: - switch ( nextchar() ) { - case '>': state = rightshift_state; break; - case '=': return greaterthanorequals_token; - default: retract(); return greaterthan_token; - } - - /** - * prefix: >> - **/ - - case rightshift_state: - switch ( nextchar() ) { - case '>': state = unsignedrightshift_state; break; - case '=': return rightshiftassign_token; - default: retract(); return rightshift_token; - } - - /** - * prefix: >>> - **/ - - case unsignedrightshift_state: - switch ( nextchar() ) { - case '=': return unsignedrightshiftassign_token; - default: retract(); return unsignedrightshift_token; - } - - /** - * prefix: a - **/ - - case a_state: - switch ( nextchar() ) { - case 'b': state = ab_state; continue; - case 't': state = at_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: ab - **/ - - case ab_state: - switch ( nextchar() ) { - case 's': state = abs_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abs - **/ - - case abs_state: - switch ( nextchar() ) { - case 't': state = abst_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abst - **/ - - case abst_state: - switch ( nextchar() ) { - case 'r': state = abstr_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abstr - **/ - - case abstr_state: - switch ( nextchar() ) { - case 'a': state = abstra_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abstra - **/ - - case abstra_state: - switch ( nextchar() ) { - case 'c': state = abstrac_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abstrac - **/ - - case abstrac_state: - switch ( nextchar() ) { - case 't': state = abstract_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: abstract - **/ - - case abstract_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return abstract_token; - } - - /** - * prefix: at - **/ - - case at_state: - switch ( nextchar() ) { - case 't': state = att_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: att - **/ - - case att_state: - switch ( nextchar() ) { - case 'r': state = attr_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attr - **/ - - case attr_state: - switch ( nextchar() ) { - case 'i': state = attri_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attri - **/ - - case attri_state: - switch ( nextchar() ) { - case 'b': state = attrib_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attrib - **/ - - case attrib_state: - switch ( nextchar() ) { - case 'u': state = attribu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attribu - **/ - - case attribu_state: - switch ( nextchar() ) { - case 't': state = attribut_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attribut - **/ - - case attribut_state: - switch ( nextchar() ) { - case 'e': state = attribute_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: attribute - **/ - - case attribute_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return attribute_token; - } - - /** - * prefix: b - **/ - - case b_state: - switch ( nextchar() ) { - case 'r': state = br_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: bo - **/ - - case bo_state: - switch ( nextchar() ) { - case 'o': state = boo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: boo - **/ - - case boo_state: - switch ( nextchar() ) { - case 'l': state = bool_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: bool - **/ - - case bool_state: - switch ( nextchar() ) { - case 'e': state = boole_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: boole - **/ - - case boole_state: - switch ( nextchar() ) { - case 'a': state = boolea_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: boolea - **/ - - case boolea_state: - switch ( nextchar() ) { - case 'n': state = boolean_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: boolean - **/ - - case boolean_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return boolean_token; - } - - /** - * prefix: br - **/ - - case br_state: - switch ( nextchar() ) { - case 'e': state = bre_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: bre - **/ - - case bre_state: - switch ( nextchar() ) { - case 'a': state = brea_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: brea - **/ - - case brea_state: - switch ( nextchar() ) { - case 'k': state = break_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: break - **/ - - case break_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return break_token; - } - - /** - * prefix: by - **/ - - case by_state: - switch ( nextchar() ) { - case 't': state = byt_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: byt - **/ - - case byt_state: - switch ( nextchar() ) { - case 'e': state = byte_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: byte - **/ - - case byte_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return byte_token; - } - - /** - * prefix: c - **/ - - case c_state: - switch ( nextchar() ) { - case 'a': state = ca_state; continue; - case 'l': state = cl_state; continue; - case 'o': state = co_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: ca - **/ - - case ca_state: - switch ( nextchar() ) { - case 's': state = cas_state; continue; - case 't': state = cat_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: cas - **/ - - case cas_state: - switch ( nextchar() ) { - case 'e': state = case_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: case - **/ - - case case_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return case_token; - } - - /** - * prefix: cat - **/ - - case cat_state: - switch ( nextchar() ) { - case 'c': state = catc_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: catc - **/ - - case catc_state: - switch ( nextchar() ) { - case 'h': state = catch_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: catch - **/ - - case catch_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return catch_token; - } - - /** - * prefix: ch - **/ - - case ch_state: - switch ( nextchar() ) { - case 'a': state = cha_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: cha - **/ - - case cha_state: - switch ( nextchar() ) { - case 'r': state = char_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: char - **/ - - case char_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return char_token; - } - - /** - * prefix: cl - **/ - - case cl_state: - switch ( nextchar() ) { - case 'a': state = cla_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: cla - **/ - - case cla_state: - switch ( nextchar() ) { - case 's': state = clas_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: clas - **/ - - case clas_state: - switch ( nextchar() ) { - case 's': state = class_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: class - **/ - - case class_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return class_token; - } - - /** - * prefix: co - **/ - - case co_state: - switch ( nextchar() ) { - case 'n': state = con_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: con - **/ - - case con_state: - switch ( nextchar() ) { - case 's': state = cons_state; continue; - case 't': state = cont_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: cons - **/ - - case cons_state: - switch ( nextchar() ) { - case 't': state = const_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: const - **/ - - case const_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return const_token; - } - - /** - * prefix: cont - **/ - - case cont_state: - switch ( nextchar() ) { - case 'i': state = conti_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: conti - **/ - - case conti_state: - switch ( nextchar() ) { - case 'n': state = contin_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: contin - **/ - - case contin_state: - switch ( nextchar() ) { - case 'u': state = continu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: continu - **/ - - case continu_state: - switch ( nextchar() ) { - case 'e': state = continue_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: continue - **/ - - case continue_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return continue_token; - } - - /** - * prefix: d - **/ - - case d_state: - switch ( nextchar() ) { - case 'e': state = de_state; continue; - case 'o': state = do_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: de - **/ - - case de_state: - switch ( nextchar() ) { - case 'b': state = deb_state; continue; - case 'f': state = def_state; continue; - case 'l': state = del_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: deb - **/ - - case deb_state: - switch ( nextchar() ) { - case 'u': state = debu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: debu - **/ - - case debu_state: - switch ( nextchar() ) { - case 'g': state = debug_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: debug - **/ - - case debug_state: - switch ( nextchar() ) { - case 'g': state = debugg_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: debugg - **/ - - case debugg_state: - switch ( nextchar() ) { - case 'e': state = debugge_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: debugge - **/ - - case debugge_state: - switch ( nextchar() ) { - case 'r': state = debugger_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: debugger - **/ - - case debugger_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return debugger_token; - } - - /** - * prefix: def - **/ - - case def_state: - switch ( nextchar() ) { - case 'a': state = defa_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: defa - **/ - - case defa_state: - switch ( nextchar() ) { - case 'u': state = defau_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: defau - **/ - - case defau_state: - switch ( nextchar() ) { - case 'l': state = defaul_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: defaul - **/ - - case defaul_state: - switch ( nextchar() ) { - case 't': state = default_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: default - **/ - - case default_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return default_token; - } - - /** - * prefix: del - **/ - - case del_state: - switch ( nextchar() ) { - case 'e': state = dele_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: dele - **/ - - case dele_state: - switch ( nextchar() ) { - case 't': state = delet_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: delet - **/ - - case delet_state: - switch ( nextchar() ) { - case 'e': state = delete_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: delete - **/ - - case delete_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return delete_token; - } - - /** - * prefix: do - **/ - - case do_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return do_token; - } - - /** - * prefix: dou - **/ - - case dou_state: - switch ( nextchar() ) { - case 'b': state = doub_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: doub - **/ - - case doub_state: - switch ( nextchar() ) { - case 'l': state = doubl_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: doubl - **/ - - case doubl_state: - switch ( nextchar() ) { - case 'e': state = double_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: double - **/ - - case double_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return double_token; - } - - /** - * prefix: e - **/ - - case e_state: - switch ( nextchar() ) { - case 'l': state = el_state; continue; - case 'n': state = en_state; continue; - case 'v': state = ev_state; continue; - case 'x': state = ex_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: el - **/ - - case el_state: - switch ( nextchar() ) { - case 's': state = els_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: els - **/ - - case els_state: - switch ( nextchar() ) { - case 'e': state = else_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: else - **/ - - case else_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return else_token; - } - - /** - * prefix: en - **/ - - case en_state: - switch ( nextchar() ) { - case 'u': state = enu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: enu - **/ - - case enu_state: - switch ( nextchar() ) { - case 'm': state = enum_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: enum - **/ - - case enum_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return enum_token; - } - - /** - * prefix: ev - **/ - - case ev_state: - switch ( nextchar() ) { - case 'a': state = eva_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: eva - **/ - - case eva_state: - switch ( nextchar() ) { - case 'l': state = eval_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: eval - **/ - - case eval_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return eval_token; - } - - /** - * prefix: ex - **/ - - case ex_state: - switch ( nextchar() ) { - case 'p': state = exp_state; continue; - case 't': state = ext_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: exp - **/ - - case exp_state: - switch ( nextchar() ) { - case 'o': state = expo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: expo - **/ - - case expo_state: - switch ( nextchar() ) { - case 'r': state = expor_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: expor - **/ - - case expor_state: - switch ( nextchar() ) { - case 't': state = export_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: export - **/ - - case export_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return export_token; - } - - /** - * prefix: ext - **/ - - case ext_state: - switch ( nextchar() ) { - case 'e': state = exte_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: exte - **/ - - case exte_state: - switch ( nextchar() ) { - case 'n': state = exten_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: exten - **/ - - case exten_state: - switch ( nextchar() ) { - case 'd': state = extend_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: extend - **/ - - case extend_state: - switch ( nextchar() ) { - case 's': state = extends_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: extends - **/ - - case extends_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return extends_token; - } - - /** - * prefix: f - **/ - - case f_state: - switch ( nextchar() ) { - case 'a': state = fa_state; continue; - case 'i': state = fi_state; continue; - case 'o': state = fo_state; continue; - case 'u': state = fu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fa - **/ - - case fa_state: - switch ( nextchar() ) { - case 'l': state = fal_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fal - **/ - - case fal_state: - switch ( nextchar() ) { - case 's': state = fals_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fals - **/ - - case fals_state: - switch ( nextchar() ) { - case 'e': state = false_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: false - **/ - - case false_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return false_token; - } - - /** - * prefix: fi - **/ - - case fi_state: - switch ( nextchar() ) { - case 'n': state = fin_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fin - **/ - - case fin_state: - switch ( nextchar() ) { - case 'a': state = fina_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fina - **/ - - case fina_state: - switch ( nextchar() ) { - case 'l': state = final_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: final - **/ - - case final_state: - switch ( nextchar() ) { - case 'l': state = finall_state; continue; - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return final_token; - } - - /** - * prefix: finall - **/ - - case finall_state: - switch ( nextchar() ) { - case 'y': state = finally_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: finally - **/ - - case finally_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return finally_token; - } - - /** - * prefix: fl - **/ - - case fl_state: - switch ( nextchar() ) { - case 'o': state = flo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: flo - **/ - - case flo_state: - switch ( nextchar() ) { - case 'a': state = floa_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: floa - **/ - - case floa_state: - switch ( nextchar() ) { - case 't': state = float_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: float - **/ - - case float_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return float_token; - } - - /** - * prefix: fo - **/ - - case fo_state: - switch ( nextchar() ) { - case 'r': state = for_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: for - **/ - - case for_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return for_token; - } - - /** - * prefix: fu - **/ - - case fu_state: - switch ( nextchar() ) { - case 'n': state = fun_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: fun - **/ - - case fun_state: - switch ( nextchar() ) { - case 'c': state = func_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: func - **/ - - case func_state: - switch ( nextchar() ) { - case 't': state = funct_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: funct - **/ - - case funct_state: - switch ( nextchar() ) { - case 'i': state = functi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: functi - **/ - - case functi_state: - switch ( nextchar() ) { - case 'o': state = functio_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: functio - **/ - - case functio_state: - switch ( nextchar() ) { - case 'n': state = function_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: function - **/ - - case function_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return function_token; - } - - /** - * prefix: g - **/ - - case g_state: - switch ( nextchar() ) { - case 'o': state = go_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: go - **/ - - case go_state: - switch ( nextchar() ) { - case 't': state = got_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: got - **/ - - case got_state: - switch ( nextchar() ) { - case 'o': state = goto_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: goto - **/ - - case goto_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return goto_token; - } - - /** - * prefix: i - **/ - - case i_state: - switch ( nextchar() ) { - case 'f': state = if_state; continue; - case 'm': state = im_state; continue; - case 'n': state = in_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: if - **/ - - case if_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return if_token; - } - - /** - * prefix: im - **/ - - case im_state: - switch ( nextchar() ) { - case 'p': state = imp_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: imp - **/ - - case imp_state: - switch ( nextchar() ) { - case 'l': state = impl_state; continue; - case 'o': state = impo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: impl - **/ - - case impl_state: - switch ( nextchar() ) { - case 'e': state = imple_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: imple - **/ - - case imple_state: - switch ( nextchar() ) { - case 'm': state = implem_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: implem - **/ - - case implem_state: - switch ( nextchar() ) { - case 'e': state = impleme_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: impleme - **/ - - case impleme_state: - switch ( nextchar() ) { - case 'n': state = implemen_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: implemen - **/ - - case implemen_state: - switch ( nextchar() ) { - case 't': state = implement_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: implement - **/ - - case implement_state: - switch ( nextchar() ) { - case 's': state = implements_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: implements - **/ - - case implements_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return implements_token; - } - - /** - * prefix: impo - **/ - - case impo_state: - switch ( nextchar() ) { - case 'r': state = impor_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: impor - **/ - - case impor_state: - switch ( nextchar() ) { - case 't': state = import_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: import - **/ - - case import_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return import_token; - } - - /** - * prefix: in - **/ - - case in_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 'T': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - case 'c': state = inc_state; continue; - case 's': state = ins_state; continue; - case 't': state = int_state; continue; - default: retract(); return in_token; - } - - /** - * prefix: inc - **/ - - case inc_state: - switch ( nextchar() ) { - case 'l': state = incl_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: incl - **/ - - case incl_state: - switch ( nextchar() ) { - case 'u': state = inclu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: inclu - **/ - - case inclu_state: - switch ( nextchar() ) { - case 'd': state = includ_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: includ - **/ - - case includ_state: - switch ( nextchar() ) { - case 'e': state = include_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: include - **/ - - case include_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return include_token; - } - - /** - * prefix: ins - **/ - - case ins_state: - switch ( nextchar() ) { - case 't': state = inst_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: inst - **/ - - case inst_state: - switch ( nextchar() ) { - case 'a': state = insta_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: insta - **/ - - case insta_state: - switch ( nextchar() ) { - case 'n': state = instan_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: instan - **/ - - case instan_state: - switch ( nextchar() ) { - case 'c': state = instanc_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: instanc - **/ - - case instanc_state: - switch ( nextchar() ) { - case 'e': state = instance_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: instance - **/ - - case instance_state: - switch ( nextchar() ) { - case 'o': state = instanceo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: instanceo - **/ - - case instanceo_state: - switch ( nextchar() ) { - case 'f': state = instanceof_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: instanceof - **/ - - case instanceof_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return instanceof_token; - } - - /** - * prefix: int - **/ - - case int_state: - switch ( nextchar() ) { - case 'e': state = inte_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: inte - **/ - - case inte_state: - switch ( nextchar() ) { - case 'r': state = inter_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: inter - **/ - - case inter_state: - switch ( nextchar() ) { - case 'f': state = interf_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: interf - **/ - - case interf_state: - switch ( nextchar() ) { - case 'a': state = interfa_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: interfa - **/ - - case interfa_state: - switch ( nextchar() ) { - case 'c': state = interfac_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: interfac - **/ - - case interfac_state: - switch ( nextchar() ) { - case 'e': state = interface_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: interface - **/ - - case interface_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return interface_token; - } - - /** - * prefix: l - **/ - - case l_state: - switch ( nextchar() ) { - default: retract(); state = A_state; continue; - } - - /** - * prefix: lo - **/ - - case lo_state: - switch ( nextchar() ) { - case 'n': state = lon_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: lon - **/ - - case lon_state: - switch ( nextchar() ) { - case 'g': state = long_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: long - **/ - - case long_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return long_token; - } - - /** - * prefix: n - **/ - - case n_state: - switch ( nextchar() ) { - case 'a': state = na_state; continue; - case 'e': state = ne_state; continue; - case 'u': state = nu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: na - **/ - - case na_state: - switch ( nextchar() ) { - case 't': state = nat_state; continue; - case 'm': state = nam_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: nam - **/ - - case nam_state: - switch ( nextchar() ) { - case 'e': state = name_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: name - **/ - - case name_state: - switch ( nextchar() ) { - case 's': state = names_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: names - **/ - - case names_state: - switch ( nextchar() ) { - case 'p': state = namesp_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: namesp - **/ - - case namesp_state: - switch ( nextchar() ) { - case 'a': state = namespa_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: namespa - **/ - - case namespa_state: - switch ( nextchar() ) { - case 'c': state = namespac_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: namespac - **/ - - case namespac_state: - switch ( nextchar() ) { - case 'e': state = namespace_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: namespace - **/ - - case namespace_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return namespace_token; - } - - /** - * prefix: nat - **/ - - case nat_state: - switch ( nextchar() ) { - case 'i': state = nati_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: nati - **/ - - case nati_state: - switch ( nextchar() ) { - case 'v': state = nativ_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: nativ - **/ - - case nativ_state: - switch ( nextchar() ) { - case 'e': state = native_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: native - **/ - - case native_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return native_token; - } - - /** - * prefix: ne - **/ - - case ne_state: - switch ( nextchar() ) { - case 'w': state = new_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: new - **/ - - case new_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return new_token; - } - - /** - * prefix: nu - **/ - - case nu_state: - switch ( nextchar() ) { - case 'l': state = nul_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: nul - **/ - - case nul_state: - switch ( nextchar() ) { - case 'l': state = null_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: null - **/ - - case null_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return null_token; - } - - /** - * prefix: p - **/ - - case p_state: - switch ( nextchar() ) { - case 'a': state = pa_state; continue; - case 'r': state = pr_state; continue; - case 'u': state = pu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: pa - **/ - - case pa_state: - switch ( nextchar() ) { - case 'c': state = pac_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: pac - **/ - - case pac_state: - switch ( nextchar() ) { - case 'k': state = pack_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: pack - **/ - - case pack_state: - switch ( nextchar() ) { - case 'a': state = packa_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: packa - **/ - - case packa_state: - switch ( nextchar() ) { - case 'g': state = packag_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: packag - **/ - - case packag_state: - switch ( nextchar() ) { - case 'e': state = package_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: package - **/ - - case package_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return package_token; - } - - /** - * prefix: pr - **/ - - case pr_state: - switch ( nextchar() ) { - case 'i': state = pri_state; continue; - case 'o': state = pro_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: pri - **/ - - case pri_state: - switch ( nextchar() ) { - case 'v': state = priv_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: priv - **/ - - case priv_state: - switch ( nextchar() ) { - case 'a': state = priva_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: priva - **/ - - case priva_state: - switch ( nextchar() ) { - case 't': state = privat_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: privat - **/ - - case privat_state: - switch ( nextchar() ) { - case 'e': state = private_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: private - **/ - - case private_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return private_token; - } - - /** - * prefix: pro - **/ - - case pro_state: - switch ( nextchar() ) { - case 't': state = prot_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: prot - **/ - - case prot_state: - switch ( nextchar() ) { - case 'e': state = prote_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: prote - **/ - - case prote_state: - switch ( nextchar() ) { - case 'c': state = protec_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: protec - **/ - - case protec_state: - switch ( nextchar() ) { - case 't': state = protect_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: protect - **/ - - case protect_state: - switch ( nextchar() ) { - case 'e': state = protecte_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: protecte - **/ - - case protecte_state: - switch ( nextchar() ) { - case 'd': state = protected_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: protected - **/ - - case protected_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return protected_token; - } - - /** - * prefix: public - **/ - - case pu_state: - switch ( nextchar() ) { - case 'b': state = pub_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: pub - **/ - - case pub_state: - switch ( nextchar() ) { - case 'l': state = publ_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: publ - **/ - - case publ_state: - switch ( nextchar() ) { - case 'i': state = publi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: publi - **/ - - case publi_state: - switch ( nextchar() ) { - case 'c': state = public_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: public - **/ - - case public_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return public_token; - } - - /** - * prefix: r - **/ - - case r_state: - switch ( nextchar() ) { - case 'e': state = re_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: re - **/ - - case re_state: - switch ( nextchar() ) { - case 't': state = ret_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: ret - **/ - - case ret_state: - switch ( nextchar() ) { - case 'u': state = retu_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: retu - **/ - - case retu_state: - switch ( nextchar() ) { - case 'r': state = retur_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: retur - **/ - - case retur_state: - switch ( nextchar() ) { - case 'n': state = return_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: return - **/ - - case return_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return return_token; - } - - /** - * prefix: s - **/ - - case s_state: - switch ( nextchar() ) { - case 't': state = st_state; continue; - case 'u': state = su_state; continue; - case 'w': state = sw_state; continue; - case 'y': state = sy_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: sh - **/ - - case sh_state: - switch ( nextchar() ) { - case 'o': state = sho_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: sho - **/ - - case sho_state: - switch ( nextchar() ) { - case 'r': state = shor_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: shor - **/ - - case shor_state: - switch ( nextchar() ) { - case 't': state = short_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: short - **/ - - case short_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return short_token; - } - - /** - * prefix: st - **/ - - case st_state: - switch ( nextchar() ) { - case 'a': state = sta_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: sta - **/ - - case sta_state: - switch ( nextchar() ) { - case 't': state = stat_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: stat - **/ - - case stat_state: - switch ( nextchar() ) { - case 'i': state = stati_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: stati - **/ - - case stati_state: - switch ( nextchar() ) { - case 'c': state = static_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: static - **/ - - case static_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return static_token; - } - - /** - * prefix: su - **/ - - case su_state: - switch ( nextchar() ) { - case 'p': state = sup_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: sup - **/ - - case sup_state: - switch ( nextchar() ) { - case 'e': state = supe_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: supe - **/ - - case supe_state: - switch ( nextchar() ) { - case 'r': state = super_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: super - **/ - - case super_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return super_token; - } - - /** - * prefix: sw - **/ - - case sw_state: - switch ( nextchar() ) { - case 'i': state = swi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: swi - **/ - - case swi_state: - switch ( nextchar() ) { - case 't': state = swit_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: swit - **/ - - case swit_state: - switch ( nextchar() ) { - case 'c': state = switc_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: switc - **/ - - case switc_state: - switch ( nextchar() ) { - case 'h': state = switch_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: switch - **/ - - case switch_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return switch_token; - } - - /** - * prefix: sy - **/ - - case sy_state: - switch ( nextchar() ) { - case 'n': state = syn_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: syn - **/ - - case syn_state: - switch ( nextchar() ) { - case 'c': state = sync_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: sync - **/ - - case sync_state: - switch ( nextchar() ) { - case 'h': state = synch_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synch - **/ - - case synch_state: - switch ( nextchar() ) { - case 'r': state = synchr_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchr - **/ - - case synchr_state: - switch ( nextchar() ) { - case 'o': state = synchro_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchro - **/ - - case synchro_state: - switch ( nextchar() ) { - case 'n': state = synchron_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchron - **/ - - case synchron_state: - switch ( nextchar() ) { - case 'i': state = synchroni_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchroni - **/ - - case synchroni_state: - switch ( nextchar() ) { - case 'z': state = synchroniz_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchroniz - **/ - - case synchroniz_state: - switch ( nextchar() ) { - case 'e': state = synchronize_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchronize - **/ - - case synchronize_state: - switch ( nextchar() ) { - case 'd': state = synchronized_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: synchronized - **/ - - case synchronized_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return synchronized_token; - } - - /** - * prefix: t - **/ - - case t_state: - switch ( nextchar() ) { - case 'h': state = th_state; continue; - case 'r': state = tr_state; continue; - case 'y': state = ty_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: th - **/ - - case th_state: - switch ( nextchar() ) { - case 'i': state = thi_state; continue; - case 'r': state = thr_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: thi - **/ - - case thi_state: - switch ( nextchar() ) { - case 's': state = this_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: this - **/ - - case this_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return this_token; - } - - /** - * prefix: thr - **/ - - case thr_state: - switch ( nextchar() ) { - case 'o': state = thro_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: thro - **/ - - case thro_state: - switch ( nextchar() ) { - case 'w': state = throw_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: throw - **/ - - case throw_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - case 's': state = throws_state; continue; - default: retract(); return throw_token; - } - - /** - * prefix: throws - **/ - - case throws_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return throws_token; - } - - /** - * prefix: tr - **/ - - case tr_state: - switch ( nextchar() ) { - case 'a': state = tra_state; continue; - case 'u': state = tru_state; continue; - case 'y': state = try_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: tra - **/ - - case tra_state: - switch ( nextchar() ) { - case 'n': state = tran_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: tran - **/ - - case tran_state: - switch ( nextchar() ) { - case 's': state = trans_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: trans - **/ - - case trans_state: - switch ( nextchar() ) { - case 'i': state = transi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: transi - **/ - - case transi_state: - switch ( nextchar() ) { - case 'e': state = transie_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: transie - **/ - - case transie_state: - switch ( nextchar() ) { - case 'n': state = transien_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: transien - **/ - - case transien_state: - switch ( nextchar() ) { - case 't': state = transient_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: transient - **/ - - case transient_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return transient_token; - } - - /** - * prefix: tru - **/ - - case tru_state: - switch ( nextchar() ) { - case 'e': state = true_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: true - **/ - - case true_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return true_token; - } - - /** - * prefix: try - **/ - - case try_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return try_token; - } - - /** - * prefix: ty - **/ - - case ty_state: - switch ( nextchar() ) { - case 'p': state = typ_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: typ - **/ - - case typ_state: - switch ( nextchar() ) { - case 'e': state = type_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: type - **/ - - case type_state: - switch ( nextchar() ) { - case 'o': state = typeo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: typeo - **/ - - case typeo_state: - switch ( nextchar() ) { - case 'f': state = typeof_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: typeof - **/ - - case typeof_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return typeof_token; - } - - /** - * prefix: u - **/ - - case u_state: - switch ( nextchar() ) { - case 's': state = us_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: us - **/ - - case us_state: - switch ( nextchar() ) { - case 'e': state = use_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: use - **/ - - case use_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return use_token; - } - - /** - * prefix: v - **/ - - case v_state: - switch ( nextchar() ) { - case 'a': state = va_state; continue; - case 'o': state = vo_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: va - **/ - - case va_state: - switch ( nextchar() ) { - case 'r': state = var_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: var - **/ - - case var_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return var_token; - } - - /** - * prefix: vo - **/ - - case vo_state: - switch ( nextchar() ) { - case 'i': state = voi_state; continue; - case 'l': state = vol_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: voi - **/ - - case voi_state: - switch ( nextchar() ) { - case 'd': state = void_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: void - **/ - - case void_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return void_token; - } - - /** - * prefix: vol - **/ - - case vol_state: - switch ( nextchar() ) { - case 'a': state = vola_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: vola - **/ - - case vola_state: - switch ( nextchar() ) { - case 't': state = volat_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: volat - **/ - - case volat_state: - switch ( nextchar() ) { - case 'i': state = volati_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: volati - **/ - - case volati_state: - switch ( nextchar() ) { - case 'l': state = volatil_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: volatil - **/ - - case volatil_state: - switch ( nextchar() ) { - case 'e': state = volatile_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: volatile - **/ - - case volatile_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return volatile_token; - } - - /** - * prefix: w - **/ - - case w_state: - switch ( nextchar() ) { - case 'h': state = wh_state; continue; - case 'i': state = wi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: wh - **/ - - case wh_state: - switch ( nextchar() ) { - case 'i': state = whi_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: whi - **/ - - case whi_state: - switch ( nextchar() ) { - case 'l': state = whil_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: whil - **/ - - case whil_state: - switch ( nextchar() ) { - case 'e': state = while_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: while - **/ - - case while_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return while_token; - } - - /** - * prefix: wi - **/ - - case wi_state: - switch ( nextchar() ) { - case 't': state = wit_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: wit - **/ - - case wit_state: - switch ( nextchar() ) { - case 'h': state = with_state; continue; - default: retract(); state = A_state; continue; - } - - /** - * prefix: with - **/ - - case with_state: - switch ( nextchar() ) { - case 'A': case 'a': case 'B': case 'b': case 'C': case 'c': - case 'D': case 'd': case 'E': case 'e': case 'F': case 'f': - case 'G': case 'g': case 'H': case 'h': case 'I': case 'i': - case 'J': case 'j': case 'K': case 'k': case 'L': case 'l': - case 'M': case 'm': case 'N': case 'n': case 'O': case 'o': - case 'P': case 'p': case 'Q': case 'q': case 'R': case 'r': - case 'S': case 's': case 'T': case 't': case 'U': case 'u': - case 'V': case 'v': case 'W': case 'w': case 'X': case 'x': - case 'Y': case 'y': case 'Z': case 'z': case '$': case '_': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - state = A_state; continue; - default: retract(); return with_token; - } - - /** - * prefix: /* - **/ - - case blockcomment_state: - switch ( nextchar() ) { - case '*': state = blockcommentstar_state; continue; - case '\n': isFirstTokenOnLine = true; - state = blockcommentstar_state; continue; - case 0: error(lexical_error); return error_token; - default: state = blockcomment_state; continue; - } - - case blockcommentstar_state: - switch ( nextchar() ) { - case '/': state = start_state; /*first = input.positionOfNext();*/ continue; - case 0: error(lexical_error); return error_token; - default: state = blockcomment_state; continue; - // if not a slash, then keep looking for an end comment. - } - - /** - * prefix: // - **/ - - case linecomment_state: - switch ( nextchar() ) { - case '\n': retract(); state = start_state; /*first = input.positionOfNext();*/ continue; - // don't include newline in line comment. (Sec 7.3) - case 0: error(lexical_error); return error_token; - default: state = linecomment_state; continue; - } - - /** - * skip error - **/ - - case error_state: - error(lexical_error); skiperror(); - return error_token; - - default: state = error_state; continue; - - } - } - } - - /** - * - */ - - static final void test_nexttoken() throws Exception { - - System.out.println( "nexttoken test begin" ); - - String[] input = { - "true", - "false", - "null", - "abc", - "\"a1b2\"" , - "\'a1b2\'", - "\'a1b2\"", - "<<=", - "<=", - "0", - "123", - "1.23", - "/abc/gim", - "/ab" }; - - int[] expected = { - - true_token, false_token, null_token, identifier_token, - stringliteral_token, stringliteral_token, error_token, - leftshiftassign_token, lessthanorequals_token, - numberliteral_token, numberliteral_token, numberliteral_token, - regexpliteral_token, - error_token }; - - Scanner scanner; - int result; - for( int i = 0; i < input.length; i++ ) { - scanner = new Scanner( new StringReader(input[i]),System.err,"" ); - result = scanner.nexttoken(); - if( expected[i] == scanner.getTokenClass(result) ) - System.out.println( " " + i + " passed: " + input[i] + " --> " + - Token.getTokenClassName(scanner.getTokenClass(result)) + - ": " + scanner.getTokenText(result) ); - else { - failureCount++; - System.out.println( " " + i + " failed: " + input[i] + " --> " + - Token.getTokenClassName(scanner.getTokenClass(result)) + - ": " + scanner.getTokenText(result) ); - } - } - - System.out.println( "nexttoken test complete" ); - } -} - -/* - * The end. - */ - - - - - diff --git a/mozilla/js/js2/jsc/src/java/lexer/States.java b/mozilla/js/js2/jsc/src/java/lexer/States.java deleted file mode 100644 index d68d822b67e..00000000000 --- a/mozilla/js/js2/jsc/src/java/lexer/States.java +++ /dev/null @@ -1,419 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/* - * The states of the scanner. - */ - -interface States { - - /** - **/ - - public static final int start_state = 0; - public static final int error_state = start_state-1; - - public static final int minusminus_state = start_state+1; - public static final int minusequal_state = minusminus_state +1; - public static final int minus_state = minusequal_state +1; - public static final int notequal_state = minus_state +1; - public static final int not_state = notequal_state +1; - public static final int remainderequal_state = not_state +1; - public static final int remainder_state = remainderequal_state +1; - public static final int logicaland_state = remainder_state +1; - public static final int logicalandassign_state = logicaland_state +1; - public static final int andequal_state = logicalandassign_state +1; - public static final int and_state = andequal_state +1; - public static final int leftparen_state = and_state +1; - public static final int rightparen_state = leftparen_state +1; - public static final int starequal_state = rightparen_state +1; - public static final int star_state = starequal_state +1; - public static final int comma_state = star_state +1; - public static final int dot_state = comma_state +1; - public static final int doubledot_state = dot_state +1; - public static final int tripledot_state = doubledot_state +1; - public static final int slashequal_state = tripledot_state +1; - public static final int slash_state = slashequal_state +1; - public static final int colon_state = slash_state +1; - public static final int doublecolon_state = colon_state+1; - public static final int semicolon_state = doublecolon_state+1; - public static final int questionmark_state = semicolon_state +1; - public static final int leftbracket_state = questionmark_state +1; - public static final int rightbracket_state = leftbracket_state +1; - public static final int bitwisexorassign_state = rightbracket_state +1; - public static final int bitwisexor_state = bitwisexorassign_state+1; - public static final int logicalxor_state = bitwisexor_state+1; - public static final int logicalxorassign_state = logicalxor_state+1; - public static final int leftbrace_state = logicalxorassign_state+1; - public static final int logicalor_state = leftbrace_state+1; - public static final int logicalorassign_state = logicalor_state+1; - public static final int orequal_state = logicalorassign_state +1; - public static final int or_state = orequal_state +1; - public static final int rightbrace_state = or_state +1; - public static final int squiggle_state = rightbrace_state +1; - public static final int plusplus_state = squiggle_state +1; - public static final int plusequal_state = plusplus_state +1; - public static final int plus_state = plusequal_state +1; - public static final int leftshiftequal_state = plus_state +1; - public static final int leftshift_state = leftshiftequal_state +1; - public static final int lessthanorequal_state = leftshift_state +1; - public static final int lessthan_state = lessthanorequal_state +1; - public static final int equal_state = lessthan_state +1; - public static final int equalequal_state = equal_state +1; - public static final int greaterthanorequal_state = equalequal_state +1; - public static final int rightshiftequal_state = greaterthanorequal_state +1; - public static final int unsignedrightshift_state = rightshiftequal_state +1; - public static final int unsignedrightshiftequal_state = unsignedrightshift_state +1; - public static final int rightshift_state = unsignedrightshiftequal_state+1; - public static final int greaterthan_state = rightshift_state +1; - public static final int A_state = greaterthan_state +1; - public static final int N_state = A_state +1; - public static final int AA_state = N_state +1; - public static final int AN_state = AA_state +1; - public static final int singlequote_state = AN_state +1; - public static final int doublequote_state = singlequote_state +1; - public static final int zero_state = doublequote_state +1; - public static final int decimalinteger_state = zero_state +1; - public static final int decimal_state = decimalinteger_state +1; - public static final int exponent_state = decimal_state +1; - public static final int hexinteger_state = exponent_state +1; - public static final int octalinteger_state = hexinteger_state +1; - public static final int slashregexp_state = octalinteger_state +1; - public static final int slashdiv_state = slashregexp_state +1; - public static final int regexp_state = slashdiv_state +1; - public static final int regexpg_state = regexp_state +1; - public static final int regexpi_state = regexpg_state +1; - public static final int regexpm_state = regexpi_state +1; - public static final int regexpgi_state = regexpm_state +1; - public static final int regexpgm_state = regexpgi_state +1; - public static final int regexpim_state = regexpgm_state +1; - public static final int regexpgim_state = regexpim_state +1; - public static final int pound_state = regexpgim_state +1; - public static final int ampersand_state = pound_state +1; - public static final int arrow_state = ampersand_state +1; - - public static final int a_state = arrow_state+1; - public static final int ab_state = a_state+1; - public static final int abs_state = ab_state+1; - public static final int abst_state = abs_state+1; - public static final int abstr_state = abst_state+1; - public static final int abstra_state = abstr_state+1; - public static final int abstrac_state = abstra_state+1; - public static final int abstract_state = abstrac_state+1; - public static final int at_state = abstract_state +1; - public static final int att_state = at_state+1; - public static final int attr_state = att_state+1; - public static final int attri_state = attr_state+1; - public static final int attrib_state = attri_state+1; - public static final int attribu_state = attrib_state+1; - public static final int attribut_state = attribu_state+1; - public static final int attribute_state = attribut_state+1; - public static final int b_state = attribute_state+1; - public static final int bo_state = b_state+1; - public static final int boo_state = bo_state+1; - public static final int bool_state = boo_state+1; - public static final int boole_state = bool_state+1; - public static final int boolea_state = boole_state+1; - public static final int boolean_state = boolea_state+1; - public static final int br_state = boolean_state+1; - public static final int bre_state = br_state+1; - public static final int brea_state = bre_state+1; - public static final int break_state = brea_state+1; - public static final int by_state = break_state+1; - public static final int byt_state = by_state+1; - public static final int byte_state = byt_state+1; - public static final int c_state = byte_state+1; - public static final int ca_state = c_state+1; - public static final int cas_state = ca_state+1; - public static final int case_state = cas_state+1; - public static final int cat_state = case_state+1; - public static final int catc_state = cat_state+1; - public static final int catch_state = catc_state+1; - public static final int ch_state = catch_state+1; - public static final int cha_state = ch_state+1; - public static final int char_state = cha_state+1; - public static final int cl_state = char_state+1; - public static final int cla_state = cl_state+1; - public static final int clas_state = cla_state+1; - public static final int class_state = clas_state+1; - public static final int co_state = class_state+1; - public static final int con_state = co_state+1; - public static final int cont_state = con_state+1; - public static final int conti_state = cont_state+1; - public static final int contin_state = conti_state+1; - public static final int continu_state = contin_state+1; - public static final int continue_state = continu_state+1; - public static final int cons_state = continue_state+1; - public static final int const_state = cons_state+1; - public static final int constr_state = const_state+1; - public static final int constru_state = constr_state+1; - public static final int construc_state = constru_state+1; - public static final int construct_state = construc_state+1; - public static final int constructo_state = construct_state+1; - public static final int constructor_state = constructo_state+1; - public static final int d_state = constructor_state+1; - public static final int de_state = d_state+1; - public static final int deb_state = de_state+1; - public static final int debu_state = deb_state+1; - public static final int debug_state = debu_state+1; - public static final int debugg_state = debug_state+1; - public static final int debugge_state = debugg_state+1; - public static final int debugger_state = debugge_state+1; - public static final int def_state = debugger_state+1; - public static final int defa_state = def_state+1; - public static final int defau_state = defa_state+1; - public static final int defaul_state = defau_state+1; - public static final int default_state = defaul_state+1; - public static final int del_state = default_state+1; - public static final int dele_state = del_state+1; - public static final int delet_state = dele_state+1; - public static final int delete_state = delet_state+1; - public static final int do_state = delete_state+1; - public static final int dou_state = do_state+1; - public static final int doub_state = dou_state+1; - public static final int doubl_state = doub_state+1; - public static final int double_state = doubl_state+1; - public static final int e_state = double_state+1; - public static final int el_state = e_state+1; - public static final int els_state = el_state+1; - public static final int else_state = els_state+1; - public static final int en_state = else_state+1; - public static final int enu_state = en_state+1; - public static final int enum_state = enu_state+1; - public static final int ev_state = enum_state+1; - public static final int eva_state = ev_state+1; - public static final int eval_state = eva_state+1; - public static final int ex_state = eval_state+1; - public static final int exp_state = ex_state+1; - public static final int expo_state = exp_state+1; - public static final int expor_state = expo_state+1; - public static final int export_state = expor_state+1; - public static final int ext_state = export_state+1; - public static final int exte_state = ext_state+1; - public static final int exten_state = exte_state+1; - public static final int extend_state = exten_state+1; - public static final int extends_state = extend_state+1; - public static final int f_state = extends_state+1; - public static final int fa_state = f_state+1; - public static final int fal_state = fa_state+1; - public static final int fals_state = fal_state+1; - public static final int false_state = fals_state+1; - public static final int fi_state = false_state+1; - public static final int fin_state = fi_state+1; - public static final int fina_state = fin_state+1; - public static final int final_state = fina_state+1; - public static final int finall_state = final_state+1; - public static final int finally_state = finall_state+1; - public static final int fl_state = finally_state+1; - public static final int flo_state = fl_state+1; - public static final int floa_state = flo_state+1; - public static final int float_state = floa_state+1; - public static final int fo_state = float_state+1; - public static final int for_state = fo_state+1; - public static final int fu_state = for_state+1; - public static final int fun_state = fu_state+1; - public static final int func_state = fun_state+1; - public static final int funct_state = func_state+1; - public static final int functi_state = funct_state+1; - public static final int functio_state = functi_state+1; - public static final int function_state = functio_state+1; - public static final int g_state = function_state+1; - public static final int go_state = g_state+1; - public static final int got_state = go_state+1; - public static final int goto_state = got_state+1; - public static final int i_state = goto_state+1; - public static final int if_state = i_state+1; - public static final int im_state = if_state+1; - public static final int imp_state = im_state+1; - public static final int impl_state = imp_state+1; - public static final int imple_state = impl_state+1; - public static final int implem_state = imple_state+1; - public static final int impleme_state = implem_state+1; - public static final int implemen_state = impleme_state+1; - public static final int implement_state = implemen_state+1; - public static final int implements_state = implement_state+1; - public static final int impo_state = implements_state+1; - public static final int impor_state = impo_state+1; - public static final int import_state = impor_state+1; - public static final int in_state = import_state+1; - public static final int inc_state = in_state+1; - public static final int incl_state = inc_state+1; - public static final int inclu_state = incl_state+1; - public static final int includ_state = inclu_state+1; - public static final int include_state = includ_state+1; - public static final int ins_state = include_state+1; - public static final int inst_state = ins_state+1; - public static final int insta_state = inst_state+1; - public static final int instan_state = insta_state+1; - public static final int instanc_state = instan_state+1; - public static final int instance_state = instanc_state+1; - public static final int instanceo_state = instance_state+1; - public static final int instanceof_state = instanceo_state+1; - public static final int int_state = instanceof_state+1; - public static final int inte_state = int_state+1; - public static final int inter_state = inte_state+1; - public static final int interf_state = inter_state+1; - public static final int interfa_state = interf_state+1; - public static final int interfac_state = interfa_state+1; - public static final int interface_state = interfac_state+1; - public static final int l_state = interface_state+1; - public static final int lo_state = l_state+1; - public static final int lon_state = lo_state+1; - public static final int long_state = lon_state+1; - public static final int n_state = long_state+1; - public static final int na_state = n_state+1; - public static final int nam_state = na_state+1; - public static final int name_state = nam_state+1; - public static final int names_state = name_state+1; - public static final int namesp_state = names_state+1; - public static final int namespa_state = namesp_state+1; - public static final int namespac_state = namespa_state+1; - public static final int namespace_state = namespac_state+1; - public static final int nat_state = namespace_state+1; - public static final int nati_state = nat_state+1; - public static final int nativ_state = nati_state+1; - public static final int native_state = nativ_state+1; - public static final int ne_state = native_state+1; - public static final int new_state = ne_state+1; - public static final int nu_state = new_state+1; - public static final int nul_state = nu_state+1; - public static final int null_state = nul_state+1; - public static final int r_state = null_state+1; - public static final int re_state = r_state+1; - public static final int ret_state = re_state+1; - public static final int retu_state = ret_state+1; - public static final int retur_state = retu_state+1; - public static final int return_state = retur_state +1; - public static final int p_state = return_state +1; - public static final int pa_state = p_state +1; - public static final int pac_state = pa_state +1; - public static final int pack_state = pac_state +1; - public static final int packa_state = pack_state +1; - public static final int packag_state = packa_state +1; - public static final int package_state = packag_state +1; - public static final int pr_state = package_state +1; - public static final int pri_state = pr_state +1; - public static final int priv_state = pri_state +1; - public static final int priva_state = priv_state +1; - public static final int privat_state = priva_state +1; - public static final int private_state = privat_state +1; - public static final int pro_state = private_state +1; - public static final int prot_state = pro_state +1; - public static final int prote_state = prot_state +1; - public static final int protec_state = prote_state +1; - public static final int protect_state = protec_state +1; - public static final int protecte_state = protect_state +1; - public static final int protected_state = protecte_state +1; - public static final int pu_state = protected_state +1; - public static final int pub_state = pu_state +1; - public static final int publ_state = pub_state +1; - public static final int publi_state = publ_state +1; - public static final int public_state = publi_state +1; - public static final int s_state = public_state +1; - public static final int sh_state = s_state +1; - public static final int sho_state = sh_state +1; - public static final int shor_state = sho_state +1; - public static final int short_state = shor_state +1; - public static final int st_state = short_state +1; - public static final int sta_state = st_state +1; - public static final int stat_state = sta_state +1; - public static final int stati_state = stat_state +1; - public static final int static_state = stati_state +1; - public static final int su_state = static_state +1; - public static final int sup_state = su_state +1; - public static final int supe_state = sup_state +1; - public static final int super_state = supe_state +1; - public static final int sw_state = super_state +1; - public static final int swi_state = sw_state +1; - public static final int swit_state = swi_state +1; - public static final int switc_state = swit_state +1; - public static final int switch_state = switc_state +1; - public static final int sy_state = switch_state +1; - public static final int syn_state = sy_state +1; - public static final int sync_state = syn_state +1; - public static final int synch_state = sync_state +1; - public static final int synchr_state = synch_state +1; - public static final int synchro_state = synchr_state +1; - public static final int synchron_state = synchro_state +1; - public static final int synchroni_state = synchron_state +1; - public static final int synchroniz_state = synchroni_state +1; - public static final int synchronize_state = synchroniz_state +1; - public static final int synchronized_state = synchronize_state +1; - public static final int t_state = synchronized_state+1; - public static final int th_state = t_state +1; - public static final int thi_state = th_state +1; - public static final int this_state = thi_state +1; - public static final int thr_state = this_state +1; - public static final int thro_state = thr_state +1; - public static final int throw_state = thro_state +1; - public static final int throws_state = throw_state +1; - public static final int tr_state = throws_state +1; - public static final int tra_state = tr_state +1; - public static final int tran_state = tra_state +1; - public static final int trans_state = tran_state +1; - public static final int transi_state = trans_state +1; - public static final int transie_state = transi_state +1; - public static final int transien_state = transie_state +1; - public static final int transient_state = transien_state +1; - public static final int tru_state = transient_state +1; - public static final int true_state = tru_state +1; - public static final int try_state = true_state +1; - public static final int ty_state = try_state +1; - public static final int typ_state = ty_state +1; - public static final int type_state = typ_state +1; - public static final int typeo_state = type_state +1; - public static final int typeof_state = typeo_state +1; - public static final int u_state = typeof_state +1; - public static final int us_state = u_state+1; - public static final int use_state = us_state+1; - public static final int v_state = use_state+1; - public static final int va_state = v_state +1; - public static final int var_state = va_state +1; - public static final int vo_state = var_state +1; - public static final int vol_state = vo_state +1; - public static final int vola_state = vol_state +1; - public static final int volat_state = vola_state +1; - public static final int volati_state = volat_state +1; - public static final int volatil_state = volati_state +1; - public static final int volatile_state = volatil_state +1; - public static final int voi_state = volatile_state +1; - public static final int void_state = voi_state +1; - public static final int w_state = void_state +1; - public static final int wh_state = w_state +1; - public static final int whi_state = wh_state +1; - public static final int whil_state = whi_state +1; - public static final int while_state = whil_state +1; - public static final int wi_state = while_state +1; - public static final int wit_state = wi_state +1; - public static final int with_state = wit_state +1; - - public static final int blockcomment_state = with_state+1; - public static final int blockcommentstar_state = blockcomment_state+1; - public static final int linecomment_state = blockcommentstar_state+1; - public static final int eol_state = linecomment_state+1; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/lexer/Token.java b/mozilla/js/js2/jsc/src/java/lexer/Token.java deleted file mode 100644 index 0dd1573e3d0..00000000000 --- a/mozilla/js/js2/jsc/src/java/lexer/Token.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Represents token instances: literals and identifiers. - * - * This file implements the class Token that is used to carry - * information from the Scanner to the Parser. - */ - -import java.util.Vector; - -public final class Token implements Tokens { - - int tokenClass; - String lexeme; - - public Token( int tokenClass, String lexeme ) { - this.tokenClass = tokenClass; - this.lexeme = lexeme; - } - - public final int getTokenClass() { - return tokenClass; - } - - public final String getTokenText() { - if( tokenClass == stringliteral_token ) { - // erase quotes. - return lexeme.substring(1,lexeme.length()-1); - } - return lexeme; - } - - public final String getTokenSource() { - return lexeme; - } - - public static String getTokenClassName( int token_class ) { - return tokenClassNames[-1*token_class]; - } - - /** - * main() - * - * Unit test driver. Execute the command 'java Token' at the - * shell to verify this class' basic functionality. - */ - - public static void main(String[] args) { - System.out.println("Token begin"); - for(int i = 0; i>=stringliteral_token;i--) { - System.out.println(tokenClassNames[-1*i]); - } - System.out.println("Token end"); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/lexer/Tokens.java b/mozilla/js/js2/jsc/src/java/lexer/Tokens.java deleted file mode 100644 index 3282b819230..00000000000 --- a/mozilla/js/js2/jsc/src/java/lexer/Tokens.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Defines token classes and their print names. - * - * This interface defines values for each token class that occurs in - * ECMAScript 4. All but numericliteral, stringliteral, regexpliteral, and - * identifier are singleton and therefore a fully described by their - * token class defined here. The other four however can have an infinite number - * of instances each with a unique identifier and associated instance - * data. We use positive identifiers to signify instances of these - * token classes so that the instance data can be stored in an array, - * or set of arrays with the token value specifying its index. - */ - -public interface Tokens { - - /** - * Token class values are negative, and token instances are positive so - * that their values can point to their instance data in an array. - */ - - public static final int first_token = -1; - public static final int eos_token = first_token-0; - - public static final int minus_token = first_token - 1; - public static final int minusminus_token = minus_token - 1; - public static final int not_token = minusminus_token - 1; - public static final int notequals_token = not_token - 1; - public static final int strictnotequals_token = notequals_token - 1; - public static final int pound_token = strictnotequals_token - 1; - public static final int modulus_token = pound_token - 1; - public static final int modulusassign_token = modulus_token - 1; - public static final int bitwiseand_token = modulusassign_token - 1; - public static final int logicaland_token = bitwiseand_token - 1; - public static final int logicalandassign_token = logicaland_token - 1; - public static final int bitwiseandassign_token = logicalandassign_token - 1; - public static final int leftparen_token = bitwiseandassign_token - 1; - public static final int rightparen_token = leftparen_token - 1; - public static final int mult_token = rightparen_token - 1; - public static final int multassign_token = mult_token - 1; - public static final int comma_token = multassign_token - 1; - public static final int dot_token = comma_token - 1; - public static final int doubledot_token = dot_token - 1; - public static final int tripledot_token = doubledot_token - 1; - public static final int div_token = tripledot_token - 1; - public static final int divassign_token = div_token - 1; - public static final int colon_token = divassign_token - 1; - public static final int doublecolon_token = colon_token - 1; - public static final int semicolon_token = doublecolon_token - 1; - public static final int questionmark_token = semicolon_token - 1; - public static final int ampersand_token = questionmark_token - 1; - public static final int leftbracket_token = ampersand_token - 1; - public static final int rightbracket_token = leftbracket_token - 1 ; - public static final int bitwisexor_token = rightbracket_token - 1; - public static final int logicalxor_token = bitwisexor_token - 1; - public static final int logicalxorassign_token = logicalxor_token - 1; - public static final int bitwisexorassign_token = logicalxorassign_token - 1; - public static final int leftbrace_token = bitwisexorassign_token - 1; - public static final int bitwiseor_token = leftbrace_token - 1; - public static final int logicalor_token = bitwiseor_token - 1; - public static final int logicalorassign_token = logicalor_token - 1; - public static final int bitwiseorassign_token = logicalorassign_token - 1; - public static final int rightbrace_token = bitwiseorassign_token - 1; - public static final int bitwisenot_token = rightbrace_token - 1; - public static final int plus_token = bitwisenot_token - 1; - public static final int plusplus_token = plus_token - 1; - public static final int plusassign_token = plusplus_token - 1; - public static final int lessthan_token = plusassign_token - 1; - public static final int leftshift_token = lessthan_token - 1; - public static final int leftshiftassign_token = leftshift_token - 1; - public static final int lessthanorequals_token = leftshiftassign_token - 1; - public static final int assign_token = lessthanorequals_token - 1; - public static final int minusassign_token = assign_token - 1; - public static final int equals_token = minusassign_token - 1; - public static final int strictequals_token = equals_token - 1; - public static final int greaterthan_token = strictequals_token - 1; - public static final int arrow_token = greaterthan_token - 1; - public static final int greaterthanorequals_token = arrow_token - 1; - public static final int rightshift_token = greaterthanorequals_token - 1; - public static final int rightshiftassign_token = rightshift_token - 1; - public static final int unsignedrightshift_token = rightshiftassign_token - 1; - public static final int unsignedrightshiftassign_token = unsignedrightshift_token - 1; - public static final int abstract_token = unsignedrightshiftassign_token - 1; - public static final int attribute_token = abstract_token - 1; - public static final int boolean_token = attribute_token - 1; - public static final int break_token = boolean_token - 1; - public static final int byte_token = break_token - 1; - public static final int case_token = byte_token - 1; - public static final int catch_token = case_token - 1; - public static final int char_token = catch_token - 1; - public static final int class_token = char_token - 1; - public static final int const_token = class_token - 1; - public static final int constructor_token = const_token - 1; - public static final int continue_token = constructor_token - 1; - public static final int debugger_token = continue_token - 1; - public static final int default_token = debugger_token - 1; - public static final int delete_token = default_token - 1; - public static final int do_token = delete_token - 1; - public static final int double_token = do_token - 1; - public static final int else_token = double_token - 1; - public static final int enum_token = else_token - 1; - public static final int eval_token = enum_token - 1; - public static final int export_token = eval_token - 1; - public static final int extends_token = export_token - 1; - public static final int false_token = extends_token - 1; - public static final int final_token = false_token - 1; - public static final int finally_token = final_token - 1; - public static final int float_token = finally_token - 1; - public static final int for_token = float_token - 1; - public static final int function_token = for_token - 1; - public static final int get_token = function_token - 1; - public static final int goto_token = get_token - 1; - public static final int if_token = goto_token - 1; - public static final int implements_token = if_token - 1; - public static final int import_token = implements_token - 1; - public static final int in_token = import_token - 1; - public static final int include_token = in_token - 1; - public static final int instanceof_token = include_token - 1; - public static final int int_token = instanceof_token - 1; - public static final int interface_token = int_token - 1; - public static final int long_token = interface_token - 1; - public static final int namespace_token = long_token - 1; - public static final int native_token = namespace_token - 1; - public static final int new_token = native_token - 1; - public static final int null_token = new_token - 1; - public static final int package_token = null_token - 1; - public static final int private_token = package_token - 1; - public static final int protected_token = private_token - 1; - public static final int public_token = protected_token - 1; - public static final int return_token = public_token - 1; - public static final int set_token = return_token - 1; - public static final int short_token = set_token - 1; - public static final int static_token = short_token - 1; - public static final int super_token = static_token - 1; - public static final int switch_token = super_token - 1; - public static final int synchronized_token = switch_token - 1; - public static final int this_token = synchronized_token - 1; - public static final int throw_token = this_token - 1; - public static final int throws_token = throw_token - 1; - public static final int transient_token = throws_token - 1; - public static final int true_token = transient_token - 1; - public static final int try_token = true_token - 1; - public static final int typeof_token = try_token - 1; - public static final int use_token = typeof_token - 1; - public static final int var_token = use_token - 1; - public static final int void_token = var_token - 1; - public static final int volatile_token = void_token - 1; - public static final int while_token = volatile_token - 1; - public static final int with_token = while_token - 1; - public static final int identifier_token = with_token - 1; - public static final int numberliteral_token = identifier_token - 1; - public static final int regexpliteral_token = numberliteral_token - 1; - public static final int stringliteral_token = regexpliteral_token - 1; - - public static final int eol_token = stringliteral_token - 1; - - public static final int empty_token = eol_token - 1; - public static final int error_token = empty_token - 1; - public static final int last_token = empty_token - 1; - - public static final String[] tokenClassNames = { - "", - "", - "minus_token", - "minusminus_token", - "not_token", - "notequals_token", - "strictnotequals_token", - "pound_token", - "modulus_token", - "modulusassign_token", - "bitwiseand_token", - "logicaland_token", - "logicalandassign_token", - "bitwiseandassign_token", - "leftparen_token", - "rightparen_token", - "mult_token", - "multassign_token", - "comma_token", - "dot_token", - "doubledot_token", - "tripledot_token", - "div_token", - "divassign_token", - "colon_token", - "doublecolon_token", - "semicolon_token", - "questionmark_token", - "ampersand_token", - "leftbracket_token", - "rightbracket_token", - "bitwisexor_token", - "logicalxor_token", - "logicalxorassign_token", - "bitwisexorassign_token", - "leftbrace_token", - "bitwiseor_token", - "logicalor_token", - "logicalorassign_token", - "bitwiseorassign_token", - "rightbrace_token", - "bitwisenot_token", - "plus_token", - "plusplus_token", - "plusassign_token", - "lessthan_token", - "leftshift_token", - "leftshiftassign_token", - "lessthanorequals_token", - "assign_token", - "minusassign_token", - "equals_token", - "strictequals_token", - "greaterthan_token", - "arrow_token", - "greaterthanorequals_token", - "rightshift_token", - "rightshiftassign_token", - "unsignedrightshift_token", - "unsignedrightshiftassign_token", - "abstract_token", - "attribute_token", - "boolean_token", - "break_token", - "byte_token", - "case_token", - "catch_token", - "char_token", - "class_token", - "const_token", - "constructor_token", - "continue_token", - "debugger_token", - "default_token", - "delete_token", - "do_token", - "double_token", - "else_token", - "enum_token", - "eval_token", - "export_token", - "extends_token", - "false_token", - "final_token", - "finally_token", - "float_token", - "for_token", - "function_token", - "get_token", - "goto_token", - "if_token", - "implements_token", - "import_token", - "in_token", - "include_token", - "instanceof_token", - "int_token", - "interface_token", - "long_token", - "namespace_token", - "native_token", - "new_token", - "null_token", - "package_token", - "private_token", - "protected_token", - "public_token", - "return_token", - "set_token", - "short_token", - "static_token", - "super_token", - "switch_token", - "synchronized_token", - "this_token", - "throw_token", - "throws_token", - "transient_token", - "true_token", - "try_token", - "typeof_token", - "use_token", - "var_token", - "void_token", - "volatile_token", - "while_token", - "with_token", - "identifier_token", - "numberliteral_token", - "regexpliteral_token", - "stringliteral_token", - - "", - "", - "" - }; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/main/Main.java b/mozilla/js/js2/jsc/src/java/main/Main.java deleted file mode 100644 index cceefdd1142..00000000000 --- a/mozilla/js/js2/jsc/src/java/main/Main.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -import com.compilercompany.ecmascript.*; -import java.io.*; - -/* - * The main driver. - */ - -public class Main { - - String[] classes; - - /** - * Entry point. - */ - - public static void main(String[] args) { - new Main(args).run(); - System.exit(0); - } - - /** - * Parse options. - */ - - private static boolean traceInput = false; - private static boolean traceLexer = false; - private static boolean traceParser = false; - private static boolean doASM = false; - private static boolean debug = false; - - - public Main(String[] args) { - if (args.length == 0) { - System.out.println("Wrong args, read the 'readme' and try again"); - } - - /* Default values for options, overridden by user options. */ - - int i = 0; - for (; i < args.length; i++) { - if (args[i].equals("-i")||args[i].equals("-input")) { - traceInput = true; - } else if (args[i].equals("-l")||args[i].equals("-lexer")) { - traceLexer = true; - } else if (args[i].equals("-p")||args[i].equals("-parser")) { - traceParser = true; - } else if (args[i].equals("-d")||args[i].equals("-debug")) { - debug = true; - } else if (args[i].equals("-a")||args[i].equals("-asm")) { - doASM = true; - } else if (args[i].charAt(0) == '-') { - System.out.println("Unknown.option "+ args[i]); - } else { - break; /* The rest must be classes. */ - } - } - - /* - * Grab the rest of argv[] ... this must be the classes. - */ - - classes = new String[args.length - i]; - System.arraycopy(args, i, classes, 0, args.length - i); - - if (classes.length == 0) { - System.out.println("No script specified"); - } - - } - - public void run() { - try { - compile("",classes); - } catch (Exception x) { - x.printStackTrace(); - } - } - - static final void compile(String name, String[] input) throws Exception { - - Debugger.trace( "begin testEvaluator: " + name ); - - String result; - Node node; - Value type; - Evaluator evaluator; - Value value = UndefinedValue.undefinedValue; - - Class pc = Parser.class; - Class[] args = new Class[0]; - - Parser parser; - long t=0; - - ObjectValue global = null; - - int errorCount=0; - - for( int i = 0; i < input.length; i++ ) { - - try { - - if( traceInput ) { - InputBuffer.setOut(input[i]+".inp"); - } if( traceLexer ) { - Scanner.setOut(input[i]+".lex"); - } if( debug ) { - Debugger.setDbgFile( input[i]+".dbg" ); - } - - Debugger.setErrFile( input[i]+".err" ); - - FileInputStream srcfile = new FileInputStream( input[i] ); - InputStreamReader reader = new InputStreamReader( srcfile ); - - Context context = new Context(); - global = new ObjectValue("__systemGlobal", new GlobalObject()); - context.pushScope(global); - - parser = new Parser(reader); - Evaluator cevaluator = new ConstantEvaluator(); - - t = System.currentTimeMillis(); - node = parser.parseProgram(); - errorCount = parser.errorCount(); - if( errorCount == 0 ) { - - - if( traceParser ) { - Debugger.trace("setting parser output to " + input[i]); - JSILGenerator.setOut( input[i]+".par" ); - node.evaluate(context,new JSILGenerator(false)); - } - - //Evaluator evaluator; - - - context.setEvaluator(new BlockEvaluator()); - node.evaluate(context, context.getEvaluator()); - - //JSILGenerator.setOut( input[i]+".blocks" ); - //context.setEvaluator(new JSILGenerator(false)); - //node.evaluate(context, context.getEvaluator()); - - context.setEvaluator(new ConstantEvaluator()); - value = node.evaluate(context, context.getEvaluator()); - - context.setEvaluator(new JSILGenerator(doASM)); - JSILGenerator.setOut( input[i]+".jsil" ); - node.evaluate(context, context.getEvaluator()); - errorCount = context.errorCount(); - } - - t = System.currentTimeMillis() - t; - //Debugger.trace(""+global); - System.out.println(input[i] + ": "+ errorCount +" errors [" + Long.toString(t) + " msec]"); - - } catch( Exception x ) { - x.printStackTrace(); - t = System.currentTimeMillis() - t; - System.out.println(input[i] + ": internal error" ); - } - //Debugger.trace( " " + i + " passed in " + Long.toString(t) + - // " msec: [" + input[i] + "] = " + result ); - - } - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Attributes.java b/mozilla/js/js2/jsc/src/java/parser/Attributes.java deleted file mode 100644 index 0375dd40a90..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Attributes.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -/* - * Not used. - */ - -package com.compilercompany.ecmascript; - -interface Attributes { - static final int ReadOnly = 0x00000001; - static final int DontDelete = 0x00000002; - static final int DontEnum = 0x00000004; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Block.java b/mozilla/js/js2/jsc/src/java/parser/Block.java deleted file mode 100644 index a3f2dc23f52..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Block.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Represents a basic block for flow analysis. - */ - -public class Block { - Node entry, exit; - - int n; - - Block(int n) { - this.n = n; - } - - void setEntry( Node entry ) { - this.entry = entry; - } - - void setExit( Node exit ) { - this.exit = exit; - } - - public String toString() { - return "B"+n/*+"( " + entry + ", " + exit + " )"*/; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Context.java b/mozilla/js/js2/jsc/src/java/parser/Context.java deleted file mode 100644 index 91368b50f74..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Context.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Stack; -import java.util.Vector; -import java.util.Enumeration; -import java.util.Hashtable; - -/** - * Context used during semantic analysis. - */ - -public class Context { - - private static final boolean debug = true; - - Evaluator evaluator; - Stack scopeStack; - Stack classStack; - Scope global; - Hashtable predecessors = new Hashtable(); - Hashtable D; - - - - int indent = 0; - int errors = 0; - public int errorCount() { - return errors; - } - - String getIndent() { - StringBuffer str = new StringBuffer(); - for (int i = 0; i < indent; i++) { - str.append('\t'); - } - return str.toString(); - } - - /** - * - */ - - static InputBuffer in; - - public static InputBuffer getInput() { - return in; - } - - public static void init(InputBuffer input) { - in=input; - } - - /** - * - */ - - public Evaluator getEvaluator() { - return evaluator; - } - - public void setEvaluator(Evaluator evaluator) { - this.evaluator=evaluator; - } - - /** - * The bottom of the stack. - */ - - Scope getGlobal() { - return global; - } - - /** - * The top of the scope stack. - */ - - Scope getLocal() { - return (Scope) scopeStack.peek(); - } - - /** - * Make the given scope the new innermost scope. - */ - - public Scope pushScope(Scope scope) { - if( scopeStack==null ) { - scopeStack = new Stack(); - global = scope; - } - scopeStack.push(scope); - return scope; - } - - /** - * Pop the top scope off the stack. - */ - - public void popScope() { - if( scopeStack==null ) { - return; - } - scopeStack.pop(); - return; - } - - /** - * Make the given scope the new innermost scope. - */ - - void enterClass(Scope scope) { - pushScope(scope); - if( classStack==null ) { - classStack = new Stack(); - } - classStack.push(scope); - return; - } - - void exitClass() { - classStack.pop(); - popScope(); - return; - } - - Scope getThisClass() { - if(classStack.size()==0) { - return global; - } else { - return (Scope) classStack.peek(); - } - } - - /** - * The immediate outer. - */ - - Scope nextScope(Scope scope) { - Scope next; - int index = scopeStack.indexOf(scope); - if(index==0) { - next = null; - } else { - next = (Scope) scopeStack.elementAt(index-1); - } - return next; - } - - private Block thisBlock; - Vector blocks = new Vector(); - - int blockCount; - void enterBlock(Node entry) throws Exception { - if( debug ) { - Debugger.trace("Context.enterBlock() with entry = " + entry ); - //Thread.dumpStack(); - //if(entry instanceof AnnotatedBlockNode) throw new Exception("blah"); - } - if( thisBlock!=null ) { - throw new Exception("Entering block before exiting previous block."); - } - thisBlock = new Block(blockCount++); - thisBlock.setEntry(entry); - blocks.addElement(thisBlock); - } - - Block getBlock() { - return thisBlock; - } - - void setBlock(Block b) { - thisBlock=b; - } - - void exitBlock(Node exit) { - if( debug ) { - Debugger.trace("Context.exitBlock() with exit = " + exit ); - } - if(thisBlock!=null) { - thisBlock.setExit(exit); - thisBlock = null; - } - } - - /** - * Get all basic blocks in the current program. - */ - - public Vector getBlocks() { - return blocks; - } - - /** - * Add an edge. - */ - - void addEdge(Block b1, Block b2) { - if( debug ) { - Debugger.trace("Context.addEdge() with b1 = " + b1 + ", b2 = " + b2 ); - } - Vector preds = (Vector) predecessors.get(b2); - if( preds == null ) { - preds = new Vector(); - preds.addElement(b1); - predecessors.put(b2,preds); - } else if( !preds.contains(b1) ) { - preds.addElement(b1); - } - } - - public String toString() { return "context( " + scopeStack + ", " + global + " )"; } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Errors.java b/mozilla/js/js2/jsc/src/java/parser/Errors.java deleted file mode 100644 index d89d9536d63..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Errors.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Not used. -**/ - -public interface Errors { - - static final String syntaxPart1_error = "Error at: "; - static final String syntaxPart2_error = " Expecting a "; - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Evaluator.java b/mozilla/js/js2/jsc/src/java/parser/Evaluator.java deleted file mode 100644 index 7d676ed1590..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Evaluator.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The base visitor object extended by semantic evaluators. - * - * This is a visitor that is used by the compiler for various forms for - * evaluation of a parse tree (e.g. a type evaluator might compute the - * static type of an expression.) - */ - -public class Evaluator { - - Value evaluate( Context context, Node node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - - // Expression evaluators - - - Value evaluate( Context context, ThisExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, IdentifierNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, QualifiedIdentifierNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralBooleanNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralNullNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralNumberNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralStringNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralUndefinedNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralRegExpNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, UnitExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, FunctionExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ParenthesizedExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ParenthesizedListExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralObjectNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralFieldNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LiteralArrayNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, PostfixExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, NewExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, IndexedMemberExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ClassofExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, MemberExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, CoersionExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, CallExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, UnaryExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, BinaryExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ConditionalExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, AssignmentExpressionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ListNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - - // Statements - - Value evaluate( Context context, StatementListNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, EmptyStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ExpressionStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, AnnotatedBlockNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, LabeledStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, IfStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, SwitchStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, CaseLabelNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, DoStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, WhileStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ForInStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ForStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, WithStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ContinueStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, BreakStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ReturnStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ThrowStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, TryStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, CatchClauseNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, FinallyClauseNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, UseStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, IncludeStatementNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - - // Definitions - - Value evaluate( Context context, ImportDefinitionNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, ImportBindingNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, AnnotatedDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, AttributeListNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ExportDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ExportBindingNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, VariableDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, VariableBindingNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, TypedVariableNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, FunctionDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, FunctionDeclarationNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, FunctionNameNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, FunctionSignatureNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ParameterNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, OptionalParameterNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ClassDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ClassDeclarationNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, InheritanceNode node ) throws Exception { - throw new Exception( "synthesis unspecified for node = " + node ); - } - Value evaluate( Context context, NamespaceDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, PackageDefinitionNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } - Value evaluate( Context context, ProgramNode node ) throws Exception { - throw new Exception( "evaluation unspecified for node = " + node ); - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Init.java b/mozilla/js/js2/jsc/src/java/parser/Init.java deleted file mode 100644 index d95bd547332..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Init.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Interface that object initializers implement. - * - * This interface is implemented by objects that can build - * instances of the Value class. For example, there is an - * object class that implements this interface for the - * system global object. - */ - -interface Init { - void init( Value ob ) throws Exception; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Node.java b/mozilla/js/js2/jsc/src/java/parser/Node.java deleted file mode 100644 index 7bdeaf963dc..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Node.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The base Node class. - */ - -public class Node { - - private static final boolean debug = false; - - Block block; - int position; - Store store; - - public Node() { - } - - public Node( int position ) { - this.position = position; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return null; - } - boolean isLeader; - public void markLeader() throws Exception { - - if( debug ) { - Debugger.trace( "Node.markLeader() with this = " + this ); - //if(this instanceof AnnotatedBlockNode) throw new Exception("blah"); - } - - isLeader=true; - } - public boolean isLeader() { - return isLeader; - } - public boolean isBranch() { - return false; - } - public Node[] getTargets() { - return null; - } - public Node first() { - return this; - } - public Node last() { - return this; - } - public Node pos(int p) { - position = p; - return this; - } - public int pos() { - return position; - } - public String toString() { - return isLeader ? "*"+block+":" : ""+block+":"; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/NodeFactory.java b/mozilla/js/js2/jsc/src/java/parser/NodeFactory.java deleted file mode 100644 index 20e47f60457..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/NodeFactory.java +++ /dev/null @@ -1,295 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -/* - * Creates parse tree nodes. - */ - -package com.compilercompany.ecmascript; - -public final class NodeFactory { - - private static final boolean debug = false; - - static private InputBuffer in; - - static void init(InputBuffer input) { - in = input; - } - - static IdentifierNode Identifier( String name ) { - if( debug ) { - Debugger.trace("" + in.positionOfMark() + ": Identifier " + name ); - } - return new IdentifierNode(name,in.positionOfMark()); - } - static QualifiedIdentifierNode QualifiedIdentifier( Node qualifier, IdentifierNode identifier ) { - if( debug ) { - Debugger.trace("" + in.positionOfMark() + ": QualifiedIdentifier " + identifier); - } - return new QualifiedIdentifierNode(qualifier,identifier,identifier.pos()); - } - static LiteralNullNode LiteralNull() { - return new LiteralNullNode(); - } - static LiteralBooleanNode LiteralBoolean(boolean value) { - return new LiteralBooleanNode(value); - } - static LiteralArrayNode LiteralArray( Node elementlist ) { - return new LiteralArrayNode(elementlist); - } - static LiteralFieldNode LiteralField( Node name, Node value ) { - return new LiteralFieldNode(name,value); - } - static LiteralNumberNode LiteralNumber( String value ) { - return new LiteralNumberNode(value); - } - static LiteralObjectNode LiteralObject( Node fieldlist ) { - return new LiteralObjectNode(fieldlist); - } - static LiteralRegExpNode LiteralRegExp( String value ) { - return new LiteralRegExpNode(value); - } - static LiteralStringNode LiteralString( String value ) { - return new LiteralStringNode(value); - } - static LiteralTypeNode LiteralType( Type type ) { - return new LiteralTypeNode(type); - } - static LiteralUndefinedNode LiteralUndefined() { - return new LiteralUndefinedNode(); - } - static ParenthesizedExpressionNode ParenthesizedExpression( Node expr ) { - return new ParenthesizedExpressionNode(expr,in.positionOfMark()); - } - static ParenthesizedListExpressionNode ParenthesizedListExpression( Node expr ) { - return new ParenthesizedListExpressionNode(expr); - } - static FunctionExpressionNode FunctionExpression( Node name, Node signature, Node body ) { - return new FunctionExpressionNode(name,signature,body); - } - static AnnotatedDefinitionNode AnnotatedDefinition( Node attributes, Node definition ) { - return new AnnotatedDefinitionNode(attributes,definition); - } - static AttributeListNode AttributeList( Node item, Node list ) { - return new AttributeListNode(item,list); - } - static UnitExpressionNode UnitExpression( Node value, Node type ) { - return new UnitExpressionNode(value,type); - } - static ThisExpressionNode ThisExpression() { - return new ThisExpressionNode(); - } - static SuperExpressionNode SuperExpression() { - return new SuperExpressionNode(); - } - static ListNode List( Node list, Node item ) { - return new ListNode(list,item,item.pos()); - } - static PostfixExpressionNode PostfixExpression( int op, Node expr ) { - return new PostfixExpressionNode(op,expr); - } - static NewExpressionNode NewExpression( Node member ) { - return new NewExpressionNode(member); - } - static ClassofExpressionNode ClassofExpression( Node base ) { - if( debug ) { - Debugger.trace("base = " + base); - } - return new ClassofExpressionNode(base); - } - static CallExpressionNode CallExpression( Node member, Node args ) { - return new CallExpressionNode(member,args); - } - static IndexedMemberExpressionNode IndexedMemberExpression( Node base, Node member ) { - return new IndexedMemberExpressionNode(base,member,in.positionOfMark()); - } - static MemberExpressionNode MemberExpression( Node base, Node name ) { - return new MemberExpressionNode(base,name,in.positionOfMark()); - } - static CoersionExpressionNode CoersionExpression( Node expr, Node type ) { - return new CoersionExpressionNode(expr,type,in.positionOfMark()); - } - static UnaryExpressionNode UnaryExpression( int op, Node expr ) { - return new UnaryExpressionNode(op,expr); - } - static BinaryExpressionNode BinaryExpression( int op, Node lhs, Node rhs ) { - return new BinaryExpressionNode(op,lhs,rhs); - } - static ConditionalExpressionNode ConditionalExpression( Node cond, Node thenexpr, Node elseexpr ) { - return new ConditionalExpressionNode(cond,thenexpr,elseexpr); - } - static AssignmentExpressionNode AssignmentExpression( Node lhs, int op, Node rhs ) { - return new AssignmentExpressionNode(lhs,op,rhs); - } - static StatementListNode StatementList( StatementListNode list, Node item ) { - return new StatementListNode(list,item); - } - - static EmptyStatementNode EmptyStatement() { - return new EmptyStatementNode(); - } - static ExpressionStatementNode ExpressionStatement( Node expr ) { - return new ExpressionStatementNode(expr); - } - static AnnotatedBlockNode AnnotatedBlock( Node attributes, Node definition ) { - return new AnnotatedBlockNode(attributes,definition); - } - static LabeledStatementNode LabeledStatement( Node label, Node statement ) { - return new LabeledStatementNode(label,statement); - } - static IfStatementNode IfStatement( Node test, Node tblock, Node eblock ) { - return new IfStatementNode(test,tblock,eblock); - } - static SwitchStatementNode SwitchStatement( Node expr, StatementListNode statements ) { - return new SwitchStatementNode(expr,statements); - } - static CaseLabelNode CaseLabel( Node label ) { - return new CaseLabelNode(label); - } - static DoStatementNode DoStatement( Node block, Node expr ) { - return new DoStatementNode(block,expr); - } - static WhileStatementNode WhileStatement( Node expr, Node statement ) { - return new WhileStatementNode(expr,statement); - } - static ForInStatementNode ForInStatement( Node expr1, Node expr2, Node statement ) { - return new ForInStatementNode(expr1,expr2,statement); - } - static ForStatementNode ForStatement( Node expr1, Node expr2, Node expr3, Node statement ) { - return new ForStatementNode(expr1,expr2,expr3,statement); - } - static WithStatementNode WithStatement( Node expr, Node statement ) { - return new WithStatementNode(expr,statement); - } - static ContinueStatementNode ContinueStatement(Node expr) { - return new ContinueStatementNode(expr); - } - static BreakStatementNode BreakStatement(Node expr) { - return new BreakStatementNode(expr); - } - static ReturnStatementNode ReturnStatement( Node expr ) { - return new ReturnStatementNode(expr); - } - static ThrowStatementNode ThrowStatement(Node list) { - return new ThrowStatementNode(list); - } - static TryStatementNode TryStatement(Node tryblock, StatementListNode catchlist, Node finallyblock) { - return new TryStatementNode(tryblock,catchlist,finallyblock); - } - static CatchClauseNode CatchClause(Node parameter, Node block) { - return new CatchClauseNode(parameter,block); - } - static FinallyClauseNode FinallyClause( Node block ) { - return new FinallyClauseNode(block); - } - static IncludeStatementNode IncludeStatement( Node list ) { - return new IncludeStatementNode(list); - } - static UseStatementNode UseStatement( Node expr ) { - return new UseStatementNode(expr); - } - - static ImportDefinitionNode ImportDefinition( Node item, Node list ) { - return new ImportDefinitionNode(item,list); - } - static ImportBindingNode ImportBinding( Node identifer, Node item ) { - return new ImportBindingNode(identifer,item); - } - static ExportDefinitionNode ExportDefinition( Node list ) { - return new ExportDefinitionNode(list); - } - static ExportBindingNode ExportBinding( Node name, Node value ) { - return new ExportBindingNode(name,value); - } - static VariableDefinitionNode VariableDefinition( int kind, Node list ) { - return new VariableDefinitionNode(kind,list,list.pos()); - } - static VariableBindingNode VariableBinding( Node identifier, Node initializer ) { - return new VariableBindingNode(identifier,initializer); - } - static TypedVariableNode TypedVariable( Node identifier, Node type ) { - if( debug ) { - Debugger.trace("" + in.positionOfMark() + ": TypedVariable " + type ); - } - return new TypedVariableNode(identifier,type,type!=null?type.pos():identifier.pos()); - } - static FunctionDefinitionNode FunctionDefinition( Node decl, Node body ) { - return new FunctionDefinitionNode(decl,body); - } - static FunctionDeclarationNode FunctionDeclaration( Node name, Node signature ) { - return new FunctionDeclarationNode(name,signature); - } - static FunctionNameNode FunctionName( int kind, Node name ) { - return new FunctionNameNode(kind,name); - } - static RestParameterNode RestParameter( Node expr ) { - return new RestParameterNode(expr); - } - static ParameterNode Parameter( Node identifer, Node type ) { - return new ParameterNode(identifer,type); - } - static OptionalParameterNode OptionalParameter( Node identifer, Node init ) { - return new OptionalParameterNode(identifer,init); - } - static NamedParameterNode NamedParameter( Node name, Node parameter ) { - return new NamedParameterNode(name,parameter); - } - static ClassDeclarationNode ClassDeclaration( Node name ) { - return new ClassDeclarationNode(name); - } - static ClassDefinitionNode ClassDefinition( Node name, Node interfaces, Node statements ) { - return new ClassDefinitionNode(name,interfaces,statements); - } - static InheritanceNode Inheritance( Node baseclass, Node interfaces ) { - return new InheritanceNode(baseclass,interfaces); - } - static InterfaceDeclarationNode InterfaceDeclaration( Node name ) { - return new InterfaceDeclarationNode(name); - } - static InterfaceDefinitionNode InterfaceDefinition( Node name, Node interfaces, Node statements ) { - return new InterfaceDefinitionNode(name,interfaces,statements); - } - static NamespaceDefinitionNode NamespaceDefinition( Node identifier, Node list ) { - return new NamespaceDefinitionNode(identifier,list); - } - static LanguageDeclarationNode LanguageDeclaration( Node list ) { - return new LanguageDeclarationNode(list); - } - static PackageDefinitionNode PackageDefinition( Node name, Node block ) { - return new PackageDefinitionNode(name,block); - } - static ProgramNode Program( Node statements ) { - return new ProgramNode(statements); - } - - /* - static Node () { - return new Node(); - } - */ - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Nodes.java b/mozilla/js/js2/jsc/src/java/parser/Nodes.java deleted file mode 100644 index 2507689d9f8..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Nodes.java +++ /dev/null @@ -1,2037 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -/* - * Parse tree nodes. - */ - -package com.compilercompany.ecmascript; - -/** - * AnnotatedBlockNode - */ - -final class AnnotatedBlockNode extends Node { - - Node attributes, statements; - - AnnotatedBlockNode( Node attributes, Node statements ) { - this.attributes = attributes; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node last() { - return statements.last(); - } - - public String toString() { - return "annotatedblock( " + attributes + ", " + statements + " )"; - } -} - -/** - * AnnotatedDefinitionNode - */ - -final class AnnotatedDefinitionNode extends Node { - - Node attributes, definition; - - AnnotatedDefinitionNode( Node attributes, Node definition ) { - this.attributes = attributes; - this.definition = definition; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "annotateddefinition( " + attributes + ", " + definition + " )"; - } -} - -/** - * AssignmentExpressionNode - */ - -final class AssignmentExpressionNode extends Node implements Tokens { - - Node lhs, rhs; - int op; - /*Reference*/Value ref; - - AssignmentExpressionNode( Node lhs, int op, Node rhs ) { - this.lhs = lhs; - this.op = op; - this.rhs = rhs; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public static boolean isFieldName(Node node) { - return node instanceof LiteralStringNode || - node instanceof LiteralNumberNode || - node instanceof IdentifierNode || - node instanceof ParenthesizedExpressionNode; - } - - public String toString() { - return "assignmentexpression( " + Token.getTokenClassName( op ) + ", " + lhs + ", " + rhs + ")"; - } -} - -/** - * AttributeListNode - */ - -final class AttributeListNode extends Node { - - Node item, list; - - AttributeListNode( Node item, Node list ) { - this.item = item; - this.list = list; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "attributelist( " + item + ", " + list + " )"; - } -} - -/** - * BinaryExpressionNode - */ - -final class BinaryExpressionNode extends Node { - - protected Node lhs, rhs; - protected int op; - Value lhs_ref,rhs_ref; - Slot lhs_slot,rhs_slot; - - BinaryExpressionNode( int op, Node lhs, Node rhs ) { - this.op = op; - this.lhs = lhs; - this.rhs = rhs; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "binaryexpression( " + Token.getTokenClassName( op ) + ", " + lhs + ", " + rhs + " )"; - } -} - -/** - * BreakStatementNode - */ - -final class BreakStatementNode extends Node { - - Node expr; - - public BreakStatementNode(Node expr) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "breakstatement( " + expr + " )"; - } -} - -/** - * CallExpressionNode - */ - -final class CallExpressionNode extends Node { - - protected Node member, args; - - CallExpressionNode( Node member, Node args ) { - this.member = member; - this.args = args; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "callexpression( " + member + ", " + args + " )"; - } -} - -/** - * CaseLabelNode - */ - -final class CaseLabelNode extends Node { - - Node label; - - CaseLabelNode( Node label ) { - this.label = label; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "caselabel( " + label + " )"; - } -} - -/** - * CatchClauseNode - */ - -final class CatchClauseNode extends Node { - - Node parameter,statements; - - CatchClauseNode(Node parameter, Node statements) { - this.parameter = parameter; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "catchclause( " + parameter + ", " + statements + " )"; - } -} - -/** - * ClassDeclarationNode - */ - -final class ClassDeclarationNode extends Node { - - Node name; - - ClassDeclarationNode( Node name ) { - this.name = name; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "classdeclaration( " + name + " )"; - } -} - -/** - * ClassDefinitionNode - */ - -final class ClassDefinitionNode extends Node { - - Node name, statements; - InheritanceNode inheritance; - Slot slot; - - static ClassDefinitionNode ClassDefinition( Node name, Node inheritance, Node statements ) { - return new ClassDefinitionNode(name,inheritance,statements); - } - - ClassDefinitionNode( Node name, Node inheritance, Node statements ) { - this.name = name; - this.inheritance = (InheritanceNode)inheritance; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node first() { - return statements.first(); - } - - public Node last() { - return statements.last(); - } - - public String toString() { - return "classdefinition( " + name + ", " + inheritance + ", " + statements + " )"; - } -} - -/** - * ClassofExpressionNode - */ - -final class ClassofExpressionNode extends Node { - - Node base; - - ClassofExpressionNode( Node base ) { - this.base = base; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "classofexpression( " + base + " )"; - } -} - -/** - * CoersionExpressionNode - */ - -final class CoersionExpressionNode extends Node { - - Node expr, type; - String typename; - - CoersionExpressionNode( Node expr, Node type, int pos ) { - super(pos); - this.expr = expr; - this.type = type; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "coersionexpression( " + expr + ", " + type + " )"; - } -} - -/** - * ConditionalExpressionNode - */ - -final class ConditionalExpressionNode extends Node { - - protected Node condition, thenexpr, elseexpr; - - ConditionalExpressionNode( Node condition, Node thenexpr, Node elseexpr ) { - this.condition = condition; - this.thenexpr = thenexpr; - this.elseexpr = elseexpr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "conditionalexpression( " + condition + ", " + thenexpr + ", " + elseexpr + " )"; - } -} - -/** - * ContinueStatementNode - */ - -final class ContinueStatementNode extends Node { - - Node expr; - - ContinueStatementNode(Node expr) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "continuestatement( " + expr + " )"; - } -} - -/** - * DoStatementNode - */ - -final class DoStatementNode extends Node { - - Node statements,expr; - - DoStatementNode(Node statements, Node expr) { - this.statements = statements; - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "dostatement( " + statements + ", " + expr + " )"; - } -} - -/** - * ElementListNode - */ - -final class ElementListNode extends Node { - - Node list, item; - - ElementListNode( Node list, Node item ) { - this.list = list; - this.item = item; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "elementlist( " + list + ", " + item + " )"; - } -} - -/** - * EmptyStatementNode - */ - -final class EmptyStatementNode extends Node { - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "emptystatement"; - } -} - -/** - * ExpressionStatementNode - */ - -final class ExpressionStatementNode extends Node { - - Node expr; - - ExpressionStatementNode( Node expr ) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "expressionstatement( " + expr + " )"; - } -} - -/** - * ExportBindingNode - */ - -final class ExportBindingNode extends Node { - - Node name; - Node value; - - ExportBindingNode( Node name, Node value ) { - this.name = name; - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "exportbinding( " + name + ", " + value + " )"; - } -} - -/** - * ExportDefinitionNode - */ - -final class ExportDefinitionNode extends Node { - - Node list; - - ExportDefinitionNode( Node list ) { - this.list = list; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "exportdefinition( " + list + " )"; - } -} - -/** - * FieldListNode - */ - -final class FieldListNode extends Node { - - Node list, field; - - FieldListNode( Node list, Node field ) { - this.list = list; - this.field = field; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "fieldlist( " + list + ", " + field + " )"; - } -} - -/** - * FinallyClauseNode - */ - -final class FinallyClauseNode extends Node { - - Node statements; - - FinallyClauseNode(Node statements) { - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "finallyclause( " + statements + " )"; - } -} - -/** - * ForStatementNode - */ - -final class ForStatementNode extends Node { - - protected Node initialize, test, increment, statement; - - ForStatementNode( Node initialize, Node test, Node increment, Node statement ) { - - if( initialize == null ) { - this.initialize = NodeFactory.LiteralUndefined(); - } else { - this.initialize = initialize; - } - - if( test == null ) { - this.test = NodeFactory.LiteralBoolean(true); - } else { - this.test = test; - } - - if( increment == null ) { - this.increment = NodeFactory.LiteralUndefined(); - } else { - this.increment = increment; - } - - this.statement = statement; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node[] getTargets() { - Node[] targets = new Node[1]; - targets[0] = statement; - return targets; - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "forstatement( " + initialize + ", " + test + ", " + increment + ", " + statement + " )"; - } -} - -/** - * ForInStatementNode - */ - -final class ForInStatementNode extends Node { - - Node property, object, statement; - - ForInStatementNode( Node property, Node object, Node statement ) { - this.property = property; - this.object = object; - this.statement = statement; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node[] getTargets() { - Node[] targets = new Node[1]; - targets[0] = statement; - return targets; - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "forinstatement( " + property + ", " + object + ", " + statement + " )"; - } -} - -/** - * FunctionExpressionNode - */ - -final class FunctionExpressionNode extends Node { - - Node name, signature, body; - - FunctionExpressionNode( Node name, Node signature, Node body ) { - this.name = name; - this.signature = signature; - this.body = body; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "functionexpression( " + name + ", " + signature + ", " + body + " )"; - } -} - -/** - * ReturnStatementNode - */ - -final class ReturnStatementNode extends Node { - - Node expr; - - ReturnStatementNode( Node expr ) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return super.toString()+"returnstatement( " + expr + " )"; - } -} - -/** - * FunctionDeclarationNode - */ - -final class FunctionDeclarationNode extends Node { - - Node name, signature; - Slot slot; - /*Reference*/Value ref; - - FunctionDeclarationNode( Node name, Node signature ) { - this.name = name; - this.signature = signature; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "functiondeclaration( " + name + ", " + signature + " )"; - } -} - -/** - * FunctionDefinitionNode - */ - -final class FunctionDefinitionNode extends Node { - - Node decl, body; - int fixedCount; - - FunctionDefinitionNode( Node decl, Node body ) { - this.decl = decl; - this.body = body; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node first() { - return body.first(); - } - - public Node last() { - return body.last(); - } - - public String toString() { - return "functiondefinition( " + decl + ", " + body + " )"; - } -} - -/** - * FunctionNameNode - */ - -final class FunctionNameNode extends Node { - - Node name; - int kind; - - FunctionNameNode( int kind, Node name ) { - this.kind = kind; - this.name = (IdentifierNode)name; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "functionname( " + Token.getTokenClassName(kind) + ", " + name + " )"; - } -} - -/** - * FunctionSignatureNode - */ - -final class FunctionSignatureNode extends Node { - - Node parameter, result; - Slot slot; - Value ref; - - FunctionSignatureNode( Node parameter, Node result ) { - this.parameter = parameter; - this.result = result; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "functionsignature( " + parameter + ", " + result + " )"; - } -} - -/** - * IdentifierNode - */ - -class IdentifierNode extends Node { - - String name; - /*Reference*/Value ref; - - IdentifierNode( String name, int pos ) { - super(pos); - this.name = name; - } - - IdentifierNode( int token_class, int pos ) { - super(pos); - this.name = Token.getTokenClassName(token_class); - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "identifier( " + name + " )"; - } -} - -/** - * IfStatementNode - */ - -final class IfStatementNode extends Node { - - protected Node condition, thenactions, elseactions; - - IfStatementNode( Node condition, Node thenactions, Node elseactions ) { - this.condition = condition; - this.thenactions = thenactions; - this.elseactions = elseactions; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return super.toString()+"ifstatement( " + condition + ", " + thenactions + ", " + elseactions + " )"; - } - - public boolean isBranch() { - return true; - } - - public Node[] getTargets() { - Node[] targets = elseactions==null?new Node[1]:new Node[2]; - targets[0] = thenactions.first(); - if( elseactions != null ) { - targets[1] = elseactions.first(); - } - return targets; - } -} - -/** - * ImportBindingNode - */ - -final class ImportBindingNode extends Node { - - Node identifier; - Node item; - - ImportBindingNode(Node identifier, Node item) { - this.identifier = identifier; - this.item = item; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "importbinding( " + identifier + ", " + item + " )"; - } -} - -/** - * ImportDefinitionNode - */ - -final class ImportDefinitionNode extends Node { - - Node item,list; - - ImportDefinitionNode(Node item, Node list) { - this.item = item; - this.list = list; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "importdefinition( " + item + ", " + list + " )"; - } -} - -/** - * IncludeStatementNode - */ - -final class IncludeStatementNode extends Node { - - Node item; - - IncludeStatementNode(Node item) { - this.item = item; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "includestatement( " + item + " )"; - } -} - -/** - * IndexedMemberExpressionNode - */ - -final class IndexedMemberExpressionNode extends Node { - - Node base, expr; - - IndexedMemberExpressionNode( Node base, Node expr, int pos ) { - super(pos); - this.base = base; - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "indexedmemberexpression( " + base + ", " + expr + " )"; - } -} - -/** - * InheritanceNode - */ - -final class InheritanceNode extends Node { - - Node baseclass,interfaces; - - InheritanceNode( Node baseclass, Node interfaces ) { - this.baseclass = baseclass; - this.interfaces = interfaces; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "inheritance( " + baseclass + ", " + interfaces + " )"; - } -} - -/** - * InterfaceDeclarationNode - */ - -final class InterfaceDeclarationNode extends Node { - - Node name; - - InterfaceDeclarationNode( Node name ) { - this.name = name; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "interfacedeclaration( " + name + " )"; - } -} - -/** - * InterfaceDefinitionNode - */ - -final class InterfaceDefinitionNode extends Node { - - Node name, interfaces, statements; - Slot slot; - - InterfaceDefinitionNode( Node name, Node interfaces, Node statements ) { - this.name = name; - this.interfaces = interfaces; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "interfacedefinition( " + name + ", " + interfaces + ", " + statements + " )"; - } -} - -/** - * LabeledStatementNode - */ - -final class LabeledStatementNode extends Node { - - Node label; - Node statement; - - LabeledStatementNode(Node label, Node statement) { - this.label = label; - this.statement = statement; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public Node[] getTargets() { - Node[] targets = new Node[1]; - targets[0] = this; - return targets; - } - - public String toString() { - return "labeledstatement( " + label + ", "+ statement + " )"; - } -} - -/** - * LanguageDeclarationNode - */ - -final class LanguageDeclarationNode extends Node { - - Node list; - - LanguageDeclarationNode(Node list) { - this.list = list; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "languagedeclaration( " + list + " )"; - } -} - -/** - * ListNode - */ - -final class ListNode extends Node { - - Node list, item; - - ListNode( Node list, Node item, int pos ) { - super(pos); - this.list = list; - this.item = item; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - boolean isReference() { - return true; - } - - public int pos() { - return item.pos(); - } - - public String toString() { - return "list( " + list + ", " + item + " )"; - } -} - -/** - * LiteralArrayNode - */ - -final class LiteralArrayNode extends Node { - - Node elementlist; - /*List*/Value value; - - LiteralArrayNode( Node elementlist ) { - this.elementlist = elementlist; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalarray( " + elementlist + " )"; - } -} - -/** - * LiteralBooleanNode - */ - -final class LiteralBooleanNode extends Node { - - protected boolean value; - - LiteralBooleanNode( boolean value ) { - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalboolean( " + new Boolean( value ) + " )"; - } -} - -/** - * LiteralFieldNode - */ - -final class LiteralFieldNode extends Node { - - Node name; - Node value; - /*Reference*/Value ref; - - LiteralFieldNode( Node name, Node value ) { - this.name = name; - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalfield( " + name + ", " + value + " )"; - } -} - -/** - * LiteralNullNode - */ - -final class LiteralNullNode extends Node { - - LiteralNullNode() { - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalnull"; - } -} - -/** - * LiteralNumberNode - */ - -final class LiteralNumberNode extends Node { - - String value; - - LiteralNumberNode( String value ) { - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalnumber( " + value + " )"; - } -} - -/** - * LiteralObjectNode - */ - -final class LiteralObjectNode extends Node { - - Node fieldlist; - /*Object*/Value value; - - LiteralObjectNode( Node fieldlist ) { - this.fieldlist = fieldlist; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalobject( " + fieldlist + " )"; - } -} - -/** - * LiteralRegExpNode - */ - -final class LiteralRegExpNode extends Node { - - String value; - - LiteralRegExpNode( String value ) { - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalregexp( " + value + " )"; - } -} - -/** - * LiteralStringNode - */ - -final class LiteralStringNode extends Node { - - String value; - - LiteralStringNode( String value ) { - this.value = value; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalstring( " + value + " )"; - } -} - -/** - * LiteralTypeNode - */ - -final class LiteralTypeNode extends Node { - - Type type; - - LiteralTypeNode( Type type ) { - this.type = type; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literaltype( " + type + " )"; - } -} - -/** - * LiteralUndefinedNode - */ - -final class LiteralUndefinedNode extends Node { - - LiteralUndefinedNode() { - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "literalundefined"; - } -} - -/** - * MemberExpressionNode - */ - -final class MemberExpressionNode extends Node { - - Node base, name; - /*Reference*/Value ref; - - MemberExpressionNode( Node base, Node name, int pos ) { - super(pos); - this.base = base; - this.name = name; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "memberexpression( " + base + ", " + name + " )"; - } -} - -/** - * NamedParameterNode - */ - -final class NamedParameterNode extends Node { - - Node name; - Node parameter; - - NamedParameterNode( Node name, Node parameter ) { - this.name = name; - this.parameter = parameter; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "namedparameter( " + name + ", " + parameter + " )"; - } -} - -/** - * NamespaceDefinitionNode - */ - -final class NamespaceDefinitionNode extends Node { - - Node name, extendslist; - - NamespaceDefinitionNode( Node name, Node extendslist ) { - this.name = name; - this.extendslist = extendslist; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "namespacedefinition( " + name + ", " + extendslist + " )"; - } -} - -/** - * NewExpressionNode - */ - -final class NewExpressionNode extends Node { - - Node expr; - - NewExpressionNode( Node expr ) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public static boolean isNew(Node node) { - return node instanceof NewExpressionNode; - } - - public String toString() { - return "newexpression( " + expr + " )"; - } -} - -/** - * PackageDefinitionNode - */ - -final class PackageDefinitionNode extends Node { - - Node name, statements; - - PackageDefinitionNode( Node name, Node statements ) { - this.name = name; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "packagedefinition( " + name + ", " + statements + " )"; - } -} - -/** - * OptionalParameterNode - */ - -final class OptionalParameterNode extends Node { - - Node parameter; - Node initializer; - - OptionalParameterNode( Node parameter, Node initializer ) { - this.parameter = parameter; - this.initializer = initializer; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "optionalparameter( " + parameter + ", " + initializer + " )"; - } -} - -/** - * ParameterNode - */ - -final class ParameterNode extends Node { - - Node identifier; - Node type; - Slot slot; - String name; - - ParameterNode( Node identifier, Node type ) { - this.identifier = identifier; - this.type = type; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "parameter( " + identifier + ", " + type + " )"; - } -} - -/** - * ParenthesizedExpressionNode - */ - -final class ParenthesizedExpressionNode extends Node { - - Node expr; - - public ParenthesizedExpressionNode( Node expr, int pos ) { - super(pos); - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isListExpression() { - return expr instanceof ListNode; - } - - public String toString() { - return "parenthesizedexpression( " + expr + " )"; - } -} - -/** - * ParenthesizedListExpressionNode - */ - -final class ParenthesizedListExpressionNode extends Node { - - Node expr; - - public ParenthesizedListExpressionNode( Node expr ) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isListExpression() { - return expr instanceof ListNode; - } - - public String toString() { - return "parenthesizedlistexpression( " + expr + " )"; - } -} - -/** - * PostfixExpressionNode - */ - -final class PostfixExpressionNode extends Node { - - int op; - Node expr; - - public PostfixExpressionNode( int op, Node expr ) { - this.op = op; - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "postfixexpression( " + Token.getTokenClassName(op) + ", " + expr + " )"; - } -} - -/** - * ProgramNode - */ - -final class ProgramNode extends Node { - - Node statements; - - ProgramNode(Node statements) { - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "program( " + statements + " )"; - } -} - -/** - * QualifiedIdentifierNode - * - * QualifiedIdentifier : QualifiedIdentifier Identifier - */ - -final class QualifiedIdentifierNode extends IdentifierNode { - - Node qualifier; - - QualifiedIdentifierNode( Node qualifier, IdentifierNode identifier, int pos ) { - super(identifier.name,pos); - this.qualifier = qualifier; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "qualifiedidentifier( " + qualifier + ", " + name + " )"; - } -} - -/** - * RestParameterNode - */ - -final class RestParameterNode extends Node { - - Node parameter; - - RestParameterNode( Node parameter ) { - this.parameter = parameter; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "restparameter( " + parameter + " )"; - } -} - -/** - * StatementListNode - */ - -final class StatementListNode extends Node { - - StatementListNode list; - Node item; - - StatementListNode( StatementListNode list, Node item ) { - this.list = list; - this.item = item; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node first() { - StatementListNode node = this; - while(node.list!=null) { - node = node.list; - } - return node.item; - } - - public Node last() { - return this.item; - } - - public String toString() { - return "statementlist( " + list + ", " + item + " )"; - } -} - -/** - * SwitchStatementNode - */ - -final class SwitchStatementNode extends Node { - - Node expr; - StatementListNode statements; - - SwitchStatementNode( Node expr, StatementListNode statements ) { - this.expr = expr; - this.statements = statements; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public Node[] getTargets() { - - StatementListNode node; - - int count = 0; - node = statements; - Debugger.trace("statements = " + statements); - - do { - Debugger.trace("node = " + node.item); - if( node.item instanceof CaseLabelNode ) { - count++; - } - node = node.list; - } while(node!=null); - - Node[] targets = new Node[count]; - node = statements; - count = 0; - - do { - if( node.item instanceof CaseLabelNode ) { - targets[count++] = node.item; - } - node = node.list; - } while(node!=null); - - return targets; - } - - public String toString() { - return "switchstatement( " + expr + ", " + statements + " )"; - } -} - -/** - * SuperExpressionNode - */ - - -final class SuperExpressionNode extends Node { - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "superexpression"; - } -} - -/** - * ThisExpressionNode - */ - - -final class ThisExpressionNode extends Node { - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "thisexpression"; - } -} - -/** - * ThrowStatementNode - */ - -final class ThrowStatementNode extends Node { - - Node expr; - - ThrowStatementNode(Node expr) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "throwstatement( " + expr + " )"; - } -} - -/** - * TryStatementNode - */ - -final class TryStatementNode extends Node { - - Node tryblock; - StatementListNode catchlist; - Node finallyblock; - - TryStatementNode(Node tryblock, StatementListNode catchlist, Node finallyblock) { - this.tryblock = tryblock; - this.catchlist = catchlist; - this.finallyblock = finallyblock; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public boolean isBranch() { - return true; - } - - public Node[] getTargets() { - - StatementListNode node; - - int count = 0; - node = catchlist; - - do { - if( node.item instanceof CatchClauseNode ) { - count++; - } - node = node.list; - } while(node!=null); - - if( finallyblock != null ) { - count++; - } - - Node[] targets = new Node[count]; - node = catchlist; - count = 0; - - do { - if( node.item instanceof CatchClauseNode ) { - targets[count++] = node.item; - } - node = node.list; - } while(node!=null); - - if( finallyblock != null ) { - targets[count++] = finallyblock; - } - - return targets; - } - - public String toString() { - return "trystatement( " + tryblock + ", " + catchlist + ", " + finallyblock + " )"; - } -} - -/** - * TypedVariableNode - */ - -final class TypedVariableNode extends Node { - - IdentifierNode identifier; - IdentifierNode type; - Slot slot; - - TypedVariableNode( Node identifier, Node type, int pos ) { - super(pos); - this.identifier = (IdentifierNode)identifier; - this.type = (IdentifierNode)type; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "typedvariable( " + identifier + ", " + type + " )"; - } -} - -/** - * UnaryExpressionNode - */ - -final class UnaryExpressionNode extends Node { - - Node expr; - int op; - - UnaryExpressionNode( int op, Node expr ) { - this.op = op; - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "unaryexpression( " + Token.getTokenClassName(op) + ", " + expr + " )"; - } -} - -/** - * UnitExpressionNode - */ - -final class UnitExpressionNode extends Node { - - Node value, type; - - UnitExpressionNode( Node value, Node type ) { - this.value = value; - this.type = type; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "unitexpression( " + value + ", " + type + " )"; - } -} - -/** - * UseStatementNode - */ - -final class UseStatementNode extends Node { - - Node expr; - - UseStatementNode( Node expr ) { - this.expr = expr; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "usestatement( " + expr + " )"; - } -} - -/** - * VariableBindingNode - */ - -final class VariableBindingNode extends Node { - - TypedVariableNode variable; - Node initializer; - - VariableBindingNode( Node variable, Node initializer ) { - this.variable = (TypedVariableNode)variable; - this.initializer = initializer; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public int pos() { - return variable.pos(); - } - - public String toString() { - return "variablebinding( " + variable + ", " + initializer + " )"; - } -} - -/** - * VariableDefinitionNode - */ - -final class VariableDefinitionNode extends Node { - - int kind; - Node list; - - VariableDefinitionNode( int kind, Node list, int pos ) { - super(pos); - this.kind = kind; - this.list = list; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "variabledefinition( " + Token.getTokenClassName(kind) + ", " + list + " )"; - } -} - -/** - * WhileStatementNode - */ - -final class WhileStatementNode extends Node { - - Node expr, statement; - - WhileStatementNode( Node expr, Node statement ) { - this.expr = expr; - this.statement = statement; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public Node[] getTargets() { - Node[] targets = new Node[1]; - targets[0] = statement; - return targets; - } - - public boolean isBranch() { - return true; - } - - public String toString() { - return "whilestatement( " + expr + ", " + statement + " ) "; - } -} - -/** - * WithStatementNode - */ - -final class WithStatementNode extends Node { - - Node expr; - Node statement; - - WithStatementNode( Node expr, Node statement ) { - this.expr = expr; - this.statement = statement; - } - - public Value evaluate( Context context, Evaluator evaluator ) throws Exception { - return evaluator.evaluate( context, this ); - } - - public String toString() { - return "withstatement( " + expr + ", " + statement + " )"; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Parser.java b/mozilla/js/js2/jsc/src/java/parser/Parser.java deleted file mode 100644 index 2b3d4bbe39d..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Parser.java +++ /dev/null @@ -1,6701 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; -import java.io.*; -import java.lang.reflect.*; - -/** - * Parse JS2 programs. - */ - -public class Parser implements Tokens, Errors { - - private static final boolean debug = true; - private static final boolean debug_lookahead = false; - private static final boolean debug_match = false; - - private Scanner scanner; - protected int lasttoken = empty_token; - protected int nexttoken = empty_token; - protected int thistoken = empty_token; - private boolean isNewLine = false; - protected Vector statements = null; - protected Vector functions = null; - private int errors = 0; - - public static PrintStream out; - public static void setOut(String filename) throws Exception { - out = new PrintStream( new FileOutputStream(filename) ); - } - - /** - * self tests. - */ - - static int failureCount = 0; - - public static void main( String[] args ) { - try { - - Debugger.setDbgFile("debug.dbg"); - Debugger.setOutFile("debug.out"); - Debugger.setErrFile("debug.err"); - - Debugger.trace( "Parser test begin" ); - - // Expressions - - testIdentifier(); - testSimpleQualifiedIdentifier(); - testQualifiedIdentifier(); - testPrimaryExpression(); - testObjectLiteral(); - testArrayLiteral(); - testAttributeExpression(); - testPostfixExpression(); - testConstExpression(); - testConstDotExpression(); - testBracketExpression(); - testBracketSubexpression(); - testMultiplicativeExpression(); - testAdditiveExpression(); - testArgumentList(); - testAssignmentExpression(); - testListExpression(); - testTypeExpression(); - - // Statements - - testTopStatement(); - testStatement(); - testIfStatement(); - testExpressionStatement(); - testBlock(); - testTopStatements(); - testUseStatement(); - testReturnStatement(); - - // Definitions - - testAnnotatedDefinition(); - testAttributes(); - testAttribute(); - testDefinition(); - testVariableDefinition(); - testVariableBindingList(); - testTypedVariable(); - testFunctionDefinition(); - testFunctionSignature(); - testParameters(); - testParameter(); - testNamedParameters(); - testRestParameter(); - testResultSignature(); - testClassDefinition(); - testProgram(); - - if( failureCount != 0 ) { - Debugger.trace( "Parser test completed: " + failureCount + " tests failed" ); - } else { - Debugger.trace( "Parser test completed successfully" ); - } - } catch( Exception e ) { - Debugger.trace( "compile error: " + e ); - e.printStackTrace(); - } finally { - System.setOut( null ); - } - } - - static final void testParser(String name, String[] input, String[] expected) throws Exception { - - Debugger.trace( "begin testParser: " + name ); - - String result; - - Class pc = Parser.class; - Class[] args = new Class[0]; - Method m = pc.getMethod("parse"+name,args); - - Parser parser; - long t=0; - - for( int i = 0; i < input.length; i++ ) { - try { - parser = new Parser(new StringReader(input[i])); - System.gc(); - t = System.currentTimeMillis(); - result = "" + m.invoke(parser,args); - t = System.currentTimeMillis() - t; - } catch( InvocationTargetException x ) { - t = System.currentTimeMillis() - t; - result = "error: " + x.getTargetException().getMessage(); - if( debug ) { - x.printStackTrace(); - } - } - if( result.equals( expected[i] ) ) { - Debugger.trace( " " + i + " passed [" + Long.toString(t) + - " msec]: " + input[i] /*+ " --> " + result*/); - } else { - failureCount++; - Debugger.trace( " " + i + " failed: " + input[i] + " --> " + result ); - } - } - - Debugger.trace( "finish testParser: " + name ); - } - - /** - * - */ - - public Parser (Reader reader) { - this.scanner = new Scanner (reader,System.err,"test"); - this.statements = new Vector(); - this.functions = new Vector(); - NodeFactory.init(scanner.input); - Context.init(scanner.input); - } - - /** - * - */ - - public boolean newline() throws Exception { - if( nexttoken == empty_token ) { - nexttoken = scanner.nexttoken(); - } - return scanner.followsLineTerminator(); - } - - private static int abbrevIfElse_mode = else_token; // lookahead uses this value. don't change. - private static int abbrevDoWhile_mode = while_token; // ditto. - private static int abbrev_mode = last_token-1; - private static int full_mode = abbrev_mode-1; - - private static int allowIn_mode = full_mode-1; - private static int noIn_mode = allowIn_mode-1; - - - /** - * Match the current input with an expected token. lookahead is managed by - * setting the state of this.nexttoken to empty_token after an match is - * attempted. the next lookahead will initialize it again. - */ - - final public int match( int expectedTokenClass ) throws Exception { - - if( debug ) { - Debugger.trace( "matching " + Token.getTokenClassName(expectedTokenClass) + " with input " + - Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - int result = error_token; - - if( !lookahead( expectedTokenClass ) ) { - scanner.error(scanner.syntax_error,"Expecting " + Token.getTokenClassName(expectedTokenClass) + - " before " + scanner.getTokenSource(nexttoken),error_token); - nexttoken = empty_token; - throw new Exception("syntax error"); - } else - if( expectedTokenClass != scanner.getTokenClass( nexttoken ) ) { - result = thistoken; - } else { - result = nexttoken; - lasttoken = nexttoken; - nexttoken = empty_token; - } - - if( (debug || debug_match) ) { - Debugger.trace( "match " + Token.getTokenClassName(expectedTokenClass) ); - } - - return result; - } - - /** - * Match the current input with an expected token. lookahead is managed by - * setting the state of this.nexttoken to empty_token after an match is - * attempted. the next lookahead will initialize it again. - */ - - final public boolean lookaheadSemicolon(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "looking for virtual semicolon with input " + - Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - boolean result = false; - - if( lookahead(semicolon_token) || - lookahead(eos_token) || - lookahead(rightbrace_token) || - lookahead(mode) || - scanner.followsLineTerminator() ) { - result = true; - } - - return result; - } - - final public boolean lookaheadNoninsertableSemicolon(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "looking for virtual semicolon with input " + - Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - boolean result = false; - - if( lookahead(eos_token) || - lookahead(rightbrace_token) || - lookahead(mode) ) { - result = true; - } - - return result; - } - - final public int matchSemicolon(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "matching semicolon with input " + - Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - int result = error_token; - - if( lookahead( semicolon_token ) ) { - result = match(semicolon_token); - } else if( scanner.followsLineTerminator() || - lookahead(eos_token) || - lookahead(rightbrace_token) ) { - result = semicolon_token; - } else if( (mode == abbrevIfElse_mode || mode == abbrevDoWhile_mode) - && lookahead(mode) ) { - result = semicolon_token; - } else { - throw new Exception( "Expecting semicolon before '" + scanner.getTokenSource(nexttoken) + - "' in the text '" + scanner.getLineText() + "'" ); - } - - return result; - } - - /** - * Match a non-insertable semi-colon. This function looks for - * a semicolon_token or other grammatical markers that indicate - * that the empty_token is equivalent to a semicolon. - */ - - final public int matchNoninsertableSemicolon(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "matching semicolon with input " + - Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - int result = error_token; - - if( lookahead( semicolon_token ) ) { - result = match(semicolon_token); - } else if( lookahead(eos_token) || - lookahead(rightbrace_token) ) { - result = semicolon_token; - } else if( (mode == abbrevIfElse_mode || mode == abbrevDoWhile_mode) - && lookahead(mode) ) { - result = semicolon_token; - } else { - throw new Exception( "Expecting semicolon before '" + scanner.getTokenSource(nexttoken) + - "' in the text '" + scanner.getLineText() + "'" ); - } - - return result; - } - - /** - * Lookahead to the next token. - */ - - final public boolean lookahead( int expectedTokenClass ) throws Exception { - - boolean result = false; - - // If the nexttoken is empty_token, then fetch another. This is the first - // lookahead since the last match. - - if( nexttoken == empty_token ) { - nexttoken = scanner.nexttoken(); - if(Scanner.out != null) { - Scanner.out.println((scanner.followsLineTerminator()?"*":"")+Token.getTokenClassName(scanner.getTokenClass(nexttoken))); - } - } - - if( (debug || debug_lookahead) ) { - //Debugger.trace( "looking for " + Token.getTokenClassName(expectedTokenClass) ); - Debugger.trace( "lookahead " + Token.getTokenClassName(scanner.getTokenClass(nexttoken)) ); - } - - // Check for invalid token. - - if( nexttoken == error_token ) { - throw new Exception( "Invalid word " + scanner.lexeme() + - " in text " + scanner.getLineText() + "\n" ); - } - - // Compare the expected token class against the token class of - // the nexttoken. - - if( expectedTokenClass != scanner.getTokenClass( nexttoken ) ) { - return false; - } else { - thistoken = expectedTokenClass; - return true; - } - } - - public int errorCount() { - return scanner.errorCount; - } - - /** - * Start grammar. - */ - - /** - * Identifier - * Identifier - * get - * set - */ - - final public IdentifierNode parseIdentifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseIdentifier" ); - } - - IdentifierNode $$ = null; - - if( lookahead( get_token ) ) { - match( get_token ); - $$ = NodeFactory.Identifier("get"); - } else if( lookahead( set_token ) ) { - match( set_token ); - $$ = NodeFactory.Identifier("set"); - } else if( lookahead( identifier_token ) ) { - $$ = NodeFactory.Identifier(scanner.getTokenText(match(identifier_token))); - } else { - scanner.error(scanner.syntax_error,"Expecting an Identifier."); - throw new Exception(); - } - - if( debug ) { - Debugger.trace( "finish parseIdentifier" ); - } - return $$; - } - - static final void testIdentifier() throws Exception { - - Debugger.trace( "begin testIdentifier" ); - - String[] input = { - "xx", - "get", - "set", - }; - - String[] expected = { - "identifier( xx )", - "identifier( get )", - "identifier( set )", - }; - - testParser("Identifier",input,expected); - } - - /** - * Qualifier - * public - * private - * super - * Identifier - */ - - final public Node parseQualifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseQualifier" ); - } - - Node $$; - - if( lookahead( public_token ) ) { - match( public_token ); - $$ = NodeFactory.Identifier("public"); - } else if( lookahead( private_token ) ) { - match( private_token ); - $$ = NodeFactory.Identifier("private"); - } else if( lookahead( super_token ) ) { - match( super_token ); - $$ = NodeFactory.Identifier("super"); - } else { - $$ = parseIdentifier(); - } - - if( debug ) { - Debugger.trace( "finish parseQualifier" ); - } - - return $$; - } - - /** - * SimpleQualifiedIdentifier - * Identifier - * Qualifier :: Identifier - */ - - final public Node parseSimpleQualifiedIdentifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseSimpleQualifiedIdentifier" ); - } - - Node $$,$1; - - if( lookahead( public_token ) ) { - match(public_token); - $1 = NodeFactory.Identifier("public"); - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - } else if( lookahead(private_token) ) { - match(private_token); - $1 = NodeFactory.Identifier("private"); - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - } else if( lookahead(super_token) ) { - match(super_token); - $1 = NodeFactory.Identifier("super"); - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - } else { - $1 = parseIdentifier(); - if( lookahead(doublecolon_token) ) { - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - } else { - $$ = $1; - } - } - - if( debug ) { - Debugger.trace( "finish parseSimpleQualifiedIdentifier" ); - } - - return $$; - } - - static final void testSimpleQualifiedIdentifier() throws Exception { - - Debugger.trace( "begin testSimpleQualifiedIdentifier" ); - - String[] input = { - "x", - "get", - "set", - "public::x", - "private::x", - "super::x", - "x::y::z", - }; - - String[] expected = { - "qualifiedidentifier( null, x )", - "qualifiedidentifier( null, get )", - "qualifiedidentifier( null, set )", - "qualifiedidentifier( list( null, identifier( public ) ), x )", - "qualifiedidentifier( list( null, identifier( private ) ), x )", - "qualifiedidentifier( list( null, identifier( super ) ), x )", - "qualifiedidentifier( list( list( null, identifier( x ) ), identifier( y ) ), z )", - }; - - testParser("SimpleQualifiedIdentifier",input,expected); - } - - /** - * ExpressionQualifiedIdentifier - * ParenthesizedExpression :: Identifier - */ - - final public Node parseExpressionQualifiedIdentifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExpressionQualifiedIdentifier" ); - } - - Node $$,$1; - - $1 = parseParenthesizedExpression(); - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - - if( debug ) { - Debugger.trace( "finish parseExpressionQualifiedIdentifier" ); - } - - return $$; - } - - /** - * QualifiedIdentifier - * SimpleQualifiedIdentifier - * ExpressionQualifiedIdentifier - */ - - final public Node parseQualifiedIdentifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseQualifiedIdentifier" ); - } - - Node $$,$1; - - if( lookahead( leftparen_token ) ) { - - $$ = parseExpressionQualifiedIdentifier(); - - } else { - - $$ = parseSimpleQualifiedIdentifier(); - - } - - if( debug ) { - Debugger.trace( "finish parseQualifiedIdentifier" ); - } - - return $$; - } - - static final void testQualifiedIdentifier() throws Exception { - - Debugger.trace( "begin testQualifiedIdentifier" ); - - String[] input = { - "xx", - "get", - "set", - "public::x", // public :: QualifiedIdentifier - "private::x", // private :: QualifieldIdentifier - "super::x", // super :: QualifiedItentifier - "(y)::x", // ParenthesizedExpression :: QualifiedIdentifier - "z::y::x", // Identifier QualifiedIdentifierPrime - }; - - String[] expected = { - "qualifiedidentifier( null, xx )", - "qualifiedidentifier( null, get )", - "qualifiedidentifier( null, set )", - "qualifiedidentifier( list( null, identifier( public ) ), x )", - "qualifiedidentifier( list( null, identifier( private ) ), x )", - "qualifiedidentifier( list( null, identifier( super ) ), x )", - "qualifiedidentifier( qualifiedidentifier( null, y ), x )", - "qualifiedidentifier( list( list( null, identifier( z ) ), identifier( y ) ), x )", - }; - - testParser("QualifiedIdentifier",input,expected); - } - - /** - * PrimaryExpression - * null - * true - * false - * public - * Number UnitOperator - * String - * this - * super - * RegularExpression - * ParenthesizedListExpression UnitOperator - * ArrayLiteral - * ObjectLiteral - * FunctionExpression - */ - - final public Node parsePrimaryExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePrimaryExpression" ); - } - - Node $$; - - if( lookahead( null_token ) ) { - match( null_token ); - $$ = NodeFactory.LiteralNull(); - } else if( lookahead( true_token ) ) { - match( true_token ); - $$ = NodeFactory.LiteralBoolean(true); - } else if( lookahead( false_token ) ) { - match( false_token ); - $$ = NodeFactory.LiteralBoolean(false); - } else if( lookahead( public_token ) ) { - match( public_token ); - $$ = NodeFactory.Identifier("public"); - } else if( lookahead( numberliteral_token ) ) { - Node $1 = NodeFactory.LiteralNumber(scanner.getTokenText(match(numberliteral_token))); - $$ = parseUnitOperator($1); - } else if( lookahead(stringliteral_token) ) { - $$ = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - } else if( lookahead(this_token) ) { - match( this_token ); - $$ = NodeFactory.ThisExpression(); - } else if( lookahead(super_token) ) { - match( super_token ); - $$ = NodeFactory.SuperExpression(); - } else if( lookahead(regexpliteral_token) ) { - $$ = NodeFactory.LiteralRegExp(scanner.getTokenText(match(regexpliteral_token))); - } else if( lookahead(leftparen_token) ) { - Node $1 = parseParenthesizedListExpression(); - $$ = parseUnitOperator($1); - } else if( lookahead(leftbracket_token) ) { - $$ = parseArrayLiteral(); - } else if( lookahead(leftbrace_token) ) { - $$ = parseObjectLiteral(); - } else if( lookahead(function_token) ) { - $$ = parseFunctionExpression(); - } else { - scanner.error(scanner.syntax_error,"Expecting before '" + - scanner.getTokenSource(nexttoken),error_token); - throw new Exception(); - } - - if( debug ) { - Debugger.trace( "finish parsePrimaryExpression" ); - } - - return $$; - } - - static final void testPrimaryExpression() throws Exception { - - Debugger.trace( "begin testPrimaryExpression" ); - - String[] input = { - "null", //null - "true", //true - "false", //false - "public", //public - "123", //Number - "123 'miles'", //Number [no line break] String - "'abc'", //String - "this", //this - "super", //super - "/xyz/gim", //RegularExpression - "(y)", //ParenthesizedExpression - "(y) 'pesos'", //ParenthesizedExpression [no line break] String - "[a,b,c]", //ArrayLiteral - "{a:1,b:2,c:3}", //LiteralObject - "function f(x,y) {}", //FunctionExpression - }; - - String[] expected = { - "literalnull", - "literalboolean( true )", - "literalboolean( false )", - "identifier( public )", - "literalnumber( 123 )", - "unitexpression( literalnumber( 123 ), literalstring( miles ) )", - "literalstring( abc )", - "thisexpression", - "superexpression", - "literalregexp( /xyz/gim )", - "parenthesizedexpression( qualifiedidentifier( null, y ) )", - "unitexpression( parenthesizedexpression( qualifiedidentifier( null, y ) ), literalstring( pesos ) )", - "literalarray( list( list( list( null, qualifiedidentifier( null, a ) ), qualifiedidentifier( null, b ) ), qualifiedidentifier( null, c ) ) )", - "literalobject( list( list( list( null, literalfield( identifier( a ), literalnumber( 1 ) ) ), literalfield( identifier( b ), literalnumber( 2 ) ) ), literalfield( identifier( c ), literalnumber( 3 ) ) ) )", - "functionexpression( identifier( f ), functionsignature( list( parameter( identifier( x ), null ), parameter( identifier( y ), null ) ), null ), null )", - }; - - testParser("PrimaryExpression",input,expected); - } - - /** - * ParenthesizedExpression - * ( AssignmentExpressionallowIn ) - */ - - final public Node parseParenthesizedExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseParenthesizedExpression" ); - } - - Node $$; - - match( leftparen_token ); - int mark = scanner.input.positionOfMark(); - - $$ = NodeFactory.ParenthesizedExpression(parseAssignmentExpression(allowIn_mode)); - - $$.position = mark; - - match( rightparen_token ); - - if( debug ) { - Debugger.trace( "finish parseParenthesizedExpression" ); - } - - return $$; - } - - static final void testParenthesizedExpression() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("ParenthesizedExpression",input,expected); - } - - /** - * ParenthesizedListExpression - * ParenthesizedExpression - * ( ListExpressionallowIn , AssignmentExpressionallowIn ) - */ - - final public ParenthesizedListExpressionNode parseParenthesizedListExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseParenthesizedListExpression" ); - } - - ParenthesizedListExpressionNode $$; - - match( leftparen_token ); - - $$ = NodeFactory.ParenthesizedListExpression(parseListExpression(allowIn_mode)); - - match( rightparen_token ); - - if( debug ) { - Debugger.trace( "finish parseParenthesizedListExpression" ); - } - - return $$; - } - - static final void testParenthesizedListExpression() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("ParenthesizedListExpression",input,expected); - } - - /** - * UnitOperator - * «empty» - * [no line break] String - */ - - final public Node parseUnitOperator(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseUnitOperator" ); - } - - Node $$; - - if( lookahead(stringliteral_token) ) { - Node $2 = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - $$ = NodeFactory.UnitExpression($1,$2); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseUnitOperator" ); - } - - return $$; - } - - /** - * PrimaryExpressionOrExpressionQualifiedIdentifier - * ParenthesizedListExpression {if $1.isParenExpr() && lookahead(doublecolon_token)} ... - * ParentehsizedListExpression UnitOperator - * PrimaryExpression - */ - - final public Node parsePrimaryExpressionOrExpressionQualifiedIdentifier() throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePrimaryExpressionOrExpressionQualifiedIdentifier" ); - } - - Node $$; - - if( lookahead(leftparen_token) ) { - ParenthesizedListExpressionNode $1 = parseParenthesizedListExpression(); - if( !$1.isListExpression() && lookahead(doublecolon_token) ) { - match(doublecolon_token); - $$ = NodeFactory.QualifiedIdentifier($1,parseIdentifier()); - } else { - $$ = parseUnitOperator($1); - } - } else { - $$ = parsePrimaryExpression(); - } - - if( debug ) { - Debugger.trace( "finish parsePrimaryExpressionOrExpressionQualifiedIdentifier" ); - } - - return $$; - } - - /** - * FunctionExpression - * function FunctionSignature Block - * function Identifier FunctionSignature Block - */ - - final public Node parseFunctionExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFunctionExpression" ); - } - - Node $$,$1,$2,$3; - - match(function_token); - - if( lookahead(leftparen_token) ) { - $1 = null; - } else { - $1 = parseIdentifier(); - } - - $2 = parseFunctionSignature(); - $3 = parseBlock(); - - $$ = NodeFactory.FunctionExpression($1,$2,$3); - - if( debug ) { - Debugger.trace( "finish parseFunctionExpression" ); - } - - return $$; - } - - static final void testFunctionExpression() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("FunctionExpression",input,expected); - } - - /** - * ObjectLiteral - * { } - * { FieldList } - */ - - final public Node parseObjectLiteral() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseObjectLiteral" ); - } - - Node $$,$1; - - // { - - match( leftbrace_token ); - - // } - - if( lookahead( rightbrace_token ) ) { - - match( rightbrace_token ); - $1 = null; - - // FieldList } - - } else { - - // Inlining parseFieldList: - // FieldList: LiteralField FieldListPrime - - $1 = parseLiteralField(); - $1 = parseFieldListPrime(NodeFactory.List(null,$1)); - - match( rightbrace_token ); - - } - - $$ = NodeFactory.LiteralObject($1); - - if( debug ) { - Debugger.trace( "leaving parseObjectLiteral with $$ = " + $$ ); - } - - return $$; - } - - static final void testObjectLiteral() throws Exception { - - String[] input = { - "{a:0,'b':1,2:2,(d=e):3}", - }; - - String[] expected = { - "literalobject( list( list( list( list( null, literalfield( identifier( a ), literalnumber( 0 ) ) ), literalfield( literalstring( b ), literalnumber( 1 ) ) ), literalfield( literalnumber( 2 ), literalnumber( 2 ) ) ), literalfield( assignmentexpression( assign_token, qualifiedidentifier( null, d ), coersionexpression( qualifiedidentifier( null, e ), qualifiedidentifier( null, d ) )), literalnumber( 3 ) ) ) )", - }; - - testParser("ObjectLiteral",input,expected); - } - - /** - * FieldListPrime - * , LiteralField FieldListPrime - * empty - */ - - final public Node parseFieldListPrime( Node $1 ) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFieldListPrime with $1 = " + $1 ); - } - - Node $$; - - // , LiteralField FieldListPrime - - if( lookahead( comma_token ) ) { - - Node $2; - match( comma_token ); - $2 = parseLiteralField(); - $$ = parseFieldListPrime(NodeFactory.List($1,$2)); - - // empty - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "leaving parseFieldListPrime with $$ = " + $$ ); - } - - return $$; - } - - /** - * LiteralField - * FieldName : AssignmentExpressionallowIn - */ - - final public Node parseLiteralField() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLiteralField" ); - } - - Node $$,$1,$2; - - $1 = parseFieldName(); - match(colon_token); - $2 = parseAssignmentExpression(allowIn_mode); - - $$ = NodeFactory.LiteralField($1,$2); - - if( debug ) { - Debugger.trace( "finish parseLiteralField" ); - } - - return $$; - } - - static final void testLiteralField() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("LiteralField",input,expected); - } - - /** - * FieldName - * Identifier - * String - * Number - * ParenthesizedExpression - */ - - final public Node parseFieldName() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFieldName" ); - } - - Node $$, $1; - - if( lookahead( stringliteral_token ) ) { - $$ = NodeFactory.LiteralString( scanner.getTokenText(match( stringliteral_token )) ); - } else if( lookahead( numberliteral_token ) ) { - $$ = NodeFactory.LiteralNumber(scanner.getTokenText(match(numberliteral_token))); - } else if( lookahead( leftparen_token ) ) { - $$ = parseParenthesizedExpression(); - } else { - $$ = parseIdentifier(); - } - - if( debug ) { - Debugger.trace( "finish parseFieldName" ); - } - - return $$; - } - - static final void testFieldName() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("FieldName",input,expected); - } - - /** - * ArrayLiteral - * [ ElementList ] - */ - - final public Node parseArrayLiteral() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseArrayLiteral" ); - } - - Node $$, $1; - - match( leftbracket_token ); - - // ElementList : LiteralElement ElementListPrime (inlined) - - $1 = parseLiteralElement(); - $$ = NodeFactory.LiteralArray(parseElementListPrime(NodeFactory.List(null,$1))); - - match( rightbracket_token ); - - if( debug ) { - Debugger.trace( "finish parseArrayLiteral" ); - } - - return $$; - } - - static final void testArrayLiteral() throws Exception { - - String[] input = { - "[]", - "[1,2,3]" - }; - - String[] expected = { - "literalarray( list( null, null ) )", - "literalarray( list( list( list( null, literalnumber( 1 ) ), literalnumber( 2 ) ), literalnumber( 3 ) ) )" - }; - - testParser("ArrayLiteral",input,expected); - } - - /** - * ElementListPrime - * , LiteralElement ElementListPrime - * empty - */ - - final public Node parseElementListPrime( Node $1 ) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseElementListPrime" ); - } - - Node $$; - - // , LiteralElement ElementListPrime - - if( lookahead( comma_token ) ) { - - Node $2; - - match( comma_token ); - $2 = parseLiteralElement(); - if( $2 == null ) { - $$ = $1; - } else { - $$ = parseElementListPrime(NodeFactory.List($1,$2)); - } - - // empty - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseElementListPrime" ); - } - - return $$; - } - - /** - * LiteralElement - * AssignmentExpression - * empty - */ - - final public Node parseLiteralElement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLiteralElement" ); - } - - Node $$; - - // empty - - if( lookahead( comma_token ) || - lookahead( rightbracket_token ) ) { - - $$ = null; - - // AssignmentExpression - - } else { - - $$ = parseAssignmentExpression(allowIn_mode); - - } - - if( debug ) { - Debugger.trace( "finish parseLiteralElement" ); - } - - return $$; - } - - static final void testLiteralElement() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("LiteralElement",input,expected); - } - - /** - * AttributeExpression - * SimpleQualifiedIdentifier AttributeExpressionPrime - * - * AttributeExpressionPrime - * DotOperator AttributeExpressionPrime - * Brackets AttributeExpressionPrime - * Arguments AttributeExpressionPrime - * «empty» - */ - - final public Node parseAttributeExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAttributeExpression" ); - } - - Node $$,$1; - - $1 = parseSimpleQualifiedIdentifier(); - $$ = parseAttributeExpressionPrime($1); - - if( debug ) { - Debugger.trace( "finish parseAttributeExpression" ); - } - - return $$; - } - - final public Node parseAttributeExpressionPrime(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAttributeExpressionPrime" ); - } - - Node $$; - - if( lookahead( dot_token ) ) { - - $$ = parseAttributeExpressionPrime(parseDotOperator($1)); - - } else if ( lookahead(leftbracket_token) ) { - - $$ = parseAttributeExpressionPrime(parseBrackets($1)); - - } else if ( lookahead(leftparen_token) ) { - - $$ = parseAttributeExpressionPrime(parseArguments($1)); - - } else { - - $$ = $1; - - } - - if( debug ) { - Debugger.trace( "finish parseAttributeExpressionPrime" ); - } - - return $$; - } - - static final void testAttributeExpression() throws Exception { - - String[] input = { - "a::b::c.d[e](f,g)[h].i", - }; - - String[] expected = { - "memberexpression( indexedmemberexpression( callexpression( indexedmemberexpression( memberexpression( qualifiedidentifier( list( list( null, identifier( a ) ), identifier( b ) ), c ), qualifiedidentifier( null, d ) ), list( null, qualifiedidentifier( null, e ) ) ), list( list( null, qualifiedidentifier( null, f ) ), qualifiedidentifier( null, g ) ) ), list( null, qualifiedidentifier( null, h ) ) ), qualifiedidentifier( null, i ) )", - }; - - testParser("AttributeExpression",input,expected); - } - - /** - * PostfixExpression - * const PostfixExpressionNonConst - * PostfixExpressionNonConst - */ - - final public Node parsePostfixExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePostfixExpression" ); - } - - Node $$,$1; - - if( lookahead(const_token) ) { - match(const_token); - // ACTION: Do something with const. - } - - $$ = parsePostfixExpressionNonConst(); - - if( debug ) { - Debugger.trace( "finish parsePostfixExpression" ); - } - - return $$; - } - - static final void testPostfixExpression() throws Exception { - - String[] input = { - "a::b::c.d[e](f,g)[h].i", - "const new const function f(a,b){return a+b;}.(a<> AdditiveExpression - * ShiftExpression >>> AdditiveExpression - */ - - final public Node parseShiftExpression() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseShiftExpression" ); - } - - Node $$,$1; - - $1 = parseAdditiveExpression(); - $$ = parseShiftExpressionPrime($1); - - if( debug ) { - Debugger.trace( "finish parseShiftExpression" ); - } - - return $$; - } - - final public Node parseShiftExpressionPrime(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseShiftExpressionPrime" ); - } - - Node $$; - - if( lookahead(leftshift_token) ) { - match(leftshift_token); - $1 = NodeFactory.BinaryExpression(leftshift_token,$1,parseAdditiveExpression()); - $$ = parseShiftExpressionPrime($1); - } else if( lookahead(rightshift_token) ) { - match(rightshift_token); - $1 = NodeFactory.BinaryExpression(rightshift_token,$1,parseAdditiveExpression()); - $$ = parseShiftExpressionPrime($1); - } else if( lookahead(unsignedrightshift_token) ) { - match(unsignedrightshift_token); - $1 = NodeFactory.BinaryExpression(unsignedrightshift_token,$1,parseAdditiveExpression()); - $$ = parseShiftExpressionPrime($1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseShiftExpressionPrime" ); - } - - return $$; - } - - /** - * RelationalExpression[allowIn|noIn] - * ShiftExpression - * RelationalExpression[allowIn] < ShiftExpression - * RelationalExpression[allowIn] > ShiftExpression - * RelationalExpression[allowIn] <= ShiftExpression - * RelationalExpression[allowIn] >= ShiftExpression - * RelationalExpression[allowIn] instanceof ShiftExpression - * RelationalExpression[allowIn] in ShiftExpression - */ - - final public Node parseRelationalExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseRelationalExpression" ); - } - - Node $$,$1; - - $1 = parseShiftExpression(); - $$ = parseRelationalExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseRelationalExpression" ); - } - - return $$; - } - - final public Node parseRelationalExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseRelationalExpressionPrime" ); - } - - Node $$; - - if( lookahead(lessthan_token) ) { - match(lessthan_token); - $1 = NodeFactory.BinaryExpression(lessthan_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else if( lookahead(greaterthan_token) ) { - match(greaterthan_token); - $1 = NodeFactory.BinaryExpression(greaterthan_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else if( lookahead(lessthanorequals_token) ) { - match(lessthanorequals_token); - $1 = NodeFactory.BinaryExpression(lessthanorequals_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else if( lookahead(greaterthanorequals_token) ) { - match(greaterthanorequals_token); - $1 = NodeFactory.BinaryExpression(greaterthanorequals_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else if( lookahead(instanceof_token) ) { - match(instanceof_token); - $1 = NodeFactory.BinaryExpression(instanceof_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else if( mode == allowIn_mode && lookahead(in_token) ) { - match(in_token); - $1 = NodeFactory.BinaryExpression(in_token,$1,parseShiftExpression()); - $$ = parseRelationalExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseRelationalExpressionPrime" ); - } - - return $$; - } - - /** - * EqualityExpression - * RelationalExpression - * EqualityExpression == RelationalExpression - * EqualityExpression != RelationalExpression - * EqualityExpression === RelationalExpression - * EqualityExpression !== RelationalExpression - */ - - final public Node parseEqualityExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseEqualityExpression" ); - } - - Node $$,$1; - - $1 = parseRelationalExpression(mode); - $$ = parseEqualityExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseEqualityExpression" ); - } - - return $$; - } - - final public Node parseEqualityExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseEqualityExpressionPrime" ); - } - - Node $$; - - if( lookahead(equals_token) ) { - match(equals_token); - $1 = NodeFactory.BinaryExpression(equals_token,$1,parseRelationalExpression(mode)); - $$ = parseEqualityExpressionPrime(mode,$1); - } else if( lookahead(notequals_token) ) { - match(notequals_token); - $1 = NodeFactory.BinaryExpression(notequals_token,$1,parseRelationalExpression(mode)); - $$ = parseEqualityExpressionPrime(mode,$1); - } else if( lookahead(strictequals_token) ) { - match(strictequals_token); - $1 = NodeFactory.BinaryExpression(strictequals_token,$1,parseRelationalExpression(mode)); - $$ = parseEqualityExpressionPrime(mode,$1); - } else if( lookahead(strictnotequals_token) ) { - match(strictnotequals_token); - $1 = NodeFactory.BinaryExpression(strictnotequals_token,$1,parseRelationalExpression(mode)); - $$ = parseEqualityExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseEqualityExpressionPrime" ); - } - - return $$; - } - - /** - * BitwiseAndExpression - * EqualityExpression - * BitwiseAndExpression & EqualityExpression - */ - - final public Node parseBitwiseAndExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseAndExpression" ); - } - - Node $$,$1; - - $1 = parseEqualityExpression(mode); - $$ = parseBitwiseAndExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseBitwiseAndExpression" ); - } - - return $$; - } - - final public Node parseBitwiseAndExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseAndExpressionPrime" ); - } - - Node $$; - - if( lookahead(bitwiseand_token) ) { - match(bitwiseand_token); - $1 = NodeFactory.BinaryExpression(bitwiseand_token,$1,parseEqualityExpression(mode)); - $$ = parseBitwiseAndExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseBitwiseAndExpressionPrime" ); - } - - return $$; - } - - /** - * BitwiseXorExpression - * BitwiseAndExpression - * BitwiseXorExpression ^ BitwiseAndExpression - */ - - final public Node parseBitwiseXorExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseXorExpression" ); - } - - Node $$,$1; - - $1 = parseBitwiseAndExpression(mode); - $$ = parseBitwiseXorExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseBitwiseXorExpression" ); - } - - return $$; - } - - final public Node parseBitwiseXorExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseXorExpressionPrime" ); - } - - Node $$; - - if( lookahead(bitwisexor_token) ) { - match(bitwisexor_token); - $1 = NodeFactory.BinaryExpression(bitwisexor_token,$1,parseBitwiseAndExpression(mode)); - $$ = parseBitwiseXorExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseBitwiseXorExpressionPrime" ); - } - - return $$; - } - - /** - * BitwiseOrExpression - * BitwiseXorExpression - * BitwiseOrExpression | BitwiseXorExpression - */ - - final public Node parseBitwiseOrExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseOrExpression" ); - } - - Node $$,$1; - - $1 = parseBitwiseXorExpression(mode); - $$ = parseBitwiseOrExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseBitwiseOrExpression" ); - } - - return $$; - } - - final public Node parseBitwiseOrExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBitwiseOrExpressionPrime" ); - } - - Node $$; - - if( lookahead(bitwiseor_token) ) { - match(bitwiseor_token); - $1 = NodeFactory.BinaryExpression(bitwiseor_token,$1,parseBitwiseXorExpression(mode)); - $$ = parseBitwiseOrExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseBitwiseOrExpressionPrime" ); - } - - return $$; - } - - /** - * LogicalAndExpression - * BitwiseOrExpression - * LogicalAndExpression && BitwiseOrExpression - */ - - final public Node parseLogicalAndExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalAndExpression" ); - } - - Node $$,$1; - - $1 = parseBitwiseOrExpression(mode); - $$ = parseLogicalAndExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseLogicalAndExpression" ); - } - - return $$; - } - - final public Node parseLogicalAndExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalAndExpressionPrime" ); - } - - Node $$; - - if( lookahead(logicaland_token) ) { - match(logicaland_token); - $1 = NodeFactory.BinaryExpression(logicaland_token,$1,parseBitwiseOrExpression(mode)); - $$ = parseLogicalAndExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseLogicalAndExpressionPrime" ); - } - - return $$; - } - - /** - * LogicalXorExpression - * LogicalAndExpression - * LogicalXorExpression ^^ LogicalAndExpression - */ - - final public Node parseLogicalXorExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalXorExpression" ); - } - - Node $$,$1; - - $1 = parseLogicalAndExpression(mode); - $$ = parseLogicalXorExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseLogicalXorExpression" ); - } - - return $$; - } - - final public Node parseLogicalXorExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalXorExpressionPrime" ); - } - - Node $$; - - if( lookahead(logicalxor_token) ) { - match(logicalxor_token); - $1 = NodeFactory.BinaryExpression(logicalxor_token,$1,parseLogicalAndExpression(mode)); - $$ = parseLogicalXorExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseLogicalXorExpressionPrime" ); - } - - return $$; - } - - /** - * LogicalOrExpression - * LogicalXorExpression - * LogicalOrExpression || LogicalXorExpression - */ - - final public Node parseLogicalOrExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalOrExpression" ); - } - - Node $$,$1; - - $1 = parseLogicalXorExpression(mode); - $$ = parseLogicalOrExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseLogicalOrExpression" ); - } - - return $$; - } - - final public Node parseLogicalOrExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLogicalOrExpressionPrime" ); - } - - Node $$; - - if( lookahead(logicalor_token) ) { - match(logicalor_token); - $1 = NodeFactory.BinaryExpression(logicalor_token,$1,parseLogicalXorExpression(mode)); - $$ = parseLogicalOrExpressionPrime(mode,$1); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseLogicalOrExpressionPrime" ); - } - - return $$; - } - - /** - * ConditionalExpression - * LogicalOrExpression - * LogicalOrExpression ? AssignmentExpression : AssignmentExpression - */ - - final public Node parseConditionalExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseConditionalExpression" ); - } - - Node $$,$1; - - $1 = parseLogicalOrExpression(mode); - - if( lookahead(questionmark_token) ) { - Node $2,$3; - $2 = parseAssignmentExpression(mode); - match(colon_token); - $3 = parseAssignmentExpression(mode); - $$ = NodeFactory.ConditionalExpression($1,$2,$3); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseConditionalExpression" ); - } - - return $$; - } - - /** - * NonAssignmentExpression - * LogicalOrExpression - * LogicalOrExpression ? NonAssignmentExpression : NonAssignmentExpression - */ - - final public Node parseNonAssignmentExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNonAssignmentExpression" ); - } - - Node $$,$1; - - $1 = parseLogicalOrExpression(mode); - - if( lookahead(questionmark_token) ) { - Node $2,$3; - $2 = parseNonAssignmentExpression(mode); - match(colon_token); - $3 = parseNonAssignmentExpression(mode); - $$ = NodeFactory.ConditionalExpression($1,$2,$3); - } else { - $$ = $1; - } - - - - if( debug ) { - Debugger.trace( "finish parseNonAssignmentExpression" ); - } - - return $$; - } - - static final void testNonAssignmentExpression() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("NonAssignmentExpression",input,expected); - } - - /** - * AssignmentExpression - * ConditionalExpression - * PostfixExpression AssignmentExpressionPrime - * - * AssignmentExpressionPrime - * = AssignmentExpression AssignmentExpressionPrime - * CompoundAssignment AssignmentExpression - */ - - final public Node parseAssignmentExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAssignmentExpression" ); - } - - Node $$,$1; - - $1 = parseConditionalExpression(mode); - $$ = parseAssignmentExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseAssignmentExpression" ); - } - - return $$; - } - - final public Node parseAssignmentExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAssignmentExpressionPrime" ); - } - - Node $$; - int $2 = error_token; - - if( lookahead( assign_token ) ? (($2 = match( assign_token )) != error_token) : - lookahead( multassign_token ) ? (($2 = match( multassign_token )) != error_token) : - lookahead( divassign_token ) ? (($2 = match( divassign_token )) != error_token) : - lookahead( modulusassign_token ) ? (($2 = match( modulusassign_token )) != error_token) : - lookahead( plusassign_token ) ? (($2 = match( plusassign_token )) != error_token) : - lookahead( minusassign_token ) ? (($2 = match( minusassign_token )) != error_token) : - lookahead( leftshiftassign_token ) ? (($2 = match( leftshiftassign_token )) != error_token) : - lookahead( rightshiftassign_token ) ? (($2 = match( rightshiftassign_token )) != error_token) : - lookahead( unsignedrightshiftassign_token ) ? (($2 = match( unsignedrightshiftassign_token )) != error_token) : - lookahead( bitwiseandassign_token ) ? (($2 = match( bitwiseandassign_token )) != error_token) : - lookahead( bitwisexorassign_token ) ? (($2 = match( bitwisexorassign_token )) != error_token) : - lookahead( bitwiseorassign_token ) ? (($2 = match( bitwiseorassign_token )) != error_token) : - lookahead( logicalandassign_token ) ? (($2 = match( bitwiseandassign_token )) != error_token) : - lookahead( logicalxorassign_token ) ? (($2 = match( bitwisexorassign_token )) != error_token) : - lookahead( logicalorassign_token ) ? (($2 = match( bitwiseorassign_token )) != error_token) : false ) { - - // ACTION: verify $1.isPostfixExpression(); - - $$ = NodeFactory.AssignmentExpression($1,$2, - NodeFactory.CoersionExpression(parseAssignmentExpression(mode), - NodeFactory.ClassofExpression($1))); - - } else { - - $$ = $1; - - } - - if( debug ) { - Debugger.trace( "finish parseAssignmentExpression" ); - } - - return $$; - } - - static final void testAssignmentExpression() throws Exception { - - String[] input = { - "x=10", - "x=y*=20", - "x=y*=z>>>=20" - }; - - String[] expected = { - "assign( assign_token, identifier( x ), literalnumber( 10 ))", - "assign( assign_token, identifier( x ), assign( multassign_token, identifier( y ), literalnumber( 20 )))", - "assign( assign_token, identifier( x ), assign( multassign_token, identifier( y ), assign( unsignedrightshiftassign_token, identifier( z ), literalnumber( 20 ))))" - }; - - testParser("AssignmentExpression",input,expected); - } - - /** - * ListExpression - * AssignmentExpression - * ListExpression , AssignmentExpression - */ - - final public Node parseListExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseListExpression" ); - } - - Node $$, $1; - - $1 = parseAssignmentExpression(mode); - $$ = parseListExpressionPrime(mode,$1); - - if( debug ) { - Debugger.trace( "finish parseListExpression" ); - } - - return $$; - } - - private Node parseListExpressionPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseListExpressionPrime" ); - } - - Node $$; - - // , AssignmentExpression ListExpressionPrime - - if( lookahead( comma_token ) ) { - - match( comma_token ); - - Node $2; - - $2 = parseAssignmentExpression(mode); - $$ = parseListExpressionPrime(mode,NodeFactory.List($1,$2)); - - // - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseListExpression'" ); - } - - return $$; - } - - static final void testListExpression() throws Exception { - - String[] input = { - "x,1,'a'", - "z" - }; - - String[] expected = { - "list( list( identifier( x ), literalnumber( 1 ) ), literalstring( a ) )", - "identifier( z )" - }; - - testParser("ListExpression",input,expected); - } - - /** - * TypeExpression - * NonassignmentExpression - */ - - final public Node parseTypeExpression(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTypeExpression" ); - } - - Node $$ = parseNonAssignmentExpression(mode); - - if( debug ) { - Debugger.trace( "finish parseTypeExpression" ); - } - - return $$; - } - - static final void testTypeExpression() throws Exception { - - String[] input = { - "Object", - "Widget" - }; - - String[] expected = { - "identifier( Object )", - "identifier( Widget )" - }; - - testParser("TypeExpression",input,expected); - } - - /** - * TopStatement - * Statement - * LanguageDeclaration NoninsertableSemicolon - * PackageDefinition - */ - - public final Node parseTopStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTopStatement" ); - } - - Node $$ = null; - - try { - - if( lookahead(use_token) ) { - $$ = parseLanguageDeclaration(); - matchNoninsertableSemicolon(mode); - } else if( lookahead(package_token) ) { - $$ = parsePackageDefinition(); - } else { - $$ = parseStatement(mode); - } - - } catch ( Exception x ) { - // Do nothing. We are simply recovering from an error in the - // current statement. - } - - if( debug ) { - Debugger.trace( "finish parseTopStatement" ); - } - - return $$; - } - - static final void testTopStatement() throws Exception { - - String[] input = { - "var x;", - "var y;" - }; - - String[] expected = { - "", - "" - }; - - testParser("TopStatement",input,expected); - } - - /** - * Statement - * EmptyStatement - * IfStatement - * SwitchStatement - * DoStatement Semicolon - * WhileStatement - * ForStatement - * WithStatement - * ContinueStatement Semicolon - * BreakStatement Semicolon - * ReturnStatement Semicolon - * ThrowStatement Semicolon - * TryStatement - * UseStatement Semicolon - * IncludeStatement Semicolon - * AnnotatedDefinition - * AnnotatedBlock - * ExpressionStatement Semicolon - * LabeledStatement - */ - - public final Node parseStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseStatement" ); - } - - Node $$; - - if( lookahead(semicolon_token) ) { - match(semicolon_token); - $$ = NodeFactory.EmptyStatement(); - } else if( lookahead(if_token) ) { - $$ = parseIfStatement(mode); - } else if( lookahead(switch_token) ) { - $$ = parseSwitchStatement(); - } else if( lookahead(do_token) ) { - $$ = parseDoStatement(); - matchSemicolon(mode); - } else if( lookahead(while_token) ) { - $$ = parseWhileStatement(mode); - } else if( lookahead(for_token) ) { - $$ = parseForStatement(mode); - } else if( lookahead(with_token) ) { - $$ = parseWithStatement(mode); - } else if( lookahead(continue_token) ) { - $$ = parseContinueStatement(); - matchSemicolon(mode); - } else if( lookahead(break_token) ) { - $$ = parseBreakStatement(); - matchSemicolon(mode); - } else if( lookahead(return_token) ) { - $$ = parseReturnStatement(); - matchSemicolon(mode); - } else if( lookahead(throw_token) ) { - $$ = parseThrowStatement(); - matchSemicolon(mode); - } else if( lookahead(try_token) ) { - $$ = parseTryStatement(); - } else if( lookahead(use_token) ) { - $$ = parseUseStatement(); - matchSemicolon(mode); - } else if( lookahead(include_token) ) { - $$ = parseIncludeStatement(); - matchSemicolon(mode); - } else { - $$ = parseAnnotatedOrLabeledOrExpressionStatement(mode); - } - - if( debug ) { - Debugger.trace( "finish parseStatement" ); - } - - return $$; - } - - static final void testStatement() throws Exception { - - String[] input = { - "var x;", - "var y;" - }; - - String[] expected = { - "", - "" - }; - - testParser("Statement",input,expected); - } - - /** - * AnnotatedOrLabeledOrExpressionStatement - * Attributes Block - * Attributes Definition - * Identifier : Statement - * [lookahead?{function, {, const }] ListExpressionallowIn ; - */ - - public final Node parseAnnotatedOrLabeledOrExpressionStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAnnotatedOrLabeledOrExpressionStatement" ); - } - - Node $$; - - if( lookahead(leftbrace_token) ) { - $$ = NodeFactory.AnnotatedBlock(null,parseBlock()); - } else if( lookahead(import_token) || lookahead(export_token) || - lookahead(var_token) || lookahead(const_token) || - lookahead(function_token) || lookahead(class_token) || - lookahead(namespace_token) || lookahead(interface_token) ) { - $$ = NodeFactory.AnnotatedDefinition(null,parseDefinition(mode)); - } else if( lookahead(abstract_token) || lookahead(final_token) || - lookahead(private_token) || lookahead(public_token) || - lookahead(static_token) ) { - Node $1; - $1 = parseAttributes(); - if( lookahead(leftbrace_token) ) { - $$ = NodeFactory.AnnotatedBlock($1,parseBlock()); - } else { - $$ = NodeFactory.AnnotatedDefinition($1,parseDefinition(mode)); - } - } else { - Node $1; - $1 = parseListExpression(allowIn_mode); - if( lookahead(colon_token) ) { - // ACTION: verify that $1 is an IdentifierNode. - match(colon_token); - $$ = NodeFactory.LabeledStatement($1,parseStatement(mode)); - } else if( lookahead(leftbrace_token) ) { - // ACTION: verify that $1 is an AttributeNode. - $$ = NodeFactory.AnnotatedBlock($1,parseBlock()); - } else if( lookahead(semicolon_token) ) { - match(semicolon_token); - $$ = NodeFactory.ExpressionStatement($1); - } else if( lookaheadSemicolon(mode) ) { - $$ = NodeFactory.ExpressionStatement($1); - matchSemicolon(mode); - } else { - // ACTION: verify that $1 is an AttributeNode. - $1 = NodeFactory.AttributeList($1,parseAttributes()); - $$ = NodeFactory.AnnotatedDefinition($1,parseDefinition(mode)); - } - } - - - if( debug ) { - Debugger.trace( "finish parseAnnotatedOrLabeledOrExpressionStatement" ); - Debugger.trace( "with $$ = " + $$ ); - } - - return $$; - } - - /** - * ExpressionStatement - * [lookahead != { function,{,const }] ListExpression[allowIn] - */ - - public final Node parseExpressionStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExpressionStatement" ); - } - - Node $$; - - if( lookahead(function_token) || lookahead(leftbrace_token) || - lookahead(const_token) ) { - $$ = null; // Should not get here. - if(debug) Debugger.trace("invalid lookahead for expression statement."); - } else { - $$ = NodeFactory.ExpressionStatement(parseListExpression(allowIn_mode)); - } - - if( debug ) { - Debugger.trace( "finish parseExpressionStatement" ); - } - - return $$; - } - - static final void testExpressionStatement() throws Exception { - - String[] input = { - "x=1", - "x=y" - }; - - String[] expected = { - "", - "" - }; - - testParser("ExpressionStatement",input,expected); - } - - /** - * AnnotatedBlock - * Attributes Block - */ - - public final Node parseAnnotatedBlock() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAnnotatedBlock" ); - } - - Node $$; - - $$ = NodeFactory.AnnotatedBlock(parseAttributes(),parseBlock()); - - if( debug ) { - Debugger.trace( "finish parseAnnotatedBlock" ); - } - - return $$; - } - - static final void testAnnotatedBlock() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("AnnotatedBlock",input,expected); - } - - /** - * Block - * { TopStatements } - */ - - public final Node parseBlock() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBlock" ); - } - - Node $$; - - match( leftbrace_token ); - $$ = parseTopStatements(); - match( rightbrace_token ); - - if( debug ) { - Debugger.trace( "finish parseBlock" ); - } - - return $$; - } - - static final void testBlock() throws Exception { - - String[] input = { - "{}", - "{}" - }; - - String[] expected = { - "", - "" - }; - - testParser("Block",input,expected); - } - - /** - * TopStatements - * «empty» - * TopStatementsPrefix TopStatement[abbrev] - * - * TypeStatementsPrefix - * TopStatement[full] TopStatementPrefixPrime - * - * TopStatementPrefixPrime - * TopStatement[full] TopStatementPrefixPrime - * empty - */ - - public final Node parseTopStatements() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTopStatements" ); - } - - Node $$; - - if( lookahead(rightbrace_token) || lookahead(eos_token) ) { - - $$ = null; - - } else { - - StatementListNode $1; - $1 = parseTopStatementsPrefix(); - if( !(lookahead(rightbrace_token) || lookahead(eos_token)) ) { - Node $2; - $2 = parseTopStatement(abbrev_mode); - $$ = NodeFactory.StatementList($1,$2); - } else { - $$ = NodeFactory.StatementList($1,null); - } - - - } - - if( debug ) { - Debugger.trace( "finish parseTopStatements" ); - } - - return $$; - } - - public final StatementListNode parseTopStatementsPrefix() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTopStatementsPrefix" ); - } - - StatementListNode $$; - Node $1; - - $1 = parseTopStatement(full_mode); - $$ = parseTopStatementsPrefixPrime(NodeFactory.StatementList(null,$1)); - - if( debug ) { - Debugger.trace( "finish parseTopStatementsPrefix" ); - } - - return $$; - } - - public final StatementListNode parseTopStatementsPrefixPrime(StatementListNode $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTopStatementsPrefixPrime" ); - } - - StatementListNode $$; - - if( lookahead(rightbrace_token) || lookahead(eos_token) ) { - - $$ = NodeFactory.StatementList($1,null); - - } else { - - Node $2; - $2 = parseTopStatement(full_mode); - $$ = parseTopStatementsPrefixPrime(NodeFactory.StatementList($1,$2)); - - } - - if( debug ) { - Debugger.trace( "finish parseTopStatementsPrefixPrime" ); - } - - return $$; - } - - static final void testTopStatements() throws Exception { - - String[] input = { - "class C;", - "var x; var y;", - "x = 1;", - "v1 var x;", - - }; - - String[] expected = { - "classdeclaration( qualifiedidentifier( null, C ) )", - "list( variabledefinition( var_token, variablebinding( typedvariable( qualifiedidentifier( null, x ), null ), null ) ), variabledefinition( var_token, variablebinding( typedvariable( qualifiedidentifier( null, y ), null ), null ) ) )", - "expressionstatement( assign( assign_token, qualifiedidentifier( null, x ), coersionexpression( literalnumber( 1 ), qualifiedidentifier( null, x ) )) )", - "" - }; - - testParser("TopStatements",input,expected); - } - - /** - * LabeledStatement - * Identifier : Statement - */ - - public final Node parseLabeledStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLabeledStatement" ); - } - - Node $$,$1; - - $1 = parseIdentifier(); - match( colon_token ); - $$ = NodeFactory.LabeledStatement($1,parseStatement(mode)); - - if( debug ) { - Debugger.trace( "finish parseLabeledStatement" ); - } - - return $$; - } - - /** - * IfStatement - * if ParenthesizedExpression Statement - * if ParenthesizedExpression Statement else Statement - */ - - public final Node parseIfStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseIfStatement" ); - } - - Node $$,$1,$2,$3=null; - - match(if_token); - $1 = parseParenthesizedListExpression(); - $2 = parseStatement(abbrevIfElse_mode); - if( lookahead(else_token) ) { - match(else_token); - $3 = parseStatement(mode); - } - - $$ = NodeFactory.IfStatement($1,$2,$3); - - if( debug ) { - Debugger.trace( "finish parseIfStatement" ); - } - - return $$; - } - - static final void testIfStatement() throws Exception { - - String[] input = { - "if(x) t;", - "if(x) t; else e;", - "if(x) {a;b;c;} else {1;2;3;}", - }; - - String[] expected = { - "", - "", - "", - }; - - testParser("IfStatement",input,expected); - } - - /** - * SwitchStatement - * switch ParenthesizedListExpression { CaseStatements } - */ - - public final Node parseSwitchStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseSwitchStatement" ); - } - - Node $$,$1; - StatementListNode $2; - - match(switch_token); - $1 = parseParenthesizedListExpression(); - match(leftbrace_token); - $2 = parseCaseStatements(); - match(rightbrace_token); - - $$ = NodeFactory.SwitchStatement($1,$2); - - if( debug ) { - Debugger.trace( "finish parseSwitchStatement" ); - } - - return $$; - } - - /** - * CaseStatement - * Statement - * CaseLabel - */ - - public final Node parseCaseStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCaseStatement" ); - } - - Node $$; - - if( lookahead(case_token) || lookahead(default_token) ) { - $$ = parseCaseLabel(); - } else { - $$ = parseStatement(mode); - } - - if( debug ) { - Debugger.trace( "finish parseCaseStatement" ); - } - - return $$; - } - - /** - * CaseLabel - * case ListExpressionallowIn : - * default : - */ - - public final Node parseCaseLabel() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCaseLabel" ); - } - - Node $$,$1; - - if( lookahead(case_token) ) { - match(case_token); - $$ = NodeFactory.CaseLabel(parseListExpression(allowIn_mode)); - } else if( lookahead(default_token) ) { - match(default_token); - $$ = NodeFactory.CaseLabel(null); // null argument means default case. - } else { - throw new Exception("expecting CaseLabel."); - } - match(colon_token); - - if( debug ) { - Debugger.trace( "finish parseCaseLabel" ); - } - - return $$; - } - - /** - * CaseStatements - * «empty» - * CaseLabel - * CaseLabel CaseStatementsPrefix CaseStatementabbrev - */ - - public final StatementListNode parseCaseStatements() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCaseStatements" ); - } - - StatementListNode $$; - - if( !lookahead(rightbrace_token) ) { - Node $1; - $1 = parseCaseLabel(); - if( !lookahead(rightbrace_token) ) { - $$ = parseCaseStatementsPrefix(NodeFactory.StatementList(null,$1)); - } else { - $$ = NodeFactory.StatementList(null,$1); - } - - } else { - $$ = null; - } - - if( debug ) { - Debugger.trace( "finish parseCaseStatements" ); - } - - return $$; - } - - /** - * CaseStatementsPrefix - * «empty» - * CaseStatement[full] CaseStatementsPrefix - */ - - public final StatementListNode parseCaseStatementsPrefix(StatementListNode $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCaseStatementsPrefix" ); - } - - StatementListNode $$=null; - - if( !lookahead(rightbrace_token) ) { - $1 = NodeFactory.StatementList($1,parseCaseStatement(full_mode)); - while( !lookahead(rightbrace_token) ) { - $1 = NodeFactory.StatementList($1,parseCaseStatement(full_mode)); - } - $$ = $1; - } - - - if( debug ) { - Debugger.trace( "finish parseCaseStatementsPrefix" ); - } - - return $$; - } - - /** - * DoStatement - * do Statement[abbrev] while ParenthesizedListExpression - */ - - public final Node parseDoStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseWhileStatement" ); - } - - Node $$,$1; - - match(do_token); - $1 = parseStatement(abbrevDoWhile_mode); - match(while_token); - $$ = NodeFactory.DoStatement($1,parseParenthesizedListExpression()); - - if( debug ) { - Debugger.trace( "finish parseDoStatement" ); - } - - return $$; - } - - /** - * WhileStatement - * while ParenthesizedListExpression Statement - */ - - public final Node parseWhileStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseWhileStatement" ); - } - - Node $$; - - match(while_token); - $$ = NodeFactory.WhileStatement(parseParenthesizedListExpression(),parseStatement(mode)); - - if( debug ) { - Debugger.trace( "finish parseWhileStatement" ); - } - - return $$; - } - - /** - * ForStatement - * for ( ; OptionalExpression ; OptionalExpression ) Statement - * for ( Attributes VariableDefinitionKind VariableBinding[noIn] in ListExpression[allowIn] ) Statement - * for ( Attributes VariableDefinitionKind VariableBindingList[noIn] ; OptionalExpression ; OptionalExpression ) Statement - * for ( AssignmentExpression[noIn] ListExpressionPrime[noIn] ; OptionalExpression ; OptionalExpression ) Statement - * for ( PostfixExpression in ListExpression[allowIn] ) Statement - */ - - public final Node parseForStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseForStatement" ); - } - - Node $$; - - match(for_token); - match(leftparen_token); - - if( lookahead(semicolon_token) ) { - match(semicolon_token); - Node $1,$2,$3; - $1 = null; - if( lookahead(semicolon_token) ) { - $2 = null; - } else { - $2 = parseListExpression(allowIn_mode); - } - match(semicolon_token); - if( lookahead(rightparen_token) ) { - $3 = null; - } else { - $3 = parseListExpression(mode); - } - match(rightparen_token); - $$ = NodeFactory.ForStatement($1,$2,$3,parseStatement(mode)); - } else if( lookahead(abstract_token) || lookahead(final_token) || - lookahead(private_token) || lookahead(public_token) || - lookahead(static_token) || - lookahead(const_token) || lookahead(var_token) ) { - Node $1; - $1 = parseAttributes(); - - // [Copied below] - - if( lookahead(const_token) || lookahead(var_token) ) { - int $2; - Node $3; - $2 = lookahead(const_token) ? match(const_token) : - lookahead(var_token) ? match(var_token) : var_token; - $3 = parseVariableBinding(noIn_mode); - if( lookahead(in_token) ) { - Node $4; - match(in_token); - $3 = NodeFactory.VariableDefinition($2,$3); - $3 = NodeFactory.AnnotatedDefinition($1,$3); - $4 = parseListExpression(allowIn_mode); - match(rightparen_token); - $$ = NodeFactory.ForInStatement($3,$4,parseStatement(mode)); - } else { - Node $4,$5; - $3 = parseVariableBindingListPrime(noIn_mode,$3); - $3 = NodeFactory.VariableDefinition($2,$3); - $3 = NodeFactory.AnnotatedDefinition($1,$3); - match(semicolon_token); - if( lookahead(semicolon_token) ) { - match(semicolon_token); - $4 = null; - } else { - $4 = parseListExpression(allowIn_mode); - } - match(semicolon_token); - if( lookahead(rightparen_token) ) { - $5 = null; - } else { - $5 = parseListExpression(allowIn_mode); - } - match(rightparen_token); - $$ = NodeFactory.ForStatement($3,$4,$5,parseStatement(mode)); - } - } else { - throw new Exception("expecting const or var token."); - } - } else { - Node $1; - $1 = parseAssignmentExpression(noIn_mode); // noIn - - // for ( AssignmentExpression[noIn] ListExpressionPrime[noIn] ; OptionalExpression ; OptionalExpression ) Statement - if( lookahead(semicolon_token) || - lookahead(comma_token) ) { - - Node $2,$3; - - // Either way we should continue parsing as a ListExpression. - $1 = parseListExpressionPrime(noIn_mode,$1); - - match(semicolon_token); - if( lookahead(semicolon_token) ) { - $2 = null; - } else { - $2 = parseListExpression(allowIn_mode); - } - match(semicolon_token); - if( lookahead(rightparen_token) ) { - $3 = null; - } else { - $3 = parseListExpression(allowIn_mode); - } - match(rightparen_token); - $$ = NodeFactory.ForStatement($1,$2,$3,parseStatement(mode)); - - // for ( PostfixExpression in ListExpression[allowIn] ) Statement - } else if( lookahead(in_token) ) { - match(in_token); - Node $2; - $2 = parseListExpression(allowIn_mode); - match(rightparen_token); - $$ = NodeFactory.ForInStatement($1,$2,parseStatement(mode)); - } else { - - // Otherwise assume that it is an AttributeExpression and continue - // parsing as above (after seening an attribute keyword. - - // for ( Attributes VariableDefinitionKind VariableBinding[noIn] in ListExpression[allowIn] ) Statement - // for ( Attributes VariableDefinitionKind VariableBindingList[noIn] ; OptionalExpression ; OptionalExpression ) Statement - - if( !true /* verify that $1 is an AttributeExpression */ ) { - throw new Exception("expecting an attribute expression."); - } - - $1 = NodeFactory.AttributeList($1,parseAttributes()); - - // [Copied from above.] - - if( lookahead(const_token) || lookahead(var_token) ) { - int $2; - Node $3; - $2 = lookahead(const_token) ? match(const_token) : - lookahead(var_token) ? match(var_token) : var_token; - $3 = parseVariableBinding(noIn_mode); - if( lookahead(in_token) ) { - Node $4; - match(in_token); - $3 = NodeFactory.VariableDefinition($2,$3); - $3 = NodeFactory.AnnotatedDefinition($1,$3); - $4 = parseListExpression(allowIn_mode); - match(rightparen_token); - $$ = NodeFactory.ForInStatement($3,$4,parseStatement(mode)); - } else { - Node $4,$5; - $3 = parseVariableBindingListPrime(noIn_mode,$3); - $3 = NodeFactory.VariableDefinition($2,$3); - $3 = NodeFactory.AnnotatedDefinition($1,$3); - match(semicolon_token); - if( lookahead(semicolon_token) ) { - $4 = null; - } else { - $4 = parseListExpression(allowIn_mode); - } - match(semicolon_token); - if( lookahead(rightparen_token) ) { - $5 = null; - } else { - $5 = parseListExpression(allowIn_mode); - } - match(rightparen_token); - $$ = NodeFactory.ForStatement($3,$4,$5,parseStatement(mode)); - } - } else { - throw new Exception("expecting const or var token."); - } - } - } - - return $$; - } - - /** - * WithStatement - * with ParenthesizedListExpression Statement - */ - - public final Node parseWithStatement(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseWithStatement" ); - } - - Node $$; - - match(with_token); - $$ = NodeFactory.WithStatement(parseParenthesizedListExpression(),parseStatement(mode)); - - if( debug ) { - Debugger.trace( "finish parseWithStatement" ); - } - - return $$; - } - - /** - * ContinueStatement - * continue - * continue [no line break] Identifier - */ - - public final Node parseContinueStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseContinueStatement" ); - } - - Node $$,$1=null; - - match(continue_token); - if( !lookaheadSemicolon(full_mode) ) { - $1 = parseIdentifier(); - } - - $$ = NodeFactory.ContinueStatement($1); - - if( debug ) { - Debugger.trace( "finish parseContinueStatement" ); - } - - return $$; - } - - /** - * BreakStatement - * break - * break [no line break] Identifier - */ - - public final Node parseBreakStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseBreakStatement" ); - } - - Node $$,$1=null; - - match(break_token); - if( !lookaheadSemicolon(full_mode) ) { - $1 = parseIdentifier(); - } - - $$ = NodeFactory.BreakStatement($1); - - if( debug ) { - Debugger.trace( "finish parseBreakStatement" ); - } - - return $$; - } - - /** - * ReturnStatement - * return - * return [no line break] ExpressionallowIn - */ - - public final Node parseReturnStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseReturnStatement" ); - } - - Node $$,$1=null; - - match(return_token); - - // ACTION: check for VirtualSemicolon - - if( !lookaheadSemicolon(full_mode) ) { - $1 = parseListExpression(allowIn_mode); - } - - $$ = NodeFactory.ReturnStatement($1); - - if( debug ) { - Debugger.trace( "finish parseReturnStatement" ); - } - - return $$; - } - - static final void testReturnStatement() throws Exception { - - String[] input = { - "return;", - "return true;" - }; - - String[] expected = { - "", - "" - }; - - testParser("ReturnStatement",input,expected); - } - - /** - * ThrowStatement - * throw [no line break] ListExpression[allowIn] - */ - - public final Node parseThrowStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseThrowStatement" ); - } - - Node $$,$1; - - match(throw_token); - lookahead(empty_token); // ACTION: fix newline() so that we don't - // have to force a lookahead to the next - // token before it works properly. - if( newline() ) { - throw new Exception("No newline allowed in this position."); - } - $$ = NodeFactory.ThrowStatement(parseListExpression(allowIn_mode)); - - if( debug ) { - Debugger.trace( "finish parseThrowStatement" ); - } - - return $$; - } - - /** - * TryStatement - * try AnnotatedBlock CatchClauses - * try AnnotatedBlock FinallyClause - * try AnnotatedBlock CatchClauses FinallyClause - */ - - public final Node parseTryStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTryStatement" ); - } - - Node $$,$1; - - match(try_token); - $1 = parseAnnotatedBlock(); - if( lookahead(catch_token) ) { - StatementListNode $2 = parseCatchClauses(); - if( lookahead(finally_token) ) { - $$ = NodeFactory.TryStatement($1,$2,parseFinallyClause()); - } else { - $$ = NodeFactory.TryStatement($1,$2,null); - } - } else if( lookahead(finally_token) ) { - $$ = NodeFactory.TryStatement($1,null,parseFinallyClause()); - } else { - throw new Exception("expecting catch or finally clause."); - } - - if( debug ) { - Debugger.trace( "finish parseTryStatement" ); - } - - return $$; - } - - /** - * CatchClauses - * CatchClause - * CatchClauses CatchClause - */ - - public final StatementListNode parseCatchClauses() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCatchClauses" ); - } - - StatementListNode $$; - - $$ = NodeFactory.StatementList(null,parseCatchClause()); - while( lookahead(catch_token) ) { - $$ = NodeFactory.StatementList($$,parseCatchClause()); - } - - if( debug ) { - Debugger.trace( "finish parseCatchClauses" ); - } - - return $$; - } - - /** - * CatchClause - * catch ( Parameter ) AnnotatedBlock - */ - - public final Node parseCatchClause() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseCatchClause" ); - } - - Node $$,$1; - - match(catch_token); - match(leftparen_token); - $1 = parseParameter(); - match(rightparen_token); - - $$ = NodeFactory.CatchClause($1,parseAnnotatedBlock()); - - if( debug ) { - Debugger.trace( "finish parseCatchClause" ); - } - - return $$; - } - - /** - * FinallyClause - * finally AnnotatedBlock - */ - - public final Node parseFinallyClause() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFinallyClause" ); - } - - Node $$; - - match(finally_token); - - // No line break. - - $$ = NodeFactory.FinallyClause(parseAnnotatedBlock()); - - if( debug ) { - Debugger.trace( "finish parseFinallyClause" ); - } - - return $$; - } - - /** - * IncludeStatement - * include [no line break] String - */ - - public final Node parseIncludeStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseIncludeStatement" ); - } - - Node $$,$1; - - match(include_token); - - // No line break. - - $1 = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - $$ = NodeFactory.IncludeStatement($1); - - if( debug ) { - Debugger.trace( "finish parseIncludeStatement" ); - } - - return $$; - } - - static final void testIncludeStatement() throws Exception { - - String[] input = { - "", - }; - - String[] expected = { - "", - }; - - testParser("IncludeStatement",input,expected); - } - - /** - * UseStatement - * use [no line break] namespace NonAssignmentExpressionList - */ - - public final Node parseUseStatement() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseUseStatement" ); - } - - Node $$; - - match(use_token); - match(namespace_token); - $$ = NodeFactory.UseStatement(parseNonAssignmentExpression(allowIn_mode)); - - if( debug ) { - Debugger.trace( "finish parseUseStatement" ); - } - - return $$; - } - - static final void testUseStatement() throws Exception { - - String[] input = { - "use namespace P1", - "use namespace P1.P2.P3", - "use namespace P1.P2.P3,P1,P4", - }; - - String[] expected = { - "usestatement( qualifiedidentifier( null, P1 ) )", - "usestatement( memberexpression( memberexpression( qualifiedidentifier( null, P1 ), qualifiedidentifier( null, P2 ) ), qualifiedidentifier( null, P3 ) ) )", - "usestatement( list( list( memberexpression( memberexpression( qualifiedidentifier( null, P1 ), qualifiedidentifier( null, P2 ) ), qualifiedidentifier( null, P3 ) ), qualifiedidentifier( null, P1 ) ), qualifiedidentifier( null, P4 ) ) )", - }; - - testParser("UseStatement",input,expected); - } - - /** - * NonAssignmentExpressionList - * NonAssignmentExpression[allowIn] NonAssignmentExpressionListPrime - * - * NonAssignmentExpressionListPrime - * , NonAssignmentExpression[allowIn] NonAssignmentExpressionListPrime - * empty - */ - - final public Node parseNonAssignmentExpressionList() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNonAssignmentExpressionList" ); - } - - Node $$, $1; - - $1 = parseNonAssignmentExpression(allowIn_mode); - $$ = parseNonAssignmentExpressionListPrime($1); - - if( debug ) { - Debugger.trace( "finish parseNonAssignmentExpressionList" ); - } - - return $$; - } - - private Node parseNonAssignmentExpressionListPrime( Node $1 ) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNonAssignmentExpressionListPrime" ); - } - - Node $$; - - if( lookahead( comma_token ) ) { - - match( comma_token ); - - Node $2; - - $2 = parseNonAssignmentExpression(allowIn_mode); - $$ = parseNonAssignmentExpressionListPrime(NodeFactory.List($1,$2)); - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseNonAssignmentExpressionListPrime'" ); - } - - return $$; - } - - static final void testNonAssignmentExpressionList() throws Exception { - - String[] input = { - "x,1,2", - "z" - }; - - String[] expected = { - "", - "" - }; - - testParser("NonAssignmentExpressionList",input,expected); - } - - /** - * AnnotatedDefinition - * Attributes Definition - */ - - public final AnnotatedDefinitionNode parseAnnotatedDefinition(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAnnotatedDefinition" ); - } - - AnnotatedDefinitionNode $$; - Node $1; - - $1 = parseAttributes(); - $$ = NodeFactory.AnnotatedDefinition($1,parseDefinition(mode)); - - if( debug ) { - Debugger.trace( "finish parseAnnotatedDefinition" ); - } - - return $$; - } - - static final void testAnnotatedDefinition() throws Exception { - - String[] input = { - "private var x", - "v2 const y", - "constructor function c() {}", - }; - - String[] expected = { - "", - "", - "", - }; - - testParser("AnnotatedDefinition",input,expected); - } - - /** - * Attributes - * «empty» - * Attribute [no line break] Attributes - */ - - public final Node parseAttributes() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAttributes" ); - } - - Node $$; - - if( lookahead(leftbrace_token) || - lookahead(export_token) || - lookahead(import_token) || - lookahead(const_token) || - lookahead(var_token) || - lookahead(function_token) || - lookahead(class_token) || - lookahead(interface_token) || - lookahead(namespace_token) ) { - - $$ = null; - - } else { - - Node $1,$2; - - $1 = parseAttribute(); - - if( newline() ) { - scanner.error(scanner.syntax_error,"No line break in attributes list."); - throw new Exception(); - } - - $2 = parseAttributes(); - $$ = NodeFactory.AttributeList($1,$2); - - } - - if( debug ) { - Debugger.trace( "finish parseAttributes" ); - } - - return $$; - } - - static final void testAttributes() throws Exception { - - String[] input = { - "private export", - "private public export" - }; - - String[] expected = { - "", - "" - }; - - testParser("Attributes",input,expected); - } - - /** - * Attribute - * AttributeExpression - * abstract - * final - * private - * public - * static - */ - - public final Node parseAttribute() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAttribute" ); - } - - Node $$; - - if( lookahead(abstract_token) ) { - match(abstract_token); - $$ = NodeFactory.Identifier("abstract"); - } else if( lookahead(final_token) ) { - match(final_token); - $$ = NodeFactory.Identifier("final"); - } else if ( lookahead(private_token) ) { - match(private_token); - $$ = NodeFactory.Identifier("private"); - } else if ( lookahead(public_token) ) { - match(public_token); - $$ = NodeFactory.Identifier("public"); - } else if ( lookahead(static_token) ) { - match(static_token); - $$ = NodeFactory.Identifier("static"); - } else if ( lookahead(true_token) ) { - match(true_token); - $$ = NodeFactory.LiteralBoolean(true); - } else if ( lookahead(false_token) ) { - match(false_token); - $$ = NodeFactory.LiteralBoolean(false); - } else { - $$ = parseAttributeExpression(); - } - - if( debug ) { - Debugger.trace( "finish parseAttribute" ); - } - - return $$; - } - - static final void testAttribute() throws Exception { - - String[] input = { - "final", - "package", - "private", - "public", - "static", - "volatile", - "pascal" - }; - - String[] expected = { - "", - "", - "", - "", - "", - "", - "" - }; - - testParser("Attribute",input,expected); - } - - /** - * Definition - * ImportDefinition Semicolon - * ExportDefinition Semicolon - * VariableDefinition Semicolon - * FunctionDefinition - * ClassDefinition - * NamespaceDefinition Semicolon - * InterfaceDefinition - */ - - public final Node parseDefinition(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseDefinition" ); - } - - Node $$ = null; - - if( lookahead(import_token) ) { - $$ = parseImportDefinition(); - matchSemicolon(mode); - } else if( lookahead(export_token) ) { - $$ = parseExportDefinition(); - matchSemicolon(mode); - } else if( lookahead(const_token) || lookahead(var_token) ) { - $$ = parseVariableDefinition(); - matchSemicolon(mode); - } else if( lookahead(function_token) ) { - $$ = parseFunctionDefinition(mode); - } else if( lookahead(class_token) ) { - $$ = parseClassDefinition(mode); - } else if( lookahead(interface_token) ) { - $$ = parseInterfaceDefinition(mode); - } else if( lookahead(namespace_token) ) { - $$ = parseNamespaceDefinition(); - matchSemicolon(mode); - } - - if( debug ) { - Debugger.trace( "finish parseDefinition" ); - } - - return $$; - } - - static final void testDefinition() throws Exception { - - String[] input = { - "var x;", - "class C;" - }; - - String[] expected = { - "", - "" - }; - - testParser("TopStatement",input,expected); - } - - /** - * ImportDefinition - * import ImportBinding - * import ImportBinding : NonassignmentExpressionList - */ - - final public Node parseImportDefinition() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseImportDefinition" ); - } - - Node $$,$1,$2=null; - - match(import_token); - $1 = parseImportBinding(); - if( lookahead(colon_token) ) { - $2 = parseNonAssignmentExpressionList(); - } - - $$ = NodeFactory.ImportDefinition($1,$2); - - if( debug ) { - Debugger.trace( "finish parseImportDefinition" ); - } - - return $$; - } - - static final void testImportDefinition() throws Exception { - - String[] input = { - "import x", - "import f=g", - "import f=g,h" - }; - - String[] expected = { - "", - "", - "", - }; - - testParser("ImportDefinition",input,expected); - } - - /** - * ImportBinding - * Identifier PackageNamePrime - * Identifier = ImportItem - * String - */ - - final public Node parseImportBinding() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseImportBinding" ); - } - - Node $$,$1,$2; - - if( lookahead(stringliteral_token) ) { - $$ = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - } else { - $1 = parseIdentifier(); - if( lookahead(dot_token) ) { - $$ = parsePackageNamePrime($1); - } else if( lookahead(assign_token) ) { - match(assign_token); - $$ = NodeFactory.ImportBinding($1,parseImportItem()); - } else { - throw new Exception("expecting dot or assignment after identifier."); - } - } - - if( debug ) { - Debugger.trace( "finish parseImportBinding" ); - } - - return $$; - } - - /** - * ImportItem - * String - * PackageName - */ - - final public Node parseImportItem() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseImportItem" ); - } - - Node $$; - - if( lookahead(stringliteral_token) ) { - $$ = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - } else { - $$ = parsePackageName(); - } - - if( debug ) { - Debugger.trace( "finish parseImportItem" ); - } - - return $$; - } - - /** - * ExportDefinition - * export ExportBindingList - */ - - final public Node parseExportDefinition() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExportDefinition" ); - } - - Node $$,$1; - - match(export_token); - $1 = parseExportBindingList(); - $$ = NodeFactory.ExportDefinition($1); - - - if( debug ) { - Debugger.trace( "finish parseExportDefinition" ); - } - - return $$; - } - - static final void testExportDefinition() throws Exception { - - String[] input = { - "export x", - "export f=g", - "export f=g,h" - }; - - String[] expected = { - "", - "", - "", - }; - - testParser("ExportDefinition",input,expected); - } - - /** - * ExportBindingList - * ExportBinding ExportBindingListPrime - * - * ExportBindingListPrime - * , ExportBinding ExportBindingListPrime - * empty - */ - - final public Node parseExportBindingList() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExportBindingList" ); - } - - Node $$,$1; - - $1 = parseExportBinding(); - $$ = parseExportBindingListPrime(NodeFactory.List(null,$1)); - - if( debug ) { - Debugger.trace( "finish parseExportBindingList" ); - } - - return $$; - } - - private Node parseExportBindingListPrime( Node $1 ) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExportBindingListPrime" ); - } - - Node $$; - - if( lookahead( comma_token ) ) { - - match( comma_token ); - - Node $2; - - $2 = parseExportBinding(); - $$ = parseExportBindingListPrime(NodeFactory.List($1,$2)); - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseExportBindingListPrime'" ); - } - - return $$; - } - - static final void testExportBindingList() throws Exception { - - String[] input = { - "x,y,z", - "z" - }; - - String[] expected = { - "", - "" - }; - - testParser("ExportBindingList",input,expected); - } - - /** - * ExportBinding - * FunctionName - * FunctionName = FunctionName - */ - - final public Node parseExportBinding() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExportBinding" ); - } - - Node $$,$1,$2; - - $1 = parseFunctionName(); - if( lookahead(assign_token) ) { - match(assign_token); - $2 = parseFunctionName(); - } else { - $2 = null; - } - - $$ = NodeFactory.ExportBinding($1,$2); - - - if( debug ) { - Debugger.trace( "finish parseExportBinding" ); - } - - return $$; - } - - static final void testExportBinding() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("ExportBinding",input,expected); - } - - /** - * VariableDefinition - * VariableDefinitionKind VariableBindingList[allowIn] - */ - - final public Node parseVariableDefinition() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseVariableDefinition" ); - } - - int $1; - Node $$,$2; - - // The following logic goes something like this: If it is a - // const_token, then $1 is a const_token. If it is a var_token - // then $1 is var_token. If it is anything else then $1 is - // the default (var_token). - - $1 = lookahead(const_token) ? match(const_token) : - lookahead(var_token) ? match(var_token) : var_token; - - $2 = parseVariableBindingList(allowIn_mode); - $$ = NodeFactory.VariableDefinition($1,$2); - - if( debug ) { - Debugger.trace( "finish parseVariableDefinition" ); - } - - return $$; - } - - static final void testVariableDefinition() throws Exception { - - String[] input = { - "var x=10", - "const pi:Number=3.1415", - "var n:Number,o:Object,b:Boolean=false" - }; - - String[] expected = { - "variabledefinition( var_token, variablebinding( typedvariable( qualifiedidentifier( null, x ), null ), literalnumber( 10 ) ) )", - "variabledefinition( const_token, variablebinding( typedvariable( qualifiedidentifier( null, pi ), qualifiedidentifier( null, Number ) ), literalnumber( 3.1415 ) ) )", - "variabledefinition( var_token, list( list( variablebinding( typedvariable( qualifiedidentifier( null, n ), qualifiedidentifier( null, Number ) ), null ), variablebinding( typedvariable( qualifiedidentifier( null, o ), qualifiedidentifier( null, Object ) ), null ) ), variablebinding( typedvariable( qualifiedidentifier( null, b ), qualifiedidentifier( null, Boolean ) ), literalboolean( false ) ) ) )" - }; - - testParser("VariableDefinition",input,expected); - } - - /** - * VariableBindingList - * VariableBinding VariableBindingListPrime - * - * VariableBindingListPrime - * , VariableBinding VariableBindingListPrime - * empty - */ - - final public Node parseVariableBindingList(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseVariableBindingList" ); - } - - Node $$,$1; - - $1 = parseVariableBinding(mode); - $$ = parseVariableBindingListPrime(mode,NodeFactory.List(null,$1)); - - if( debug ) { - Debugger.trace( "finish parseVariableBindingList" ); - } - - return $$; - } - - private Node parseVariableBindingListPrime(int mode, Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseVariableBindingListPrime" ); - } - - Node $$; - - if( lookahead( comma_token ) ) { - - match( comma_token ); - - Node $2; - - $2 = parseVariableBinding(mode); - $$ = parseVariableBindingListPrime(mode,NodeFactory.List($1,$2)); - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseVariableBindingListPrime'" ); - } - - return $$; - } - - static final void testVariableBindingList() throws Exception { - - String[] input = { - "x,y,z", - "z" - }; - - String[] expected = { - "list( list( variablebinding( typedvariable( identifier( x ), null ), null ), variablebinding( typedvariable( identifier( y ), null ), null ) ), variablebinding( typedvariable( identifier( z ), null ), null ) )", - "variablebinding( typedvariable( identifier( z ), null ), null )" - }; - - testParser("VariableBindingList",input,expected); - } - - /** - * VariableBinding - * TypedVariable - * TypedVariable = AssignmentExpression - * TypedVariable = MultipleAttributes - */ - - final public Node parseVariableBinding(int mode, boolean[] hasInitializer) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseVariableBinding" ); - } - - Node $$,$1,$2; - - $1 = parseTypedVariable(mode); - if( lookahead(assign_token) ) { - match(assign_token); - if( lookahead(abstract_token) || lookahead(final_token) || - lookahead(private_token) || lookahead(public_token) || - lookahead(static_token) ) { - $2 = parseMultipleAttributes(); - } else { - $2 = parseAssignmentExpression(mode); - if( lookahead(semicolon_token) ) { - // do nothing. - } else { - $2 = parseMultipleAttributesPrime($2); - } - } - } else { - $2 = null; - } - - $$ = NodeFactory.VariableBinding($1,$2); - - if( debug ) { - Debugger.trace( "finish parseVariableBinding" ); - } - - return $$; - } - - final public Node parseVariableBinding(int mode) throws Exception { - boolean hasValue[] = {false}; - return parseVariableBinding(mode,hasValue); - } - - static final void testVariableBinding() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("VariableBinding",input,expected); - } - - /** - * MultipleAttributes - * Attribute [no line break] Attribute - * MulitpleAttributes [no line break] Attribute - */ - - final public Node parseMultipleAttributes() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseMultipleAttributes" ); - } - - Node $$,$1,$2; - - $1 = parseAttribute(); - $$ = parseMultipleAttributesPrime($1); - - if( debug ) { - Debugger.trace( "finish parseMultipleAttributes" ); - } - - return $$; - } - - final public Node parseMultipleAttributesPrime(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseMultipleAttributes" ); - } - - Node $$; - - if( newline() ) { - scanner.error(scanner.syntax_error,"No line break in multiple attributes definition."); - throw new Exception(); - } - - $1 = NodeFactory.List($1,parseAttribute()); - - while( !lookahead(semicolon_token) ) { - - if( newline() ) { - throw new Exception("No line break in multiple attributes definition."); - } - - $1 = NodeFactory.List($1,parseAttribute()); - - } - - $$ = $1; - - if( debug ) { - Debugger.trace( "finish parseMultipleAttributes" ); - } - - return $$; - } - - /** - * TypedVariable - * Identifier - * Identifier : TypeExpression - */ - - final public Node parseTypedVariable(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTypedVariable" ); - } - - Node $$,$1,$2; - - $1 = parseIdentifier(); - if( lookahead(colon_token) ) { - match(colon_token); - $2 = parseTypeExpression(mode); - } else { - $2 = null; - } - - $$ = NodeFactory.TypedVariable($1,$2); - - if( debug ) { - Debugger.trace( "finish parseTypedVariable" ); - } - - return $$; - } - - static final void testTypedVariable() throws Exception { - - String[] input = { - "a::b::c::x=10", - "y" - }; - - String[] expected = { - "typedvariable( qualifiedidentifier( list( list( list( null, identifier( a ) ), identifier( b ) ), identifier( c ) ), x ), null )", - "typedvariable( qualifiedidentifier( null, y ), null )" - }; - - testParser("TypedVariable",input,expected); - } - - /** - * FunctionDefinition - * FunctionDeclaration Block - * FunctionDeclaration Semicolon - */ - - final public Node parseFunctionDefinition(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFunctionDefinition" ); - } - - Node $$,$1; - - $1 = parseFunctionDeclaration(); - if( lookahead(leftbrace_token) ) { - Node $2; - $2 = parseBlock(); - $$ = NodeFactory.FunctionDefinition($1,$2); - } else { - matchSemicolon(mode); - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseFunctionDefinition" ); - } - - return $$; - } - - static final void testFunctionDefinition() throws Exception { - - String[] input = { - "function f();", - "function f(x,y) {var z;}", - }; - - String[] expected = { - "", - "", - "", - }; - - testParser("FunctionDefinition",input,expected); - } - - /** - * FunctionDeclaration - * function FunctionName FunctionSignature - */ - - final public Node parseFunctionDeclaration() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFunctionDeclaration" ); - } - - Node $$,$1,$2; - - match(function_token); - $1 = parseFunctionName(); - $2 = parseFunctionSignature(); - $$ = NodeFactory.FunctionDeclaration($1,$2); - - if( debug ) { - Debugger.trace( "finish parseFunctionDeclaration" ); - } - - return $$; - } - - static final void testFunctionDeclaration() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("FunctionDeclaration",input,expected); - } - - /** - * FunctionName - * Identifier - * get [no line break] Identifier - * set [no line break] Identifier - */ - - final public Node parseFunctionName() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFunctionName" ); - } - - Node $$; - - if( lookahead( get_token ) ) { - match( get_token ); - $$ = NodeFactory.FunctionName(get_token,parseIdentifier()); - } else if( lookahead( set_token ) ) { - match( set_token ); - $$ = NodeFactory.FunctionName(set_token,parseIdentifier()); - } else { - $$ = NodeFactory.FunctionName(empty_token,parseIdentifier()); - } - - if( debug ) { - Debugger.trace( "finish parseFunctionName" ); - } - return $$; - } - - static final void testFunctionName() throws Exception { - - Debugger.trace( "begin testFunctionName" ); - - String[] input = { - "x", - "get x", - "set x" - }; - - String[] expected = { - "", - "", - "" - }; - - testParser("FunctionName",input,expected); - } - - /** - * FunctionSignature - * ParameterSignature ResultSignature - * - * ParameterSignature - * ( Parameters ) - */ - - public final Node parseFunctionSignature() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseFunctionSignature" ); - } - - Node $$,$1,$2; - - // inlined: parseParameterSignature - - match( leftparen_token ); - $1 = parseParameters(); - match( rightparen_token ); - $2 = parseResultSignature(); - - $$ = new FunctionSignatureNode($1,$2); - - if( debug ) { - Debugger.trace( "finish parseFunctionSignature" ); - } - - return $$; - } - - static final void testFunctionSignature() throws Exception { - - String[] input = { - "(u,v:String='default', | 'a' x:String='default', 'b' y:Number,...z:Object) : Boolean", - "(u,v:String='default', 'a' x:String='default', | 'b' y:Number,...z:Object) : Boolean", - }; - - String[] expected = { - "", - "", - }; - - testParser("FunctionSignature",input,expected); - } - - /** - * Parameters - * «empty» - * AllParameters - */ - - final public Node parseParameters() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseParameters" ); - } - - Node $$,$1,$2; - - if( lookahead(rightparen_token) ) { - $$ = null; - } else { - $$ = parseAllParameters(); - } - - if( debug ) { - Debugger.trace( "finish parseParameters" ); - } - - return $$; - } - - static final void testParameters() throws Exception { - - String[] input = { - "", - "", - }; - - String[] expected = { - "", - "", - }; - - testParser("Parameters",input,expected); - } - - /** - * AllParameters - * Parameter - * Parameter , AllParameters - * Parameter OptionalParameterPrime - * Parameter OptionalParameterPrime , OptionalNamedRestParameters - * | NamedRestParameters - * RestParameter - * RestParameter , | NamedParameters - */ - - final public Node parseAllParameters() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseAllParameters" ); - } - - Node $$; - - if( lookahead(tripledot_token) ) { - Node $1; - $1 = NodeFactory.List(null,parseRestParameter()); - if( lookahead(comma_token) ) { - match(comma_token); - match(bitwiseor_token); - $$ = NodeFactory.List($1,parseNamedParameters()); - } else { - $$ = $1; - } - } else if( lookahead(bitwiseor_token) ) { - match(bitwiseor_token); - $$ = parseNamedRestParameters(); - } else { - Node $1; - $1 = NodeFactory.List(null,parseParameter()); - if( lookahead(comma_token) ) { - match(comma_token); - $$ = NodeFactory.List($1,parseAllParameters()); - } else if( lookahead(assign_token) ) { - $1 = parseOptionalParameterPrime($1); - if( lookahead(comma_token) ) { - match(comma_token); - $$ = NodeFactory.List($1,parseOptionalNamedRestParameters()); - } else { - $$ = $1; - } - } else { - $$ = $1; - } - } - - if( debug ) { - Debugger.trace( "finish parseAllParameters" ); - } - - return $$; - } - - /** - * OptionalNamedRestParameters - * OptionalParameter - * OptionalParameter , OptionalNamedRestParameters - * | NamedRestParameters - * RestParameter - * RestParameter , | NamedParameters - */ - - final public Node parseOptionalNamedRestParameters() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseOptionalNamedRestParameters" ); - } - - Node $$; - - if( lookahead(tripledot_token) ) { - Node $1; - $1 = parseRestParameter(); - if( lookahead(comma_token) ) { - match(comma_token); - match(bitwiseor_token); - $$ = NodeFactory.List($1,parseNamedParameters()); - } else { - $$ = $1; - } - } else if( lookahead(bitwiseor_token) ) { - match(bitwiseor_token); - $$ = parseNamedRestParameters(); - } else { - Node $1; - $1 = parseOptionalParameter(); - if( lookahead(comma_token) ) { - match(comma_token); - $$ = NodeFactory.List($1,parseOptionalNamedRestParameters()); - } else { - $$ = $1; - } - } - - if( debug ) { - Debugger.trace( "finish parseOptionalNamedRestParameters" ); - } - - return $$; - } - - /** - * NamedRestParameters - * NamedParameter - * NamedParameter , NamedRestParameters - * RestParameter - */ - - final public Node parseNamedRestParameters() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNamedRestParameters" ); - } - - Node $$; - - if( lookahead(tripledot_token) ) { - $$ = parseRestParameter(); - } else { - Node $1; - $1 = parseNamedParameter(); - if( lookahead(comma_token) ) { - match(comma_token); - $$ = NodeFactory.List($1,parseNamedRestParameters()); - } else { - $$ = $1; - } - } - - if( debug ) { - Debugger.trace( "finish parseNamedRestParameters" ); - } - - return $$; - } - - /** - * NamedParameters - * NamedParameter - * NamedParameter , NamedParameters - */ - - final public Node parseNamedParameters() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNamedParameters" ); - } - - Node $$,$1; - - $1 = parseNamedParameter(); - if( lookahead(comma_token) ) { - match(comma_token); - $$ = NodeFactory.List($1,parseNamedParameters()); - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseNamedParameters" ); - } - - return $$; - } - - static final void testNamedParameters() throws Exception { - - String[] input = { - "'a' x:String='default'", - "'a' x:String='default', 'b' y:Number,'c' z:Object" - }; - - String[] expected = { - "", - "" - }; - - testParser("NamedParameters",input,expected); - } - - /** - * RestParameter - * ... - * ... Parameter - */ - - final public Node parseRestParameter() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseRestParameter" ); - } - - Node $$,$1; - - match(tripledot_token); - if( lookahead(identifier_token) || - lookahead(get_token) || - lookahead(set_token) ) { - $1 = parseParameter(); - } else { - $1 = null; - } - - $$ = NodeFactory.RestParameter($1); - - - if( debug ) { - Debugger.trace( "finish parseRestParameter" ); - } - - return $$; - } - - static final void testRestParameter() throws Exception { - - String[] input = { - "...rest", - "...args" - }; - - String[] expected = { - "restparameter( typedidentifier( identifier( rest ), null ), null )", - "restparameter( typedidentifier( identifier( args ), null ), null )" - }; - - testParser("RestParameter",input,expected); - } - - /** - * Parameter - * Identifier - * Identifier : TypeExpression[allowIn] - */ - - final public Node parseParameter() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseParameter" ); - } - - Node $$,$1,$2; - - $1 = parseIdentifier(); - if( lookahead(colon_token) ) { - match(colon_token); - $2 = parseTypeExpression(allowIn_mode); - } else { - $2 = null; - } - - $$ = NodeFactory.Parameter($1,$2); - - if( debug ) { - Debugger.trace( "finish parseParameter" ); - } - - return $$; - } - - static final void testParameter() throws Exception { - - String[] input = { - "x", - "x:Object" - }; - - String[] expected = { - "typedidentifier( identifier( x ), null )", - "typedidentifier( identifier( x ), qualifiedidentifier( null, Object ) )" - }; - - testParser("Parameter",input,expected); - } - - /** - * OptionalParameter - * Parameter = AssignmentExpressionallowIn - */ - - final public Node parseOptionalParameter() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseOptionalParameter" ); - } - - Node $$,$1,$2; - - $1 = parseParameter(); - $$ = parseOptionalParameterPrime($1); - - if( debug ) { - Debugger.trace( "finish parseOptionalParameter" ); - } - - return $$; - } - - final public Node parseOptionalParameterPrime(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseOptionalParameterPrime" ); - } - - Node $$; - - match(assign_token); - $$ = NodeFactory.OptionalParameter($1,parseAssignmentExpression(allowIn_mode)); - - if( debug ) { - Debugger.trace( "finish parseOptionalParameterPrime" ); - } - - return $$; - } - - static final void testOptionalParameter() throws Exception { - - String[] input = { - "x", - "x:Object" - }; - - String[] expected = { - "typedidentifier( identifier( x ), null )", - "typedidentifier( identifier( x ), qualifiedidentifier( null, Object ) )" - }; - - testParser("OptionalParameter",input,expected); - } - - /** - * NamedParameter - * Parameter - * OptionalParameter - * String NamedParameter - */ - - final public Node parseNamedParameter() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNamedParameter" ); - } - - Node $$,$1,$2; - - if( lookahead(stringliteral_token) ) { - $1 = NodeFactory.LiteralString(scanner.getTokenText(match(stringliteral_token))); - $$ = NodeFactory.NamedParameter($1,parseNamedParameter()); - } else { - $1 = parseParameter(); - if( lookahead(assign_token) ) { - $$ = parseOptionalParameterPrime($1); - } else { - $$ = $1; - } - } - - if( debug ) { - Debugger.trace( "finish parseNamedParameter" ); - } - - return $$; - } - - static final void testNamedParameter() throws Exception { - - String[] input = { - "x", - "x:Object" - }; - - String[] expected = { - "typedidentifier( identifier( x ), null )", - "typedidentifier( identifier( x ), qualifiedidentifier( null, Object ) )" - }; - - testParser("NamedParameter",input,expected); - } - - /** - * ResultSignature - * «empty» - * : TypeExpression[allowIn] - */ - - final public Node parseResultSignature() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseResultSignature" ); - } - - Node $$; - - if( lookahead(colon_token) ) { - match(colon_token); - $$ = parseTypeExpression(allowIn_mode); - } else { - $$ = null; - } - - if( debug ) { - Debugger.trace( "finish parseResultSignature" ); - } - - return $$; - } - - static final void testResultSignature() throws Exception { - - String[] input = { - ": String", - ": Object" - }; - - String[] expected = { - "qualifiedidentifier( null, String )", - "qualifiedidentifier( null, Object )" - }; - - testParser("ResultSignature",input,expected); - } - - /** - * ClassDefinition - * class Identifier Inheritance Block - * class Identifier Semicolon - */ - - final public Node parseClassDefinition(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseClassDefinition" ); - } - - Node $$,$1; - - match(class_token); - $1 = parseIdentifier(); - - if( lookaheadSemicolon(mode) ) { - matchSemicolon(mode); - $$ = NodeFactory.ClassDeclaration($1); - } else { - - Node $2,$3; - - $2 = parseInheritance(); - $3 = parseBlock(); - $$ = NodeFactory.ClassDefinition($1,$2,$3); - - } - - - if( debug ) { - Debugger.trace( "finish parseClassDefinition" ); - } - - return $$; - } - - static final void testClassDefinition() throws Exception { - - String[] input = { - "class C;", - "class C {}", - "class C extends B {}", - "class C implements I,J {}", - "class C extends B implements I {}" - }; - - String[] expected = { - "classdeclaration( identifier( C ) )", - "classdefinition( identifier( C ), inheritance( null, null ), null )", - "classdefinition( identifier( C ), inheritance( superclass( qualifiedidentifier( null, B ) ), null ), null )", - "classdefinition( identifier( C ), inheritance( null, list( list( null, qualifiedidentifier( null, I ) ), qualifiedidentifier( null, J ) ) ), null )", - "classdefinition( identifier( C ), inheritance( superclass( qualifiedidentifier( null, B ) ), list( null, qualifiedidentifier( null, I ) ) ), null )" - }; - - testParser("ClassDefinition",input,expected); - } - - /** - * Inheritance - * «empty» - * extends TypeExpressionallowIn - * implements TypeExpressionList - * extends TypeExpressionallowIn implements TypeExpressionList - */ - - final public Node parseInheritance() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseInheritance" ); - } - - Node $$,$1,$2; - - if( lookahead(extends_token) ) { - match(extends_token); - $1 = parseTypeExpression(allowIn_mode); - } else { - $1 = null; - } - - if( lookahead(implements_token) ) { - match(implements_token); - $2 = parseTypeExpressionList(); - } else { - $2 = null; - } - - $$ = NodeFactory.Inheritance($1,$2); - - if( debug ) { - Debugger.trace( "finish parseInheritance" ); - } - - return $$; - } - - static final void testSuperclass() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("Superclass",input,expected); - } - - /** - * ImplementsList - * «empty» - * implements TypeExpressionList - */ - - final public Node parseImplementsList() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseImplementsList" ); - } - - Node $$; - - if( lookahead(implements_token) ) { - match(implements_token); - $$ = parseTypeExpressionList(); - } else { - $$ = null; - } - - if( debug ) { - Debugger.trace( "finish parseImplementsList" ); - } - - return $$; - } - - static final void testImplementsList() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("ImplementsList",input,expected); - } - - /** - * TypeExpressionList - * TypeExpression[allowin] TypeExpressionListPrime - * - * TypeExpressionListPrime: - * , TypeExpression[allowin] TypeExpressionListPrime - * empty - */ - - final public Node parseTypeExpressionList() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTypeExpressionList" ); - } - - Node $$, $1; - - $1 = parseTypeExpression(allowIn_mode); - $$ = parseTypeExpressionListPrime(NodeFactory.List(null,$1)); - - if( debug ) { - Debugger.trace( "finish parseTypeExpressionList" ); - } - - return $$; - } - - private Node parseTypeExpressionListPrime( Node $1 ) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseTypeExpressionListPrime" ); - } - - Node $$; - - if( lookahead( comma_token ) ) { - - match( comma_token ); - - Node $2; - - $2 = parseTypeExpression(allowIn_mode); - $$ = parseTypeExpressionListPrime(NodeFactory.List($1,$2)); - - } else { - $$ = $1; - } - - if( debug ) { - Debugger.trace( "finish parseTypeExpressionListPrime'" ); - } - - return $$; - } - - static final void testTypeExpressionList() throws Exception { - - String[] input = { - "I1", - "I1,I2" - }; - - String[] expected = { - "", - "" - }; - - testParser("TypeExpressionList",input,expected); - } - - /** - * InterfaceDefinition - * interface Identifier ExtendsList Block - * interface Identifier Semicolon - */ - - final public Node parseInterfaceDefinition(int mode) throws Exception { - - if( debug ) { - Debugger.trace( "begin parseInterfaceDefinition" ); - } - - Node $$,$1; - - match(interface_token); - $1 = parseIdentifier(); - if( lookaheadSemicolon(mode) ) { - matchSemicolon(mode); - $$ = NodeFactory.InterfaceDeclaration($1); - } else { - Node $2,$3; - $2 = parseExtendsList(); - $3 = parseBlock(); - $$ = NodeFactory.InterfaceDefinition($1,$2,$3); - } - - if( debug ) { - Debugger.trace( "finish parseInterfaceDefinition" ); - } - - return $$; - } - - static final void testInterfaceDefinition() throws Exception { - - String[] input = { - }; - - String[] expected = { - }; - - testParser("InterfaceDefinition",input,expected); - } - - /** - * ExtendsList - * «empty» - * extends TypeExpressionList - */ - - final public Node parseExtendsList() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseExtendsList" ); - } - - Node $$; - - if( lookahead(extends_token) ) { - match(extends_token); - $$ = parseTypeExpressionList(); - } else { - $$ = null; - } - - if( debug ) { - Debugger.trace( "finish parseExtendsList" ); - } - - return $$; - } - - static final void testExtendsList() throws Exception { - - String[] input = { - "", - "" - }; - - String[] expected = { - "", - "" - }; - - testParser("ExtendsList",input,expected); - } - - /** - * NamespaceDefinition - * namespace Identifier ExtendsList - */ - - final public Node parseNamespaceDefinition() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseNamespaceDefinition" ); - } - - Node $$,$1,$2; - - match(namespace_token); - $1 = parseIdentifier(); - $2 = parseExtendsList(); - $$ = NodeFactory.NamespaceDefinition($1,$2); - - if( debug ) { - Debugger.trace( "finish parseNamespaceDefinition" ); - } - - return $$; - } - - static final void testNamespaceDefinition() throws Exception { - - String[] input = { - "namespace N;", - }; - - String[] expected = { - "", - }; - - testParser("NamespaceDefinition",input,expected); - } - - /** - * LanguageDeclaration - * use LanguageAlternatives - */ - - public final Node parseLanguageDeclaration() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLanguageDeclaration" ); - } - - Node $$; - - match(use_token); - $$ = NodeFactory.LanguageDeclaration(parseLanguageAlternatives()); - - if( debug ) { - Debugger.trace( "finish parseLanguageDeclaration" ); - } - - return $$; - } - - /** - * LanguageAlternatives - * LanguageIds - * LanguageAlternatives | LanguageIds - */ - - final public Node parseLanguageAlternatives() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLanguageAlternatives" ); - } - - Node $$; - - $$ = parseLanguageIds(); - - while( lookahead(bitwiseor_token) ) { - - match(bitwiseor_token); - $$ = NodeFactory.List($$,parseLanguageIds()); - - } - - if( debug ) { - Debugger.trace( "finish parseLanguageAlternatives" ); - } - - return $$; - } - - /** - * LanguageIds - * «empty» - * LanguageId LanguageIds - */ - - final public Node parseLanguageIds() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLanguageIds" ); - } - - Node $$; - - if( lookahead(bitwiseor_token) || lookahead(semicolon_token) ) { - $$ = null; - } else { - $$ = NodeFactory.List(parseLanguageId(),parseLanguageIds()); - } - - if( debug ) { - Debugger.trace( "finish parseLanguageIds" ); - } - - return $$; - } - - /** - * LanguageId - * Identifier - * Number - */ - - final public Node parseLanguageId() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseLanguageId" ); - } - - Node $$; - - if( lookahead(numberliteral_token) ) { - $$ = NodeFactory.LiteralNumber(scanner.getTokenText(match(numberliteral_token))); - } else { - $$ = parseIdentifier(); - } - - if( debug ) { - Debugger.trace( "finish parseLanguageId" ); - } - - return $$; - } - - /** - * PackageDefinition - * package Block - * package PackageName Block - */ - - final public Node parsePackageDefinition() throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePackageDefinition" ); - } - - Node $$; - - match(package_token); - if( lookahead(leftbrace_token) ) { - $$ = NodeFactory.PackageDefinition(null,parseBlock()); - } else { - $$ = NodeFactory.PackageDefinition(parsePackageName(),parseBlock()); - } - - if( debug ) { - Debugger.trace( "finish parsePackageDefinition" ); - } - - return $$; - } - - static final void testPackageDefinition() throws Exception { - - String[] input = { - "package {}", - "package P {}", - }; - - String[] expected = { - "", - "", - }; - - testParser("PackageDefinition",input,expected); - } - - /** - * PackageName - * Identifier - * PackageName . Identifier - */ - - final public Node parsePackageName() throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePackageName" ); - } - - Node $$,$1; - - $1 = parseIdentifier(); - $$ = parsePackageNamePrime($1); - - if( debug ) { - Debugger.trace( "finish parsePackageName" ); - } - - return $$; - } - - final public Node parsePackageNamePrime(Node $1) throws Exception { - - if( debug ) { - Debugger.trace( "begin parsePackageNamePrime" ); - } - - Node $$; - - while( lookahead(dot_token) ) { - match(dot_token); - $1 = NodeFactory.List($1,parseIdentifier()); - } - - $$ = $1; - - if( debug ) { - Debugger.trace( "finish parsePackageNamePrime" ); - } - - return $$; - } - - /** - * Program - * TopStatements - */ - - final public Node parseProgram() throws Exception { - - if( debug ) { - Debugger.trace( "begin parseProgram" ); - } - - Node $$; - - $$ = parseTopStatements(); - - if( debug ) { - Debugger.trace( "finish parseProgram" ); - } - - if( scanner.errorCount == 0 ) { - $$ = NodeFactory.Program($$); - } else { - $$ = NodeFactory.Program(null); - } - return $$; - } - - static final void testProgram() throws Exception { - - String[] input = { - "function f() {} interface I { function m(); } class C extends B implements I,J,K { static function g() : I { return new C; } function m() {} } C.g().f();", - "package P { include 'file1'; import 'lib1'; namespace V1; const v1 = V1; v1 var x; }", - }; - - String[] expected = { - "program( statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( null, annotateddefinition( null, functiondefinition( functiondeclaration( functionname( , identifier( f ) ), functionsignature( null, null ) ), null ) ) ), annotateddefinition( null, interfacedefinition( identifier( I ), null, statementlist( statementlist( statementlist( null, annotateddefinition( null, functiondeclaration( functionname( , identifier( m ) ), functionsignature( null, null ) ) ) ), null ), null ) ) ) ), annotateddefinition( null, classdefinition( identifier( C ), inheritance( superclass( qualifiedidentifier( null, B ) ), list( list( list( null, qualifiedidentifier( null, I ) ), qualifiedidentifier( null, J ) ), qualifiedidentifier( null, K ) ) ), statementlist( statementlist( statementlist( statementlist( null, annotateddefinition( attributelist( identifier( static ), null ), functiondefinition( functiondeclaration( functionname( , identifier( g ) ), functionsignature( null, qualifiedidentifier( null, I ) ) ), statementlist( statementlist( statementlist( statementlist( null, null:returnstatement( newexpression( qualifiedidentifier( null, C ) ) ) ), emptystatement ), null ), null ) ) ) ), annotateddefinition( null, functiondefinition( functiondeclaration( functionname( , identifier( m ) ), functionsignature( null, null ) ), null ) ) ), null ), null ) ) ) ), callexpression( memberexpression( callexpression( memberexpression( qualifiedidentifier( null, C ), qualifiedidentifier( null, g ) ), null ), qualifiedidentifier( null, f ) ), null ) ), emptystatement ), null ), null ) )", - "program( statementlist( statementlist( statementlist( null, packagedefinition( identifier( P ), statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( statementlist( null, includestatement( literalstring( file1 ) ) ), emptystatement ), annotateddefinition( null, importdefinition( literalstring( lib1 ), null ) ) ), emptystatement ), annotateddefinition( null, namespacedefinition( identifier( V1 ), null ) ) ), annotateddefinition( null, variabledefinition( const_token, list( null, variablebinding( typedvariable( identifier( v1 ), null ), qualifiedidentifier( null, V1 ) ) ) ) ) ), annotateddefinition( attributelist( qualifiedidentifier( null, v1 ), null ), variabledefinition( var_token, list( null, variablebinding( typedvariable( identifier( x ), null ), null ) ) ) ) ), null ), null ) ) ), null ), null ) )", - }; - - testParser("Program",input,expected); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Scope.java b/mozilla/js/js2/jsc/src/java/parser/Scope.java deleted file mode 100644 index 038ad7cbbe3..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Scope.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A scope, which contains slots. - */ - -public interface Scope { - Slot get(Value namespace, String name) throws Exception; - Slot add(Value namespace, String name ) throws Exception; - boolean has(Value namespace, String name) throws Exception; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Slot.java b/mozilla/js/js2/jsc/src/java/parser/Slot.java deleted file mode 100644 index 5c23a8f47a2..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Slot.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A slot. - */ - -public class Slot { - Value attrs; - Value type; - Value value; - Block block; - Store store; - - public String toString() { - return "{ "+attrs+", "+type+", "+value+", "+store+" }"; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Store.java b/mozilla/js/js2/jsc/src/java/parser/Store.java deleted file mode 100644 index 30f3ca36fb0..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Store.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * Represents an abstract unit of storage. - */ - -public class Store { - Scope scope; - int index; - - Store(Scope scope, int index) { - this.scope = scope; - this.index = index; - } - - public String toString() { - return "store( " + index + " )"; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Type.java b/mozilla/js/js2/jsc/src/java/parser/Type.java deleted file mode 100644 index 5da03e64cd9..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Type.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The interfaces for all types. - */ - -public interface Type extends Init { - Object[] values(); - Type[] converts(); - void addSub(Type type); - boolean includes(Value value); - void setSuper(Type type); - Type getSuper(); - Value convert(Context context, Value value) throws Exception; - Value coerce(Context context, Value value) throws Exception; -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/parser/Value.java b/mozilla/js/js2/jsc/src/java/parser/Value.java deleted file mode 100644 index f7f1c88874c..00000000000 --- a/mozilla/js/js2/jsc/src/java/parser/Value.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Hashtable; -import java.util.Vector; - -/** - * The value class from which all other values derive. - */ - -abstract public class Value implements Scope { - - private static final boolean debug = false; - - public Value type; - public Value getValue(Context context) throws Exception { return this; } - public Value getType(Context context) throws Exception { return type; } - -/* - Hashtable defaultNames = new Hashtable(); - Hashtable namespaces = new Hashtable(); - Hashtable attributes = new Hashtable(); -*/ - - public boolean has(Value namespace, String name) throws Exception { - throw new Exception("Constructor object expected in new expression"); -/* - Hashtable names; - if( namespace == null ) { - names = defaultNames; - } else { - names = (Hashtable) namespaces.get(namespace); - } - return names.containsKey(name); -*/ - } - - public Slot get(Value namespace, String name) throws Exception { - throw new Exception("Constructor object expected in new expression"); -/* - if(debug) { - Debugger.trace("ObjectValue.get() with namespaces="+namespaces+", namespace="+namespace+", name="+name); - } - Hashtable names; - if( namespace == null ) { - names = defaultNames; - } else { - names = (Hashtable) namespaces.get(namespace); - } - return (Slot) names.get(name); -*/ - } - - public Slot add(Value namespace, String name) throws Exception { - throw new Exception("Constructor object expected in new expression"); -/* - if( debug ) { - Debugger.trace("ObjectType.add() with this = " + this + " namespace = " + namespace + " name = " + name); - } - - Hashtable names; - if( namespace == null ) { - names = defaultNames; - } else { - names = (Hashtable) namespaces.get(namespace); - if( names==null ) { - names = new Hashtable(); - namespaces.put(namespace,names); - } - } - - Slot slot = new Slot(); - names.put(name,slot); - return slot; -*/ - } - - int size() { - return 0; - } - - public Value construct(Context context, Value args) throws Exception { - throw new Exception("Constructor object expected in new expression"); - } - - public Value call(Context context, Value args) throws Exception { - throw new Exception("Callable object expected in call expression"); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/BlockEvaluator.java b/mozilla/js/js2/jsc/src/java/semantics/BlockEvaluator.java deleted file mode 100644 index 63e159d4533..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/BlockEvaluator.java +++ /dev/null @@ -1,984 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.io.*; -import java.lang.reflect.*; -import java.util.*; - -/** - * Delineates the program into its basic execution blocks. - * - * It is necessary to know all the blocks in the program - * before we can mark the flow-control edges and compute - * the dominance relationship between a reference and - * definition. - * - * The algorithm for partitioning the program into basic - * blocks goes like this: - * 1 Identify leaders. - * 1.1 The first statement of a program. - * 1.2 The target of a branch. - * 1.3 Immediately follows a branch. - * 1.2 Create a block with entry = leader, exit = - * 2.Identify exits. - * 3 Enter a new block at each leader. - * 4 Exit the current block when an exit is encountered. - */ - -public class BlockEvaluator extends Evaluator { - - private static final boolean debug = false; - - /** - * ExpressionStatementNode - * - * Semantics: - * 1. Tag node with current block label. - * 2. Return. - */ - - Value evaluate( Context context, ExpressionStatementNode node ) throws Exception { - if( debug ) { - Debugger.trace("defining ExpressionStatementNode = " + node); - } - - node.block = context.getBlock(); - return UndefinedValue.undefinedValue; - } - - /** - * EmptyStatementNode - * - * Semantics: - * 1. Tag node with current block label. - * 2. Return undefined. - */ - - Value evaluate( Context context, EmptyStatementNode node ) throws Exception { - if( debug ) { - Debugger.trace("defining ExpressionStatementNode = " + node); - } - - node.block = context.getBlock(); - return UndefinedValue.undefinedValue; - } - - /** - * AnnotatedBlockNode - * - * Syntax: - * { attributes:list statements:list } - * - * Semantics: - * 1. Tag node with current block label. - * 2. Exit current block. - * 3. Mark first statement of block, a leader. - * 4. Evaluate statements. - * 5. Return. - * - * Notes: - * The attributes reside in the preceding block. The first statement is - * the leader of a new block since a boolean typed attribute affects - * whether this statement list gets included in the control-flow of the - * program. The next pass will determine if there is a false valued - * attribute and exclude this block from the edges that lead from the - * preceding block. - */ - - Value evaluate( Context context, AnnotatedBlockNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating AnnotatedBlockNode = " + node); - } - - node.block = context.getBlock(); - context.exitBlock(node); - node.statements.first().markLeader(); - node.statements.evaluate(context,this); - return UndefinedValue.undefinedValue; - } - - /** - * StatementListNode - */ - - Value evaluate( Context context, StatementListNode node ) throws Exception { - - if( debug ) { - Debugger.trace("defining StatementListNode = " + node); - } - - ListValue list; - - if( node.list != null ) { - if( node.list instanceof StatementListNode ) { - list = (ListValue) node.list.evaluate(context,this); - } else { - list = new ListValue(); - list.push(node.list.evaluate(context,this)); - } - } else { - list = new ListValue(); - } - - if( node.item != null ) { - - Node item = node.item; - StatementListNode prev = (StatementListNode)node.list; - - // Mark leaders. - - if( prev != null && prev.item.isBranch() ) { - item.markLeader(); - } - - if( item.isBranch() ) { - Node[] targets = item.getTargets(); - if( targets!=null ) { - for(int i=0;i - */ - -package com.compilercompany.ecmascript; -import java.util.*; -import java.io.StringReader; - -/** - * Computes the compile-time values of a program. - * - * The ConstantEvaluator evaluates all expressions to either Undefined or - * a definite constant value. Each statement evaluates to a CompletionValue - * if it is a compile-time constant, or a CodeValue if it is not. StatementList - * evaluates to a ListValue which contains a sequence of CompletionValues and - * CodeValues. Each definition evaluates to either an EmptyStatement or an - * ExpressionStatement, depending on whether it contains a non-constant - * initializer. - */ - -public class ConstantEvaluator extends Evaluator implements Tokens, Attributes { - - private static final boolean debug = true; - - // Expressions - - /** - * IdentifierNode - * - * The reference value serves as a weak alias to the object being - * bound to. It is interpreted by its context (e.g. a member expr - * as a selector for a member of the base activation frame. - */ - - Value evaluate( Context context, IdentifierNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating IdentifierNode = " + node); - } - - return new ReferenceValue(null,used_namespaces,node.name); - } - - /** - * QualifiedIdentifierNode - * - * {qualifiers:QualifierListNode name:String} - * - * Semantics: - * 1. Evaluate qualifier. - * 2. Call GetValue(Result(1). - * 3. If Result(2) is not a namespace, then throw a TypeError. - * 4. Create a new Reference(null,Result2),name). - * 5. Return Result(4). - */ - - Value evaluate( Context context, QualifiedIdentifierNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating QualifiedIdentifierNode = " + node); - } - - Value qualifier = null; - if( node.qualifier != null ) { - qualifier = node.qualifier.evaluate(context,this); - qualifier = qualifier.getValue(context); - } - - if( qualifier != null && - !(NamespaceType.type.includes(qualifier) || TypeType.type.includes(qualifier)) ) { - error(context,0,"Identifier qualifier must evaluate to a namespace or type.",node.qualifier.pos()); - return UndefinedValue.undefinedValue; - } - - if( NamespaceType.type.includes(qualifier) ) { - return new ReferenceValue(null,qualifier,node.name); - } else { - return new ReferenceValue(qualifier,modifier_namespaces,node.name); - } - } - - /** - * LiteralBooleanNode - * - * { value:boolean } - * - * Semantics: - * 1 Return the literal boolean type value. - */ - - Value evaluate( Context context, LiteralBooleanNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralBooleanNode = " + node); - } - - Value value; - - if( node.value == true ) { - value = BooleanValue.trueValue; - } else { - value = BooleanValue.falseValue; - } - - return value; - } - - /** - * LiteralNullNode - * - * {} - */ - - Value evaluate( Context context, LiteralNullNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralNullNode = " + node); - } - - return NullValue.nullValue; - } - - /** - * LiteralNumberNode - * - * { value:double } - */ - - Value evaluate( Context context, LiteralNumberNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating Node = " + node); - } - - return new NumberValue(node.value); - } - - /** - * LiteralStringNode - * - * { value:String } - */ - - Value evaluate( Context context, LiteralStringNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralStringNode = " + node); - } - - return new StringValue(node.value); - } - - /** - * LiteralUndefinedNode - * - * {} - */ - - Value evaluate( Context context, LiteralUndefinedNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating Node = " + node); - } - - return UndefinedValue.undefinedValue; - } - - /** - * LiteralRegExpNode - */ - - Value evaluate( Context context, LiteralRegExpNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralRegExpNode = " + node); - } - - Value value; - Type type; - - type = new RegExpType(node.value); - value = new ObjectValue(type); - - return value; - } - - /** - * ThisExpressionNode - */ - - Value evaluate( Context context, ThisExpressionNode node ) throws Exception { - if( debug ) { - Debugger.trace("evaluating ThisExpressionNode = " + node); - } - return UndefinedValue.undefinedValue; - } - - /** - * - */ - - Value evaluate( Context context, UnitExpressionNode node ) throws Exception { - if( debug ) { - Debugger.trace("evaluating Node = " + node); - } - return UndefinedValue.undefinedValue; - } - - /** - * ParenthesizedExpressionNode - */ - - Value evaluate( Context context, ParenthesizedExpressionNode node ) throws Exception { - if( debug ) { - Debugger.trace("evaluating ParenthesizedExpressionNode = " + node); - } - return node.expr.evaluate(context,this); - } - - /** - * ParenthesizedListExpressionNode - */ - - Value evaluate( Context context, ParenthesizedListExpressionNode node ) throws Exception { - if( debug ) { - Debugger.trace("evaluating ParenthesizedListExpressionNode = " + node); - } - return node.expr.evaluate(context,this); - } - - /** - * FunctionExpressionNode - * - * { name : Identifier, signature : FunctionSignature, body : StatementList } - */ - - Value evaluate( Context context, FunctionExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating FunctionExpressionNode = " + node); - } - - Value value; - Type type; - - type = new FunctionType("anonymous"); - value = new ObjectValue(type); - - // ISSUE: What do we do with the name? - //Scope local = context.getLocal(); - //Slot slot = local.add(null,name); - //slot.type = type; - //slot.value = value; - //node.slot = slot; - - context.pushScope(value); - node.signature.evaluate(context,this); - if( node.body != null ) { - node.body.evaluate(context,this); - } - context.popScope(); - - return value; - } - - static final void testFunctionExpression() throws Exception { - - String[] input = { - "(function (){});", - "(function (x){var a;});", - "(function f(x,y){var a; const b;});", - }; - - String[] expected = { - "object(function(anonymous)){namespace(default)={}}", - "object(function(anonymous)){namespace(_parameters_)={x={ attrs=0, type=any, value=undefined }}, namespace(default)={a={ attrs=0, type=any, value=undefined }}}", - "object(function(anonymous)){namespace(_parameters_)={x={ attrs=0, type=any, value=undefined }, y={ attrs=0, type=any, value=undefined }}, namespace(default)={b={ attrs=0, type=any, value=undefined }, a={ attrs=0, type=any, value=undefined }}}", - }; - - testEvaluator("FunctionDefinition",input,expected); - } - - /** - * LiteralObjectNode - */ - - Value evaluate( Context context, LiteralObjectNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralObjectNode = " + node); - } - - ObjectValue value; - Type type; - - type = new ObjectType(""); - value = new ObjectValue(type); - - if( node.fieldlist != null ) { - context.pushScope(value); - node.fieldlist.evaluate(context,this); - context.popScope(); - } - - node.value = value; // save it for code generation. - - return value; - } - - static final void testObjectLiteral() throws Exception { - - String[] input = { - "{};", - "{a:1,b:2,c:3};", - "{'a':1,2:2,c:3};", - }; - - String[] expected = { - "object(){namespace(default)={}}", - "object(){namespace(default)={b={ attrs=0, type=any, value=2 }, a={ attrs=0, type=any, value=1 }, c={ attrs=0, type=any, value=3 }}}", - "object(){namespace(default)={a={ attrs=0, type=any, value=1 }, 2={ attrs=0, type=any, value=2 }, c={ attrs=0, type=any, value=3 }}}", - }; - - testEvaluator("ObjectLiteral",input,expected); - } - - /** - * LiteralFieldNode - */ - - Value evaluate( Context context, LiteralFieldNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralFieldNode = " + node); - } - - String name; - Scope scope; - Value value; - - - value = node.name.evaluate(context,this); - if( value instanceof ReferenceValue ) { - name = ((ReferenceValue)value).getName(); - } else { - name = value.toString(); - } - value = node.value.evaluate(context,this).getValue(context); - - Slot slot; - scope = context.getLocal(); - slot = scope.add(null,name); - slot.value = value; - return value; - } - - /** - * LiteralArrayNode - */ - - Value evaluate( Context context, LiteralArrayNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating LiteralArrayNode = " + node); - } - - ListValue value; - Type type; - - type = ArrayType.type; - - if( node.elementlist != null ) { - value = (ListValue)node.elementlist.evaluate(context,this); - } else { - value = null; - } - - node.value = value; // save for code generation. - - return type.convert(context,value); - } - - static final void testArrayLiteral() throws Exception { - - String[] input = { - "[];", - "[1,2,3];", - "['a',{a:1,b:2,c:3},3];", - }; - - String[] expected = { - "", - "", - "", - }; - - testEvaluator("ArrayLiteral",input,expected); - } - - /** - * ElementListNode - */ - - Value evaluate( Context context, ElementListNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating ElementListNode = " + node); - } - - ListValue list; - - if( node.list != null ) { - if( node.list instanceof ListNode ) { - list = (ListValue) node.list.evaluate(context,this); - } else { - list = new ListValue(); - list.push(node.list.evaluate(context,this)); - } - } - else { - list = new ListValue(); - } - - if( node.item != null ) { - list.push(node.item.evaluate(context,this)); - } - else { - // do nothing. - } - - return list; - - } - - /** - * PostfixExpressionNode - * - * { op:{incr,decr}, expr:PostfixExpressionNode } - */ - - Value evaluate( Context context, PostfixExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating PostfixExpressionNode = " + node); - } - - Value value; - - value = node.expr.evaluate(context,this).getValue(context); - - if(node.op != 0) { - value = NumberType.type.convert(context,value); - - // ACTION: do operation here - } - - return value; - } - - /** - * NewExpressionNode - * - * { expr:NewSubexpressionNode, args:ListNode - * - * Constant Semantics: - * 1. Evaluate args. (To resolve the type annotations.) - * 2. Return undefined. (Because this expression cannot be a constant.) - * - * Run-time Semantics: - * 1. Evaluate expr. - * 2. Evaluate args. - * 3. If Result(1) is a Type, go to step 12. - * 4. If Result(1) is a FunctionType, go to step 9. - * 5. If Result(1) is a Constructor, go to step 7. - * 6. Throw TypeError. - * 7. Call [[Construct]] method of Result(1). - * 8. Return Result(7). - * 9. Push a new Object onto the to of the operand stack. - * 10. Call [[Call]] method of Result(1). - * 11. Return Result(10). - * 12. Get constructor of same name as type from Result(1). - * 13. Call [[Construct]] method of Result(12). - * 14. Return Result(13). - */ - - Value evaluate( Context context, NewExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating NewExpressionNode = " + node); - } - - if( node.expr != null ) { - node.expr.evaluate(context,this); - } - - return UndefinedValue.undefinedValue; - } - - static final void testNewExpression() throws Exception { - - String[] input = { - "new Number;", - "new Number(x);", - "class C {function C(){}}; new C(x);", - }; - - String[] expected = { - "", - "", - "", - }; - - testEvaluator("NewExpression",input,expected); - } - - /** - * MemberExpressionNode - * - * { base:NewSubexpressionNode name:IdentifierNode } - * - * A member expression evaluates to a reference value. If the value of the - * reference is a compile-time constant, then return the value as a literal. - * Otherwise return undefined. - */ - - Value evaluate( Context context, MemberExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating MemberExpressionNode = " + node); - } - - Value value; - Value base; - String name; - - base = node.base.evaluate(context,this).getValue(context); - value = node.name.evaluate(context,this); - - if( !UndefinedType.type.includes(base) && - value instanceof ReferenceValue ) { - ((ReferenceValue)value).scope = base; - node.ref = value; - } else { - value = UndefinedValue.undefinedValue; - //error(context,0,"Expecting reference expression after dot operator.",node.name.pos()); - } - - return value; - } - - static final void testMemberExpression() throws Exception { - - String[] input = { - "o.x;", - }; - - String[] expected = { - "", - "", - }; - - testEvaluator("MemberExpression",input,expected); - } - - /** - * IndexedMemberExpressionNode - * - * Syntax: - * { base:NewSubexpressionNode args:ArgumentList } - * - * Semantics: - * 1. Evaluate base. - * 2. Call GetValue(Result(1)). - * 3. Evaluate args. - * 4. Call GetValue(Result(3)). - * 5. Call ToString(Result(4)). - * 6. If Result(1) or Result(5) is undefined, then return undefined. - * 7. Return new ReferenceValue(Result(2),Result(5)). - */ - - Value evaluate( Context context, IndexedMemberExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating IndexedMemberExpressionNode = " + node); - } - - return UndefinedValue.undefinedValue; - } - - static final void testIndexedMemberExpression() throws Exception { - - String[] input = { - "o[x];", - }; - - String[] expected = { - "", - }; - - testEvaluator("IndexedMemberExpression",input,expected); - } - - /** - * ClassofExpressionNode - * - * { base } - */ - - Value evaluate( Context context, ClassofExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating ClassofExpressionNode = " + node); - } - - Value value = node.base.evaluate(context,this); - - // If this is a reference value, then the type of the referenced - // slot is returned. If it is a regular value, the type of the value - // is returned. - - return value.getType(context); - } - - /** - * CoersionExpressionNode - * - * { expr, type } - * - * Semantics: - * 1 Evaluate type. - * 2 If Result(1) is not a compile-time constant type value, - * post an error and return undefined. - * 3 Evaluate expr. - * 4 Call the coerce method of Result(1) with argument Result(3). - * 5 Return Result(4). - */ - - Value evaluate( Context context, CoersionExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating CoersionExpressionNode = " + node); - } - - Value ref; - ref = node.type.evaluate(context,this); - - Value typeValue; - typeValue = ref.getValue(context); - Value expr = UndefinedValue.undefinedValue; - - if( !TypeType.type.includes(typeValue) ) { - error(context,"A constant type expression expected on right hand side of coerce operator.",node.type.pos()); - } else { - Value value; - expr = node.expr.evaluate(context,this); - value = ((TypeValue)typeValue).coerce(context,expr); - } - - return expr; - } - - static final void testCoersionExpression() throws Exception { - - String[] input = { - "class T{} o@T;", - "o@(T);", - }; - - String[] expected = { - "", - "", - }; - - testEvaluator("CoersionExpression",input,expected); - } - - /** - * CallExpressionNode - * - * { member: args:ArgumentListNode } - * - * Semantics: - * 1. Evaluate - */ - - Value evaluate( Context context, CallExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating CallExpressionNode = " + node); - } - - Value callee; - Value args = null; - - callee = node.member.evaluate(context,this).getValue(context); - - if( node.args != null ) { - args = node.args.evaluate(context,this); - } - - if( !FunctionType.type.includes(callee) ) { - return UndefinedValue.undefinedValue; - } - - // This may be a pure function. In which case the result value is constant as - // long as the arguments are constant. - - Value value; - context.enterClass(callee); - value = callee.call(context,args); - context.exitClass(); - - return value; - } - - /** - * UnaryExpressionNode - */ - - Value evaluate( Context context, UnaryExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating UnaryExpressionNode = " + node); - } - - return UndefinedValue.undefinedValue; - } - - /** - * BinaryExpressionNode - */ - - Value evaluate( Context context, BinaryExpressionNode node ) throws Exception { - if( debug ) { - Debugger.trace("evaluating BinaryExpressionNode = " + node); - } - - // if rhs is a constant, then replace with a literal. - // if it is a local definition, then load it directly. - // otherwise, put result in temporary and use it directly. - - - Value value; - - value = node.lhs.evaluate(context,this); - if( value instanceof ReferenceValue ) { - node.lhs = null; - node.lhs_ref = value; - node.lhs_slot = ((ReferenceValue)value).getSlot(context); - } - value = node.rhs.evaluate(context,this); - if( value instanceof ReferenceValue ) { - node.rhs = null; - node.rhs_ref = value; - node.rhs_slot = ((ReferenceValue)value).getSlot(context); - } - - return UndefinedValue.undefinedValue; - } - - /** - * ConditionalExpressionNode - */ - - Value evaluate( Context context, ConditionalExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating ConditionalExpressionNode = " + node); - } - - return UndefinedValue.undefinedValue; - } - - /** - * AssignmentExpressionNode - */ - - Value evaluate( Context context, AssignmentExpressionNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating AssignmentExpressionNode = " + node); - } - - Value lref = node.lhs.evaluate(context,this); - - Value value = UndefinedValue.undefinedValue; - if( lref != UndefinedValue.undefinedValue ) { - Slot slot = ((ReferenceValue)lref).getSlot(context); - Debugger.trace("ConstantEvaluator.evaluat(AssignmentExpression) with slot " + slot); - if( slot != null ) { - Value rref = node.rhs.evaluate(context,this); - slot.value = rref.getValue(context); - } - node.ref = (ReferenceValue)lref; - } else { - throw new Exception("internal error: assignment lhs is not a reference."); - } - - return value; - } - - /** - * ListNode - */ - - Value evaluate( Context context, ListNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating ListNode = " + node); - } - - ListValue list; - - if( node.list != null ) { - if( node.list instanceof ListNode ) { - list = (ListValue) node.list.evaluate(context,this); - } else { - list = new ListValue(); - list.push(node.list.evaluate(context,this)); - } - } - else { - list = new ListValue(); - } - - if( node.item != null ) { - list.push(node.item.evaluate(context,this)); - } - else { - // do nothing. - } - - return list; - - } - - // Statements - - // When evaluating statement nodes do: - // 1. determine leaders. - // 2. determine exits. - // 3. determine edges. - // 4. - - - /** - * StatementListNode - */ - - Value evaluate( Context context, StatementListNode node ) throws Exception { - - if( debug ) { - Debugger.trace("evaluating StatementListNode = " + node); - } - - ListValue list; - - if( node.list != null ) { - if( node.list instanceof StatementListNode ) { - list = (ListValue) node.list.evaluate(context,this); - } else { - list = new ListValue(); - list.push(node.list.evaluate(context,this)); - } - } - else { - list = new ListValue(); - } - - if( node.item != null ) { - - Node item = node.item; - StatementListNode prev = (StatementListNode)node.list; - - // Add Edges. - - if( prev != null && prev.item.block != null && prev.item.isBranch() ) { - //Debugger.trace("prev.item.block = " + prev.item.block + ", item = " + item); - context.addEdge(prev.item.block,item.block); - } - - if( item.isBranch() ) { - Node[] targets = item.getTargets(); - if( targets!=null ) { - for(int i=0;i - */ - -package com.compilercompany.ecmascript; -import java.util.Enumeration; - -/** - * class ArrayType - */ - -public final class ArrayType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new ArrayType()); - - public String toString() { - return "array"; - } - - private ArrayType() { - super("array"); - ObjectType.type.addSub(this); - } - - /** - * Type methods - */ - - public Value convert(Context context, Value value) throws Exception { - if( value instanceof ListValue ) { - return this.convert(context,(ListValue)value); - } else { - return value; - } - } - - public Value convert(Context context, ListValue value) throws Exception { - Value array = new ObjectValue(this); - Enumeration e = value.elements(); - int i = 0; - while(e.hasMoreElements()) { - Slot slot; - String name; - Value elem; - name = ""+i; - slot = array.add(null,name); - elem = (Value) e.nextElement(); - slot.value = elem.getValue(context); - i++; - } - return array; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/BooleanType.java b/mozilla/js/js2/jsc/src/java/semantics/types/BooleanType.java deleted file mode 100644 index a1d104733ad..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/BooleanType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class BooleanType - */ - -public final class BooleanType extends ObjectType implements Type { - - private static final boolean debug = false; - - public static final TypeValue type = new TypeValue(new BooleanType()); - - public String toString() { - return "boolean"; - } - - private BooleanType() { - super("boolean"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/CharacterType.java b/mozilla/js/js2/jsc/src/java/semantics/types/CharacterType.java deleted file mode 100644 index 2e3ab8c9ac0..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/CharacterType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class CharacterType - */ - -public final class CharacterType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new CharacterType()); - - public String toString() { - return "character"; - } - - private CharacterType() { - super("character"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/ClassType.java b/mozilla/js/js2/jsc/src/java/semantics/types/ClassType.java deleted file mode 100644 index 756ba60d4dc..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/ClassType.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; - -/** - * class ClassType - */ - -public final class ClassType extends ObjectType implements Type { - - private static final boolean debug = false; - - public static final TypeValue type = new TypeValue(new ClassType()); - - String name = ""; - - public String toString() { - return "class("+name+" extends " + superType + ")"; - } - - public ClassType(String name) { - super("class#"+name); - this.name = name; - ClassType.type.addSub(this); - } - - private ClassType() { - super("class"); - ObjectType.type.addSub(this); - } - - private Type superType; - - public void setSuper(Type type) { - superType = type; - superType.addSub(this); - } - - public Type getSuper() { - return superType; - } - - /** - * Init - */ - - public void init( Value ob ) { - ob.type = TypeType.type; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/CompletionType.java b/mozilla/js/js2/jsc/src/java/semantics/types/CompletionType.java deleted file mode 100644 index 7807dde400b..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/CompletionType.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class CompletionType - */ - -public final class CompletionType extends ObjectType { - public static final int normalType = 0x00; - public static final int breakType = 0x01; - public static final int continueType = 0x02; - public static final int returnType = 0x03; - public static final int throwType = 0x04; - - CompletionType() { - super("completion"); - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/FunctionType.java b/mozilla/js/js2/jsc/src/java/semantics/types/FunctionType.java deleted file mode 100644 index ce2e7747995..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/FunctionType.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class FunctionType - */ - -public final class FunctionType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new FunctionType()); - - String name; - - public String toString() { - return "function("+name+")"; - } - - public FunctionType(String name) { - super("function"); - this.name = name; - FunctionType.type.addSub(this); - } - - private FunctionType() { - super("function"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/IntegerType.java b/mozilla/js/js2/jsc/src/java/semantics/types/IntegerType.java deleted file mode 100644 index 84b92537475..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/IntegerType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class IntegerType - */ - -public final class IntegerType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new IntegerType()); - - public String toString() { - return "integer"; - } - - private IntegerType() { - super("integer"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/NamespaceType.java b/mozilla/js/js2/jsc/src/java/semantics/types/NamespaceType.java deleted file mode 100644 index 313edb6942d..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/NamespaceType.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class NamespaceType - */ - -public final class NamespaceType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new NamespaceType()); - - public String toString() { - if( name == null ) { - return "namespace"; - } else { - return "namespace("+name+")"; - } - } - - private String name; - - public NamespaceType(String name) { - super("namespace"); - this.name = name; - NamespaceType.type.addSub(this); - } - - private NamespaceType() { - super("namespace"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/NoneType.java b/mozilla/js/js2/jsc/src/java/semantics/types/NoneType.java deleted file mode 100644 index 9315293287b..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/NoneType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class NoneType - */ - -public final class NoneType extends ObjectType implements Type { - - private static final boolean debug = false; - - public static final TypeValue type = new TypeValue(new NoneType()); - - public String toString() { - return "none"; - } - - private NoneType() { - super("none"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/NullType.java b/mozilla/js/js2/jsc/src/java/semantics/types/NullType.java deleted file mode 100644 index 4c72b8f0aba..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/NullType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class NullType - */ - -public final class NullType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new NullType()); - - public String toString() { - return "null"; - } - - private NullType() { - super("null"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/NumberType.java b/mozilla/js/js2/jsc/src/java/semantics/types/NumberType.java deleted file mode 100644 index da9c525184e..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/NumberType.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class NumberType - */ - -public final class NumberType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new NumberType()); - - public String toString() { - return "number"; - } - - private NumberType() { - super("number"); - ObjectType.type.addSub(this); - } - - /** - * Type methods - */ - - public void init( Value ob ) throws Exception { - - if( debug ) { - Debugger.trace("NumberType.init() with ob = " + ob ); - } - - Slot slot; - slot = ob.add(null,"Number"); - slot.type = FunctionType.type; - slot.value = new ObjectValue(new FunctionType("constructor")); - slot.value.type = NumberType.type; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/ObjectType.java b/mozilla/js/js2/jsc/src/java/semantics/types/ObjectType.java deleted file mode 100644 index 87b2e69a809..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/ObjectType.java +++ /dev/null @@ -1,231 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; - -/** - * class ObjectType - */ - -public class ObjectType implements Type { - - private static final boolean debug = true; - - public static final TypeValue type = new TypeValue(new ObjectType()); - - String name = "object"; - - public String toString() { - return name; - } - - public ObjectType(String name) { - this.name = name; - ObjectType.type.addSub(this); - } - - private ObjectType() { - } - - - /** - * Type methods - */ - - /** - * Init - */ - - public void init( Value ob ) throws Exception { - } - - private Vector values_ = new Vector(); - private Type[] converts_ = null; - - public Type[] converts() { - if( converts_ == null) { - converts_ = new Type[6]; - converts_[0] = UndefinedType.type; - converts_[1] = NullType.type; - converts_[2] = BooleanType.type; - converts_[3] = NumberType.type; - converts_[4] = StringType.type; - converts_[5] = ObjectType.type; - } - return converts_; - } - - public void addSub(Type type) { - if( debug ) { - Debugger.trace("ObjectType.addSub() type = " + type + " to " + this); - } - values_.addElement(type); - } - - public Object[] values() { - Object[] values = new Object[values_.size()]; - values_.copyInto(values); - return values; - } - - public Value convert(Context context, Value value) throws Exception { - return value; - } - - public Value coerce(Context context, Value value) { - return value; - } - - private Type superType; - - public void setSuper(Type type) { - superType = type; - } - - public Type getSuper() { - return superType; - } - - public boolean includes(Value value) { - - if( debug ) { - Debugger.trace("ObjectType.includes() with this = " + this + ", value.type = " + value.type + ", values_ = " + values_); - } - - return values_.contains(value.type); - } - - - /** - * subset - * - * return t2 if t2 is a proper subset of t1, otherwise - * return null. - */ - - public static Type subset(Type t1, Type t2) { - - if(debug) { - Debugger.trace("subset() with t1 = " + t1 + ", t2 = " + t2 ); - } - - Object[] v1 = t1.values(); - Object[] v2 = t2.values(); - - int l1 = v1.length; - int l2 = v2.length; - - int i1; - int i2; - - for(i2 = 0; i2 < l2; i2++) { - - // For each value in t2, check that it is also in t1. - - for(i1 = 0; i1 < l1; i1++) { - - if(debug) { - Debugger.trace("subset() matching " + v2[i2] + " = " + v1[i1] ); - } - - // If the match is found, then break out of this - // inner loop and continue checking values. - - if(v1[i1]==v2[i2]) { - if(debug) { - Debugger.trace("value found"); - } - break; - } - } - - // Not a subset if we got to the end of the t1 value array - // without finding the current t2 value. - - if(i1==l1) { - return null; - } - } - - // If we got to the end of the t2 values, then t2 is a subset - // of t1. Return t2. - - if(i2==l2) { - return t2; - } - - return null; - } - - public static Type subset(Type[] at1, Type t2) { - - if( at1 == null ) { - return null; - } - - // Check that the values of t2 are a subset of values - // of at least one of the types of the ta1 array. - - int l = at1.length; - int i; - - for( i = 0; i < l; i++ ) { - if( subset(at1[i],t2) != null ) { - return at1[i]; - } - } - - return null; - } - - - /** - * intersection - * - * return the aggregate type that represents the intersection - * of t1 and t2. The empty set is expressed as null. - */ - - public static Type intersection(Type t1, Type t2) { - - // Return a type that represents the intersection - // of values in both t1 and t2. - - /* - for(;;) { - for(;;) { - } - } - */ - - return null; - } - - public static Type intersection(Type[] ts1, Type t2) { - return null; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/RegExpType.java b/mozilla/js/js2/jsc/src/java/semantics/types/RegExpType.java deleted file mode 100644 index 73251269044..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/RegExpType.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class RegExpType - */ - -public final class RegExpType extends ObjectType implements Type { - - boolean debug = false; - - public static final RegExpType type = new RegExpType(); - - String expr; - - public String toString() { - return "regexp("+expr+")"; - } - - private RegExpType() { - super("regexp"); - ObjectType.type.addSub(this); - } - - public RegExpType(String expr) { - super("regexp"); - this.expr = expr; - - // Make this type a subtype of the base RegExpType. - // This means that RegExpType.type.includes(this) - // is true. Since values created by this type have - // this type as their type, for any reg exp value - // RegExpType.type.includes(value.type) is true. - - RegExpType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/StringType.java b/mozilla/js/js2/jsc/src/java/semantics/types/StringType.java deleted file mode 100644 index adc6ff8779f..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/StringType.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class StringType - */ - -public final class StringType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new StringType()); - - public String toString() { - return "string"; - } - - private StringType() { - super("string"); - ObjectType.type.addSub(this); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/TypeType.java b/mozilla/js/js2/jsc/src/java/semantics/types/TypeType.java deleted file mode 100644 index 8027ed4969d..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/TypeType.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class TypeType - */ - -public class TypeType extends ObjectType implements Type { - - boolean debug = false; - - public static TypeValue type = new TypeValue(); - - public String toString() { - return "type"; - } - - public TypeType() { - super("type"); - ObjectType.type.addSub(this); - } - - public boolean includes(Value value) { - - // A type is always a member of itself. - - if(value.type==TypeType.type) { - return true; - } - - // Check the store in the base object. - - return super.includes(value); - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/types/UndefinedType.java b/mozilla/js/js2/jsc/src/java/semantics/types/UndefinedType.java deleted file mode 100644 index c5a46013d6a..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/types/UndefinedType.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * class UndefinedType - */ - -public final class UndefinedType extends ObjectType implements Type { - - boolean debug = false; - - public static final TypeValue type = new TypeValue(new UndefinedType()); - - public String toString() { - return "undefined"; - } - - private UndefinedType() { - super("undefined"); - ObjectType.type.addSub(this); - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/BooleanValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/BooleanValue.java deleted file mode 100644 index 9d94e46a881..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/BooleanValue.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A boolean value: true or false. - */ - -public class BooleanValue extends ObjectValue { - - private static final boolean debug = false; - - public static final Value trueValue = new BooleanValue(true); - public static final Value falseValue = new BooleanValue(false); - - boolean value; - - public String toString() { - return "boolean("+value+")"; - } - - BooleanValue(boolean value) { - this.value = value; - this.type = BooleanType.type; - } - - BooleanValue(boolean value, Value type) { - this.value = value; - this.type = type; - } - - /** - * Return a value of the currently specified type. - */ - - public Value getValue(Context context) throws Exception { - - Value value; - - if(type == BooleanType.type) { - value = this; - } else { - value = ((TypeValue)type).convert(context,this); - } - - return value; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/CharacterValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/CharacterValue.java deleted file mode 100644 index dbe4209c997..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/CharacterValue.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A character value. - */ - -public class CharacterValue extends ObjectValue { - - private static final boolean debug = false; - - public String toString() { - return "character("+value+")"; - } - - char value; - - CharacterValue(char value) { - this.type = CharacterType.type; - this.value = value; - } - - CharacterValue(char value, Value type) { - this.type = type; - this.value = value; - } - - public Value getValue(Context context) throws Exception { - - Value value; - - if(type == CharacterType.type) { - value = this; - } else { - throw new Exception("Unexpected type of character value."); - } - - return value; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/CodeValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/CodeValue.java deleted file mode 100644 index 96d7f2d70df..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/CodeValue.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; - -/** - * A code value (intermediate). - * - * This value holds the intermediate code for an non-constant value. - */ - -public class CodeValue extends Value { - - private static final boolean debug = false; - private Node node; - - public CodeValue( Node node ) { - this.node = node; - } - - public String toString() { - return "code("+node+")"; - } - - /** - * The result depends on during what phase this function - * is called. At compile time it will either return itself, - * or a compile-time constant value. At runtime it will - * return a runtime value. - */ - - public Value getValue(Context context) throws Exception { - - // ACTION: execute the code to get the value. - - return node.evaluate(context,context.evaluator); - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/CompletionValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/CompletionValue.java deleted file mode 100644 index c3243e93728..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/CompletionValue.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A completion value (intermediate). - */ - -public class CompletionValue extends Value { - - private static final boolean debug = false; - - int type; - Value value; - String target; - - public CompletionValue(int type, Value value, String target) { - this.type = type; - this.value = value; - this.target = target; - } - - public CompletionValue () { - this(CompletionType.normalType,NullValue.nullValue,""); - } - - public String toString() { - return "completion( "+type+", "+value+", "+target+" )"; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/GlobalObject.java b/mozilla/js/js2/jsc/src/java/semantics/values/GlobalObject.java deleted file mode 100644 index 695e8ab9db1..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/GlobalObject.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The global object initializer. - * - * An instance of this class is used to initialize a global - * object. - */ - -public final class GlobalObject implements Init { - - /** - * Init - */ - - public void init( Value ob ) throws Exception { - - // Add slots for pre-defined types. A note on values - // and types: Each type contains a set of values. A - // value is an instance of the value class. For example, - // new BooleanValue(true) is the true value of the boolean - // type. BooleanValue.type is the type of all boolean - // values. Value classes implement the Value interface. - - Slot slot; - - // Types - - slot = ob.add(null,"none"); - slot.type = TypeType.type; - slot.value = NoneType.type; - - slot = ob.add(null,"void"); - slot.type = TypeType.type; - slot.value = UndefinedType.type; - - slot = ob.add(null,"Null"); - slot.type = TypeType.type; - slot.value = NullType.type; - - slot = ob.add(null,"Boolean"); - slot.type = TypeType.type; - slot.value = BooleanType.type; - - slot = ob.add(null,"Integer"); - slot.type = TypeType.type; - slot.value = IntegerType.type; - - slot = ob.add(null,"Number"); - slot.type = TypeType.type; - slot.value = NumberType.type; - - slot = ob.add(null,"Character"); - slot.type = TypeType.type; - slot.value = CharacterType.type; - - slot = ob.add(null,"String"); - slot.type = TypeType.type; - slot.value = StringType.type; - - slot = ob.add(null,"Function"); - slot.type = TypeType.type; - slot.value = FunctionType.type; - - slot = ob.add(null,"Array"); - slot.type = TypeType.type; - slot.value = ArrayType.type; - - slot = ob.add(null,"Type"); - slot.type = TypeType.type; - slot.value = TypeType.type; - - slot = ob.add(null,"Unit"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - // Attributes - - slot = ob.add(null,"local"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"regional"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"global"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"extend"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"unit"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"public"); - slot.type = NamespaceType.type; - slot.value = new ObjectValue(new NamespaceType("public")); - - slot = ob.add(null,"internal"); - slot.type = NamespaceType.type; - slot.value = new ObjectValue(new NamespaceType("internal")); - - slot = ob.add(null,"private"); - slot.type = NamespaceType.type; - slot.value = new ObjectValue(new NamespaceType("private")); - - slot = ob.add(null,"implicit"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"explicit"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"indexable"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"nonindexable"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"final"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"dynamic"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"fixed"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"static"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"constructor"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"abstract"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"virtual"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"final"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"override"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"mayOverride"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"prototype"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"weak"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - - slot = ob.add(null,"unused"); - slot.type = ObjectType.type; - slot.value = new ObjectValue(); - } -} - -/* - * The end. - */ - diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/ListValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/ListValue.java deleted file mode 100644 index bbc432c20f4..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/ListValue.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; -import java.util.Enumeration; - -/** - * A list value (intermediate). - */ - -public class ListValue extends ObjectValue { - - private static final boolean debug = false; - - Vector data = new Vector(); - - int size() { - return data.size(); - } - - Enumeration elements() { - return data.elements(); - } - - public String toString() { - return "list(" + data + ")"; - } - - public ListValue push(Object item) { - data.addElement(item); - return this; - } - - public Value getValue(Context context) throws Exception { - int size = data.size(); - if( size > 0 ) { - return ((Value) data.elementAt(size-1)).getValue(context); - } - return UndefinedValue.undefinedValue; - } - - public Value getValue(Context context, int n) throws Exception { - int size = data.size(); - if( n >= 0 && n < size ) { - return ((Value) data.elementAt(n)).getValue(context); - } - return UndefinedValue.undefinedValue; - } - - public void pop() { - int size = data.size(); - if( size > 0 ) { - data.setSize(size-1); - } - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/NullValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/NullValue.java deleted file mode 100644 index 9cbe007fd38..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/NullValue.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The null value. - */ - -public class NullValue extends ObjectValue { - - private static final boolean debug = false; - - public static final Value nullValue = new NullValue(); - - public String toString() { - return "null"; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/NumberValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/NumberValue.java deleted file mode 100644 index fcd111ab5a1..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/NumberValue.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A number value. - */ - -public final class NumberValue extends ObjectValue { - - boolean debug = false; - - String value; - - public NumberValue(double value) { - this.type = NumberType.type; - this.value = null; // ACTION: value; - } - - public NumberValue(String value) throws Exception { - this.type = NumberType.type; - this.value = value; - } - - public String toString() { - return ""+value; - } -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/ObjectValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/ObjectValue.java deleted file mode 100644 index 62c227d9b70..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/ObjectValue.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Hashtable; -import java.util.Vector; -import java.util.Enumeration; - -/** - * An object value. - */ - -public class ObjectValue extends Value implements Attributes, Scope { - - private static final boolean debug = false; - - /** - * - */ - - Hashtable slots = new Hashtable(); - String name; - - /** - * - */ - - public ObjectValue() { - this.type = null; - } - - /** - * - */ - - public ObjectValue( TypeValue type ) throws Exception { - if( debug ) { - Debugger.trace("ObjectValue.ObjectValue() with type = " + type); - } - type.init(this); - this.type = type; - } - - /** - * - */ - - public ObjectValue( String name, TypeValue type ) throws Exception { - type.init(this); - this.type = type; - } - - /** - * - */ - - public ObjectValue( Init initializer ) throws Exception { - this.type = ObjectType.type; - initializer.init(this); - } - - /** - * - */ - - public ObjectValue( String name, Init initializer ) throws Exception { - this.name = name; - this.type = ObjectType.type; - initializer.init(this); - } - - /** - * - */ - - public String toString() { - - if( name != null ) { - return "object("+name+")"+slots; - } else { - return "object("+type+")"+slots; - } - } - - /** - * - */ - - public Value getValue(Context context) throws Exception { - return this; - }; - - /** - * - */ - - public boolean has(Value namespace, String name) { - return get(namespace,name) != null; - } - - /** - * - */ - - public Slot get(Value namespace, String name) { - - if( debug ) { - Debugger.trace("ObjectValue.get() namespace="+namespace+", name="+name); - } - - Slot slot; - if( namespace == null ) { - slot = (Slot) slots.get(name); - } else { - ObjectValue names = (ObjectValue)slots.get(namespace); - if( names == null ) { - slot = null; - } else { - slot = (Slot) names.slots.get(name); - } - } - - return slot; - } - - /** - * Add a name to a namespace and return the resulting slot. - */ - - public Slot add(Value namespace, String name) throws Exception { - if( debug ) { - Debugger.trace("ObjectType.add() to " + this.name + " namespace = " + namespace + " name = " + name); - } - - Hashtable slots; - ObjectValue names; - - if( namespace == null ) { - slots = this.slots; - } else { - names = (ObjectValue) this.slots.get(namespace); - if( names==null ) { - names = new ObjectValue(new NamespaceType(namespace.toString())); - this.slots.put(namespace,names); - slots = names.slots; - } else { - slots = names.slots; - } - } - - Slot slot = new Slot(); - slot.type = ObjectType.type; - slot.value = UndefinedValue.undefinedValue; - - slots.put(name,slot); - - return slot; - } - - /** - * - */ - - int size() { - return slots.size(); - } - - /** - * - */ - - public Value construct(Context context, Value args) throws Exception { - - Scope thisScope = context.getThisClass(); - - if( debug ) { - Debugger.trace("calling object constructor with this = " + thisScope + ", args = " + args); - } - - return (Value) thisScope; - } - - /** - * - */ - - public Value call(Context context, Value args) throws Exception { - - Scope thisScope = context.getThisClass(); - - if( debug ) { - Debugger.trace("calling function with this = " + thisScope + ", args = " + args); - } - - Value value = UndefinedValue.undefinedValue; - - return value; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/ReferenceValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/ReferenceValue.java deleted file mode 100644 index 8cd2f67e1f3..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/ReferenceValue.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; -import java.util.Enumeration; - -/** - * A reference value. - */ - -public class ReferenceValue extends Value { - - private static final boolean debug = true; - - Scope scope; - Vector namespaces; - Value qualifier; - String name; - - public String toString() { - return "reference(scope=" + scope + ", namespace=" + namespaces + ", name=" + name + ")"; - } - - public ReferenceValue( Scope scope, Vector namespaces, String name ) { - - if( debug ) { - Debugger.trace( "creating reference scope = " + scope + - " name = " + name + " used_namespaces = " + namespaces ); - } - - this.scope = scope; - this.namespaces = namespaces; - this.qualifier = null; - this.name = name; - } - - public ReferenceValue( Scope scope, Value qualifier, String name ) { - - if( debug ) { - Debugger.trace( "creating reference scope = " + scope + - " name = " + name + " namespaces = " + namespaces ); - } - - this.scope = scope; - this.namespaces = null; - this.qualifier = qualifier; - this.name = name; - } - - String getName() { - return name; - } - - Slot getSlotInScope(Context context, Scope scope, String name) throws Exception { - Slot slot = null; - if( debug ) { - Debugger.trace("entering getSlotInScope() with namespaces=" + namespaces + - ", name= " + name + ", slot=" + slot ); - } - if( namespaces==null || namespaces.size()==0 ) { - slot = scope.get(qualifier,name); - } else { - Enumeration e = namespaces.elements(); - while(e.hasMoreElements()) { - Value namespace = (Value) e.nextElement(); - slot = scope.get(namespace,name); - if( debug ) { - Debugger.trace("looking for name = " + name + " in namespace=" + namespace + ", slot=" + slot ); - } - if( slot!=null ) { - break; - } - } - - if( slot==null ) { - slot = scope.get(qualifier/*=null*/,name); - } - } - if( debug ) { - Debugger.trace("leaving getSlotInScope() with slot="+slot); - } - return slot; - } - - public Slot getSlot(Context context) throws Exception { - - if( debug ) { - Debugger.trace("ReferenceValue.getSlot() with namespaces = " + namespaces + ", name = " + name ); - } - - Slot slot = null; - - // lookup the name in the specific scope. - - - if( scope!=null ) { - - slot = getSlotInScope(context,scope,name); - - // ACTION: Look also in the prototype(s). - - // ISSUE: What about reference to static vars though instances? - - } else { - - Scope scope = context.getLocal(); - - while(scope!=null) { - slot = getSlotInScope(context,scope,name); - - if(slot!=null) { - break; - } - - // ACTION: Look also in the prototype(s). - - scope = context.nextScope(scope); - } - } - - return slot; - } - - public Value getValue(Context context) throws Exception { - - if( debug ) { - Debugger.trace("ReferenceValue.getValue() with namespaces = " + namespaces + ", name = " + name ); - } - - Value value = UndefinedValue.undefinedValue; - Slot slot = getSlot(context); - - if( slot != null ) { - - Block d = slot.block; - Block r = context.getBlock(); - - // d == null means that the definition is a native - // an so dominates all user code. - - if( d == null || Flow.dom(context,d,r) ) { - value = slot.value; - } else { - // d does not dominate r, so we can't tell at compile-time - // what the value of the current reference is. - value = UndefinedValue.undefinedValue; - } - } - - return value; - } - - public Value getType(Context context) throws Exception { - - if( debug ) { - Debugger.trace("ReferenceValue.getType() with namespaces = " + namespaces + ", name = " + name ); - } - - Value type = ObjectType.type; - Slot slot = getSlot(context); - if( slot != null ) { - type = slot.type; - } - return type; - } - - Value getAttrs(Context context) throws Exception { - - if( debug ) { - Debugger.trace("ReferenceValue.getAttrs() with namespaces = " + namespaces + ", name = " + name ); - } - - Value attrs = null; - Slot slot = getSlot(context); - - if( slot != null ) { - attrs = slot.attrs; - } - - return attrs; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/StringValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/StringValue.java deleted file mode 100644 index 6879408b3c2..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/StringValue.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * A string value. - */ - -public final class StringValue extends ObjectValue { - - boolean debug = false; - - String value; - - public StringValue(String value) { - this.type = StringType.type; - this.value = value; - } - - public String toString() { - return value; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/TypeValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/TypeValue.java deleted file mode 100644 index d7645dbdf95..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/TypeValue.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; -import java.util.Vector; -import java.util.Enumeration; - -/** - * A type value. - * - * TypeValues have an internal property valueType that is - * the type that this value represents. The type of a TypeValue - * is always ObjectType.type. - */ - -public class TypeValue extends ObjectValue implements Type { - - private static final boolean debug = false; - private String name; - private Type impl; // This is the implementation of this value object. - - /** - * - */ - - public TypeValue( Type impl ) { - //super(valueType); - //TypeType.type.addSub(valueType); - this.impl = impl; - this.type = TypeType.type; - } - - /** - * The root type value. - */ - - public TypeValue() { - //super(impl); - //TypeType.type.addSub(impl); - this.impl = null; - this.type = null; - } - - /** - * - */ - - public String toString() { - return "typevalue(" + impl + ")" + slots; - } - - // Type methods - - /** - * - */ - - public Value convert(Context context, Value value) { - return this; - } - - /** - * - */ - - public Value coerce(Context context, Value value) { - return this; - } - - /** - * - */ - - public void addSub(Type type) { - if( impl != null ) { - impl.addSub(type); - } else { - // Otherwise, this is the root type so we already - // know that this is a subtype, since all types are - // subtypes. - } - } - - /** - * - */ - - public void setSuper(Type superClass) { - impl.setSuper(superClass); - } - - /** - * - */ - - public Type getSuper() { - return impl.getSuper(); - } - - /** - * - */ - - private Vector values_ = new Vector(); - private Type[] converts_ = null; - - public Object[] values() { - Object[] values = new Object[values_.size()]; - values_.copyInto(values); - return values; - } - - /** - * - */ - - public Type[] converts() { - return converts_; - } - - /** - * Init - * - * Initialize a raw value. This is how class objects - * construct instances. This is the second of three - * steps taken to create a new object. - * - * 1 allocate raw value. - * 2 call this method. - * 3 call user constructor, if one exists. - * - * For each instance member in the type definition, - * add a slot to the Value ob. - */ - - public void init( Value ob ) { - } - - /** - * - */ - - public boolean includes(Value value) { - - if( debug ) { - Debugger.trace("includes() type = " + impl + ", value = "+value); - } - - boolean result; - - if( this.impl==null ) { - if( value.type == TypeType.type ) { - result = true; - } else { - result = false; - } - } else { - result = this.impl.includes(value); - } - - if( debug ) { - Debugger.trace(">> result = " + result); - } - - return result; - - }; - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/src/java/semantics/values/UndefinedValue.java b/mozilla/js/js2/jsc/src/java/semantics/values/UndefinedValue.java deleted file mode 100644 index c115fd54d09..00000000000 --- a/mozilla/js/js2/jsc/src/java/semantics/values/UndefinedValue.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * The contents of this file are subject to the Netscape Public - * License Version 1.1 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is Mountain View Compiler - * Company. Portions created by Mountain View Compiler Company are - * Copyright (C) 1998-2000 Mountain View Compiler Company. All - * Rights Reserved. - * - * Contributor(s): - * Jeff Dyer - */ - -package com.compilercompany.ecmascript; - -/** - * The undefined value. - */ - -public class UndefinedValue extends ObjectValue { - - private static final boolean debug = false; - public static final Value undefinedValue = new UndefinedValue(); - - public UndefinedValue () { - this.type = UndefinedType.type; - } - - public String toString() { - return "undefined"; - } - -} - -/* - * The end. - */ diff --git a/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/binary.1.js b/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/binary.1.js deleted file mode 100644 index e739de8cf89..00000000000 --- a/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/binary.1.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Prefix Unary Expressions - */ - -function title() { - return "Prefix Unary Expressions"; -} - -function run() { - aa:b::c.d[e](f,g)[h].i++; - ba:delete p; - ca:void 0 - da:typeof ob; - ea:++a.b--; - fa:--a.b++; - ga:+a; - ha:-a; - ia:!a; - ja:a; - ka:a*b; - la:a/b; - ma:a%b; - na:a*b; - oa:a*b+c; - pa:a*b-c; - qa:a*b-c; - ra:a*b-c<<2; - sa:a*b-c>>2; - ta:a*b-c>>>2; - ua:a*b-c>>>2; - va:a*b-c>>>2<0; - wa:a*b-c>>>2>0; - xa:a*b-c>>>2<=0; - ya:a*b-c>>>2>=0; - za:a*b-c>>>2 instanceof int; - ab:a*b-c>>>2 in ob; - bb:a*b-c>>>2; - cb:a*b-c>>>2<0; - db:a*b-c>>>2>0; - eb:a*b-c>>>2<=0; - fb:a*b-c>>>2>=0; - gb:a*b-c>>>2 instanceof int; - hb:a*b-c>>>2<0; - ib:a*b-c>>>2<0==a*b-c>>>2<0; - jb:a*b-c>>>2<0!=a*b-c>>>2<0; - kb:a*b-c>>>2<0===a*b-c>>>2<0; - lb:a*b-c>>>2<0!=a*b-c>>>2<0; - mb:a*b-c>>>2<0==a*b-c>>>2<0; - nb:a*b-c>>>2<0==a*b-c>>>2<0&0xff; - ob:a*b-c>>>2<0==a*b-c>>>2<0&0xff; - pb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10; - qb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10; - rb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f; - sb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f; - tb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f&&true; - ub:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f&&true^^!true; - vb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f&&true^^!true; - wb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f&&true^^!true; - xb:a*b-c>>>2<0==a*b-c>>>2<0&0xff^0x10|0x0f&&true^^!true||false; -} - -/* - * Copyright (c) 1999-2001, Mountain View Compiler Company. - * All rights reserved. - */ diff --git a/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/postfixunary.1.js b/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/postfixunary.1.js deleted file mode 100644 index 02acf107d9f..00000000000 --- a/mozilla/js/js2/jsc/test/ecma-e4/02.expressions/postfixunary.1.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Postfix Expressions - */ - -function title() { - return "Postfix Expressions"; -} - -class T {} -class V {} - -function run() { - a.b::c.d[e](f,g)[h].i; - (const new const function f(a,b){return a+b;}.(a<MD#V19(CyMZ8iWeNN+HZ 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ȊWB65}K*CLfPWx(0Yi(p1kI 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - JS2 - - - - UserSourceTrees - - - AlwaysSearchUserPathsfalse - InterpretDOSAndUnixPathsfalse - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path:MSL: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameJS2 - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.bh - CompilerBalloon Help - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.p - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pas - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.s - CompilerPPCAsm - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - Remote Debug - 0003000000000000000000000CDE8A300CDEDB2000000000000003000D91A020 - 0000000000000000000000000CDE8A3000000000000000000000000000050000 - 0CDB8B4010000000000000F00CDB8E100000000000010000000000080CDB8AF0 - 0000000000000048000000480000000000010001000100000000000000000000 - 000000000000000000000000000000000CDB8B7010000000000000300CDB8E10 - 00000001000000010000FFFF0CDB8AF000010000000000000000000000000000 - 0CDB8B70AB00000C00000020002ACC6000000000000000000000000000000000 - 0CDB8B70AB00001400000020002ACDEC61707400000000003E000E010CEB1EB0 - 0CDB8B700000000E00000030002ACDF000000000000000000000000000000000 - 000000000000000000000000000000000CDB8AF010000000000001200CDB8E10 - 0000000000000000000000000CDB8AF000000000FFFFFFFFFFFFFFFF29636170 - 0CDB8C6010000000000000F00CDB8E100000000000010000000000080CDB8AF0 - 0000000000000048000000480000000000010001000100000000000000000000 - 000000000000000000000000000000000CDB8C9010000000000000300CDB8E10 - 00000001000000010000FFFF0CDB8AF000010000000000000000000000000000 - 0CDB8C90AB00000C00000020002ACC88FFFFFFFFFFFFFFFF0000000000000000 - 0CDB8C900000001400000020002ACC800000000000000000000000000CEB1EB0 - 0CDB8C90AB00000E00000030002ACC9000000000000000000000000000000000 - 000000000000000000000000000000000CDB8AF010000000000001200CDB8EC0 - 000000000000CCCCFFFF66660CDB8AF00000000000000000C000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0CDB8D8010000000000000900CDB8EC00CBA08100CD0884000004ABC0CDB8AF0 - 000000000000 - - Auto-target - 00010000 - - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWCodeGen_68K_codesizeSmart - MWCodeGen_68K_structalignmentMC68K - MWCodeGen_68K_fp_modeSANE - MWCodeGen_68K_code680200 - MWCodeGen_68K_profiler0 - MWCodeGen_68K_mpwc0 - MWCodeGen_68K_fourbyteints0 - MWCodeGen_68K_IEEEdoubles0 - MWCodeGen_68K_fardata0 - MWCodeGen_68K_farvtables0 - MWCodeGen_68K_farstrings0 - MWCodeGen_68K_pcrelstrings0 - MWCodeGen_68K_macsbugNew - MWCodeGen_68K_a6frames1 - - - MWDisassembler_68K_showcode1 - MWDisassembler_68K_mix0 - MWDisassembler_68K_nohex0 - MWDisassembler_68K_showdata1 - MWDisassembler_68K_showexceptions1 - MWDisassembler_68K_showsym0 - MWDisassembler_68K_shownames1 - - - GlobalOptimizer_68K_optimizationlevelLevel0 - GlobalOptimizer_68K_optforSpeed - - - MWLinker_68K_linksym1 - MWLinker_68K_symfullpath1 - MWLinker_68K_linksingle0 - MWLinker_68K_fastlink1 - MWLinker_68K_generateMap0 - MWLinker_68K_nolinkwarnings0 - MWLinker_68K_glueintosegone1 - MWLinker_68K_dontdeadstripinitcode0 - - - MWProject_68K_typeApplication - MWProject_68K_outfileJSRef - MWProject_68K_symfilename - MWProject_68K_filecreator1061109567 - MWProject_68K_filetype1095782476 - MWProject_68K_size384 - MWProject_68K_flags22656 - MWProject_68K_rsrcheaderStandard - MWProject_68K_rsrcname - MWProject_68K_rsrctype1061109567 - MWProject_68K_rsrcid0 - MWProject_68K_rsrcmulti0 - MWProject_68K_rsrcstore0 - MWProject_68K_rsrcmerge0 - MWProject_68K_rsrcflags0 - MWProject_68K_a40 - MWProject_68K_minsize384 - MWProject_68K_rsrcsegtype0 - MWProject_68K_cfm68kcodegen0 - MWProject_68K_stacksize0 - MWProject_68K_thedebugger0 - MWProject_68K_rsrc_custom0 - MWProject_68K_is_rseg_app0 - MWProject_68K_is_pilot_lib0 - MWProject_68K_pilot_main_entry - - - MWFrontEnd_C_cplusplus1 - MWFrontEnd_C_checkprotos1 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixnameJS2.prefix - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline0 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar1 - MWWarning_C_warn_unusedarg1 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass1 - - - MWCFM68K_exportsNone - MWCFM68K_olddefversion0 - MWCFM68K_oldimpversion0 - MWCFM68K_currentversion0 - MWCFM68K_farthreshold256 - PCFM68K_sharedata0 - MWCFM68K_fragmentname - MWCFM68K_initname - MWCFM68K_mainname__start - MWCFM68K_termname - MWCFM68K_libfolder0 - MWCFM68K_alignmentAlign_2 - - - MWFTP_Post_hostName - MWFTP_Post_username - MWFTP_Post_password04à - MWFTP_Post_remoteDir - MWFTP_Post_ftp_PathVersion1 - MWFTP_Post_ftp_PathType0 - MWFTP_Post_ftp_PathFormat0 - MWFTP_Post_ftp_tree - MWFTP_Post_uploadDir - MWFTP_Post_ftp_port21 - MWFTP_Post_SendBin1 - MWFTP_Post_ShouldLog1 - - - MWCommandLine_Java_clsName - MWCommandLine_Java_args - - - MWJava_Language_optimizefalse - MWJava_Language_warnDeprecatedfalse - MWJava_Language_emitMapfalse - MWJava_Language_strictFileNamesfalse - MWJava_Language_strictFileHierarchyfalse - MWJava_Language_1_1_Compatiblefalse - MWJava_Language_emitHeaders0 - MWJava_Language_headerTypeJNINativeHeaders - MWJava_Language_packageFilter - MWJava_Language_genCommentstrue - MWJava_Language_genHeadersfalse - - - MWJava_MRJAppBuilder_outFileMRJApplication - MWJava_MRJAppBuilder_mergefalse - MWJava_MRJAppBuilder_quitMenutrue - MWJava_MRJAppBuilder_growfalse - MWJava_MRJAppBuilder_stdoutTypeConsole - MWJava_MRJAppBuilder_stderrTypeConsole - MWJava_MRJAppBuilder_stdinTypeConsole - MWJava_MRJAppBuilder_appIconPVersion0 - MWJava_MRJAppBuilder_appIconPType0 - MWJava_MRJAppBuilder_appIconPFormat0 - MWJava_MRJAppBuilder_appIconPTree - MWJava_MRJAppBuilder_appIconFile - MWJava_MRJAppBuilder_splashScreenPVersion0 - MWJava_MRJAppBuilder_splashScreenPType0 - MWJava_MRJAppBuilder_splashScreenPFormat0 - MWJava_MRJAppBuilder_splashScreenPTree - MWJava_MRJAppBuilder_splashScreenPICTFile - MWJava_MRJAppBuilder_aboutName - MWJava_MRJAppBuilder_stdoutPVersion0 - MWJava_MRJAppBuilder_stdoutPType0 - MWJava_MRJAppBuilder_stdoutPFormat0 - MWJava_MRJAppBuilder_stdoutPTree - MWJava_MRJAppBuilder_stdoutFile - MWJava_MRJAppBuilder_stdoutAppendfalse - MWJava_MRJAppBuilder_stderrPType0 - MWJava_MRJAppBuilder_stderrPFormat0 - MWJava_MRJAppBuilder_stderrPTree - MWJava_MRJAppBuilder_stderrFile - MWJava_MRJAppBuilder_stderrAppendfalse - MWJava_MRJAppBuilder_stdinPType0 - MWJava_MRJAppBuilder_stdinPFormat0 - MWJava_MRJAppBuilder_stdinPTree - MWJava_MRJAppBuilder_stdinFile - - - MWJava_Output_outputtypeJarFile - MWJava_Output_outfileJavaClasses.jar - MWJava_Output_ftype1514754080 - MWJava_Output_fcreator1297570384 - MWJava_Output_compress0 - MWJava_Output_genManifest0 - MWJava_Output_trunctypeFront - MWJava_Output_deleteClasses0 - MWJava_Output_consoleApp1 - - - MWJava_Proj_projtypeApplet - MWJava_Proj_mainClassName - MWJava_Proj_HTMLAppCreator1145457748 - MWJava_Proj_HTMLAppNameMetrowerks Java - MWJava_Proj_PathVersion1 - MWJava_Proj_PathType0 - MWJava_Proj_PathFormat0 - MWJava_Proj_tree - MWJava_Proj_HTMLAppWin32NameInternet Explorer - MWJava_Proj_compress0 - MWJava_Proj_useVM1 - MWJava_Proj_vmarguments - MWJava_Proj_vmName - - - MWJavaDoc_Proj_Version1 - MWJavaDoc_Proj_Depricated1 - MWJavaDoc_Proj_Author1 - MWJavaDoc_Proj_Index1 - MWJavaDoc_Proj_Tree1 - MWJavaDoc_Proj_SunResolveToSame0 - MWJavaDoc_Proj_Shortnames1 - MWJavaDoc_Proj_Folder0 - MWJavaDoc_Proj_GenerateAPILinks0 - MWJavaDoc_Proj_scopePublic - MWJavaDoc_Proj_fcreator1297303877 - MWJavaDoc_Proj_encodingName - MWJavaDoc_Proj_decodingName - MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - DLGX - ckid - Proj - WSPC - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - Packager Panel - 000100003F3F3F3F4150504C0CDF000100DF1DD000000000000006100D91A020 - 0E0102010907021009E80A080CDF17E00186018601C809E70A09030101020207 - 020903010906030202090701020103020101030D010301070207070109070102 - 090701010109010103090A070B09010703010103090201070103010309010209 - 01070201020101010A0D0701060E01020903090209070101010702090D010306 - 01010B010207020E0901010901060702090301010203090709E8018601860186 - 01860A080A080A080707010E06010709010E010309010703010A010301010601 - 070301010109070109070902010109010101010B010209010707010102030901 - 01010301090309010A03090906020101000602010701030107030A0103020701 - 0701020103020101030D01030109010709090702010101010203020103010701 - 020E01030107020909E70A08018601C80186018609E709E80101020201100B07 - 020102090701090107010609010B010901010602030A01020309020101090B09 - 0703010201070702090901090107020101070902090902010E08030907070301 - 020309010301080B010201010602090901030101060107030101010907020102 - 090309090909010A070907010102010102010E070902070101C8018601C601C8 - 09E8018601C60186090E010307010901010901090102010701030B0101010901 - 07090B010109090E0103090306010207010702010B01070E0201090907010105 - 01010E02070109010A010D030201010601010309090201070207090307090705 - 0609010B010901010602030A010101030906020309010901090A030101090103 - 0702030D010301090186126A0A070A4A09E70A4A0186018601010709020A0301 - 060309010907010A09060207090201030206090307020101020109090203070A - 0301070107020209010A0302010103010A090603010901010307010109010702 - 07090706090E070207070109060309080B010101090107090B01010909010101 - 01010A09010907010301060110090901020109010201090109E801C601C809E8 - 0186018601C809E701030201070102010109000100010909070A01030101010A - 07090701090201090707090A070906070D020101010101030907010702090901 - 0701030902010702010101020207010905010203090201010102090101020101 - 0207090201030206090307020107010207010101090309020107010309090709 - 01030109010109010A080186018601C8018601C609E80A0810010A0109090701 - 09010701010209030901010901030106030A090907010301020102070A070101 - 0101010A070701060701090209090102010A0909070905090101090709030909 - 0301090601030701010A03010101030101030101010A07090701090201070106 - 0301010306010109030701010709010101010102000109010186018601860186 - 128A09E801860A08010A010E09090902010301020101010D010101020101020E - 09090907070201030702010E0306010203010107090301010101090903100207 - 0701020907010909010109010702010709020301020E020909070E0A01090109 - 010901030106030A090907010301090101090109030D02090609030109020302 - 07010B0101030901018601C60A4A0A080A080186018601860903070103020301 - 0107010701010901010302010E0101020103060201090106010E090107020901 - 02010E03090209030D0309090902070901060309020B0101020B020101090101 - 020D0707070907030101020E0901090301020101020E09090907070201010603 - 010A0102060107090A03010901020707090106070901090100000000000F0000 - 1453010E000FFFFF00004926000000FF0000FFFFFFFFFFFF000100006318318C - 00020000739C318C00030000739C421000040842842139CE0005084284214210 - 000610847BDE39CE000710847BDE421000081084842139CE0009108484214210 - 000A108494A54210000B108494A55294000C18C6A5295294000D21089CE74A52 - 000E21089CE75294000F2108A5294A5200102108A529529400112108B5AD5294 - 0012000000000000001300000000000000140000000000000015000000000000 - 0016000000000000001700000000000000180000 - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings1 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole0 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix0 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel2 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeNormal - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfileJS2 - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size4096 - MWProject_PPC_minsize4096 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - MWWinRC_prefixname - - - MWCodeGen_X86_processorGeneric - MWCodeGen_X86_alignmentbytes8 - MWCodeGen_X86_exceptionsZeroOverhead - MWCodeGen_X86_extinst_mmx0 - MWCodeGen_X86_extinst_3dnow0 - MWCodeGen_X86_use_mmx_3dnow_convention0 - MWCodeGen_X86_machinecodelisting0 - MWCodeGen_X86_intrinsics0 - MWCodeGen_X86_syminfo0 - MWCodeGen_X86_codeviewinfo1 - MWCodeGen_X86_extinst_cmov_fcomi0 - MWCodeGen_X86_extinst_sse0 - - - PDisasmX86_showHeaderstrue - PDisasmX86_showSymTabtrue - PDisasmX86_showCodetrue - PDisasmX86_showSourcefalse - PDisasmX86_showHextrue - PDisasmX86_showRelocationtrue - PDisasmX86_showCommentsfalse - PDisasmX86_showDebugfalse - PDisasmX86_showExceptionsfalse - PDisasmX86_showDatatrue - PDisasmX86_showRawfalse - PDisasmX86_verbosetrue - - - MWDebugger_X86_Exceptions - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - GlobalOptimizer_X86_optimizationlevelLevel0 - GlobalOptimizer_X86_optforSpeed - - - MWLinker_X86_entrypointusageDefault - MWLinker_X86_entrypoint - MWLinker_X86_subsystemWinGUI - MWLinker_X86_subsysmajorid4 - MWLinker_X86_subsysminorid0 - MWLinker_X86_usrmajorid0 - MWLinker_X86_usrminorid0 - MWLinker_X86_commandfile - MWLinker_X86_generatemap0 - MWLinker_X86_linksym0 - MWLinker_X86_linkCV1 - - - MWProject_X86_typeApplication - MWProject_X86_outfilenoname.exe - MWProject_X86_baseaddress4194304 - MWProject_X86_maxstacksize1024 - MWProject_X86_minstacksize4 - MWProject_X86_size1024 - MWProject_X86_minsize4 - MWProject_X86_importlib - - - - Name - InterfaceLib - MacOS - Library - Debug - - - Name - MathLib - MacOS - Library - Debug - - - Name - MSL C.PPC.Lib - MacOS - Library - Debug - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL SIOUX.PPC.Lib - MacOS - Library - Debug - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - utilities.cpp - MacOS - Text - Debug - - - Name - hash.cpp - MacOS - Text - Debug - - - Name - world.cpp - MacOS - Text - Debug - - - Name - js2.cpp - MacOS - Text - Debug - - - Name - parser.cpp - MacOS - Text - Debug - - - Name - numerics.cpp - MacOS - Text - Debug - - - Name - hash.h - MacOS - Text - - - - Name - numerics.h - MacOS - Text - - - - Name - parser.h - MacOS - Text - - - - Name - systemtypes.h - MacOS - Text - - - - Name - utilities.h - MacOS - Text - - - - Name - world.h - MacOS - Text - - - - Name - icodegenerator.cpp - MacOS - Text - Debug - - - Name - icodegenerator.h - MacOS - Text - - - - Name - interpreter.cpp - MacOS - Text - Debug - - - Name - interpreter.h - MacOS - Text - - - - Name - gc.o - MacOS - Library - Debug - - - Name - vmtypes.h - MacOS - Text - - - - Name - vmtypes.cpp - MacOS - Text - Debug - - - Name - jstypes.h - MacOS - Text - - - - Name - jstypes.cpp - MacOS - Text - Debug - - - Name - debugger.cpp - MacOS - Text - Debug - - - Name - debugger.h - MacOS - Text - - - - Name - gc_allocator.h - MacOS - Text - - - - Name - jsclasses.h - MacOS - Text - - - - Name - jsmath.h - MacOS - Text - - - - Name - jsmath.cpp - MacOS - Text - Debug - - - Name - xmlparser.cpp - MacOS - Text - Debug - - - Name - icodeasm.cpp - MacOS - Text - Debug - - - Name - icodeasm.h - MacOS - Text - - - - Name - exception.cpp - MacOS - Text - Debug - - - Name - exception_msgs.cpp - MacOS - Text - Debug - - - Name - lexutils.cpp - MacOS - Text - Debug - - - - - Name - systemtypes.h - MacOS - - - Name - utilities.h - MacOS - - - Name - numerics.h - MacOS - - - Name - hash.h - MacOS - - - Name - gc_allocator.h - MacOS - - - Name - jsclasses.h - MacOS - - - Name - jsmath.h - MacOS - - - Name - jstypes.h - MacOS - - - Name - vmtypes.h - MacOS - - - Name - parser.h - MacOS - - - Name - icodegenerator.h - MacOS - - - Name - interpreter.h - MacOS - - - Name - world.h - MacOS - - - Name - debugger.h - MacOS - - - Name - utilities.cpp - MacOS - - - Name - numerics.cpp - MacOS - - - Name - hash.cpp - MacOS - - - Name - jsmath.cpp - MacOS - - - Name - jstypes.cpp - MacOS - - - Name - vmtypes.cpp - MacOS - - - Name - parser.cpp - MacOS - - - Name - icodegenerator.cpp - MacOS - - - Name - interpreter.cpp - MacOS - - - Name - world.cpp - MacOS - - - Name - debugger.cpp - MacOS - - - Name - xmlparser.cpp - MacOS - - - Name - js2.cpp - MacOS - - - Name - gc.o - MacOS - - - Name - MSL C.PPC.Lib - MacOS - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL SIOUX.PPC.Lib - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - MathLib - MacOS - - - Name - icodeasm.cpp - MacOS - - - Name - icodeasm.h - MacOS - - - Name - exception.cpp - MacOS - - - Name - exception_msgs.cpp - MacOS - - - Name - lexutils.cpp - MacOS - - - - - JS2Debug - - - - UserSourceTrees - - - AlwaysSearchUserPathsfalse - InterpretDOSAndUnixPathsfalse - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path:MSL: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameJS2Debug - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.bh - CompilerBalloon Help - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.p - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pas - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.s - CompilerPPCAsm - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - Remote Debug - 0003000000000000000000400CDFE7400CE035E000000000000003000D8980C0 - 0CE495F010000000000000200CDFE7407FFF027D02BE04597FFF7FFF0CE495C0 - 0CE495C010000000000032100CE4CCE0000A002E02C202760452002E0CE495C0 - 0CE4963010000000000031F00CE4CCE07FFF006F045304557FFF007F0CE495C0 - 7FFF00F702C204437FFF022802C204437FFF026702C204437FFF026802C102C2 - 044504537FFF027602C204457FFF7FFF02F403407FFF01DE02E402E50CE491E0 - 0CE4965000000000000000E00CE49A907FFF01E002ED02EE7FFF01E50CE491E0 - 7FFF01E602E402E602EF02F07FFF01E702E602E87FFF01E802E802EA02EF02F0 - 7FFF01E900EA02EF02F403407FFF026702C204437FFF026802C102C204450453 - 7FFF027602C204457FFF7FFF02F203AA0CE4965000000000000000700CE49A90 - 0CE4963010000000000000400CE491E0FF0000000000000000002DFC0CE491E0 - 0CE4971000000000000000400CE49A900CE4971000000000000000300CE49A90 - 0CE4972000000000000000200CE49A900000000000000000000000000CE491E0 - 0CE4965010000000000000700CE498400000000000000000000000000CE49650 - 00000000000000000000000000000000000000000000000000C2000000000000 - 0CE4979010000000000000300CE498400CD08AA00CD08E54000000000CE49650 - 0000280000000000003B56C4003B56B00CE4965010000000000030400CE4CCE0 - 00000CD08E340100000100000CE4965000000000000000000000000000000000 - 000000000000000000000000000000000CE4980010000000000030000CE4CCE0 - 0CD08E340CD08AA0800180010CE4965000000000000000000CCDD65800000000 - 000000000CAD4D3C00A541BC067A66600CE4984010000000000000300CE498F0 - 0CD08DA40CD08E50000048400CE4965000000000000000000000000000000000 - 0CE498401000000000002F900CE4CCE000010CD08E500101000100000CE49840 - 0000000000000000000000000000000000000000000000000000000000000000 - 0CE498B01000 - - Auto-target - 00010000 - - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWCodeGen_68K_codesizeSmart - MWCodeGen_68K_structalignmentMC68K - MWCodeGen_68K_fp_modeSANE - MWCodeGen_68K_code680200 - MWCodeGen_68K_profiler0 - MWCodeGen_68K_mpwc0 - MWCodeGen_68K_fourbyteints0 - MWCodeGen_68K_IEEEdoubles0 - MWCodeGen_68K_fardata0 - MWCodeGen_68K_farvtables0 - MWCodeGen_68K_farstrings0 - MWCodeGen_68K_pcrelstrings0 - MWCodeGen_68K_macsbugNew - MWCodeGen_68K_a6frames1 - - - MWDisassembler_68K_showcode1 - MWDisassembler_68K_mix0 - MWDisassembler_68K_nohex0 - MWDisassembler_68K_showdata1 - MWDisassembler_68K_showexceptions1 - MWDisassembler_68K_showsym0 - MWDisassembler_68K_shownames1 - - - GlobalOptimizer_68K_optimizationlevelLevel0 - GlobalOptimizer_68K_optforSpeed - - - MWLinker_68K_linksym1 - MWLinker_68K_symfullpath1 - MWLinker_68K_linksingle0 - MWLinker_68K_fastlink1 - MWLinker_68K_generateMap0 - MWLinker_68K_nolinkwarnings0 - MWLinker_68K_glueintosegone1 - MWLinker_68K_dontdeadstripinitcode0 - - - MWProject_68K_typeApplication - MWProject_68K_outfileJSRef - MWProject_68K_symfilename - MWProject_68K_filecreator1061109567 - MWProject_68K_filetype1095782476 - MWProject_68K_size384 - MWProject_68K_flags22656 - MWProject_68K_rsrcheaderStandard - MWProject_68K_rsrcname - MWProject_68K_rsrctype1061109567 - MWProject_68K_rsrcid0 - MWProject_68K_rsrcmulti0 - MWProject_68K_rsrcstore0 - MWProject_68K_rsrcmerge0 - MWProject_68K_rsrcflags0 - MWProject_68K_a40 - MWProject_68K_minsize384 - MWProject_68K_rsrcsegtype0 - MWProject_68K_cfm68kcodegen0 - MWProject_68K_stacksize0 - MWProject_68K_thedebugger0 - MWProject_68K_rsrc_custom0 - MWProject_68K_is_rseg_app0 - MWProject_68K_is_pilot_lib0 - MWProject_68K_pilot_main_entry - - - MWFrontEnd_C_cplusplus1 - MWFrontEnd_C_checkprotos1 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixnameJS2Debug.prefix - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline0 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline1 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar1 - MWWarning_C_warn_unusedarg1 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass1 - - - MWCFM68K_exportsNone - MWCFM68K_olddefversion0 - MWCFM68K_oldimpversion0 - MWCFM68K_currentversion0 - MWCFM68K_farthreshold256 - PCFM68K_sharedata0 - MWCFM68K_fragmentname - MWCFM68K_initname - MWCFM68K_mainname__start - MWCFM68K_termname - MWCFM68K_libfolder0 - MWCFM68K_alignmentAlign_2 - - - MWFTP_Post_hostName - MWFTP_Post_username - MWFTP_Post_password04à - MWFTP_Post_remoteDir - MWFTP_Post_ftp_PathVersion1 - MWFTP_Post_ftp_PathType0 - MWFTP_Post_ftp_PathFormat0 - MWFTP_Post_ftp_tree - MWFTP_Post_uploadDir - MWFTP_Post_ftp_port21 - MWFTP_Post_SendBin1 - MWFTP_Post_ShouldLog1 - - - MWCommandLine_Java_clsName - MWCommandLine_Java_args - - - MWJava_Language_optimizefalse - MWJava_Language_warnDeprecatedfalse - MWJava_Language_emitMapfalse - MWJava_Language_strictFileNamesfalse - MWJava_Language_strictFileHierarchyfalse - MWJava_Language_1_1_Compatiblefalse - MWJava_Language_emitHeaders0 - MWJava_Language_headerTypeJNINativeHeaders - MWJava_Language_packageFilter - MWJava_Language_genCommentstrue - MWJava_Language_genHeadersfalse - - - MWJava_MRJAppBuilder_outFileMRJApplication - MWJava_MRJAppBuilder_mergefalse - MWJava_MRJAppBuilder_quitMenutrue - MWJava_MRJAppBuilder_growfalse - MWJava_MRJAppBuilder_stdoutTypeConsole - MWJava_MRJAppBuilder_stderrTypeConsole - MWJava_MRJAppBuilder_stdinTypeConsole - MWJava_MRJAppBuilder_appIconPVersion0 - MWJava_MRJAppBuilder_appIconPType0 - MWJava_MRJAppBuilder_appIconPFormat0 - MWJava_MRJAppBuilder_appIconPTree - MWJava_MRJAppBuilder_appIconFile - MWJava_MRJAppBuilder_splashScreenPVersion0 - MWJava_MRJAppBuilder_splashScreenPType0 - MWJava_MRJAppBuilder_splashScreenPFormat0 - MWJava_MRJAppBuilder_splashScreenPTree - MWJava_MRJAppBuilder_splashScreenPICTFile - MWJava_MRJAppBuilder_aboutName - MWJava_MRJAppBuilder_stdoutPVersion0 - MWJava_MRJAppBuilder_stdoutPType0 - MWJava_MRJAppBuilder_stdoutPFormat0 - MWJava_MRJAppBuilder_stdoutPTree - MWJava_MRJAppBuilder_stdoutFile - MWJava_MRJAppBuilder_stdoutAppendfalse - MWJava_MRJAppBuilder_stderrPType0 - MWJava_MRJAppBuilder_stderrPFormat0 - MWJava_MRJAppBuilder_stderrPTree - MWJava_MRJAppBuilder_stderrFile - MWJava_MRJAppBuilder_stderrAppendfalse - MWJava_MRJAppBuilder_stdinPType0 - MWJava_MRJAppBuilder_stdinPFormat0 - MWJava_MRJAppBuilder_stdinPTree - MWJava_MRJAppBuilder_stdinFile - - - MWJava_Output_outputtypeJarFile - MWJava_Output_outfileJavaClasses.jar - MWJava_Output_ftype1514754080 - MWJava_Output_fcreator1297570384 - MWJava_Output_compress0 - MWJava_Output_genManifest0 - MWJava_Output_trunctypeFront - MWJava_Output_deleteClasses0 - MWJava_Output_consoleApp1 - - - MWJava_Proj_projtypeApplet - MWJava_Proj_mainClassName - MWJava_Proj_HTMLAppCreator1145457748 - MWJava_Proj_HTMLAppNameMetrowerks Java - MWJava_Proj_PathVersion1 - MWJava_Proj_PathType0 - MWJava_Proj_PathFormat0 - MWJava_Proj_tree - MWJava_Proj_HTMLAppWin32NameInternet Explorer - MWJava_Proj_compress0 - MWJava_Proj_useVM1 - MWJava_Proj_vmarguments - MWJava_Proj_vmName - - - MWJavaDoc_Proj_Version1 - MWJavaDoc_Proj_Depricated1 - MWJavaDoc_Proj_Author1 - MWJavaDoc_Proj_Index1 - MWJavaDoc_Proj_Tree1 - MWJavaDoc_Proj_SunResolveToSame0 - MWJavaDoc_Proj_Shortnames1 - MWJavaDoc_Proj_Folder0 - MWJavaDoc_Proj_GenerateAPILinks0 - MWJavaDoc_Proj_scopePublic - MWJavaDoc_Proj_fcreator1297303877 - MWJavaDoc_Proj_encodingName - MWJavaDoc_Proj_decodingName - MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - DLGX - ckid - Proj - WSPC - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - Packager Panel - 000100003F3F3F3F4150504C0CE0000100E0690000000000000006100D8980C0 - 794E6F74537570706F7274650CE063106F6465457272058BDC1B809E6B526567 - 6973746572506172616D6574657253697A6550686173650582C906809E66645F - 706F770484AF10809F6B4653566F6C496E666F426C6F636B730591DF14809F61 - 6670436F6E7461696E7353686172656445727205891B0B809F44424C5F4D4158 - 5F4558500484CA0D809F4A535F53657456657273696F6E02620E80A06B537973 - 74656D52657346696C650591FE1A80A065727257696E646F77526567696F6E43 - 6F6465496E76616C6964058BFA0F80A04A534448617368456E74727948647207 - 80B30F80A04A534448617368456E74720048647201180C80A06A73636C697374 - 5F685F5F5F0481D11180A16B436C697070696E67546578745479706505907E12 - 80A1736D43656E7472616C4575726F526F6D616E058DEE0A80A1616670506172 - 6D45727205890D0880A1726561645145727205883E1780A16B55434269646943 - 61744E6F744170706C696361626C650584EB1880A16B554347656E6C4361744F - 74686572537572726F676174650584D00680A166726578706C04844E0D80A264 - 696165726573697355707259058FD21780A26D656E7550726F70657274794E6F - 74466F756E6445727205895B1680A24A535F5354415449435F444C4C5F43414C - 4C4241434B047D0D80A3736D50756E6374526570656174058F2E0980A3547269 - 706C65496E740781B90C80A37265706C6163655F676C6F620284230A80A34D61 - 7463685374617465016D0A80A34D6174636853746174650781751380A3776974 - 685F4C6F6F6B757050726F70657274790283171280A444726167477261795267 - 6E50726F635074720782401780A475707044656665727265645461736B50726F - 63496E666F0583890780A46C67616D6D616604842E2980A575707043616C6C43 - 6F6D706F6E656E744765745075626C69635265736F7572636550726F63496E66 - 6F058CB01A80A56B5445435465787452756E426974436C6561724669784D6173 - 6B0584C40C80A646455443485F4E554D42450001003D0C80A645585445524E5F - 4150495F4304838C0C80A76E6F745472756E63617465640590721080A76B5554 - 43556E646572666C6F77457272058A191380A7696C6C6567616C4368616E6E65 - 6C4F5345727205874E1180A864734D4241544150495379734572726F72058C5B - 0D80A86A735F4E756D6265725F7374720582251080AA636F64656343616E7457 - 68656E457272058A2B1A80AA63616E7453656E64546F53796E74686573697A65 - 724F5345727205874A0780AA6C67616D6D616C0484610C80AA6A735F70726F74 - 6F5F73747205823A0580AB666D6F64660484390680AC736861646F7705820911 - 80AD6B41545355466F6E74734D6174636865640500E70C80AD646174655F7365 - 7454696D650281950D80AD4A5350445F5641524941424C450482CF1880AF6B4D - 616356543130304575726F5369676E56617269616E740584960F80B0496E766F - 6B6551444F76616C55505004864E1480B1756E6B6E6F776E496E736572744D6F - 64654572720586311780B14D6163696E746F7368496E697469616C697A655469 - 6D6502847B0580B1666D6F646C04846C1580B14A535F4255475F46414C4C4942 - 4C455F45514F50530481E80480B151756974021B0E80B26D6964694E616D654C - 656E4572720585ED1380B2636D43616E7444656C65746550726F66696C650585 - BF0D80B24A535F436C65617253636F70650280C40D80B24A535F476574566572 - 73696F6E02610E80B2504E5F494E49545F4C4953545F310483550B80B3545950 - 455F494E545354520485820380B374746206271080B36A735F616E6F6E796D6F - 75735F73747205822A0C80B346494C454E414D455F4D4158045B0980B5504248 - 44656C6574650487000F80B5436F6E73745374723237506172616D0781190B80 - B54A534F505F5345545445520581840780B644424C5F4D41580484D20E80B64A - 535F4558504F52545F44415441047B0B80B776657250616B697374616E058EE9 - 0F80B7766572467242656C6769756D4C7578058EE40A80B8544F4B5F41535349 - 474E0581C20D80B96D6170436F6D706163744269 - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings1 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix1 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel1 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeNormal - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfileJS2 - MWProject_PPC_filecreator1061109567 - MWProject_PPC_filetype1095782476 - MWProject_PPC_size4096 - MWProject_PPC_minsize4096 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - MWWinRC_prefixname - - - MWCodeGen_X86_processorGeneric - MWCodeGen_X86_alignmentbytes8 - MWCodeGen_X86_exceptionsZeroOverhead - MWCodeGen_X86_extinst_mmx0 - MWCodeGen_X86_extinst_3dnow0 - MWCodeGen_X86_use_mmx_3dnow_convention0 - MWCodeGen_X86_machinecodelisting0 - MWCodeGen_X86_intrinsics0 - MWCodeGen_X86_syminfo0 - MWCodeGen_X86_codeviewinfo1 - MWCodeGen_X86_extinst_cmov_fcomi0 - MWCodeGen_X86_extinst_sse0 - - - PDisasmX86_showHeaderstrue - PDisasmX86_showSymTabtrue - PDisasmX86_showCodetrue - PDisasmX86_showSourcefalse - PDisasmX86_showHextrue - PDisasmX86_showRelocationtrue - PDisasmX86_showCommentsfalse - PDisasmX86_showDebugfalse - PDisasmX86_showExceptionsfalse - PDisasmX86_showDatatrue - PDisasmX86_showRawfalse - PDisasmX86_verbosetrue - - - MWDebugger_X86_Exceptions - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - GlobalOptimizer_X86_optimizationlevelLevel0 - GlobalOptimizer_X86_optforSpeed - - - MWLinker_X86_entrypointusageDefault - MWLinker_X86_entrypoint - MWLinker_X86_subsystemWinGUI - MWLinker_X86_subsysmajorid4 - MWLinker_X86_subsysminorid0 - MWLinker_X86_usrmajorid0 - MWLinker_X86_usrminorid0 - MWLinker_X86_commandfile - MWLinker_X86_generatemap0 - MWLinker_X86_linksym0 - MWLinker_X86_linkCV1 - - - MWProject_X86_typeApplication - MWProject_X86_outfilenoname.exe - MWProject_X86_baseaddress4194304 - MWProject_X86_maxstacksize1024 - MWProject_X86_minstacksize4 - MWProject_X86_size1024 - MWProject_X86_minsize4 - MWProject_X86_importlib - - - - Name - InterfaceLib - MacOS - Library - Debug - - - Name - MathLib - MacOS - Library - Debug - - - Name - MSL C.PPC.Lib - MacOS - Library - Debug - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL SIOUX.PPC.Lib - MacOS - Library - Debug - - - Name - MSL RuntimePPC.Lib - MacOS - Library - Debug - - - Name - utilities.cpp - MacOS - Text - Debug - - - Name - hash.cpp - MacOS - Text - Debug - - - Name - world.cpp - MacOS - Text - Debug - - - Name - js2.cpp - MacOS - Text - Debug - - - Name - parser.cpp - MacOS - Text - Debug - - - Name - numerics.cpp - MacOS - Text - Debug - - - Name - hash.h - MacOS - Text - - - - Name - numerics.h - MacOS - Text - - - - Name - parser.h - MacOS - Text - - - - Name - systemtypes.h - MacOS - Text - - - - Name - utilities.h - MacOS - Text - - - - Name - world.h - MacOS - Text - - - - Name - icodegenerator.cpp - MacOS - Text - Debug - - - Name - icodegenerator.h - MacOS - Text - - - - Name - interpreter.cpp - MacOS - Text - Debug - - - Name - interpreter.h - MacOS - Text - - - - Name - gc.o - MacOS - Library - Debug - - - Name - vmtypes.h - MacOS - Text - - - - Name - vmtypes.cpp - MacOS - Text - Debug - - - Name - jstypes.h - MacOS - Text - - - - Name - jstypes.cpp - MacOS - Text - Debug - - - Name - debugger.cpp - MacOS - Text - Debug - - - Name - debugger.h - MacOS - Text - - - - Name - gc_allocator.h - MacOS - Text - - - - Name - jsclasses.h - MacOS - Text - - - - Name - jsmath.h - MacOS - Text - - - - Name - jsmath.cpp - MacOS - Text - Debug - - - Name - xmlparser.cpp - MacOS - Text - Debug - - - Name - icodeasm.cpp - MacOS - Text - Debug - - - Name - icodeasm.h - MacOS - Text - - - - Name - exception.cpp - MacOS - Text - Debug - - - Name - exception_msgs.cpp - MacOS - Text - Debug - - - Name - lexutils.cpp - MacOS - Text - Debug - - - - - Name - systemtypes.h - MacOS - - - Name - utilities.h - MacOS - - - Name - numerics.h - MacOS - - - Name - hash.h - MacOS - - - Name - gc_allocator.h - MacOS - - - Name - jsclasses.h - MacOS - - - Name - jsmath.h - MacOS - - - Name - jstypes.h - MacOS - - - Name - vmtypes.h - MacOS - - - Name - parser.h - MacOS - - - Name - icodegenerator.h - MacOS - - - Name - interpreter.h - MacOS - - - Name - world.h - MacOS - - - Name - debugger.h - MacOS - - - Name - utilities.cpp - MacOS - - - Name - numerics.cpp - MacOS - - - Name - hash.cpp - MacOS - - - Name - jsmath.cpp - MacOS - - - Name - jstypes.cpp - MacOS - - - Name - vmtypes.cpp - MacOS - - - Name - parser.cpp - MacOS - - - Name - icodegenerator.cpp - MacOS - - - Name - interpreter.cpp - MacOS - - - Name - world.cpp - MacOS - - - Name - debugger.cpp - MacOS - - - Name - xmlparser.cpp - MacOS - - - Name - js2.cpp - MacOS - - - Name - gc.o - MacOS - - - Name - MSL C.PPC.Lib - MacOS - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL SIOUX.PPC.Lib - MacOS - - - Name - MSL RuntimePPC.Lib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - MathLib - MacOS - - - Name - icodeasm.cpp - MacOS - - - Name - icodeasm.h - MacOS - - - Name - exception.cpp - MacOS - - - Name - exception_msgs.cpp - MacOS - - - Name - lexutils.cpp - MacOS - - - - - JS2MPWDebug - - - - UserSourceTrees - - - AlwaysSearchUserPathsfalse - InterpretDOSAndUnixPathsfalse - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path:MSL: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameJS2MPWDebug - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.bh - CompilerBalloon Help - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.p - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pas - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.s - CompilerPPCAsm - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - Remote Debug - 0003000000000002005C6A480CE128600CE17C0000000000000003000D898910 - 0CE5EBF010000000000000300CE128600CD24FE00CD24F78000048400CE5E820 - 000000000000000000000000000000000CE5E82010000000000001100CE5ED90 - 00010CD24F780001000100000CE5E82000000000000000000000000000000000 - 000000000000000000000000000000000CE5EC6010000000000000D00CE5ED90 - 0084000010000009000000000CE5E82000010000000000000000000400080000 - 000000000001FFFE000000000D975EE0006467A0203AF5500000000000000100 - 0000000000010000000000000000000000000000000000000000000000000000 - 0CE5ECA000000000000000600CE5ED90000A000000000000000000000CE5E820 - 0CE5ED1010000000000000400CE5ED90000A800180017FFF7FFFDC740CE5E820 - 0CE5ED3010000000000000200CE5ED90000A0027000B003C018A00000CE5E820 - 0CE5E82010000000000000F00CE5EEE0000A0027000B003C018A00000CE5E820 - 0CE5ED7000000000000000D00CE5EEE0002C010300850223023301030CE5E820 - 7FFF0105023202337FFF0222008500877FFF0223008702337FFF7FFF0CE5ED10 - 0CE5ED9000000000000000900CE5EEE0007402110221021F022F02110CE5ED10 - 7FFF0212022B022C7FFF0213022A022B7FFF02140229022A7FFF021502280229 - 7FFF0216000000287FFF0217022602277FFF0218022502267FFF021902240225 - 7FFF021A022302247FFF021B022202237FFF021C022102227FFF021F0221022F - 7FFF7FFF2BA15F400002B728001C35340CE5B390AB000014000000400018DE40 - 0CC65AC00CC65BA00CC65C100CC65C800CC65CF00CC65EB00CC660700CC662A0 - 0CD4E8200000000000BD48100CD4E6000CE5EE6010000000000015B00CE604B0 - 0D92A9A40000000000380C520CE5B3900CE5EEA010000000000014800CE604B0 - 0000000000000000000000000CE5E5C00CE5EEC000000000000000D00CE5EFD0 - 002C010300850223023301030CE5E5C07FFF0105023202337FFF022200850087 - 7FFF02230087 - - Auto-target - 00010000 - - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWCodeGen_68K_codesizeSmart - MWCodeGen_68K_structalignmentMC68K - MWCodeGen_68K_fp_modeSANE - MWCodeGen_68K_code680200 - MWCodeGen_68K_profiler0 - MWCodeGen_68K_mpwc0 - MWCodeGen_68K_fourbyteints0 - MWCodeGen_68K_IEEEdoubles0 - MWCodeGen_68K_fardata0 - MWCodeGen_68K_farvtables0 - MWCodeGen_68K_farstrings0 - MWCodeGen_68K_pcrelstrings0 - MWCodeGen_68K_macsbugNew - MWCodeGen_68K_a6frames1 - - - MWDisassembler_68K_showcode1 - MWDisassembler_68K_mix0 - MWDisassembler_68K_nohex0 - MWDisassembler_68K_showdata1 - MWDisassembler_68K_showexceptions1 - MWDisassembler_68K_showsym0 - MWDisassembler_68K_shownames1 - - - GlobalOptimizer_68K_optimizationlevelLevel0 - GlobalOptimizer_68K_optforSpeed - - - MWLinker_68K_linksym1 - MWLinker_68K_symfullpath1 - MWLinker_68K_linksingle0 - MWLinker_68K_fastlink1 - MWLinker_68K_generateMap0 - MWLinker_68K_nolinkwarnings0 - MWLinker_68K_glueintosegone1 - MWLinker_68K_dontdeadstripinitcode0 - - - MWProject_68K_typeApplication - MWProject_68K_outfileJSRef - MWProject_68K_symfilename - MWProject_68K_filecreator1061109567 - MWProject_68K_filetype1095782476 - MWProject_68K_size384 - MWProject_68K_flags22656 - MWProject_68K_rsrcheaderStandard - MWProject_68K_rsrcname - MWProject_68K_rsrctype1061109567 - MWProject_68K_rsrcid0 - MWProject_68K_rsrcmulti0 - MWProject_68K_rsrcstore0 - MWProject_68K_rsrcmerge0 - MWProject_68K_rsrcflags0 - MWProject_68K_a40 - MWProject_68K_minsize384 - MWProject_68K_rsrcsegtype0 - MWProject_68K_cfm68kcodegen0 - MWProject_68K_stacksize0 - MWProject_68K_thedebugger0 - MWProject_68K_rsrc_custom0 - MWProject_68K_is_rseg_app0 - MWProject_68K_is_pilot_lib0 - MWProject_68K_pilot_main_entry - - - MWFrontEnd_C_cplusplus1 - MWFrontEnd_C_checkprotos1 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixnameJS2MPWDebug.prefix - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline0 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar1 - MWWarning_C_warn_unusedarg1 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass1 - - - MWCFM68K_exportsNone - MWCFM68K_olddefversion0 - MWCFM68K_oldimpversion0 - MWCFM68K_currentversion0 - MWCFM68K_farthreshold256 - PCFM68K_sharedata0 - MWCFM68K_fragmentname - MWCFM68K_initname - MWCFM68K_mainname__start - MWCFM68K_termname - MWCFM68K_libfolder0 - MWCFM68K_alignmentAlign_2 - - - MWFTP_Post_hostName - MWFTP_Post_username - MWFTP_Post_password04à - MWFTP_Post_remoteDir - MWFTP_Post_ftp_PathVersion1 - MWFTP_Post_ftp_PathType0 - MWFTP_Post_ftp_PathFormat0 - MWFTP_Post_ftp_tree - MWFTP_Post_uploadDir - MWFTP_Post_ftp_port21 - MWFTP_Post_SendBin1 - MWFTP_Post_ShouldLog1 - - - MWCommandLine_Java_clsName - MWCommandLine_Java_args - - - MWJava_Language_optimizefalse - MWJava_Language_warnDeprecatedfalse - MWJava_Language_emitMapfalse - MWJava_Language_strictFileNamesfalse - MWJava_Language_strictFileHierarchyfalse - MWJava_Language_1_1_Compatiblefalse - MWJava_Language_emitHeaders0 - MWJava_Language_headerTypeJNINativeHeaders - MWJava_Language_packageFilter - MWJava_Language_genCommentstrue - MWJava_Language_genHeadersfalse - - - MWJava_MRJAppBuilder_outFileMRJApplication - MWJava_MRJAppBuilder_mergefalse - MWJava_MRJAppBuilder_quitMenutrue - MWJava_MRJAppBuilder_growfalse - MWJava_MRJAppBuilder_stdoutTypeConsole - MWJava_MRJAppBuilder_stderrTypeConsole - MWJava_MRJAppBuilder_stdinTypeConsole - MWJava_MRJAppBuilder_appIconPVersion0 - MWJava_MRJAppBuilder_appIconPType0 - MWJava_MRJAppBuilder_appIconPFormat0 - MWJava_MRJAppBuilder_appIconPTree - MWJava_MRJAppBuilder_appIconFile - MWJava_MRJAppBuilder_splashScreenPVersion0 - MWJava_MRJAppBuilder_splashScreenPType0 - MWJava_MRJAppBuilder_splashScreenPFormat0 - MWJava_MRJAppBuilder_splashScreenPTree - MWJava_MRJAppBuilder_splashScreenPICTFile - MWJava_MRJAppBuilder_aboutName - MWJava_MRJAppBuilder_stdoutPVersion0 - MWJava_MRJAppBuilder_stdoutPType0 - MWJava_MRJAppBuilder_stdoutPFormat0 - MWJava_MRJAppBuilder_stdoutPTree - MWJava_MRJAppBuilder_stdoutFile - MWJava_MRJAppBuilder_stdoutAppendfalse - MWJava_MRJAppBuilder_stderrPType0 - MWJava_MRJAppBuilder_stderrPFormat0 - MWJava_MRJAppBuilder_stderrPTree - MWJava_MRJAppBuilder_stderrFile - MWJava_MRJAppBuilder_stderrAppendfalse - MWJava_MRJAppBuilder_stdinPType0 - MWJava_MRJAppBuilder_stdinPFormat0 - MWJava_MRJAppBuilder_stdinPTree - MWJava_MRJAppBuilder_stdinFile - - - MWJava_Output_outputtypeJarFile - MWJava_Output_outfileJavaClasses.jar - MWJava_Output_ftype1514754080 - MWJava_Output_fcreator1297570384 - MWJava_Output_compress0 - MWJava_Output_genManifest0 - MWJava_Output_trunctypeFront - MWJava_Output_deleteClasses0 - MWJava_Output_consoleApp1 - - - MWJava_Proj_projtypeApplet - MWJava_Proj_mainClassName - MWJava_Proj_HTMLAppCreator1145457748 - MWJava_Proj_HTMLAppNameMetrowerks Java - MWJava_Proj_PathVersion1 - MWJava_Proj_PathType0 - MWJava_Proj_PathFormat0 - MWJava_Proj_tree - MWJava_Proj_HTMLAppWin32NameInternet Explorer - MWJava_Proj_compress0 - MWJava_Proj_useVM1 - MWJava_Proj_vmarguments - MWJava_Proj_vmName - - - MWJavaDoc_Proj_Version1 - MWJavaDoc_Proj_Depricated1 - MWJavaDoc_Proj_Author1 - MWJavaDoc_Proj_Index1 - MWJavaDoc_Proj_Tree1 - MWJavaDoc_Proj_SunResolveToSame0 - MWJavaDoc_Proj_Shortnames1 - MWJavaDoc_Proj_Folder0 - MWJavaDoc_Proj_GenerateAPILinks0 - MWJavaDoc_Proj_scopePublic - MWJavaDoc_Proj_fcreator1297303877 - MWJavaDoc_Proj_encodingName - MWJavaDoc_Proj_decodingName - MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - DLGX - ckid - Proj - WSPC - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - Packager Panel - 000100003F3F3F3F4150504C0CE1000100E1AF2000000000000006100D898910 - 0000000000000000000000000CE1A9300CE62F4010000000000000400CE62FE0 - 70667373B4C09899005F90DA0CE62E0000004E5E000000000C526563656E7420 - 4974656D7300000000000000000000000CE62F20AB00000600000040002AD6D4 - 70667373B4C09899005F90DA0036FACC00004E5E000000000C526563656E7420 - 4974656D73000000000000000000C4700CE62DA0AB00000600000040002AD7EC - 70667373B4C09899005F90E00036FACC00004E5E000000000C526563656E7420 - 4974656D7300000000000000000024A00CE62DA010000000000002E00CE63340 - FFFF005F90FF00B60D975A400CE62DA0005F90FF000300004DCD000050000000 - 000013EA00002000B591070DB63B213E00000000FFFBFFF00000000000000000 - 00000000005F019D00FB014700FB019C0CE6302010000000000002800CE63340 - FFFF005F90FF0000000000000CE62DA0000000000D9759F40D9758C000000000 - 20378BF80000000000000000000000000000000000000000FFFFFFFF00000000 - 000000000000019D00FB014700FB019C0CE6308010000000000002200CE63340 - FFFF005F90E00000000000000CE630800F2423080D9759F40D97590000000000 - 20377F806E756C6C000000000CBCB9B022000048000000000000000100000000 - 0CD25B5000000000009791A00D7DC3A00CE630E010000000000001C00CE63340 - B4C09899005F90E0000000000CE63080000000000CD254700CD07D700CAC2534 - FFFFB004000000000F0062400F24235E0CE6314010000000000000600CE63220 - 7066737300000000009791400CE62DA00CE63180AB80000A00000040002AD734 - B4C09899005F90E00000000000000000000000000CD254700CD07D700CAC2534 - FFFFB004000000000F009E4C0CE630200CE6314010000000000001200CE63340 - 70667373B4C09899005F90E00CE6314000000000000000000CD254700CD07D70 - 0CAC2534FFFFB004000000000F0000020CE631E010000000000000E00CE63340 - B4C09899005F90FF000000000CE631400000000100D254700CD07D700CAC2534 - FFFFB004000000000F003C340F22007C0CE6322010000000000000600CE63300 - 706673730CBD0000667373200CE631400CE63260AB80000A00000040002AD7F8 - B4C09899005F90FF0000000000000000000000000CD254700CD07D700CAC2534 - FFFFB004000000000F005610820000480CE63220AB00000600000040002AD734 - 70667373B4C09899005F90FF0000000000000000000000000CD254700CD07D70 - 0CAC2534FFFFB004000000000F0032A00CE61F4010000000000005A00CE647E0 - 70667373B4C09899005F90FF0CE61F4000000000000000000CD254700CD07D70 - 0CAC2534FFFFB004000000000F0032200CE6330000000000000005600CE647E0 - FFFF005F90FF00000D975D200CE61F400F2423080D975D200D975900000A0000 - 20375C9CFFFFFFFF000100000CBCB9B0FE0C0000000000000000000000000000 - 0F22137C0000001F00D401470CE633600CE6334010000000000001E00CE635C0 - B4C09899005F90FF0036FACC0CE63080000000000C526563656E74204974656D - 730000000000000000008E300D7DC2D00CE633A010000000000000600CE63480 - 7066737300000000000000000CE630800CE633E0AB80000A00000040002AD734 - B4C09899005F90FF0036FACC00004E5E000000000C526563656E74204974656D - 730000000000000000000000000000000CE633A010000000000001400CE635C0 - 70667373B4C09899005F90FF0CE633A000004E5E000000000C526563656E7420 - 4974656D7300000000000000000000000CE6344010000000000001000CE635C0 - 70667373B4C09899005F90FF0CE633A000004E5E000000000C526563656E7420 - 4974656D73000000000000000000C2D00CE6348010000000000000C00CE635C0 - 0000000000000000000000000CE633A00CE634C010000000000000600CE63580 - 0000000000000000000000000CE633A00CE634E010000000000000400CE63580 - 70667373B4C09899005F90E00CE633A000004E5E000000000C526563656E7420 - 4974656D7300000000000000000000000CE634C0 - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings1 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix1 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel1 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeNormal - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfileJS2 - MWProject_PPC_filecreator1297109792 - MWProject_PPC_filetype1297109844 - MWProject_PPC_size4096 - MWProject_PPC_minsize4096 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - MWWinRC_prefixname - - - MWCodeGen_X86_processorGeneric - MWCodeGen_X86_alignmentbytes8 - MWCodeGen_X86_exceptionsZeroOverhead - MWCodeGen_X86_extinst_mmx0 - MWCodeGen_X86_extinst_3dnow0 - MWCodeGen_X86_use_mmx_3dnow_convention0 - MWCodeGen_X86_machinecodelisting0 - MWCodeGen_X86_intrinsics0 - MWCodeGen_X86_syminfo0 - MWCodeGen_X86_codeviewinfo1 - MWCodeGen_X86_extinst_cmov_fcomi0 - MWCodeGen_X86_extinst_sse0 - - - PDisasmX86_showHeaderstrue - PDisasmX86_showSymTabtrue - PDisasmX86_showCodetrue - PDisasmX86_showSourcefalse - PDisasmX86_showHextrue - PDisasmX86_showRelocationtrue - PDisasmX86_showCommentsfalse - PDisasmX86_showDebugfalse - PDisasmX86_showExceptionsfalse - PDisasmX86_showDatatrue - PDisasmX86_showRawfalse - PDisasmX86_verbosetrue - - - MWDebugger_X86_Exceptions - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - GlobalOptimizer_X86_optimizationlevelLevel0 - GlobalOptimizer_X86_optforSpeed - - - MWLinker_X86_entrypointusageDefault - MWLinker_X86_entrypoint - MWLinker_X86_subsystemWinGUI - MWLinker_X86_subsysmajorid4 - MWLinker_X86_subsysminorid0 - MWLinker_X86_usrmajorid0 - MWLinker_X86_usrminorid0 - MWLinker_X86_commandfile - MWLinker_X86_generatemap0 - MWLinker_X86_linksym0 - MWLinker_X86_linkCV1 - - - MWProject_X86_typeApplication - MWProject_X86_outfilenoname.exe - MWProject_X86_baseaddress4194304 - MWProject_X86_maxstacksize1024 - MWProject_X86_minstacksize4 - MWProject_X86_size1024 - MWProject_X86_minsize4 - MWProject_X86_importlib - - - - Name - InterfaceLib - MacOS - Library - Debug - - - Name - MathLib - MacOS - Library - Debug - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL MPWCRuntime.Lib - MacOS - Library - Debug - - - Name - utilities.cpp - MacOS - Text - Debug - - - Name - hash.cpp - MacOS - Text - Debug - - - Name - world.cpp - MacOS - Text - Debug - - - Name - js2.cpp - MacOS - Text - Debug - - - Name - parser.cpp - MacOS - Text - Debug - - - Name - numerics.cpp - MacOS - Text - Debug - - - Name - hash.h - MacOS - Text - - - - Name - numerics.h - MacOS - Text - - - - Name - parser.h - MacOS - Text - - - - Name - systemtypes.h - MacOS - Text - - - - Name - utilities.h - MacOS - Text - - - - Name - world.h - MacOS - Text - - - - Name - icodegenerator.cpp - MacOS - Text - Debug - - - Name - icodegenerator.h - MacOS - Text - - - - Name - interpreter.cpp - MacOS - Text - Debug - - - Name - interpreter.h - MacOS - Text - - - - Name - gc.o - MacOS - Library - Debug - - - Name - vmtypes.h - MacOS - Text - - - - Name - vmtypes.cpp - MacOS - Text - Debug - - - Name - jstypes.h - MacOS - Text - - - - Name - jstypes.cpp - MacOS - Text - Debug - - - Name - debugger.cpp - MacOS - Text - Debug - - - Name - debugger.h - MacOS - Text - - - - Name - gc_allocator.h - MacOS - Text - - - - Name - jsclasses.h - MacOS - Text - - - - Name - jsmath.h - MacOS - Text - - - - Name - jsmath.cpp - MacOS - Text - Debug - - - Name - xmlparser.cpp - MacOS - Text - Debug - - - Name - MSL C.PPC MPW.Lib - MacOS - Library - Debug - - - Name - icodeasm.cpp - MacOS - Text - Debug - - - Name - icodeasm.h - MacOS - Text - - - - Name - exception.cpp - MacOS - Text - Debug - - - Name - exception_msgs.cpp - MacOS - Text - Debug - - - Name - lexutils.cpp - MacOS - Text - Debug - - - - - Name - systemtypes.h - MacOS - - - Name - utilities.h - MacOS - - - Name - numerics.h - MacOS - - - Name - hash.h - MacOS - - - Name - gc_allocator.h - MacOS - - - Name - jsclasses.h - MacOS - - - Name - jsmath.h - MacOS - - - Name - jstypes.h - MacOS - - - Name - vmtypes.h - MacOS - - - Name - parser.h - MacOS - - - Name - icodegenerator.h - MacOS - - - Name - interpreter.h - MacOS - - - Name - world.h - MacOS - - - Name - debugger.h - MacOS - - - Name - utilities.cpp - MacOS - - - Name - numerics.cpp - MacOS - - - Name - hash.cpp - MacOS - - - Name - jsmath.cpp - MacOS - - - Name - jstypes.cpp - MacOS - - - Name - vmtypes.cpp - MacOS - - - Name - parser.cpp - MacOS - - - Name - icodegenerator.cpp - MacOS - - - Name - interpreter.cpp - MacOS - - - Name - world.cpp - MacOS - - - Name - debugger.cpp - MacOS - - - Name - xmlparser.cpp - MacOS - - - Name - js2.cpp - MacOS - - - Name - gc.o - MacOS - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL MPWCRuntime.Lib - MacOS - - - Name - MSL C.PPC MPW.Lib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - MathLib - MacOS - - - Name - icodeasm.cpp - MacOS - - - Name - icodeasm.h - MacOS - - - Name - exception.cpp - MacOS - - - Name - exception_msgs.cpp - MacOS - - - Name - lexutils.cpp - MacOS - - - - - JS2MPW - - - - UserSourceTrees - - - AlwaysSearchUserPathsfalse - InterpretDOSAndUnixPathsfalse - UserSearchPaths - - SearchPath - Path: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:: - PathFormatMacOS - PathRootProject - - Recursivetrue - HostFlagsAll - - - SystemSearchPaths - - SearchPath - Path:MSL: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - SearchPath - Path:MacOS Support: - PathFormatMacOS - PathRootCodeWarrior - - Recursivetrue - HostFlagsAll - - - - - MWRuntimeSettings_WorkingDirectory - MWRuntimeSettings_CommandLine - MWRuntimeSettings_HostApplication - Path - PathFormatGeneric - PathRootAbsolute - - MWRuntimeSettings_EnvVars - - - LinkerMacOS PPC Linker - PreLinker - PostLinker - TargetnameJS2MPW - OutputDirectory - Path: - PathFormatMacOS - PathRootProject - - SaveEntriesUsingRelativePathsfalse - - - FileMappings - - FileTypeAPPL - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeAppl - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeMMLB - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMPLF - FileExtension - CompilerLib Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeMWCD - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeRSRC - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.bh - CompilerBalloon Help - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.c++ - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cc - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.cpp - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.exp - Compiler - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.h - CompilerMW C/C++ PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMaketrue - - - FileTypeTEXT - FileExtension.p - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pas - CompilerMW Pascal PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.pch++ - CompilerMW C/C++ PPC - Precompiletrue - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.r - CompilerRez - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeTEXT - FileExtension.s - CompilerPPCAsm - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypeXCOF - FileExtension - CompilerXCOFF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypedocu - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypersrc - FileExtension - Compiler - Precompilefalse - Launchabletrue - ResourceFiletrue - IgnoredByMakefalse - - - FileTypeshlb - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileTypestub - FileExtension - CompilerPEF Import PPC - Precompilefalse - Launchablefalse - ResourceFilefalse - IgnoredByMakefalse - - - FileExtension.doc - Compiler - Precompilefalse - Launchabletrue - ResourceFilefalse - IgnoredByMaketrue - - - - - CacheModDatestrue - ActivateBrowsertrue - DumpBrowserInfofalse - CacheSubprojectstrue - UseThirdPartyDebuggerfalse - DebuggerCommandLine - - - LogSystemMessagestrue - AutoTargetDLLsfalse - StopAtWatchpointstrue - PauseWhileRunningfalse - PauseInterval5 - PauseUIFlags0 - AltExePath - Path - PathFormatGeneric - PathRootAbsolute - - StopAtTempBPOnLaunchtrue - CacheSymbolicstrue - TempBPFunctionNamemain - TempBPTypefalse - Remote Debug - 000300000001350100B5DB550CE273800CE2C72000000000000003000D899160 - 011E290100B6328A5A012A010CE273804E012B0100B5DB55FD002C0100B5DB55 - FD002D0100B5DB55FD002E0100B5DB55FD002F0100B5DB55FE00300100B5DB55 - FD00310100B5DB55FD00320100B5DB55FE00330100B5DB55FD003B0100B5DB55 - FD003C0100B5DB55FD003D0100B5DB55FD003E0100B5DB55FD003F0100B5DB55 - FD00400100B65EECBA01410100B6328A4B01420100B6328A4D01430100B6328A - 4D01700100B6328A4B01470100B6328A4E014E0100B6328A4C01360100B5DB55 - FD00370100B5DB55FD00380100B5DB55FD00390100B5DB55FE003A0100B5DB55 - FD00450100B6328A4B01460100B6328A4C0100220136290100B6328A5A012A01 - 00B6328A4E012B0100B5DB55FD002C0100B5DB55FD002D0100B5DB55FD002E01 - 00B5DB55FD002F0100B5DB55FE00300100B5DB55FD00310100B5DB55FD003201 - 00B5DB55FE00330100B5DB55FD003E0100B5DB55FD003F0100B5DB55FD007701 - 00B5DB55FE00780100B5DB55FD00790100B5DB55FE00400100B65EECBA014101 - 00B6328A4B01420100B6328A4D01430100B6328A4D01470100B6328A4E014801 - 00B6328A4D01360100B5DB55FD00370100B5DB55FD00380100B5DB55FD003901 - 00B5DB55FE003A0100B5DB55FD00490100B5DB55FD004A0100B5DB55FD007601 - 00B65EEC0000000100B6328A4C0180840100B5AD3B9700670100B5AD3B970068 - 0100B5AD3B960080800100B5AD3B97007F0100B5AD3B970080850100B5AD3B97 - 0080860100B5AD3B960080870100B5AD3B980080880100B5AD3B970080890100 - B5AD3B9700808A0100B5AD3B9800808B0100B5AD3B9800808C0100B5AD3B9800 - 808D0100B5AD3B9800808E0100B5AD3B9600808F0100B5AD3B970080900100B5 - AD3B980080910100B5AD3B960080920100B5AD3B980080930100B5AD3B960080 - 940100B5AD3B980080950100B5AD3B960080960100B5AD3B9800002301102901 - 00B6328A5A012A0100B6328A4E012B0100B5DB55FD002C0100B5DB55FD002D01 - 00B5DB55FD00 - - Auto-target - 00010000 - - - - CustomColor1 - Red0 - Green32767 - Blue0 - - CustomColor2 - Red0 - Green32767 - Blue0 - - CustomColor3 - Red0 - Green32767 - Blue0 - - CustomColor4 - Red0 - Green32767 - Blue0 - - - - MWCodeGen_68K_codesizeSmart - MWCodeGen_68K_structalignmentMC68K - MWCodeGen_68K_fp_modeSANE - MWCodeGen_68K_code680200 - MWCodeGen_68K_profiler0 - MWCodeGen_68K_mpwc0 - MWCodeGen_68K_fourbyteints0 - MWCodeGen_68K_IEEEdoubles0 - MWCodeGen_68K_fardata0 - MWCodeGen_68K_farvtables0 - MWCodeGen_68K_farstrings0 - MWCodeGen_68K_pcrelstrings0 - MWCodeGen_68K_macsbugNew - MWCodeGen_68K_a6frames1 - - - MWDisassembler_68K_showcode1 - MWDisassembler_68K_mix0 - MWDisassembler_68K_nohex0 - MWDisassembler_68K_showdata1 - MWDisassembler_68K_showexceptions1 - MWDisassembler_68K_showsym0 - MWDisassembler_68K_shownames1 - - - GlobalOptimizer_68K_optimizationlevelLevel0 - GlobalOptimizer_68K_optforSpeed - - - MWLinker_68K_linksym1 - MWLinker_68K_symfullpath1 - MWLinker_68K_linksingle0 - MWLinker_68K_fastlink1 - MWLinker_68K_generateMap0 - MWLinker_68K_nolinkwarnings0 - MWLinker_68K_glueintosegone1 - MWLinker_68K_dontdeadstripinitcode0 - - - MWProject_68K_typeApplication - MWProject_68K_outfileJSRef - MWProject_68K_symfilename - MWProject_68K_filecreator1061109567 - MWProject_68K_filetype1095782476 - MWProject_68K_size384 - MWProject_68K_flags22656 - MWProject_68K_rsrcheaderStandard - MWProject_68K_rsrcname - MWProject_68K_rsrctype1061109567 - MWProject_68K_rsrcid0 - MWProject_68K_rsrcmulti0 - MWProject_68K_rsrcstore0 - MWProject_68K_rsrcmerge0 - MWProject_68K_rsrcflags0 - MWProject_68K_a40 - MWProject_68K_minsize384 - MWProject_68K_rsrcsegtype0 - MWProject_68K_cfm68kcodegen0 - MWProject_68K_stacksize0 - MWProject_68K_thedebugger0 - MWProject_68K_rsrc_custom0 - MWProject_68K_is_rseg_app0 - MWProject_68K_is_pilot_lib0 - MWProject_68K_pilot_main_entry - - - MWFrontEnd_C_cplusplus1 - MWFrontEnd_C_checkprotos1 - MWFrontEnd_C_arm0 - MWFrontEnd_C_trigraphs0 - MWFrontEnd_C_onlystdkeywords0 - MWFrontEnd_C_enumsalwaysint0 - MWFrontEnd_C_mpwpointerstyle0 - MWFrontEnd_C_prefixnameJS2MPW.prefix - MWFrontEnd_C_ansistrict0 - MWFrontEnd_C_mpwcnewline1 - MWFrontEnd_C_wchar_type1 - MWFrontEnd_C_enableexceptions1 - MWFrontEnd_C_dontreusestrings0 - MWFrontEnd_C_poolstrings0 - MWFrontEnd_C_dontinline0 - MWFrontEnd_C_useRTTI1 - MWFrontEnd_C_multibyteaware0 - MWFrontEnd_C_unsignedchars0 - MWFrontEnd_C_autoinline0 - MWFrontEnd_C_booltruefalse1 - MWFrontEnd_C_direct_to_som0 - MWFrontEnd_C_som_env_check0 - MWFrontEnd_C_alwaysinline0 - MWFrontEnd_C_inlinelevel0 - MWFrontEnd_C_ecplusplus0 - MWFrontEnd_C_objective_c0 - MWFrontEnd_C_defer_codegen0 - - - MWWarning_C_warn_illpragma1 - MWWarning_C_warn_emptydecl1 - MWWarning_C_warn_possunwant1 - MWWarning_C_warn_unusedvar1 - MWWarning_C_warn_unusedarg1 - MWWarning_C_warn_extracomma0 - MWWarning_C_pedantic1 - MWWarning_C_warningerrors0 - MWWarning_C_warn_hidevirtual1 - MWWarning_C_warn_implicitconv1 - MWWarning_C_warn_notinlined0 - MWWarning_C_warn_structclass1 - - - MWCFM68K_exportsNone - MWCFM68K_olddefversion0 - MWCFM68K_oldimpversion0 - MWCFM68K_currentversion0 - MWCFM68K_farthreshold256 - PCFM68K_sharedata0 - MWCFM68K_fragmentname - MWCFM68K_initname - MWCFM68K_mainname__start - MWCFM68K_termname - MWCFM68K_libfolder0 - MWCFM68K_alignmentAlign_2 - - - MWFTP_Post_hostName - MWFTP_Post_username - MWFTP_Post_password04à - MWFTP_Post_remoteDir - MWFTP_Post_ftp_PathVersion0 - MWFTP_Post_ftp_PathType0 - MWFTP_Post_ftp_PathFormat0 - MWFTP_Post_ftp_tree - MWFTP_Post_uploadDir - MWFTP_Post_ftp_port21 - MWFTP_Post_SendBin1 - MWFTP_Post_ShouldLog1 - - - MWCommandLine_Java_clsName - MWCommandLine_Java_args - - - MWJava_Language_optimizefalse - MWJava_Language_warnDeprecatedfalse - MWJava_Language_emitMapfalse - MWJava_Language_strictFileNamesfalse - MWJava_Language_strictFileHierarchyfalse - MWJava_Language_1_1_Compatiblefalse - MWJava_Language_emitHeaders0 - MWJava_Language_headerTypeJNINativeHeaders - MWJava_Language_packageFilter - MWJava_Language_genCommentstrue - MWJava_Language_genHeadersfalse - - - MWJava_MRJAppBuilder_outFileMRJApplication - MWJava_MRJAppBuilder_mergefalse - MWJava_MRJAppBuilder_quitMenutrue - MWJava_MRJAppBuilder_growfalse - MWJava_MRJAppBuilder_stdoutTypeConsole - MWJava_MRJAppBuilder_stderrTypeConsole - MWJava_MRJAppBuilder_stdinTypeConsole - MWJava_MRJAppBuilder_appIconPVersion0 - MWJava_MRJAppBuilder_appIconPType0 - MWJava_MRJAppBuilder_appIconPFormat0 - MWJava_MRJAppBuilder_appIconPTree - MWJava_MRJAppBuilder_appIconFile - MWJava_MRJAppBuilder_splashScreenPVersion0 - MWJava_MRJAppBuilder_splashScreenPType0 - MWJava_MRJAppBuilder_splashScreenPFormat0 - MWJava_MRJAppBuilder_splashScreenPTree - MWJava_MRJAppBuilder_splashScreenPICTFile - MWJava_MRJAppBuilder_aboutName - MWJava_MRJAppBuilder_stdoutPVersion0 - MWJava_MRJAppBuilder_stdoutPType0 - MWJava_MRJAppBuilder_stdoutPFormat0 - MWJava_MRJAppBuilder_stdoutPTree - MWJava_MRJAppBuilder_stdoutFile - MWJava_MRJAppBuilder_stdoutAppendfalse - MWJava_MRJAppBuilder_stderrPType0 - MWJava_MRJAppBuilder_stderrPFormat0 - MWJava_MRJAppBuilder_stderrPTree - MWJava_MRJAppBuilder_stderrFile - MWJava_MRJAppBuilder_stderrAppendfalse - MWJava_MRJAppBuilder_stdinPType0 - MWJava_MRJAppBuilder_stdinPFormat0 - MWJava_MRJAppBuilder_stdinPTree - MWJava_MRJAppBuilder_stdinFile - - - MWJava_Output_outputtypeJarFile - MWJava_Output_outfileJavaClasses.jar - MWJava_Output_ftype1514754080 - MWJava_Output_fcreator1297570384 - MWJava_Output_compress0 - MWJava_Output_genManifest0 - MWJava_Output_trunctypeFront - MWJava_Output_deleteClasses0 - MWJava_Output_consoleApp1 - - - MWJava_Proj_projtypeApplet - MWJava_Proj_mainClassName - MWJava_Proj_HTMLAppCreator1145457748 - MWJava_Proj_HTMLAppNameMetrowerks Java - MWJava_Proj_PathVersion1 - MWJava_Proj_PathType0 - MWJava_Proj_PathFormat0 - MWJava_Proj_tree - MWJava_Proj_HTMLAppWin32NameInternet Explorer - MWJava_Proj_compress0 - MWJava_Proj_useVM1 - MWJava_Proj_vmarguments - MWJava_Proj_vmName - - - MWJavaDoc_Proj_Version1 - MWJavaDoc_Proj_Depricated1 - MWJavaDoc_Proj_Author1 - MWJavaDoc_Proj_Index1 - MWJavaDoc_Proj_Tree1 - MWJavaDoc_Proj_SunResolveToSame0 - MWJavaDoc_Proj_Shortnames1 - MWJavaDoc_Proj_Folder0 - MWJavaDoc_Proj_GenerateAPILinks0 - MWJavaDoc_Proj_scopePublic - MWJavaDoc_Proj_fcreator1297303877 - MWJavaDoc_Proj_encodingName - MWJavaDoc_Proj_decodingName - MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ - - - MWMerge_MacOS_projectTypeApplication - MWMerge_MacOS_outputNameMerge Out - MWMerge_MacOS_outputCreator1061109567 - MWMerge_MacOS_outputType1095782476 - MWMerge_MacOS_suppressWarning0 - MWMerge_MacOS_copyFragments1 - MWMerge_MacOS_copyResources1 - MWMerge_MacOS_skipResources - DLGX - ckid - Proj - WSPC - - - - FileLockedfalse - ResourcesMapIsReadOnlyfalse - PrinterDriverIsMultiFinderCompatiblefalse - Invisiblefalse - HasBundlefalse - NameLockedfalse - Stationeryfalse - HasCustomIconfalse - Sharedfalse - HasBeenInitedfalse - Label0 - Comments - Packager Panel - 000100003F3F3F3F4150504C0CE2000100E2FAE000000000000006100D899160 - 0068020100000000000001000CE2F4F068020100000000000001000400000068 - 0201000000000000010005000000680201000000000000010006000000680201 - 0000000000000100080000006802010000000000000100090000006802010000 - 0000000001001E00000068020100000000000001000A00000068020100000000 - 000001000B00000068020100000000000001000C000000680201000000000000 - 01000E00000068020100000000000001000F0000006802010000000000000100 - 1000000068020100000000000001001100000068020100000000000001001200 - 0000680201000000000000010013000000680201000000000000010014000000 - 6802010000000000000100150000006802010000000000000100160000006802 - 0100000000000001001700000068020100000000000001001D00000068020100 - 000000000001005A010018070000006902010000000000000100010000006902 - 0100000000000001000200000069020100000000000001000300000069020100 - 0000000000010004000000690201000000000000010005000000690201000000 - 0000000100060000006902010000000000000100080000006902010000000000 - 0001000900000069020100000000000001001E00000069020100000000000001 - 000A00000069020100000000000001000B00000069020100000000000001000C - 00000069020100000000000001000E00000069020100000000000001000F0000 - 0069020100000000000001001000000069020100000000000001001100000069 - 0201000000000000010012000000690201000000000000010013000000690201 - 0000000000000100140000006902010000000000000100150000006902010000 - 0000000001001600000069020100000000000001001700000069020100000000 - 000001001D00000069020100000000000001005B010018070000006A02010000 - 000000010100010000006A02010000000000010100020000006A020100000000 - 00010100030000006A02010000000000010100010000006A0201000000000001 - 0100050000006A02010000000000010100060000006A02010000000000010100 - 080000006A02010000000000010100090000006A020100000000000101001E00 - 00006A020100000000000101000A0000006A020100000000000101000B000000 - 6A020100000000000101000C0000006A020100000000000101000E0000006A02 - 0100000000000101000F0000006A02010000000000010100100000006A020100 - 00000000010100110000006A02010000000000010100120000006A0201000000 - 0000010100130000006A02010000000000010100140000006A02010000000000 - 010100150000006A02010000000000010100160000006A020100000000000101 - 00170000006A020100000000000101001D0000006A020100000000000101005C - 010007070000006B02010000000000010100050000006B020100000000000101 - 00080000006B020100000000000101000C0000006B0201000000000001010010 - 0000006B02010000000000010100110000006B02010000000000010100160000 - 006B020100000000000101005D010010070000006C0201000000000001010001 - 0000006C02010000000000010100030000006C02010000000000010100050000 - 006C02010000000000010100080000006C02010000000000010100090000006C - 020100000000000101000A0000006C020100000000000101000C0000006C0201 - 00000000000101000F0000006C02010000000000010100100000006C02010000 - 000000010100110000006C02010000000000010100120000006C020100000000 - 00010100130000006C02010000000000010100140000006C0201000000000001 - 0100160000006C02010000000000010100170000006C02010000000000010100 - 5E010010070000006D02010000000000010100010000006D0201000000000001 - 0100030000006D02010000000000010100050000006D02010000000000010100 - 080000006D02010000000000010100090000006D020100000000000101000A00 - 00006D020100000000000101000C0000006D0201 - - - - MWCodeGen_PPC_structalignmentPPC - MWCodeGen_PPC_tracebacktablesInline - MWCodeGen_PPC_processorGeneric - MWCodeGen_PPC_readonlystrings1 - MWCodeGen_PPC_tocdata1 - MWCodeGen_PPC_profiler0 - MWCodeGen_PPC_fpcontract1 - MWCodeGen_PPC_schedule0 - MWCodeGen_PPC_peephole1 - MWCodeGen_PPC_processorspecific0 - MWCodeGen_PPC_altivec0 - MWCodeGen_PPC_vectortocdata0 - MWCodeGen_PPC_vrsave0 - - - MWDisassembler_PPC_showcode1 - MWDisassembler_PPC_extended1 - MWDisassembler_PPC_mix1 - MWDisassembler_PPC_nohex0 - MWDisassembler_PPC_showdata1 - MWDisassembler_PPC_showexceptions1 - MWDisassembler_PPC_showsym0 - MWDisassembler_PPC_shownames1 - - - GlobalOptimizer_PPC_optimizationlevelLevel2 - GlobalOptimizer_PPC_optforSpeed - - - MWLinker_PPC_linksym1 - MWLinker_PPC_symfullpath1 - MWLinker_PPC_linkmap0 - MWLinker_PPC_nolinkwarnings0 - MWLinker_PPC_dontdeadstripinitcode0 - MWLinker_PPC_permitmultdefs0 - MWLinker_PPC_linkmodeNormal - MWLinker_PPC_initname - MWLinker_PPC_mainname__start - MWLinker_PPC_termname - - - MWPEF_exportsNone - MWPEF_libfolder0 - MWPEF_sortcodeNone - MWPEF_expandbss0 - MWPEF_sharedata0 - MWPEF_olddefversion0 - MWPEF_oldimpversion0 - MWPEF_currentversion0 - MWPEF_fragmentname - MWPEF_collapsereloads0 - - - MWProject_PPC_typeApplication - MWProject_PPC_outfileJS2 - MWProject_PPC_filecreator1297109792 - MWProject_PPC_filetype1297109844 - MWProject_PPC_size4096 - MWProject_PPC_minsize4096 - MWProject_PPC_stacksize64 - MWProject_PPC_flags22720 - MWProject_PPC_symfilename - MWProject_PPC_rsrcname - MWProject_PPC_rsrcheaderNative - MWProject_PPC_rsrctype1061109567 - MWProject_PPC_rsrcid0 - MWProject_PPC_rsrcflags0 - MWProject_PPC_rsrcstore0 - MWProject_PPC_rsrcmerge0 - - - MWAssembler_PPC_auxheader0 - MWAssembler_PPC_symmodeMac - MWAssembler_PPC_dialectPPC - MWAssembler_PPC_prefixfile - MWAssembler_PPC_typecheck0 - MWAssembler_PPC_warnings0 - MWAssembler_PPC_casesensitive0 - - - MWRez_Language_maxwidth80 - MWRez_Language_scriptRoman - MWRez_Language_alignmentAlign1 - MWRez_Language_filtermodeFilterSkip - MWRez_Language_suppresswarnings0 - MWRez_Language_escapecontrolchars1 - MWRez_Language_prefixname - MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' - - - MWWinRC_prefixname - - - MWCodeGen_X86_processorGeneric - MWCodeGen_X86_alignmentbytes8 - MWCodeGen_X86_exceptionsZeroOverhead - MWCodeGen_X86_extinst_mmx0 - MWCodeGen_X86_extinst_3dnow0 - MWCodeGen_X86_use_mmx_3dnow_convention0 - MWCodeGen_X86_machinecodelisting0 - MWCodeGen_X86_intrinsics0 - MWCodeGen_X86_syminfo0 - MWCodeGen_X86_codeviewinfo1 - MWCodeGen_X86_extinst_cmov_fcomi0 - MWCodeGen_X86_extinst_sse0 - - - PDisasmX86_showHeaderstrue - PDisasmX86_showSymTabtrue - PDisasmX86_showCodetrue - PDisasmX86_showSourcefalse - PDisasmX86_showHextrue - PDisasmX86_showRelocationtrue - PDisasmX86_showCommentsfalse - PDisasmX86_showDebugfalse - PDisasmX86_showExceptionsfalse - PDisasmX86_showDatatrue - PDisasmX86_showRawfalse - PDisasmX86_verbosetrue - - - MWDebugger_X86_Exceptions - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - - - - GlobalOptimizer_X86_optimizationlevelLevel0 - GlobalOptimizer_X86_optforSpeed - - - MWLinker_X86_entrypointusageDefault - MWLinker_X86_entrypoint - MWLinker_X86_subsystemWinGUI - MWLinker_X86_subsysmajorid4 - MWLinker_X86_subsysminorid0 - MWLinker_X86_usrmajorid0 - MWLinker_X86_usrminorid0 - MWLinker_X86_commandfile - MWLinker_X86_generatemap0 - MWLinker_X86_linksym0 - MWLinker_X86_linkCV1 - - - MWProject_X86_typeApplication - MWProject_X86_outfilenoname.exe - MWProject_X86_baseaddress4194304 - MWProject_X86_maxstacksize1024 - MWProject_X86_minstacksize4 - MWProject_X86_size1024 - MWProject_X86_minsize4 - MWProject_X86_importlib - - - - Name - InterfaceLib - MacOS - Library - Debug - - - Name - MathLib - MacOS - Library - Debug - - - Name - MSL C++.PPC.Lib - MacOS - Library - Debug - - - Name - MSL MPWCRuntime.Lib - MacOS - Library - Debug - - - Name - utilities.cpp - MacOS - Text - Debug - - - Name - hash.cpp - MacOS - Text - Debug - - - Name - world.cpp - MacOS - Text - Debug - - - Name - js2.cpp - MacOS - Text - Debug - - - Name - parser.cpp - MacOS - Text - Debug - - - Name - numerics.cpp - MacOS - Text - Debug - - - Name - hash.h - MacOS - Text - - - - Name - numerics.h - MacOS - Text - - - - Name - parser.h - MacOS - Text - - - - Name - systemtypes.h - MacOS - Text - - - - Name - utilities.h - MacOS - Text - - - - Name - world.h - MacOS - Text - - - - Name - icodegenerator.cpp - MacOS - Text - Debug - - - Name - icodegenerator.h - MacOS - Text - - - - Name - interpreter.cpp - MacOS - Text - Debug - - - Name - interpreter.h - MacOS - Text - - - - Name - gc.o - MacOS - Library - Debug - - - Name - vmtypes.h - MacOS - Text - - - - Name - vmtypes.cpp - MacOS - Text - Debug - - - Name - jstypes.h - MacOS - Text - - - - Name - jstypes.cpp - MacOS - Text - Debug - - - Name - debugger.cpp - MacOS - Text - Debug - - - Name - debugger.h - MacOS - Text - - - - Name - gc_allocator.h - MacOS - Text - - - - Name - jsclasses.h - MacOS - Text - - - - Name - jsmath.h - MacOS - Text - - - - Name - jsmath.cpp - MacOS - Text - Debug - - - Name - xmlparser.cpp - MacOS - Text - Debug - - - Name - MSL C.PPC MPW.Lib - MacOS - Library - Debug - - - Name - icodeasm.cpp - MacOS - Text - Debug - - - Name - icodeasm.h - MacOS - Text - - - - Name - exception.cpp - MacOS - Text - Debug - - - Name - exception_msgs.cpp - MacOS - Text - Debug - - - Name - lexutils.cpp - MacOS - Text - Debug - - - - - Name - systemtypes.h - MacOS - - - Name - utilities.h - MacOS - - - Name - numerics.h - MacOS - - - Name - hash.h - MacOS - - - Name - gc_allocator.h - MacOS - - - Name - jsclasses.h - MacOS - - - Name - jsmath.h - MacOS - - - Name - jstypes.h - MacOS - - - Name - vmtypes.h - MacOS - - - Name - parser.h - MacOS - - - Name - icodegenerator.h - MacOS - - - Name - interpreter.h - MacOS - - - Name - world.h - MacOS - - - Name - debugger.h - MacOS - - - Name - utilities.cpp - MacOS - - - Name - numerics.cpp - MacOS - - - Name - hash.cpp - MacOS - - - Name - jsmath.cpp - MacOS - - - Name - jstypes.cpp - MacOS - - - Name - vmtypes.cpp - MacOS - - - Name - parser.cpp - MacOS - - - Name - icodegenerator.cpp - MacOS - - - Name - interpreter.cpp - MacOS - - - Name - world.cpp - MacOS - - - Name - debugger.cpp - MacOS - - - Name - xmlparser.cpp - MacOS - - - Name - js2.cpp - MacOS - - - Name - gc.o - MacOS - - - Name - MSL C++.PPC.Lib - MacOS - - - Name - MSL MPWCRuntime.Lib - MacOS - - - Name - MSL C.PPC MPW.Lib - MacOS - - - Name - InterfaceLib - MacOS - - - Name - MathLib - MacOS - - - Name - icodeasm.cpp - MacOS - - - Name - icodeasm.h - MacOS - - - Name - exception.cpp - MacOS - - - Name - exception_msgs.cpp - MacOS - - - Name - lexutils.cpp - MacOS - - - - - - - JS2 - JS2Debug - JS2MPW - JS2MPWDebug - - - - Headers - - JS2 - Name - systemtypes.h - MacOS - - - JS2 - Name - utilities.h - MacOS - - - JS2 - Name - numerics.h - MacOS - - - JS2 - Name - hash.h - MacOS - - - JS2 - Name - gc_allocator.h - MacOS - - - JS2 - Name - jsclasses.h - MacOS - - - JS2 - Name - jsmath.h - MacOS - - - JS2 - Name - jstypes.h - MacOS - - - JS2 - Name - vmtypes.h - MacOS - - - JS2 - Name - parser.h - MacOS - - - JS2 - Name - icodeasm.h - MacOS - - - JS2 - Name - icodegenerator.h - MacOS - - - JS2 - Name - interpreter.h - MacOS - - - JS2 - Name - world.h - MacOS - - - JS2 - Name - debugger.h - MacOS - - - Sources - - JS2 - Name - utilities.cpp - MacOS - - - JS2 - Name - numerics.cpp - MacOS - - - JS2 - Name - exception.cpp - MacOS - - - JS2 - Name - exception_msgs.cpp - MacOS - - - JS2 - Name - hash.cpp - MacOS - - - JS2 - Name - jsmath.cpp - MacOS - - - JS2 - Name - lexutils.cpp - MacOS - - - JS2 - Name - jstypes.cpp - MacOS - - - JS2 - Name - vmtypes.cpp - MacOS - - - JS2 - Name - parser.cpp - MacOS - - - JS2 - Name - icodeasm.cpp - MacOS - - - JS2 - Name - icodegenerator.cpp - MacOS - - - JS2 - Name - interpreter.cpp - MacOS - - - JS2 - Name - world.cpp - MacOS - - - JS2 - Name - debugger.cpp - MacOS - - - JS2 - Name - xmlparser.cpp - MacOS - - - JS2 - Name - js2.cpp - MacOS - - - JS Libraries - - JS2 - Name - gc.o - MacOS - - - Mac Libraries - - JS2 - Name - MSL C.PPC.Lib - MacOS - - - JS2 - Name - MSL C++.PPC.Lib - MacOS - - - JS2 - Name - MSL SIOUX.PPC.Lib - MacOS - - - JS2 - Name - MSL RuntimePPC.Lib - MacOS - - - JS2 - Name - InterfaceLib - MacOS - - - JS2 - Name - MathLib - MacOS - - - MPW Libraries - - JS2MPWDebug - Name - MSL C.PPC MPW.Lib - MacOS - - - JS2MPWDebug - Name - MSL MPWCRuntime.Lib - MacOS - - - - - diff --git a/mozilla/js/js2/macbuild/JS2Debug.prefix b/mozilla/js/js2/macbuild/JS2Debug.prefix deleted file mode 100644 index 20b5a515f33..00000000000 --- a/mozilla/js/js2/macbuild/JS2Debug.prefix +++ /dev/null @@ -1,2 +0,0 @@ -#define XP_MAC 1 -#define DEBUG 1 diff --git a/mozilla/js/js2/macbuild/JS2MPW.prefix b/mozilla/js/js2/macbuild/JS2MPW.prefix deleted file mode 100644 index 350d2dfb3eb..00000000000 --- a/mozilla/js/js2/macbuild/JS2MPW.prefix +++ /dev/null @@ -1,2 +0,0 @@ -#define XP_MAC 1 -#define XP_MAC_MPW 1 diff --git a/mozilla/js/js2/macbuild/JS2MPWDebug.prefix b/mozilla/js/js2/macbuild/JS2MPWDebug.prefix deleted file mode 100644 index be8dbb5dff4..00000000000 --- a/mozilla/js/js2/macbuild/JS2MPWDebug.prefix +++ /dev/null @@ -1,3 +0,0 @@ -#define XP_MAC 1 -#define XP_MAC_MPW 1 -#define DEBUG 1 diff --git a/mozilla/js/js2/macbuild/gc.mcp b/mozilla/js/js2/macbuild/gc.mcp deleted file mode 100644 index 04b63f596ed5695a830645cd53e399dedcfc7447..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59282 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 diff --git a/mozilla/js/js2/macbuild/gc.o b/mozilla/js/js2/macbuild/gc.o deleted file mode 100644 index e6939f5ef5050935aa686126b61455f904b7181f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206103 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 diff --git a/mozilla/js/js2/macbuild/gc_config.h b/mozilla/js/js2/macbuild/gc_config.h deleted file mode 100644 index 81b197e8a28..00000000000 --- a/mozilla/js/js2/macbuild/gc_config.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - MacOS_config.h - - Configuration flags for Macintosh development systems. - - - - 11/16/95 pcb Updated compilation flags to reflect latest 4.6 Makefile. - - by Patrick C. Beard. - */ -/* Boehm, November 17, 1995 12:10 pm PST */ - -#ifdef __MWERKS__ - -// for CodeWarrior Pro with Metrowerks Standard Library (MSL). -// #define MSL_USE_PRECOMPILED_HEADERS 0 -#include -#ifndef __STDC__ -#define __STDC__ 0 -#endif - -#endif /* __MWERKS__ */ - -// these are defined again in gc_priv.h. -#undef TRUE -#undef FALSE - -#define ALL_INTERIOR_POINTERS // follows interior pointers. -#define SILENT // no collection messages. -//#define DONT_ADD_BYTE_AT_END // no padding. -//#define SMALL_CONFIG // whether to use a smaller heap. -#define NO_SIGNALS // signals aren't real on the Macintosh. -#define USE_TEMPORARY_MEMORY // use Macintosh temporary memory. -//#define FIND_LEAK // use as a leak detector. -//#define LARGE_CONFIG // try a big heap, for fun. - -// CFLAGS= -O -DNO_SIGNALS -DSILENT -DALL_INTERIOR_POINTERS -// -//LIBGC_CFLAGS= -O -DNO_SIGNALS -DSILENT \ -// -DREDIRECT_MALLOC=GC_malloc_uncollectable \ -// -DDONT_ADD_BYTE_AT_END -DALL_INTERIOR_POINTERS -// Flags for building libgc.a -- the last two are required. -// -// Setjmp_test may yield overly optimistic results when compiled -// without optimization. -// -DSILENT disables statistics printing, and improves performance. -// -DCHECKSUMS reports on erroneously clear dirty bits, and unexpectedly -// altered stubborn objects, at substantial performance cost. -// Use only for incremental collector debugging. -// -DFIND_LEAK causes the collector to assume that all inaccessible -// objects should have been explicitly deallocated, and reports exceptions. -// Finalization and the test program are not usable in this mode. -// -DSOLARIS_THREADS enables support for Solaris (thr_) threads. -// (Clients should also define SOLARIS_THREADS and then include -// gc.h before performing thr_ or GC_ operations.) -// This is broken on nonSPARC machines. -// -DALL_INTERIOR_POINTERS allows all pointers to the interior -// of objects to be recognized. (See gc_priv.h for consequences.) -// -DSMALL_CONFIG tries to tune the collector for small heap sizes, -// usually causing it to use less space in such situations. -// Incremental collection no longer works in this case. -// -DLARGE_CONFIG tunes the collector for unusually large heaps. -// Necessary for heaps larger than about 500 MB on most machines. -// Recommended for heaps larger than about 64 MB. -// -DDONT_ADD_BYTE_AT_END is meaningful only with -// -DALL_INTERIOR_POINTERS. Normally -DALL_INTERIOR_POINTERS -// causes all objects to be padded so that pointers just past the end of -// an object can be recognized. This can be expensive. (The padding -// is normally more than one byte due to alignment constraints.) -// -DDONT_ADD_BYTE_AT_END disables the padding. -// -DNO_SIGNALS does not disable signals during critical parts of -// the GC process. This is no less correct than many malloc -// implementations, and it sometimes has a significant performance -// impact. However, it is dangerous for many not-quite-ANSI C -// programs that call things like printf in asynchronous signal handlers. -// -DOPERATOR_NEW_ARRAY declares that the C++ compiler supports the -// new syntax "operator new[]" for allocating and deleting arrays. -// See gc_cpp.h for details. No effect on the C part of the collector. -// This is defined implicitly in a few environments. -// -DREDIRECT_MALLOC=X causes malloc, realloc, and free to be defined -// as aliases for X, GC_realloc, and GC_free, respectively. -// Calloc is redefined in terms of the new malloc. X should -// be either GC_malloc or GC_malloc_uncollectable. -// The former is occasionally useful for working around leaks in code -// you don't want to (or can't) look at. It may not work for -// existing code, but it often does. Neither works on all platforms, -// since some ports use malloc or calloc to obtain system memory. -// (Probably works for UNIX, and win32.) -// -DNO_DEBUG removes GC_dump and the debugging routines it calls. -// Reduces code size slightly at the expense of debuggability. \ No newline at end of file diff --git a/mozilla/js/js2/tests/calls.js b/mozilla/js/js2/tests/calls.js deleted file mode 100644 index f0ce431b8d8..00000000000 --- a/mozilla/js/js2/tests/calls.js +++ /dev/null @@ -1,85 +0,0 @@ - -load("verify.js"); - - -function f1(a = 1) { return a; } - -function f2(a, b = 1) { return a + b; } - -function f3(a, b = 1, c = 2) { return a + b + c; } - -function f4(a, b, c) { return a + b + c; } - - - -function f5(| a) { return a; } - -function f6(| a = 1) { return a; } - -function f7(| 'q' a = 1) { return a; } - - -function f8(a,| b) { return a + b; } - -function f9(a,| 'q' b) { return a + b; } - -function f10(a,| 'q' b = 1) { return a + b; } - - -function f11(a, b, c, ...) { return a + b + c; } - -function f12(a, b, c, ...d) { return a + b + c + d[0]; } - -function f13(a, b, c, ...d) { return a + b + c + d[0] + d[1]; } - - -function f14(| a, b, c) { return a + b - c; } - -function f15(| a, b = 2, c) { return a + b - c; } - - - -verify( f1(), 1); -verify( f1(2), 2); - -verify( f2(1), 2); -verify( f2(1,2), 3); - -verify( f3(1), 4); -verify( f3(1,2), 5); -verify( f3(1,2,3), 6); - -verify( f4(1,2,3), 6); - - -verify( f5(a:1), 1); - -verify( f6(), 1); -verify( f6(a:2), 2); - -verify( f7(a:1), 1); -verify( f7(q:1), 1); -verify( f7(), 1); - -verify( f8(1, b:2), 3); - -verify( f9(1, b:1), 2); -verify( f9(1, q:1), 2); - -verify( f10(1), 2); -verify( f10(1, b:2), 3); - -verify( f11(1, 2, 3), 6); - -verify( f12(1, 2, 3, 4), 10); -verify( f12(1, 2, 3, 4, 5), 10); - -verify( f13(1, 2, 3, 4, 5), 15); -verify( f13(1, 2, 3, 4, 5, 6), 15); - -verify( f14(a:4, b:2, c:3), 3); -verify( f14(c:3, b:2, a:4), 3); -verify( f14(b:2, a:4, c:3), 3); - -verify( f15(a:4, c:3), 3); - diff --git a/mozilla/js/js2/tests/class.xml b/mozilla/js/js2/tests/class.xml deleted file mode 100644 index fcdfa451c3e..00000000000 --- a/mozilla/js/js2/tests/class.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - RETURN R0 - - - - - - GENERIC_BINARY_OP R3, Add, R1, R2 - SET_SLOT R0, 0, R3 - RETURN_VOID - - - - - - - GET_STATIC R1, "D", 1 - BIND_THIS R2, R0, R1 - CALL R3, R2, () - RETURN R0 - - - - - NEW_CLASS R2, "E" - GET_STATIC R3, "E", 1 - BIND_THIS R4, R2, R3 - CALL R1, R4, () - LOAD_IMMEDIATE R2, 1 - LOAD_IMMEDIATE R3, 4 - GET_METHOD R4, R1, 0 - CALL R5, R4, (R2, R3) - GET_SLOT R2, R1, 0 - LOAD_NAME R1, "print" - CALL R1, R1, (R2) - RETURN_VOID - - - - - - GET_CLOSURE R2, 0 - GET_SLOT R3, R2, 1 - GENERIC_BINARY_OP R3, Add, R3, R1 - RETURN R3 - - - - - NEW_CLOSURE R2, "anon_1" - LOAD_IMMEDIATE R3, 1 - CALL R3, R2, (R3) - RETURN R3 - - - diff --git a/mozilla/js/js2/tests/classes.js b/mozilla/js/js2/tests/classes.js deleted file mode 100644 index 1e884b4b6b3..00000000000 --- a/mozilla/js/js2/tests/classes.js +++ /dev/null @@ -1,28 +0,0 @@ -class A { - static var x = 0; - - static function f() - { - return A.x++; - } -} - -class Point3D { - var x = 0, y = 0, z = 0; - - function set(x, y, z) { - this.x = x; - this.y = y; - this.z = z; - return this; - } - - function setX(x) { this.x = x; } - function getX() { return this.x; } - - function setY(y) { this.y = y; } - function getY() { return this.y; } - - function setZ(z) { this.z = z; } - function getZ() { return this.z; } -} diff --git a/mozilla/js/js2/tests/constructors.js b/mozilla/js/js2/tests/constructors.js deleted file mode 100644 index 95db10bce56..00000000000 --- a/mozilla/js/js2/tests/constructors.js +++ /dev/null @@ -1,22 +0,0 @@ -load("verify.js"); - -class C { - var a:String; - - constructor C(p:String) {this.a = "New "+p} - constructor make(p:String) {this.a = "Make "+p} - static function obtain(p:String):C {return new C(p)} - } - -var c:C = new C("one"); -var d:C = C.C("two"); -var e:C = C.make("three"); -var f:C = C.obtain("four"); - -verify( c.a, "New one" ); -verify( d.a, "New two" ); -verify( e.a, "Make three" ); -verify( f.a, "New four" ); - - - diff --git a/mozilla/js/js2/tests/fields.js b/mozilla/js/js2/tests/fields.js deleted file mode 100644 index c5bac3cca08..00000000000 --- a/mozilla/js/js2/tests/fields.js +++ /dev/null @@ -1,25 +0,0 @@ - -load("verify.js"); - -class C { -virtual var x:Integer; -var y:Integer; -} - -class D extends C { -override function set x(a:Integer):Integer {return y = a*2} -} - - - var c:C = new C; - c.x = 5; - -verify(c.x, 5.0); -verify(c.y, NaN); - - var d:D = new D; - d.x = 5; - -verify(d.x, NaN); -verify(d.y, 10.0); - diff --git a/mozilla/js/js2/tests/methods.js b/mozilla/js/js2/tests/methods.js deleted file mode 100644 index 15ff72a85aa..00000000000 --- a/mozilla/js/js2/tests/methods.js +++ /dev/null @@ -1,16 +0,0 @@ - -load("verify.js"); - -class C { - var x:Integer = 3; - function m() {return x} - function n(x) {return x+4} - } - - var c:C = new C; -verify( c.m(), 3 ); // returns 3 -verify( c.n(7), 11 ); // returns 11 - var f:Function = c.m; // f is a zero-argument function with this bound to c -verify( f(), 3 ); // returns 3 - c.x = 8; -verify( f(), 8 ); // returns 8 \ No newline at end of file diff --git a/mozilla/js/js2/tests/statics.js b/mozilla/js/js2/tests/statics.js deleted file mode 100644 index 7845bba6570..00000000000 --- a/mozilla/js/js2/tests/statics.js +++ /dev/null @@ -1,61 +0,0 @@ - -load("verify.js"); - -class C { - static var v = "Cv"; - static var x = "Cx"; - static var y = "Cy"; - static var z = "Cz"; - } -/* - interface A { - static var x = "Ax"; - static var i = "Ai"; - static var j = "Aj"; - } - - interface B { - static var x = "Bx"; - static var y = "By"; - static var j = "Bj"; - } -*/ - class D extends C implements A, B { - static var v = "Dv"; - } - - - -verify( C.v, "Cv" ); -verify( C.x, "Cx" ); -verify( C.y, "Cy" ); -verify( C.z, "Cz" ); -/* -verify( A.x, "Ax" ); -verify( B.y, "By" ); -*/ - -verify( D.v, "Dv" ); -verify( D.x, "Cx" ); -verify( D.y, "Cy" ); -verify( D.z, "Cz" ); - -/* -verify( D.i, "Ai" ); -*/ - -// verify( D.j; // error because of ambiguity: "Aj" or "Bj"? - -/* -verify( D.A::j, "Aj" ); -verify( D.B::j, "Bj" ); -verify( D.A::x, "Ax" ); -verify( D.A::i, "Ai" ); -*/ - -D.x = 5; -verify( C.x, 5 ); -C.v = 7; -verify( D.v, "Dv" ); -verify( C.v, 7 ); - diff --git a/mozilla/js/js2/tests/verify.js b/mozilla/js/js2/tests/verify.js deleted file mode 100644 index d408b757f93..00000000000 --- a/mozilla/js/js2/tests/verify.js +++ /dev/null @@ -1,11 +0,0 @@ -count = 0; - -function verify(a, b) -{ - if ((a == b) || ((b != b) && (a == undefined)) ) - print("Test " + count + " succeeded"); - else - print("Test " + count + " failed, expected " + b + ", got " + a); - count++; -} - diff --git a/mozilla/js/js2/tools/gencode.pl b/mozilla/js/js2/tools/gencode.pl deleted file mode 100644 index 332d975748f..00000000000 --- a/mozilla/js/js2/tools/gencode.pl +++ /dev/null @@ -1,278 +0,0 @@ -#!/usr/bin/perl -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is JavaScript 2 Prototype. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1997-1999 Netscape Communications Corporation. All -# Rights Reserved. -# -# Alternatively, the contents of this file may be used under the -# terms of the GNU Public License (the "GPL"), in which case the -# provisions of the GPL are applicable instead of those above. -# If you wish to allow use of your version of this file only -# under the terms of the GPL and not to allow others to use your -# version of this file under the NPL, indicate your decision by -# deleting the provisions above and replace them with the notice -# and other provisions required by the GPL. If you do not delete -# the provisions above, a recipient may use your version of this -# file under either the NPL or the GPL. -# -# Contributers: -# - -use strict; -use jsicodes; -############################################################################## -# HELLO, ARE YOU READING THIS? -# The opcode definition is now in jsicodes.pm, please go there to make changes. -############################################################################## - -my $tab = " "; -my $init_tab = $tab; -my $enum_decs = ""; -my $class_decs = ""; -my @name_array; -my $opcode_maxlen = 0; - -my $k; - -if (!$ARGV[0]) { - # no args, collect all opcodes - for $k (sort(keys(%jsicodes::ops))) { - &collect($k); - } -} else { - # collect defs for only the opcodes specified on the command line - while ($k = pop(@ARGV)) { - &collect (uc($k)); - } -} - -&spew; - -sub collect { - # grab the info from the $k record in $ops, and append it to - # $enum_decs, @name_array, and $class_decs. - my ($k) = @_; - - if (length($k) > $opcode_maxlen) { - $opcode_maxlen = length($k); - } - - my $c = $jsicodes::ops{$k}; - if (!$c) { - die ("Unknown opcode, $k\n"); - } - - my $opname = $k; - my $cname = jsicodes::get_classname ($k); - my $super = $c->{"super"}; - my $constructor = $super; - my @params; - - if ($c->{"params"}) { - @params = @{$c->{"params"}}; - } else { - @params = (); - } - - my $rem = $c->{"rem"}; - my ($dec_list, $call_list, $template_list) = - &get_paramlists(@params); - my @types = split (", ", $template_list); - - my $constr_params = $call_list ? $opname . ", " . $call_list : $opname; - - if ($super =~ /Instruction_\d/) { - $super .= "<" . $template_list . ">"; - } - - push (@name_array, $opname); - $enum_decs .= "$init_tab$tab$opname, /* $rem */\n"; - if ($super) { - $class_decs .= ($init_tab . "class $cname : public $super {\n" . - $init_tab . "public:\n" . - $init_tab . $tab . "/* $rem */\n" . - $init_tab . $tab . "$cname ($dec_list) :\n" . - $init_tab . $tab . $tab . "$super\n" . - "$init_tab$tab$tab($constr_params) " . - "{};\n"); - - if (!$c->{"super_has_print"}) { - $class_decs .= ($init_tab . $tab . - "virtual Formatter& print(Formatter& f) {\n" . - $init_tab . $tab . $tab . "f << opcodeNames[$opname]" . - &get_print_body(@types) . ";\n" . - $init_tab . $tab . $tab . "return f;\n" . - $init_tab . $tab . "}\n"); - - my $printops_body = &get_printops_body(@types); - my $printops_decl = "virtual Formatter& printOperands(Formatter& f, "; - -# $printops_decl .= ($dec_list =~ /ArgumentList/) ? -# "const JSValues& registers" : -# "const JSValues& registers"; - $printops_decl .= ($printops_body eq "") ? - "const JSValues& /*registers*/" : - "const JSValues& registers"; - $printops_decl .= ") {\n"; - - $class_decs .= ($init_tab . $tab . - $printops_decl . - $printops_body . - $init_tab . $tab . $tab . "return f;\n" . - $init_tab . $tab . "}\n"); - - } else { - $class_decs .= $init_tab . $tab . - "/* print() and printOperands() inherited from $super */\n"; - } - - $class_decs .= $init_tab . "};\n\n"; - } -} - -sub spew { - # print the info in $enum_decs, @name_aray, and $class_decs to stdout. - my $opname; - - print "// THIS FILE IS MACHINE GENERATED! DO NOT EDIT BY HAND!\n\n"; - - print "#if !defined(OPCODE_NAMES)\n\n"; - - print $tab . "enum {\n$enum_decs$tab};\n\n"; - - print $class_decs; - - print "#else\n\n"; - - print $tab . "char *opcodeNames[] = {\n"; - - for $opname (@name_array) { - print "$tab$tab\"$opname"; - for (0 .. $opcode_maxlen - length($opname) - 1) { - print " "; - } - print "\",\n" - } - print "$tab};\n\n"; - - print "#endif\n\n" -} - -sub get_paramlists { - # parse the params entry (passed into @types) into various parameter lists - # used in the class declaration - my @types = @_; - my @dec; - my @call; - my @tostr; - my @template; - my $op = 1; - my $type; - - for $type (@types) { - my $pfx; - my $deref; - my $member; - my $default; - - ($type, $default) = split (" = ", $type); - if ($default ne "") { - $default = " = " . $default; - } - - $pfx = $deref = ""; - $member = "mOp$op"; - - push (@dec, "$type aOp$op" . "$default"); - push (@call, "aOp$op"); - push (@template, $type); - $op++; - } - - return (join (", ", @dec), join (", ", @call), join (", ", @template)); -} - -sub get_print_body { - # generate the body of the print() function - my (@types) = @_; - my $type; - my @oplist; - my $op = 1; - my $in = $init_tab . $tab . $tab; - - for $type (@types) { - - if ($type eq "TypedRegister") { - push (@oplist, "mOp$op" ); - } elsif ($type eq "Label*") { - push (@oplist, "\"Offset \" << ((mOp$op) ? mOp$op->mOffset : NotAnOffset)") - } elsif ($type =~ /String/) { - push (@oplist, "\"'\" << *mOp$op << \"'\""); - } elsif ($type =~ /JSType *\*/) { - push (@oplist, "\"'\" << mOp$op->getName() << \"'\""); - } elsif ($type =~ /JSFunction *\*/) { - push (@oplist, "\"JSFunction\""); - } elsif ($type =~ /bool/) { - push (@oplist, "\"'\" << ((mOp$op) ? \"true\" : \"false\") << \"'\""); - } elsif ($type =~ /ICodeModule/) { - push (@oplist, "\"ICodeModule\""); - } elsif ($type =~ /FunctionDefinition/) { - push (@oplist, "\"FunctionDefinition\""); - } elsif ($type =~ /JSClass *\*/) { - push (@oplist, "mOp$op->getName()"); - } else { - push (@oplist, "mOp$op"); - } - - $op++; - } - - my $rv = join (" << \", \" << ", @oplist); - if ($rv ne "") { - $rv = " << \"\\t\" << " . $rv; - } - - return $rv; -} - -sub get_printops_body { - # generate the body of the printOperands() function - my (@types) = @_; - my $type; - my @oplist; - my $op = 1; - my $in = $init_tab . $tab . $tab; - - for $type (@types) { - - if ($type eq "TypedRegister") { - push (@oplist, "getRegisterValue(registers, mOp$op.first)"); -# push (@oplist, "mOp$op.first"); -# push (@oplist, "\"R\" << mOp$op.first << '=' << registers[mOp$op.first]"); - } elsif ($type eq "ArgumentList") { - push (@oplist, "ArgList(mOp$op, registers)"); - } - - $op++; - } - - my $rv = join (" << \", \" << ", @oplist); - if ($rv ne "") { - $rv = $init_tab . $tab . $tab . "f << " . $rv . ";\n"; - } - - return $rv; -} diff --git a/mozilla/js/js2/tools/genmap.pl b/mozilla/js/js2/tools/genmap.pl deleted file mode 100644 index 113b1ac2615..00000000000 --- a/mozilla/js/js2/tools/genmap.pl +++ /dev/null @@ -1,213 +0,0 @@ -#!/usr/bin/perl -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is JavaScript 2 Prototype. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1997-1999 Netscape Communications Corporation. All -# Rights Reserved. -# -# Alternatively, the contents of this file may be used under the -# terms of the GNU Public License (the "GPL"), in which case the -# provisions of the GPL are applicable instead of those above. -# If you wish to allow use of your version of this file only -# under the terms of the GPL and not to allow others to use your -# version of this file under the NPL, indicate your decision by -# deleting the provisions above and replace them with the notice -# and other provisions required by the GPL. If you do not delete -# the provisions above, a recipient may use your version of this -# file under either the NPL or the GPL. -# -# Contributers: -# - -use strict; -use jsicodes; - -my $tab = " "; - -my @map = &get_map(); -my $map_body = join ("\n", @map); -my $map_size = $#map + 1; -my $gen_body = &get_generator(); - -print <icodeID) - { -$gen_body - default: - NOT_REACHED("Unknown icodeID"); - } - - return i; - - } - - -} -} - -#endif /* #ifdef __icodemap_h */ -MAP_END - -sub get_map { - my $k; - my @map; - for $k (sort(keys(%jsicodes::ops))) { - my $map_entry .= $tab . $tab . "{\"$k\", {"; - my $c = $jsicodes::ops{$k}; - if ($c->{"params"}) { - my @ot; - my @params = @{$c->{"params"}}; - my $p; - @ot = (); - for $p (@params) { - if ($p eq "ArgumentList*") { - push (@ot, "otArgumentList"); - } elsif ($p eq "ExprNode::Kind") { - push (@ot, "otExprNodeKind"); - } elsif ($p eq "ICodeModule*") { - push (@ot, "otICodeModule"); - } elsif ($p eq "JSClass*") { - push (@ot, "otJSClass"); - } elsif ($p eq "JSFunction*") { - push (@ot, "otJSFunction"); - } elsif ($p eq "JSString*") { - push (@ot, "otJSString"); - } elsif ($p eq "JSType*") { - push (@ot, "otJSType"); - } elsif ($p eq "Label*") { - push (@ot, "otLabel"); - } elsif ($p eq "TypedRegister") { - push (@ot, "otRegister"); - } elsif ($p eq "bool") { - push (@ot, "otBool"); - } elsif ($p eq "const StringAtom*") { - push (@ot, "otStringAtom"); - } elsif ($p eq "double") { - push (@ot, "otDouble"); - } elsif ($p eq "uint32") { - push (@ot, "otUInt32"); - } else { - die "unknown parameter type '$p' for icode '$k'.\n"; - } - } - $map_entry .= join (", ", @ot); - } else { - $map_entry .= "otNone"; - } - $map_entry .= "}},"; - push (@map, $map_entry); - } - - return @map; -} - -sub get_generator { - my $k; - my $rval = ""; - my $icode_id = 0; - for $k (sort(keys(%jsicodes::ops))) { - my $c = $jsicodes::ops{$k}; - my @args = (); - if ($c->{"params"}) { - my @params = @{$c->{"params"}}; - my $arg_num = 0; - my $p; - for $p (@params) { - if ($p eq "TypedRegister") { - push (@args, "TypedRegister(static_cast(node->operand[$arg_num].data), 0)"); - } elsif ($p eq "ArgumentList") { - push (@args, "*(reinterpret_cast(node->operand[$arg_num].data))"); - } elsif ($p =~ /\*$/) { - push (@args, "reinterpret_cast<$p>(node->operand[$arg_num].data)"); - } else { - push (@args, "static_cast<$p>(node->operand[$arg_num].data)"); - } - $arg_num++; - } - } - - $rval .= $tab . $tab . $tab . "case $icode_id:\n"; - $rval .= $tab . $tab . $tab . $tab . - "i = new " . &jsicodes::get_classname($k) . " (" . join (", ", @args) . - ");\n"; - $rval .= $tab . $tab . $tab . $tab . "break;\n"; - $icode_id++; - } - - return $rval; -} - diff --git a/mozilla/js/js2/tools/icode_query.pl b/mozilla/js/js2/tools/icode_query.pl deleted file mode 100644 index 5588d5847b3..00000000000 --- a/mozilla/js/js2/tools/icode_query.pl +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/perl -# -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is JavaScript 2 Prototype. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1997-1999 Netscape Communications Corporation. All -# Rights Reserved. -# -# Alternatively, the contents of this file may be used under the -# terms of the GNU Public License (the "GPL"), in which case the -# provisions of the GPL are applicable instead of those above. -# If you wish to allow use of your version of this file only -# under the terms of the GPL and not to allow others to use your -# version of this file under the NPL, indicate your decision by -# deleting the provisions above and replace them with the notice -# and other provisions required by the GPL. If you do not delete -# the provisions above, a recipient may use your version of this -# file under either the NPL or the GPL. -# -# Contributers: -# - -use strict; -use jsicodes; - -&query_types(); - -sub query_types { - # shows types used by all icodes - my $k; - my %types; - - for $k (sort(keys(%jsicodes::ops))) { - my $c = $jsicodes::ops{$k}; - if ($c->{"params"}) { - my @params = @{$c->{"params"}}; - my $p; - for $p (@params) { - $types{$p} = 1; - } - } - } - - print ("types used: " . join (", ", sort(keys(%types))) . "\n" ); -} diff --git a/mozilla/js/js2/tools/jsicodes.pm b/mozilla/js/js2/tools/jsicodes.pm deleted file mode 100644 index c2764a269a3..00000000000 --- a/mozilla/js/js2/tools/jsicodes.pm +++ /dev/null @@ -1,444 +0,0 @@ -# The contents of this file are subject to the Netscape Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/NPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express oqr -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is JavaScript Core Tests. -# -# The Initial Developer of the Original Code is Netscape -# Communications Corporation. Portions created by Netscape are -# Copyright (C) 1997-1999 Netscape Communications Corporation. All -# Rights Reserved. -# -# Alternatively, the contents of this file may be used under the -# terms of the GNU Public License (the "GPL"), in which case the -# provisions of the GPL are applicable instead of those above. -# If you wish to allow use of your version of this file only -# under the terms of the GPL and not to allow others to use your -# version of this file under the NPL, indicate your decision by -# deleting the provisions above and replace them with the notice -# and other provisions required by the GPL. If you do not delete -# the provisions above, a recipient may use your version of this -# file under either the NPL or the GPL. -# -# Contributers: -# - -package jsicodes; - -use strict; -use vars qw(%ops @ISA); - -require Exporter; -@ISA = qw(Exporter); - -sub get_classname { - # munge an OPCODE_MNEMONIC into a ClassName - my ($enum_name) = @_; - my @words = split ("_", $enum_name); - my $cname = ""; - my $i = 0; - my $word; - - for $word (@words) { - if ((length($word) == 2) && ($i != 0)) { - $cname .= uc($word); - } else { - $cname .= uc(substr($word, 0, 1)) . lc(substr($word, 1)); - } - $i++; - } - - return $cname; -} - - -# -# fields are: -# -# * super: Class to inherit from, if super is Instruction_(1|2|3), the script -# will automatically append the correct template info based on -# |params| -# * super_has_print: Set to 1 if you want to inherit the print() and -# print_args() methods from the superclass, set to 0 -# (or just don't set) to generate print methods. -# -# * rem: Remark you want to show up after the enum def, and inside the class. -# * params: The parameter list expected by the constructor, you can specify a -# default value, using the syntax, [ ("Type = default") ]. -# -# class names will be generated based on the opcode mnemonic. See the -# subroutine get_classname for the implementation. Basically underscores will -# be removes and the class name will be WordCapped, using the positions where -# the underscores were as word boundries. The only exception occurs when a -# word is two characters, in which case both characters will be capped, -# as in BRANCH_GT -> BranchGT. -# - -# -# template definitions for compare, arithmetic, and conditional branch ops -# -my $binary_op = - { - super => "Instruction_3", -# super_has_print => 1, - rem => "dest, source1, source2", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; - -my $math_op = - { - super => "Arithmetic", - super_has_print => 1, - rem => "dest, source1, source2", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; - -my $cbranch_op = - { - super => "GenericBranch", - super_has_print => 1, - rem => "target label, condition", - params => [ ("Label*", "TypedRegister") ] - }; - -my $unary_op = - { - super => "Instruction_2", - rem => "dest, source", - params => [ ("TypedRegister", "TypedRegister") ] - }; - -# -# op defititions -# -$ops{"NOP"} = - { - super => "Instruction", - rem => "do nothing and like it", - }; -$ops{"DEBUGGER"} = - { - super => "Instruction", - rem => "drop to the debugger", - }; -$ops{"GENERIC_BINARY_OP"} = - { - super => "Instruction_4", - rem => "dest, op, source1, source2", - params => [ ("TypedRegister", "ExprNode::Kind", "TypedRegister", "TypedRegister") ] - }; -$ops{"MOVE"} = - { - super => "Instruction_2", - rem => "dest, source", - params => [ ("TypedRegister", "TypedRegister") ] - }; -$ops{"LOAD_IMMEDIATE"} = - { - super => "Instruction_2", - rem => "dest, immediate value (double)", - params => [ ("TypedRegister", "double" ) ] - }; -$ops{"LOAD_NULL"} = - { - super => "Instruction_1", - rem => "dest", - params => [ ("TypedRegister") ] - }; -$ops{"LOAD_TRUE"} = - { - super => "Instruction_1", - rem => "dest", - params => [ ("TypedRegister" ) ] - }; -$ops{"LOAD_FALSE"} = - { - super => "Instruction_1", - rem => "dest", - params => [ ("TypedRegister" ) ] - }; -$ops{"LOAD_STRING"} = - { - super => "Instruction_2", - rem => "dest, immediate value (string)", - params => [ ("TypedRegister", "JSString*" ) ] - }; -$ops{"LOAD_NAME"} = - { - super => "Instruction_2", - rem => "dest, name", - params => [ ("TypedRegister", "const StringAtom*" ) ] - }; -$ops{"LOAD_TYPE"} = - { - super => "Instruction_2", - rem => "dest, type", - params => [ ("TypedRegister", "JSType*" ) ] - }; -$ops{"SUPER"} = - { - super => "Instruction_1", - rem => "dest", - params => [ ("TypedRegister" ) ] - }; -$ops{"SAVE_NAME"} = - { - super => "Instruction_2", - rem => "name, source", - params => [ ("const StringAtom*", "TypedRegister") ] - }; -$ops{"NEW_OBJECT"} = - { - super => "Instruction_2", - rem => "dest, constructor", - params => [ ("TypedRegister", "TypedRegister") ] - }; -$ops{"NEW_CLASS"} = - { - super => "Instruction_2", - rem => "dest, class", - params => [ ("TypedRegister", "JSClass*") ] - }; -$ops{"NEW_FUNCTION"} = - { - super => "Instruction_2", - rem => "dest, ICodeModule", - params => [ ("TypedRegister", "ICodeModule*") ] - }; -$ops{"NEW_ARRAY"} = - { - super => "Instruction_1", - rem => "dest", - params => [ ("TypedRegister") ] - }; -$ops{"DELETE_PROP"} = - { - super => "Instruction_3", - rem => "dest, object, prop name", - params => [ ("TypedRegister", "TypedRegister", "const StringAtom*") ] - }; -$ops{"GET_PROP"} = - { - super => "Instruction_3", - rem => "dest, object, prop name", - params => [ ("TypedRegister", "TypedRegister", "const StringAtom*") ] - }; -$ops{"SET_PROP"} = - { - super => "Instruction_3", - rem => "object, name, source", - params => [ ("TypedRegister", "const StringAtom*", "TypedRegister") ] - }; -$ops{"GET_SLOT"} = - { - super => "Instruction_3", - rem => "dest, object, slot number", - params => [ ("TypedRegister", "TypedRegister", "uint32") ] - }; -$ops{"SET_SLOT"} = - { - super => "Instruction_3", - rem => "object, slot number, source", - params => [ ("TypedRegister", "uint32", "TypedRegister") ] - }; -$ops{"GET_STATIC"} = - { - super => "Instruction_3", - rem => "dest, class, index", - params => [ ("TypedRegister", "JSClass*", "uint32") ] - }; -$ops{"SET_STATIC"} = - { - super => "Instruction_3", - rem => "class, index, source", - params => [ ("JSClass*", "uint32", "TypedRegister") ] - }; -$ops{"STATIC_XCR"} = - { - super => "Instruction_4", - rem => "dest, class, index, value", - params => [ ("TypedRegister", "JSClass*", "uint32", "double") ] - }; -$ops{"SLOT_XCR"} = - { - super => "Instruction_4", - rem => "dest, source, slot number, value", - params => [ ("TypedRegister", "TypedRegister", "uint32", "double") ] - }; -$ops{"PROP_XCR"} = - { - super => "Instruction_4", - rem => "dest, source, name, value", - params => [ ("TypedRegister", "TypedRegister", "const StringAtom*", "double") ] - }; -$ops{"ELEM_XCR"} = - { - super => "Instruction_4", - rem => "dest, base, index, value", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister", "double") ] - }; -$ops{"NAME_XCR"} = - { - super => "Instruction_3", - rem => "dest, name, value", - params => [ ("TypedRegister", "const StringAtom*", "double") ] - }; -$ops{"VAR_XCR"} = - { - super => "Instruction_3", - rem => "dest, source, value", - params => [ ("TypedRegister", "TypedRegister", "double") ] - }; -$ops{"GET_ELEMENT"} = - { - super => "Instruction_3", - rem => "dest, base, index", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; -$ops{"SET_ELEMENT"} = - { - super => "Instruction_3", - rem => "base, index, value", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; -$ops{"NEW_CLOSURE"} = - { - super => "Instruction_2", - rem => "dest, ICodeModule", - params => [ ("TypedRegister", "ICodeModule*") ] - }; -$ops{"GET_CLOSURE"} = - { - super => "Instruction_2", - rem => "dest, closure depth", - params => [ ("TypedRegister", "uint32") ] - }; -$ops{"ADD"} = $math_op; -$ops{"SUBTRACT"} = $math_op; -$ops{"MULTIPLY"} = $math_op; -$ops{"DIVIDE"} = $math_op; -$ops{"REMAINDER"} = $math_op; -$ops{"SHIFTLEFT"} = $math_op; -$ops{"SHIFTRIGHT"} = $math_op; -$ops{"USHIFTRIGHT"}= $math_op; -$ops{"AND"} = $math_op; -$ops{"OR"} = $math_op; -$ops{"XOR"} = $math_op; -$ops{"COMPARE_LT"} = $binary_op; -$ops{"COMPARE_LE"} = $binary_op; -$ops{"COMPARE_EQ"} = $binary_op; -$ops{"COMPARE_NE"} = $binary_op; -$ops{"COMPARE_GE"} = $binary_op; -$ops{"COMPARE_GT"} = $binary_op; -$ops{"COMPARE_IN"} = $binary_op; -$ops{"STRICT_EQ"} = $binary_op; -$ops{"STRICT_NE"} = $binary_op; -$ops{"INSTANCEOF"} = $binary_op; -$ops{"BITNOT"} = $unary_op; -$ops{"NOT"} = $unary_op; -$ops{"TEST"} = $unary_op; -$ops{"NEGATE"} = $unary_op; -$ops{"POSATE"} = $unary_op; -$ops{"BRANCH"} = - { - super => "GenericBranch", - rem => "target label", - params => [ ("Label*") ] - }; -$ops{"BRANCH_TRUE"} = $cbranch_op; -$ops{"BRANCH_FALSE"} = $cbranch_op; -$ops{"BRANCH_INITIALIZED"} = $cbranch_op; -$ops{"RETURN"} = - { - super => "Instruction_1", - rem => "return value", - params => [ ("TypedRegister") ] - }; -$ops{"RETURN_VOID"} = - { - super => "Instruction", - rem => "Return without a value" - }; -$ops{"CALL"} = - { - super => "Instruction_3", - rem => "result, target, args", - params => [ ("TypedRegister", "TypedRegister", "ArgumentList*") ] - }; -$ops{"DIRECT_CALL"} = - { - super => "Instruction_3", - rem => "result, target, args", - params => [ ("TypedRegister", "JSFunction*", "ArgumentList*") ] - }; -$ops{"BIND_THIS"} = - { - super => "Instruction_3", - rem => "result, this, target", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; -$ops{"GET_METHOD"} = - { - super => "Instruction_3", - rem => "result, target base, index", - params => [ ("TypedRegister", "TypedRegister", "uint32") ] - }; -$ops{"THROW"} = - { - super => "Instruction_1", - rem => "exception value", - params => [ ("TypedRegister") ] - }; -$ops{"TRYIN"} = - { - super => "Instruction_2", - rem => "catch target, finally target", - params => [ ("Label*", "Label*") ] - }; -$ops{"TRYOUT"} = - { - super => "Instruction", - rem => "mmm, there is no try, only do", - }; -$ops{"JSR"} = - { - super => "GenericBranch", - rem => "target", - params => [ ("Label*") ] - }; -$ops{"RTS"} = - { - super => "Instruction", - rem => "Return to sender", - }; -$ops{"WITHIN"} = - { - super => "Instruction_1", - rem => "within this object", - params => [ ("TypedRegister") ] - }; -$ops{"WITHOUT"} = - { - super => "Instruction", - rem => "without this object", - }; -$ops{"CAST"} = - { - super => "Instruction_3", - rem => "dest, rvalue, toType", - params => [ ("TypedRegister", "TypedRegister", "TypedRegister") ] - }; -$ops{"CLASS"} = - { - super => "Instruction_2", - rem => "dest, obj", - params => [ ("TypedRegister", "TypedRegister") ] - }; - -1; diff --git a/mozilla/js/js2/winbuild/buildgc.bat b/mozilla/js/js2/winbuild/buildgc.bat deleted file mode 100755 index 8c71081fe7a..00000000000 --- a/mozilla/js/js2/winbuild/buildgc.bat +++ /dev/null @@ -1,5 +0,0 @@ -cd ..\..\..\.. -cvs co mozilla/gc/boehm -cd mozilla\gc\boehm -nmake -f NT_MAKEFILE gc.lib -cd ..\..\js\js2\winbuild diff --git a/mozilla/js/js2/winbuild/js2.dsp b/mozilla/js/js2/winbuild/js2.dsp deleted file mode 100644 index d2f09587c6b..00000000000 --- a/mozilla/js/js2/winbuild/js2.dsp +++ /dev/null @@ -1,282 +0,0 @@ -# Microsoft Developer Studio Project File - Name="js2" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=js2 - Win32 Partial Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "js2.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "js2.mak" CFG="js2 - Win32 Partial Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "js2 - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "js2 - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "js2 - Win32 Partial Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "js2 - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gc.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\gc\boehm" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "js2 - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /D "NEW_PARSER" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# SUBTRACT BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gc.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\gc\boehm" - -!ELSEIF "$(CFG)" == "js2 - Win32 Partial Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "js2___Win32_Partial_Debug" -# PROP BASE Intermediate_Dir "js2___Win32_Partial_Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "js2___Win32_Partial_Debug" -# PROP Intermediate_Dir "js2___Win32_Partial_Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /FR /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "NEW_PARSER" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "DEBUG" -BSC32=bscmake.exe -# SUBTRACT BASE BSC32 /nologo -# SUBTRACT BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gc.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\gc\boehm" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gc.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\gc\boehm" - -!ENDIF - -# Begin Target - -# Name "js2 - Win32 Release" -# Name "js2 - Win32 Debug" -# Name "js2 - Win32 Partial Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\debugger.cpp -# End Source File -# Begin Source File - -SOURCE=..\exception.cpp -# End Source File -# Begin Source File - -SOURCE=..\exception_msgs.cpp -# End Source File -# Begin Source File - -SOURCE=..\hash.cpp -# End Source File -# Begin Source File - -SOURCE=..\icodeasm.cpp -# End Source File -# Begin Source File - -SOURCE=..\icodeEmitter.cpp -# End Source File -# Begin Source File - -SOURCE=..\icodegenerator.cpp -# End Source File -# Begin Source File - -SOURCE=..\interpreter.cpp -# End Source File -# Begin Source File - -SOURCE=..\js2.cpp -# End Source File -# Begin Source File - -SOURCE=..\jsmath.cpp -# End Source File -# Begin Source File - -SOURCE=..\jstypes.cpp -# End Source File -# Begin Source File - -SOURCE=..\lexutils.cpp -# End Source File -# Begin Source File - -SOURCE=..\numerics.cpp -# End Source File -# Begin Source File - -SOURCE=..\parser.cpp -# End Source File -# Begin Source File - -SOURCE=..\utilities.cpp -# End Source File -# Begin Source File - -SOURCE=..\vmtypes.cpp -# End Source File -# Begin Source File - -SOURCE=..\world.cpp -# End Source File -# Begin Source File - -SOURCE=..\xmlparser.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\cpucfg.h -# End Source File -# Begin Source File - -SOURCE=..\exception.h -# End Source File -# Begin Source File - -SOURCE=..\gc_allocator.h -# End Source File -# Begin Source File - -SOURCE=..\hash.h -# End Source File -# Begin Source File - -SOURCE=..\icode.h -# End Source File -# Begin Source File - -SOURCE=..\icodeasm.h -# End Source File -# Begin Source File - -SOURCE=..\icodegenerator.h -# End Source File -# Begin Source File - -SOURCE=..\icodemap.h -# End Source File -# Begin Source File - -SOURCE=..\interpreter.h -# End Source File -# Begin Source File - -SOURCE=..\jsclasses.h -# End Source File -# Begin Source File - -SOURCE=..\jsmath.h -# End Source File -# Begin Source File - -SOURCE=..\jstypes.h -# End Source File -# Begin Source File - -SOURCE=..\lexutils.h -# End Source File -# Begin Source File - -SOURCE=..\nodefactory.h -# End Source File -# Begin Source File - -SOURCE=..\numerics.h -# End Source File -# Begin Source File - -SOURCE=..\parser.h -# End Source File -# Begin Source File - -SOURCE=..\systemtypes.h -# End Source File -# Begin Source File - -SOURCE=..\utilities.h -# End Source File -# Begin Source File - -SOURCE=..\vmtypes.h -# End Source File -# Begin Source File - -SOURCE=..\world.h -# End Source File -# Begin Source File - -SOURCE=..\xmlparser.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/mozilla/js/js2/winbuild/js2.dsw b/mozilla/js/js2/winbuild/js2.dsw deleted file mode 100644 index f9ac2e0d967..00000000000 --- a/mozilla/js/js2/winbuild/js2.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "js2"=.\js2.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### -