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 fd13dfdc1e2..00000000000 Binary files a/mozilla/js/js2/cplusplustests/CPlusPlusTests.mcp and /dev/null differ 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 a9289763e42..00000000000 Binary files a/mozilla/js/js2/jsc/macbuild/importXML and /dev/null differ 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< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - 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 04b63f596ed..00000000000 Binary files a/mozilla/js/js2/macbuild/gc.mcp and /dev/null differ diff --git a/mozilla/js/js2/macbuild/gc.o b/mozilla/js/js2/macbuild/gc.o deleted file mode 100644 index e6939f5ef50..00000000000 Binary files a/mozilla/js/js2/macbuild/gc.o and /dev/null differ 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> -{{{ -}}} - -############################################################################### -