diff --git a/doc/ext_ffi_api.html b/doc/ext_ffi_api.html
index e865a5f7..222c580e 100644
--- a/doc/ext_ffi_api.html
+++ b/doc/ext_ffi_api.html
@@ -78,6 +78,9 @@ corresponding ctype.
VLA — A variable-length array is declared with a
? instead of the number of elements, e.g. "int[?]".
The number of elements (nelem) must be given when it's
@@ -473,6 +476,31 @@ Contains the target architecture name. Same contents as
jit.arch.
+Methods for Callbacks
+
+The C types for callbacks
+have some extra methods:
+
+
+cb:free()
+
+Free the resources associated with a callback. The associated Lua
+function is unanchored and may be garbage collected. The callback
+function pointer is no longer valid and must not be called anymore
+(it may be reused by a subsequently created callback).
+
+
+cb:set(func)
+
+Associate a new Lua function with a callback. The C type of the
+callback and the callback function pointer are unchanged.
+
+
+This method is useful to dynamically switch the receiver of callbacks
+without creating a new callback each time and registering it again (e.g.
+with a GUI library).
+
+
Extended Standard Library Functions
The following standard library functions have been extended to work
diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html
index 79f25510..7e140e27 100644
--- a/doc/ext_ffi_semantics.html
+++ b/doc/ext_ffi_semantics.html
@@ -297,10 +297,12 @@ arguments to C calls:
string | string data → | const char[] |
+function | create callback → | C function type |
+
table | table initializer | Array |
-
+
table | table initializer | struct/union |
-
+
cdata | cdata payload → | C type |
@@ -821,6 +823,127 @@ cdata objects are indistinguishable from pointers returned by C
functions (which is one of the reasons why the GC cannot follow them).
+Callbacks
+
+The LuaJIT FFI automatically generates special callback functions
+whenever a Lua function is converted to a C function pointer. This
+associates the generated callback function pointer with the C type
+of the function pointer and the Lua function object (closure).
+
+
+This can happen implicitly due to the usual conversions, e.g. when
+passing a Lua function to a function pointer argument. Or you can use
+ffi.cast() to explicitly cast a Lua function to a
+C function pointer.
+
+
+Currently only certain C function types can be used as callback
+functions. Neither C vararg functions nor functions with
+pass-by-value aggregate argument or result types are supported. There
+are no restrictions for the kind of Lua functions that can be called
+from the callback — no checks for the proper number of arguments
+are made. The return value of the Lua function will be converted to the
+result type and an error will be thrown for invalid conversions.
+
+
+It's allowed to throw errors across a callback invocation, but it's not
+advisable in general. Do this only if you know the C function, that
+called the callback, copes with the forced stack unwinding and doesn't
+leak resources.
+
+
+Callback resource handling
+
+Callbacks take up resources — you can only have a limited number
+of them at the same time (500 - 1000, depending on the
+architecture). The associated Lua functions are anchored to prevent
+garbage collection, too.
+
+
+Callbacks due to implicit conversions are permanent! There is no
+way to guess their lifetime, since the C side might store the
+function pointer for later use (typical for GUI toolkits). The associated
+resources cannot be reclaimed until termination:
+
+
+ffi.cdef[[
+typedef int (__stdcall *WNDENUMPROC)(void *hwnd, intptr_t l);
+int EnumWindows(WNDENUMPROC func, intptr_t l);
+]]
+
+-- Implicit conversion to a callback via function pointer argument.
+local count = 0
+ffi.C.EnumWindows(function(hwnd, l)
+ count = count + 1
+end, 0)
+-- The callback is permanent and its resources cannot be reclaimed!
+-- Ok, so this may not be a problem, if you do this only once.
+
+
+Note: this example shows that you must properly declare
+__stdcall callbacks on Windows/x86 systems. The calling
+convention cannot be automatically detected, unlike for
+__stdcall calls to Windows functions.
+
+
+For some use cases it's necessary to free up the resources or to
+dynamically redirect callbacks. Use an explicit cast to a
+C function pointer and keep the resulting cdata object. Then use
+the cb:free()
+or cb:set() methods
+on the cdata object:
+
+
+-- Explicitly convert to a callback via cast.
+local count = 0
+local cb = ffi.cast("WNDENUMPROC", function(hwnd, l)
+ count = count + 1
+end)
+
+-- Pass it to a C function.
+ffi.C.EnumWindows(cb, 0)
+-- EnumWindows doesn't need the callback after it returns, so free it.
+
+cb:free()
+-- The callback function pointer is no longer valid and its resources
+-- will be reclaimed. The created Lua closure will be garbage collected.
+
+
+
+
+Callbacks are slow! First, the C to Lua transition itself
+has an unavoidable cost, similar to a lua_call() or
+lua_pcall(). Argument and result marshalling add to that cost.
+And finally, neither the C compiler nor LuaJIT can inline or
+optimize across the language barrier and hoist repeated computations out
+of a callback function.
+
+
+Do not use callbacks for performance-sensitive work: e.g. consider a
+numerical integration routine which takes a user-defined function to
+integrate over. It's a bad idea to call a user-defined Lua function from
+C code millions of times. The callback overhead will be absolutely
+detrimental for performance.
+
+
+It's considerably faster to write the numerical integration routine
+itself in Lua — the JIT compiler will be able to inline the
+user-defined function and optimize it together with its calling context,
+with very competitive performance.
+
+
+As a general guideline: use callbacks only when you must, because
+of existing C APIs. E.g. callback performance is irrelevant for a
+GUI application, which waits for user input most of the time, anyway.
+
+
+For new designs avoid push-style APIs (C function repeatedly
+calling a callback for each result). Instead use pull-style APIs
+(call a C function repeatedly to get a new result). Calls from Lua
+to C via the FFI are much faster than the other way round. Most well
+designed libraries already use pull-style APIs (read/write, get/put).
+
+
C Library Namespaces
A C library namespace is a special kind of object which allows
@@ -1002,7 +1125,6 @@ Other missing features:
- Bit operations for 64 bit types.
- Arithmetic for complex numbers.
-- Callbacks from C code to Lua functions.
- Passing structs by value to vararg C functions.
- C++ exception interoperability
does not extend to C functions called via the FFI, if the call is
diff --git a/src/Makefile b/src/Makefile
index 30985003..d4f80332 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -377,8 +377,8 @@ LJCORE_O= lj_gc.o lj_err.o lj_char.o lj_bc.o lj_obj.o \
lj_opt_dce.o lj_opt_loop.o lj_opt_split.o \
lj_mcode.o lj_snap.o lj_record.o lj_crecord.o lj_ffrecord.o \
lj_asm.o lj_trace.o lj_gdbjit.o \
- lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_carith.o lj_clib.o \
- lj_cparse.o \
+ lj_ctype.o lj_cdata.o lj_cconv.o lj_ccall.o lj_ccallback.o \
+ lj_carith.o lj_clib.o lj_cparse.o \
lj_lib.o lj_alloc.o lib_aux.o \
$(LJLIB_O) lib_init.o
diff --git a/src/Makefile.dep b/src/Makefile.dep
index 81bbed29..b9d0df47 100644
--- a/src/Makefile.dep
+++ b/src/Makefile.dep
@@ -1,6 +1,6 @@
buildvm.o: buildvm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
lj_obj.h lj_gc.h lj_bc.h lj_ir.h lj_ircall.h lj_jit.h lj_frame.h \
- lj_dispatch.h lj_ccall.h lj_ctype.h luajit.h \
+ lj_dispatch.h lj_ctype.h lj_ccall.h luajit.h \
lj_traceerr.h
buildvm_asm.o: buildvm_asm.c buildvm.h lj_def.h lua.h luaconf.h lj_arch.h \
lj_bc.h
@@ -23,7 +23,7 @@ lib_debug.o: lib_debug.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h \
lib_ffi.o: lib_ffi.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_meta.h \
lj_ctype.h lj_cparse.h lj_cdata.h lj_cconv.h lj_carith.h lj_ccall.h \
- lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
+ lj_ccallback.h lj_clib.h lj_ff.h lj_ffdef.h lj_lib.h lj_libdef.h
lib_init.o: lib_init.c lua.h luaconf.h lauxlib.h lualib.h lj_arch.h
lib_io.o: lib_io.c lua.h luaconf.h lauxlib.h lualib.h lj_obj.h lj_def.h \
lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ff.h lj_ffdef.h \
@@ -69,11 +69,16 @@ lj_carith.o: lj_carith.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_meta.h lj_ctype.h lj_cconv.h \
lj_cdata.h lj_carith.h
lj_ccall.o: lj_ccall.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_ctype.h lj_cconv.h lj_cdata.h \
- lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
+ lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
+ lj_cdata.h lj_ccall.h lj_trace.h lj_jit.h lj_ir.h lj_dispatch.h lj_bc.h \
lj_traceerr.h
+lj_ccallback.o: lj_ccallback.c lj_obj.h lua.h luaconf.h lj_def.h \
+ lj_arch.h lj_gc.h lj_err.h lj_errmsg.h lj_tab.h lj_state.h lj_frame.h \
+ lj_bc.h lj_ctype.h lj_cconv.h lj_ccall.h lj_ccallback.h lj_target.h \
+ lj_target_*.h lj_vm.h
lj_cconv.o: lj_cconv.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h
+ lj_err.h lj_errmsg.h lj_tab.h lj_ctype.h lj_gc.h lj_cdata.h lj_cconv.h \
+ lj_ccallback.h
lj_cdata.o: lj_cdata.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_cconv.h \
lj_cdata.h
@@ -86,11 +91,11 @@ lj_cparse.o: lj_cparse.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_bc.h lj_vm.h lj_char.h
lj_crecord.o: lj_crecord.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_frame.h lj_bc.h lj_ctype.h \
- lj_gc.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h lj_jit.h \
- lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \
+ lj_gc.h lj_cdata.h lj_cparse.h lj_cconv.h lj_clib.h lj_ccall.h lj_ir.h \
+ lj_jit.h lj_ircall.h lj_iropt.h lj_trace.h lj_dispatch.h lj_traceerr.h \
lj_record.h lj_ffrecord.h lj_crecord.h
lj_ctype.o: lj_ctype.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
- lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h
+ lj_gc.h lj_err.h lj_errmsg.h lj_str.h lj_tab.h lj_ctype.h lj_ccallback.h
lj_debug.o: lj_debug.c lj_obj.h lua.h luaconf.h lj_def.h lj_arch.h \
lj_err.h lj_errmsg.h lj_debug.h lj_str.h lj_tab.h lj_state.h lj_frame.h \
lj_bc.h lj_jit.h lj_ir.h
@@ -188,15 +193,15 @@ ljamalg.o: ljamalg.c lua.h luaconf.h lauxlib.h lj_gc.c lj_obj.h lj_def.h \
lj_obj.c lj_str.c lj_tab.c lj_func.c lj_udata.c lj_meta.c lj_debug.c \
lj_state.c lj_lex.h lj_alloc.h lj_dispatch.c luajit.h lj_vmevent.c \
lj_vmevent.h lj_vmmath.c lj_api.c lj_bcdump.h lj_parse.h lj_lex.c \
- lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_cdata.c \
- lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_carith.c lj_carith.h \
- lj_clib.c lj_clib.h lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c \
- lj_ircall.h lj_iropt.h lj_opt_mem.c lj_opt_fold.c lj_folddef.h \
- lj_opt_narrow.c lj_opt_dce.c lj_opt_loop.c lj_snap.h lj_opt_split.c \
- lj_mcode.c lj_mcode.h lj_snap.c lj_target.h lj_target_*.h lj_record.c \
- lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h lj_ffrecord.c \
- lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h lj_trace.c \
- lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c lj_libdef.h \
- lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c \
- lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c
+ lualib.h lj_parse.c lj_bcread.c lj_bcwrite.c lj_ctype.c lj_ccallback.h \
+ lj_cdata.c lj_cconv.h lj_cconv.c lj_ccall.c lj_ccall.h lj_ccallback.c \
+ lj_target.h lj_target_*.h lj_carith.c lj_carith.h lj_clib.c lj_clib.h \
+ lj_cparse.c lj_cparse.h lj_lib.c lj_lib.h lj_ir.c lj_ircall.h lj_iropt.h \
+ lj_opt_mem.c lj_opt_fold.c lj_folddef.h lj_opt_narrow.c lj_opt_dce.c \
+ lj_opt_loop.c lj_snap.h lj_opt_split.c lj_mcode.c lj_mcode.h lj_snap.c \
+ lj_record.c lj_record.h lj_ffrecord.h lj_crecord.c lj_crecord.h \
+ lj_ffrecord.c lj_recdef.h lj_asm.c lj_asm.h lj_emit_*.h lj_asm_*.h \
+ lj_trace.c lj_gdbjit.h lj_gdbjit.c lj_alloc.c lib_aux.c lib_base.c \
+ lj_libdef.h lib_math.c lib_string.c lib_table.c lib_io.c lib_os.c \
+ lib_package.c lib_debug.c lib_bit.c lib_jit.c lib_ffi.c lib_init.c
luajit.o: luajit.c lua.h luaconf.h lauxlib.h lualib.h luajit.h lj_arch.h
diff --git a/src/buildvm.c b/src/buildvm.c
index 72c2dd83..3e5d7b1c 100644
--- a/src/buildvm.c
+++ b/src/buildvm.c
@@ -23,6 +23,7 @@
#include "lj_frame.h"
#include "lj_dispatch.h"
#if LJ_HASFFI
+#include "lj_ctype.h"
#include "lj_ccall.h"
#endif
#include "luajit.h"
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index 06d6b038..55b22b2e 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[16165] = {
+static const unsigned char build_actionlist[16378] = {
254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
252,247,195,237,15,132,244,13,248,14,129,252,243,239,252,247,195,237,15,133,
@@ -52,426 +52,427 @@ static const unsigned char build_actionlist[16165] = {
68,137,124,36,16,76,139,189,233,76,137,124,36,32,72,137,165,233,252,255,209,
133,192,15,132,244,15,137,193,187,237,252,233,244,2,248,11,1,209,131,227,
252,248,137,213,41,218,199,68,193,252,252,237,137,200,139,93,252,244,72,99,
- 77,252,240,133,201,15,132,244,247,255,76,141,61,245,76,1,252,249,68,139,122,
- 252,248,69,139,191,233,69,139,191,233,252,255,225,248,1,41,213,193,252,237,
- 3,141,69,252,255,252,233,244,32,248,33,15,182,75,252,255,131,252,237,16,141,
- 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,139,124,36,24,137,
- 151,233,137,202,72,139,8,72,137,77,0,137,252,238,252,233,244,35,248,36,137,
- 4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,247,65,141,
- 142,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37,15,182,67,
- 252,254,255,199,68,36,4,237,137,4,36,255,252,242,15,42,192,252,242,15,17,
- 4,36,255,72,141,4,36,252,233,244,247,248,38,15,182,67,252,254,141,4,194,248,
- 1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,
- 238,72,137,194,137,252,253,137,92,36,28,232,251,1,2,139,149,233,133,192,15,
- 132,244,249,248,34,15,182,75,252,253,72,139,40,72,137,44,202,139,3,15,182,
- 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,
- 137,89,252,244,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30,
- 248,39,137,4,36,199,68,36,4,237,72,141,4,36,128,123,252,252,235,15,133,244,
- 247,255,65,141,142,233,137,41,199,65,4,237,137,205,252,233,244,248,248,40,
- 15,182,67,252,254,255,72,141,4,36,252,233,244,247,248,41,15,182,67,252,254,
- 141,4,194,248,1,15,182,107,252,255,141,44,252,234,248,2,139,124,36,24,137,
- 151,233,137,252,238,72,137,194,137,252,253,137,92,36,28,232,251,1,3,139,149,
- 233,133,192,15,132,244,249,15,182,75,252,253,72,139,44,202,72,137,40,248,
- 42,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 248,3,139,141,233,137,89,252,244,15,182,67,252,253,72,139,44,194,72,137,105,
- 16,141,153,233,41,211,139,105,252,248,184,237,252,233,244,30,248,43,139,108,
- 36,24,137,149,233,141,52,202,141,20,194,137,252,239,15,182,75,252,252,137,
- 92,36,28,232,251,1,4,248,3,139,149,233,255,131,252,248,1,15,135,244,44,248,
- 4,141,91,4,15,130,244,252,248,5,15,183,67,252,254,141,156,253,131,233,248,
- 6,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
- 248,45,131,195,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,46,129,
- 120,253,4,239,252,233,244,4,248,47,131,252,235,4,137,206,137,252,233,139,
- 108,36,24,137,149,233,255,137,194,137,252,239,137,92,36,28,232,251,1,5,252,
- 233,244,3,248,48,255,131,252,235,4,139,108,36,24,137,149,233,137,252,239,
- 139,115,252,252,137,92,36,28,232,251,1,6,252,233,244,3,255,248,49,255,15,
- 182,107,252,255,255,248,50,65,141,4,199,252,233,244,247,248,51,255,248,52,
- 65,141,4,199,141,44,252,234,149,252,233,244,248,248,53,141,4,194,137,197,
- 252,233,244,248,248,54,255,248,55,141,4,194,248,1,141,44,252,234,248,2,141,
- 12,202,68,15,182,67,252,252,137,206,137,193,139,124,36,24,137,151,233,137,
- 252,234,137,252,253,137,92,36,28,232,251,1,7,139,149,233,133,192,15,132,244,
- 42,248,44,137,193,41,208,137,89,252,244,141,152,233,184,237,252,233,244,28,
- 248,56,139,108,36,24,137,149,233,141,52,194,137,252,239,137,92,36,28,232,
- 251,1,8,139,149,233,255,133,192,15,133,244,44,15,183,67,252,254,139,60,194,
- 252,233,244,57,255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,
- 4,137,4,36,131,252,233,8,139,108,36,24,137,149,233,137,206,141,20,193,137,
- 252,239,137,92,36,28,232,251,1,9,139,149,233,139,76,36,4,139,4,36,139,105,
- 252,248,131,192,1,65,57,215,15,132,244,59,137,202,137,90,252,252,139,157,
- 233,139,11,15,182,252,233,15,182,205,131,195,4,65,252,255,36,252,238,248,
- 60,139,108,36,24,137,149,233,137,206,137,252,239,137,92,36,28,232,251,1,10,
- 139,149,233,139,67,252,252,15,182,204,15,182,232,193,232,16,65,252,255,164,
- 253,252,238,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,
- 239,15,131,244,62,139,90,252,252,137,68,36,4,137,106,252,252,139,42,137,106,
- 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72,
- 137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,4,252,233,244,63,248,
- 64,129,252,248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131,
- 252,249,252,254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,
- 15,134,244,247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,
- 139,90,252,252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184,
- 237,252,233,244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,90,252,
- 252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,
- 237,199,66,252,252,237,255,15,132,244,65,65,139,134,233,199,66,252,252,237,
- 137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,
- 233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,
- 15,133,244,3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244,
- 65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253,
- 239,15,132,244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244,
- 253,189,237,252,233,244,254,248,7,255,189,237,248,8,252,247,213,65,139,172,
- 253,174,233,252,233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253,
- 4,239,15,133,244,62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239,
- 15,133,244,62,139,66,8,137,133,233,139,90,252,252,199,66,252,252,237,255,
- 137,106,252,248,252,246,133,233,235,15,132,244,247,128,165,233,235,65,139,
- 134,233,65,137,174,233,137,133,233,248,1,252,233,244,65,248,68,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,50,141,82,8,
- 139,124,36,24,232,251,1,11,137,252,234,72,139,40,139,90,252,252,72,137,106,
- 252,248,252,233,244,65,248,69,255,129,252,248,239,15,133,244,62,129,122,253,
- 4,239,255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,
- 131,244,62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,
- 248,73,129,252,248,239,15,130,244,62,139,90,252,252,129,122,253,4,239,15,
- 133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65,
- 248,3,129,122,253,4,239,15,135,244,62,65,131,190,233,0,15,133,244,62,65,139,
- 174,233,65,59,174,233,255,15,130,244,247,232,244,74,248,1,139,108,36,24,137,
- 149,233,137,92,36,28,137,214,137,252,239,255,232,251,1,12,255,232,251,1,13,
- 255,139,149,233,252,233,244,2,248,75,129,252,248,239,15,130,244,62,15,132,
- 244,248,248,1,129,122,253,4,239,15,133,244,62,139,108,36,24,137,149,233,137,
- 149,233,139,90,252,252,139,50,141,82,8,137,252,239,137,92,36,28,232,251,1,
- 14,139,149,233,133,192,15,132,244,249,72,139,106,8,72,139,66,16,72,137,106,
- 252,248,72,137,2,248,76,184,237,255,252,233,244,77,248,2,199,66,12,237,252,
- 233,244,1,248,3,199,66,252,252,237,252,233,244,65,248,78,129,252,248,239,
- 15,130,244,62,139,42,129,122,253,4,239,15,133,244,62,255,131,189,233,0,15,
- 133,244,62,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,
- 237,137,66,252,248,199,66,12,237,184,237,252,233,244,77,248,79,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,133,244,62,129,122,253,12,239,255,
- 139,90,252,252,255,139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,
- 252,242,15,16,66,8,72,189,237,237,102,72,15,110,205,252,242,15,88,193,252,
- 242,15,45,192,252,242,15,17,66,252,248,255,139,42,59,133,233,15,131,244,248,
- 193,224,3,3,133,233,248,1,129,120,253,4,239,15,132,244,80,72,139,40,72,137,
- 42,252,233,244,76,248,2,131,189,233,0,15,132,244,80,137,252,239,137,213,137,
- 198,232,251,1,15,137,252,234,133,192,15,133,244,1,248,80,184,237,252,233,
- 244,77,248,81,255,139,106,252,248,139,133,233,139,90,252,252,199,66,252,252,
- 237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,
- 15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129,
- 252,248,239,15,130,244,62,141,74,8,131,232,1,187,237,248,1,65,15,182,174,
- 233,193,252,237,235,131,229,1,1,252,235,252,233,244,28,248,83,129,252,248,
- 239,15,130,244,62,129,122,253,12,239,15,133,244,62,255,139,106,4,137,106,
- 12,199,66,4,237,139,42,139,90,8,137,106,8,137,26,141,74,16,131,232,2,187,
- 237,252,233,244,1,248,84,129,252,248,239,15,130,244,62,139,42,139,90,252,
- 252,137,92,36,28,137,44,36,129,122,253,4,239,15,133,244,62,72,131,189,233,
- 0,15,133,244,62,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,
- 255,59,141,233,15,132,244,62,248,1,141,92,193,252,240,59,157,233,15,135,244,
- 62,137,157,233,139,108,36,24,137,149,233,131,194,8,137,149,233,141,108,194,
- 232,72,41,221,57,203,15,132,244,249,248,2,72,139,4,43,72,137,67,252,248,131,
- 252,235,8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134,
- 233,237,255,139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,
- 254,248,4,139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,
- 132,244,252,141,4,26,193,252,235,3,59,133,233,15,135,244,255,137,213,72,41,
- 205,248,5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,
- 141,67,2,199,66,252,252,237,248,7,139,92,36,28,137,68,36,4,72,199,193,252,
- 248,252,255,252,255,252,255,252,247,195,237,255,15,132,244,13,252,233,244,
- 14,248,8,199,66,252,252,237,139,139,233,131,252,233,8,137,139,233,72,139,
- 1,72,137,2,184,237,252,233,244,7,248,9,139,12,36,68,137,185,233,137,222,137,
- 252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,4,248,85,139,106,252,
- 248,139,173,233,139,90,252,252,137,92,36,28,137,44,36,72,131,189,233,0,15,
- 133,244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59,
- 141,233,15,132,244,62,248,1,141,92,193,252,248,59,157,233,15,135,244,62,137,
- 157,233,139,108,36,24,137,149,233,137,149,233,141,108,194,252,240,72,41,221,
- 57,203,15,132,244,249,248,2,255,72,139,4,43,72,137,67,252,248,131,252,235,
- 8,57,203,15,133,244,2,248,3,137,206,139,60,36,232,244,25,65,199,134,233,237,
- 139,108,36,24,139,28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,
- 139,139,233,68,139,187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,
- 141,4,26,193,252,235,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,
- 5,72,139,1,72,137,4,41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,
- 1,248,7,139,92,36,28,137,68,36,4,49,201,252,247,195,237,15,132,244,13,252,
- 233,244,14,248,8,137,222,137,252,239,232,251,1,16,248,9,139,12,36,68,137,
- 185,233,137,222,137,252,239,232,251,1,0,139,28,36,139,149,233,252,233,244,
- 4,248,86,139,108,36,24,72,252,247,133,233,237,15,132,244,62,255,137,149,233,
- 141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,133,233,
- 252,233,244,16,255,248,70,255,248,72,139,90,252,252,221,90,252,248,252,233,
- 244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15,
- 133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136,244,247,
- 248,88,248,70,139,90,252,252,199,66,252,252,237,137,106,252,248,252,233,244,
- 65,248,1,139,90,252,252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,
- 252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131,244,62,255,
- 252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,71,139,90,
- 252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248,72,139,90,252,
- 252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,4,248,63,252,247,195,
- 237,15,133,244,253,248,5,56,67,252,255,15,135,244,252,15,182,75,252,253,72,
- 252,247,209,141,20,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,
- 252,255,36,252,238,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,
- 7,72,199,193,252,248,252,255,252,255,252,255,252,233,244,14,248,89,255,129,
- 122,253,4,239,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,
- 252,242,15,16,2,232,244,90,255,252,242,15,45,232,129,252,253,0,0,0,128,15,
- 133,244,70,252,242,15,42,205,102,15,46,193,15,138,244,71,15,132,244,70,255,
- 221,2,232,244,90,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232,
- 244,92,255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244,
- 62,129,122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248,
- 94,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,
- 237,221,2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244,
- 72,248,96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,221,2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252,
- 248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255,
- 252,233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15,
- 131,244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239,
- 15,130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,
- 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232,
- 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252,
- 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253,
- 4,239,15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,
- 252,233,244,71,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239,
- 15,131,244,62,252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,
- 244,71,255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,252,242,15,16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,71,
- 248,107,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,
- 71,255,248,108,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,221,2,139,106,252,248,220,141,233,252,233,244,72,255,248,109,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,
- 244,62,221,2,221,66,8,217,252,243,252,233,244,72,248,110,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,255,15,131,
- 244,62,221,66,8,221,2,217,252,253,221,217,252,233,244,72,248,111,129,252,
- 248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244,62,139,90,252,
- 252,139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,
- 255,15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,
- 32,0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,
- 137,44,36,219,4,36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,
- 205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,
- 237,252,233,244,77,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,
- 233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
- 252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,
- 216,12,36,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,
- 244,1,255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,252,242,15,16,2,255,248,112,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,15,131,244,62,221,2,255,139,106,4,139,90,252,252,209,229,129,252,
- 253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,113,252,242,15,92,
- 224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,113,
- 220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,
- 15,136,244,249,248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,
- 106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,
- 201,252,233,244,1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4,
- 239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,
- 252,248,223,224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,
- 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,
- 71,255,248,115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,
- 72,255,248,117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,
- 1,57,193,15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108,
- 202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,
- 62,255,252,233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,
- 15,131,244,71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62,
- 252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,
- 252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2,
- 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,
- 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,
- 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,
- 15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,
- 248,9,221,216,252,233,244,62,255,248,119,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,133,244,62,139,42,255,139,173,233,252,233,244,70,255,252,
- 242,15,42,133,233,252,233,244,71,255,219,133,233,252,233,244,72,255,248,120,
- 129,252,248,239,15,133,244,62,129,122,253,4,239,15,133,244,62,139,42,139,
- 90,252,252,131,189,233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197,
- 252,233,244,71,255,137,44,36,219,4,36,252,233,244,72,255,248,121,65,139,174,
- 233,65,59,174,233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133,
- 244,62,129,122,253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0,
- 0,15,135,244,62,137,108,36,4,255,15,131,244,62,252,242,15,44,42,129,252,253,
- 252,255,0,0,0,15,135,244,62,137,108,36,4,255,15,131,244,62,221,2,219,92,36,
- 4,129,124,36,4,252,255,0,0,0,15,135,244,62,255,199,68,36,8,1,0,0,0,72,141,
- 68,36,4,248,122,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,
- 239,137,92,36,28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237,
- 137,66,252,248,252,233,244,65,248,123,65,139,174,233,65,59,174,233,15,130,
- 244,247,232,244,74,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,
- 252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244,
- 62,139,106,16,137,108,36,4,255,15,131,244,62,252,242,15,44,106,16,137,108,
- 36,4,255,15,131,244,62,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,
- 15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,
- 139,74,8,255,252,242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,
- 2,133,201,15,142,244,253,248,3,139,108,36,8,41,200,15,140,244,124,141,172,
- 253,13,233,131,192,1,248,4,137,68,36,8,137,232,252,233,244,122,248,5,15,140,
- 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,
- 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,
- 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,65,139,
- 174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239,
- 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15,
- 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,4,139,
- 68,36,4,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244,
- 126,65,57,134,233,15,130,244,126,15,182,141,233,65,139,174,233,137,68,36,
- 8,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233,
- 244,122,248,127,129,252,248,239,255,15,130,244,62,65,139,174,233,65,59,174,
- 233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,
- 139,133,233,133,192,15,132,244,124,65,57,134,233,15,130,244,128,129,197,239,
- 137,92,36,4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,
- 232,1,136,12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,122,248,129,129,
- 252,248,239,15,130,244,62,65,139,174,233,65,59,174,233,15,130,244,247,232,
- 244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134,
- 233,255,15,130,244,128,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,
- 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
- 249,90,15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,
- 244,1,137,216,139,92,36,4,252,233,244,122,248,130,129,252,248,239,15,130,
- 244,62,255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,74,248,1,129,
- 122,253,4,239,15,133,244,62,139,42,139,133,233,65,57,134,233,15,130,244,128,
- 129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,
- 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
- 248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,
- 92,36,4,252,233,244,122,248,131,129,252,248,239,15,130,244,62,129,122,253,
- 4,239,15,133,244,62,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,
- 233,244,70,255,252,242,15,42,192,252,233,244,71,255,248,132,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,
- 248,1,15,135,244,62,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
- 252,242,15,88,193,102,15,126,197,255,252,233,244,88,255,248,133,129,252,248,
- 239,15,130,244,62,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192,
- 89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,62,255,252,
- 242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68,
- 194,252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,
- 35,40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,
- 252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,
- 233,244,1,248,135,129,252,248,239,15,130,244,62,255,15,133,244,248,11,40,
- 131,232,8,252,233,244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,
- 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,136,129,252,
- 248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,
- 2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,
- 205,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,255,248,2,15,205,252,233,244,88,248,138,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,255,248,2,252,247,213,255,248,88,252,242,15,
- 42,197,252,233,244,71,255,248,134,139,68,36,4,252,233,244,62,255,248,139,
- 129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253,12,
- 239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,
- 2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
- 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,88,255,
- 248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,140,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,
- 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
- 110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,
- 255,211,252,237,252,233,244,88,255,248,141,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4,
- 239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,
- 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,
- 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,88,255,248,
- 142,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,142,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,
- 244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
- 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
- 197,252,233,244,88,255,248,143,129,252,248,239,15,130,244,62,129,122,253,
- 4,239,255,248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,
+ 77,252,240,255,131,252,249,1,15,134,244,247,255,76,141,61,245,76,1,252,249,
+ 255,68,139,122,252,248,69,139,191,233,69,139,191,233,252,255,225,255,248,
+ 1,15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
+ 34,15,182,75,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
+ 247,217,193,252,233,3,139,124,36,24,137,151,233,137,202,72,139,8,72,137,77,
+ 0,137,252,238,252,233,244,36,248,37,137,4,36,199,68,36,4,237,72,141,4,36,
+ 128,123,252,252,235,15,133,244,247,65,141,142,233,137,41,199,65,4,237,137,
+ 205,252,233,244,248,248,38,15,182,67,252,254,255,199,68,36,4,237,137,4,36,
+ 255,252,242,15,42,192,252,242,15,17,4,36,255,72,141,4,36,252,233,244,247,
+ 248,39,15,182,67,252,254,141,4,194,248,1,15,182,107,252,255,141,44,252,234,
+ 248,2,139,124,36,24,137,151,233,137,252,238,72,137,194,137,252,253,137,92,
+ 36,28,232,251,1,2,139,149,233,133,192,15,132,244,249,248,35,15,182,75,252,
+ 253,72,139,40,72,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
+ 16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,244,141,153,233,41,
+ 211,139,105,252,248,184,237,252,233,244,30,248,40,137,4,36,199,68,36,4,237,
+ 72,141,4,36,128,123,252,252,235,15,133,244,247,255,65,141,142,233,137,41,
+ 199,65,4,237,137,205,252,233,244,248,248,41,15,182,67,252,254,255,72,141,
+ 4,36,252,233,244,247,248,42,15,182,67,252,254,141,4,194,248,1,15,182,107,
+ 252,255,141,44,252,234,248,2,139,124,36,24,137,151,233,137,252,238,72,137,
+ 194,137,252,253,137,92,36,28,232,251,1,3,139,149,233,133,192,15,132,244,249,
+ 15,182,75,252,253,72,139,44,202,72,137,40,248,43,139,3,15,182,204,15,182,
+ 232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,139,141,233,137,89,252,
+ 244,15,182,67,252,253,72,139,44,194,72,137,105,16,141,153,233,41,211,139,
+ 105,252,248,184,237,252,233,244,30,248,44,139,108,36,24,137,149,233,141,52,
+ 202,141,20,194,137,252,239,15,182,75,252,252,137,92,36,28,232,251,1,4,248,
+ 3,139,149,233,255,131,252,248,1,15,135,244,45,248,4,141,91,4,15,130,244,252,
+ 248,5,15,183,67,252,254,141,156,253,131,233,248,6,139,3,15,182,204,15,182,
+ 232,131,195,4,193,232,16,65,252,255,36,252,238,248,46,131,195,4,129,120,253,
+ 4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,4,239,252,233,244,4,248,
+ 48,131,252,235,4,137,206,137,252,233,139,108,36,24,137,149,233,255,137,194,
+ 137,252,239,137,92,36,28,232,251,1,5,252,233,244,3,248,49,255,131,252,235,
+ 4,139,108,36,24,137,149,233,137,252,239,139,115,252,252,137,92,36,28,232,
+ 251,1,6,252,233,244,3,255,248,50,255,15,182,107,252,255,255,248,51,65,141,
+ 4,199,252,233,244,247,248,52,255,248,53,65,141,4,199,141,44,252,234,149,252,
+ 233,244,248,248,54,141,4,194,137,197,252,233,244,248,248,55,255,248,56,141,
+ 4,194,248,1,141,44,252,234,248,2,141,12,202,68,15,182,67,252,252,137,206,
+ 137,193,139,124,36,24,137,151,233,137,252,234,137,252,253,137,92,36,28,232,
+ 251,1,7,139,149,233,133,192,15,132,244,43,248,45,137,193,41,208,137,89,252,
+ 244,141,152,233,184,237,252,233,244,28,248,57,139,108,36,24,137,149,233,141,
+ 52,194,137,252,239,137,92,36,28,232,251,1,8,139,149,233,255,133,192,15,133,
+ 244,45,15,183,67,252,254,139,60,194,252,233,244,58,255,252,233,244,45,255,
+ 248,59,141,76,202,8,248,29,137,76,36,4,137,4,36,131,252,233,8,139,108,36,
+ 24,137,149,233,137,206,141,20,193,137,252,239,137,92,36,28,232,251,1,9,139,
+ 149,233,139,76,36,4,139,4,36,139,105,252,248,131,192,1,65,57,215,15,132,244,
+ 60,137,202,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,
+ 195,4,65,252,255,36,252,238,248,61,139,108,36,24,137,149,233,137,206,137,
+ 252,239,137,92,36,28,232,251,1,10,139,149,233,139,67,252,252,15,182,204,15,
+ 182,232,193,232,16,65,252,255,164,253,252,238,233,248,62,129,252,248,239,
+ 15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,137,
+ 68,36,4,137,106,252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,
+ 137,209,248,1,131,193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,
+ 1,248,2,139,68,36,4,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,
+ 106,4,137,252,233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,
+ 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,
+ 2,139,106,252,248,139,132,253,197,233,139,90,252,252,199,66,252,252,237,137,
+ 66,252,248,252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,
+ 239,15,130,244,63,139,106,4,139,90,252,252,129,252,253,239,15,133,244,252,
+ 248,1,139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,
+ 244,66,65,139,134,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,
+ 233,105,201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,
+ 15,132,244,251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,
+ 248,5,139,105,4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,
+ 252,248,252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,
+ 15,135,244,254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,
+ 7,255,189,237,248,8,252,247,213,65,139,172,253,174,233,252,233,244,2,248,
+ 68,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,
+ 189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,
+ 233,139,90,252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,
+ 235,15,132,244,247,128,165,233,235,65,139,134,233,65,137,174,233,137,133,
+ 233,248,1,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,15,133,244,63,137,213,139,50,141,82,8,139,124,36,24,232,251,1,11,137,
+ 252,234,72,139,40,139,90,252,252,72,137,106,252,248,252,233,244,66,248,70,
+ 255,129,252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,
+ 42,252,233,244,71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,
+ 2,252,233,244,72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,
+ 244,63,139,90,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,
+ 252,252,237,137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,
+ 244,63,65,131,190,233,0,15,133,244,63,65,139,174,233,65,59,174,233,255,15,
+ 130,244,247,232,244,75,248,1,139,108,36,24,137,149,233,137,92,36,28,137,214,
+ 137,252,239,255,232,251,1,12,255,232,251,1,13,255,139,149,233,252,233,244,
+ 2,248,76,129,252,248,239,15,130,244,63,15,132,244,248,248,1,129,122,253,4,
+ 239,15,133,244,63,139,108,36,24,137,149,233,137,149,233,139,90,252,252,139,
+ 50,141,82,8,137,252,239,137,92,36,28,232,251,1,14,139,149,233,133,192,15,
+ 132,244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,
+ 184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,
+ 252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,
+ 122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,
+ 248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,199,66,12,
+ 237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,15,133,244,63,129,122,253,12,239,255,139,90,252,252,255,139,66,8,131,
+ 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,
+ 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,
+ 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,
+ 120,253,4,239,15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,
+ 189,233,0,15,132,244,81,137,252,239,137,213,137,198,232,251,1,15,137,252,
+ 234,133,192,15,133,244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,
+ 252,248,139,133,233,139,90,252,252,199,66,252,252,237,137,66,252,248,255,
+ 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,
+ 238,221,90,8,255,184,237,252,233,244,78,248,83,129,252,248,239,15,130,244,
+ 63,141,74,8,131,232,1,187,237,248,1,65,15,182,174,233,193,252,237,235,131,
+ 229,1,1,252,235,252,233,244,28,248,84,129,252,248,239,15,130,244,63,129,122,
+ 253,12,239,15,133,244,63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,
+ 90,8,137,106,8,137,26,141,74,16,131,232,2,187,237,252,233,244,1,248,85,129,
+ 252,248,239,15,130,244,63,139,42,139,90,252,252,137,92,36,28,137,44,36,129,
+ 122,253,4,239,15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,
+ 15,135,244,63,139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,
+ 1,141,92,193,252,240,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,
+ 149,233,131,194,8,137,149,233,141,108,194,232,72,41,221,57,203,15,132,244,
+ 249,248,2,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,
+ 248,3,137,206,139,60,36,232,244,25,65,199,134,233,237,255,139,108,36,24,139,
+ 28,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,
+ 187,233,137,139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,
+ 235,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,
+ 41,131,193,8,68,57,252,249,15,133,244,5,248,6,141,67,2,199,66,252,252,237,
+ 248,7,139,92,36,28,137,68,36,4,72,199,193,252,248,252,255,252,255,252,255,
+ 252,247,195,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,
+ 139,139,233,131,252,233,8,137,139,233,72,139,1,72,137,2,184,237,252,233,244,
+ 7,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,1,0,139,28,36,
+ 139,149,233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,90,252,252,
+ 137,92,36,28,137,44,36,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
+ 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
+ 92,193,252,248,59,157,233,15,135,244,63,137,157,233,139,108,36,24,137,149,
+ 233,137,149,233,141,108,194,252,240,72,41,221,57,203,15,132,244,249,248,2,
+ 255,72,139,4,43,72,137,67,252,248,131,252,235,8,57,203,15,133,244,2,248,3,
+ 137,206,139,60,36,232,244,25,65,199,134,233,237,139,108,36,24,139,28,36,139,
+ 149,233,129,252,248,239,15,135,244,254,248,4,139,139,233,68,139,187,233,137,
+ 139,233,68,137,252,251,41,203,15,132,244,252,141,4,26,193,252,235,3,59,133,
+ 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
+ 8,68,57,252,249,15,133,244,5,248,6,141,67,1,248,7,139,92,36,28,137,68,36,
+ 4,49,201,252,247,195,237,15,132,244,13,252,233,244,14,248,8,137,222,137,252,
+ 239,232,251,1,16,248,9,139,12,36,68,137,185,233,137,222,137,252,239,232,251,
+ 1,0,139,28,36,139,149,233,252,233,244,4,248,87,139,108,36,24,72,252,247,133,
+ 233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,133,233,49,192,
+ 72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,255,248,73,139,
+ 90,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,248,239,15,130,
+ 244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,253,0,15,137,244,
+ 71,252,247,221,15,136,244,247,248,89,248,71,139,90,252,252,199,66,252,252,
+ 237,137,106,252,248,252,233,244,66,248,1,139,90,252,252,199,66,252,252,0,
+ 0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,135,244,63,255,129,
+ 122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,184,237,237,102,72,15,
+ 110,200,15,84,193,248,72,139,90,252,252,252,242,15,17,66,252,248,255,221,
+ 2,217,225,248,72,248,73,139,90,252,252,221,90,252,248,255,248,66,184,237,
+ 248,78,137,68,36,4,248,64,252,247,195,237,15,133,244,253,248,5,56,67,252,
+ 255,15,135,244,252,15,182,75,252,253,72,252,247,209,141,20,202,139,3,15,182,
+ 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,6,199,68,194,
+ 252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,
+ 255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,15,133,244,247,139,
+ 42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,2,232,244,91,255,
+ 252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,242,15,42,205,102,
+ 15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,91,255,248,92,255,
+ 252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,
+ 72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,
+ 63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,
+ 244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,
+ 73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
+ 2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,
+ 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,
+ 221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,
+ 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
+ 217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,
+ 253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,
+ 217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,
+ 73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,255,
+ 248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,
+ 242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,255,248,107,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,
+ 16,2,255,137,213,232,251,1,19,137,252,234,252,233,244,72,248,108,255,248,
+ 109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
+ 15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,248,109,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,139,106,
+ 252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,15,130,244,
+ 63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,
+ 221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,63,221,
+ 66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,239,15,
+ 130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,90,252,252,139,2,137,
+ 106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,15,131,244,
+ 249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,
+ 250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,44,36,219,4,
+ 36,255,139,106,252,252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,
+ 137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,
+ 244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,
+ 248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,
+ 193,252,242,15,17,66,252,248,255,221,2,199,4,36,0,0,128,90,216,12,36,221,
+ 90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,
+ 113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
+ 15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,221,2,255,139,106,4,139,90,252,252,209,229,129,252,253,0,0,224,252,
+ 255,15,132,244,250,255,15,40,224,232,244,114,252,242,15,92,224,248,1,252,
+ 242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,244,114,220,252,233,
+ 248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,
+ 249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,0,0,128,137,106,4,252,
+ 233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,
+ 244,1,255,248,115,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,2,248,1,217,252,248,
+ 223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,116,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,233,244,72,255,248,
+ 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
+ 253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,233,244,73,255,248,
+ 118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
+ 15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,
+ 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,252,
+ 233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,5,57,193,15,131,244,
+ 72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,63,252,242,15,
+ 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,
+ 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,248,119,185,2,0,0,0,129,
+ 122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,
+ 253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,
+ 131,193,1,252,233,244,1,248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,
+ 252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,
+ 252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,242,15,42,133,
+ 233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,129,252,248,
+ 239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,90,252,252,131,
+ 189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,197,252,233,244,
+ 72,255,137,44,36,219,4,36,252,233,244,73,255,248,122,65,139,174,233,65,59,
+ 174,233,15,130,244,247,232,244,75,248,1,129,252,248,239,15,133,244,63,129,
+ 122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,255,0,0,0,15,135,244,
+ 63,137,108,36,4,255,15,131,244,63,252,242,15,44,42,129,252,253,252,255,0,
+ 0,0,15,135,244,63,137,108,36,4,255,15,131,244,63,221,2,219,92,36,4,129,124,
+ 36,4,252,255,0,0,0,15,135,244,63,255,199,68,36,8,1,0,0,0,72,141,68,36,4,248,
+ 123,139,108,36,24,137,149,233,139,84,36,8,72,137,198,137,252,239,137,92,36,
+ 28,232,251,1,20,139,149,233,139,90,252,252,199,66,252,252,237,137,66,252,
+ 248,252,233,244,66,248,124,65,139,174,233,65,59,174,233,15,130,244,247,232,
+ 244,75,248,1,199,68,36,4,252,255,252,255,252,255,252,255,129,252,248,239,
+ 15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,139,106,
+ 16,137,108,36,4,255,15,131,244,63,252,242,15,44,106,16,137,108,36,4,255,15,
+ 131,244,63,221,66,16,219,92,36,4,255,248,1,129,122,253,4,239,15,133,244,63,
+ 129,122,253,12,239,255,139,42,137,108,36,8,139,173,233,255,139,74,8,255,252,
+ 242,15,44,74,8,255,139,68,36,4,57,197,15,130,244,251,248,2,133,201,15,142,
+ 244,253,248,3,139,108,36,8,41,200,15,140,244,125,141,172,253,13,233,131,192,
+ 1,248,4,137,68,36,8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,
+ 1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,
+ 233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,
+ 252,233,244,4,248,126,129,252,248,239,15,130,244,63,65,139,174,233,65,59,
+ 174,233,15,130,244,247,232,244,75,248,1,255,129,122,253,4,239,15,133,244,
+ 63,129,122,253,12,239,139,42,255,15,133,244,63,139,66,8,255,15,131,244,63,
+ 252,242,15,44,66,8,255,15,131,244,63,221,66,8,219,92,36,4,139,68,36,4,255,
+ 133,192,15,142,244,125,131,189,233,1,15,130,244,125,15,133,244,127,65,57,
+ 134,233,15,130,244,127,15,182,141,233,65,139,174,233,137,68,36,8,248,1,136,
+ 77,0,131,197,1,131,232,1,15,133,244,1,65,139,134,233,252,233,244,123,248,
+ 128,129,252,248,239,255,15,130,244,63,65,139,174,233,65,59,174,233,15,130,
+ 244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,
+ 133,192,15,132,244,125,65,57,134,233,15,130,244,129,129,197,239,137,92,36,
+ 4,137,68,36,8,65,139,158,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,
+ 12,3,15,133,244,1,137,216,139,92,36,4,252,233,244,123,248,130,129,252,248,
+ 239,15,130,244,63,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,
+ 248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,255,
+ 15,130,244,129,129,197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,
+ 244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,
+ 15,135,244,248,131,252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,
+ 137,216,139,92,36,4,252,233,244,123,248,131,129,252,248,239,15,130,244,63,
+ 255,65,139,174,233,65,59,174,233,15,130,244,247,232,244,75,248,1,129,122,
+ 253,4,239,15,133,244,63,139,42,139,133,233,65,57,134,233,15,130,244,129,129,
+ 197,239,137,92,36,4,137,68,36,8,65,139,158,233,252,233,244,249,248,1,15,182,
+ 76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,
+ 252,241,32,248,2,136,12,3,248,3,131,232,1,15,137,244,1,137,216,139,92,36,
+ 4,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,133,244,63,137,213,139,58,232,251,1,21,137,252,234,255,137,197,252,233,
+ 244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,
+ 1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,
+ 242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,239,
+ 15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,4,36,0,0,192,89,
+ 255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,252,242,
+ 15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,4,141,68,194,
+ 252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,
+ 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,
+ 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,
+ 244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,40,131,
+ 232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,
+ 193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,248,
+ 239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,
+ 15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,
+ 255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,122,
+ 253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,42,197,
+ 252,233,244,72,255,248,135,139,68,36,4,252,233,244,63,255,248,140,129,252,
+ 248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,
+ 244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
+ 16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,
+ 202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,248,141,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
+ 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,
+ 237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
- 15,126,197,102,15,126,201,255,211,205,252,233,244,88,248,126,184,237,252,
- 233,244,62,248,128,184,237,248,62,139,108,36,24,139,90,252,252,137,92,36,
- 28,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
- 59,141,233,15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,
- 15,143,244,77,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
- 139,106,252,248,15,133,244,32,139,157,233,139,11,15,182,252,233,15,182,205,
- 131,195,4,65,252,255,36,252,238,248,32,137,209,252,247,195,237,15,133,244,
- 249,15,182,107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,
- 137,221,131,229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239,
- 232,251,1,0,139,149,233,49,192,252,233,244,1,248,74,93,72,137,108,36,8,139,
- 108,36,24,137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,
- 133,233,232,251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
- 139,108,36,8,85,195,248,144,255,65,15,182,134,233,168,235,15,133,244,251,
- 168,235,15,133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,
- 244,247,255,248,145,65,15,182,134,233,168,235,15,133,244,251,252,233,244,
- 247,248,146,65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,
- 65,252,255,142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,
- 36,24,137,149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248,
- 4,15,182,75,252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,
- 164,253,252,238,233,248,147,131,195,4,139,77,232,137,76,36,4,252,233,244,
- 4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,
- 36,24,137,149,233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,
- 36,28,232,251,1,24,252,233,244,3,255,248,149,137,92,36,28,255,248,150,255,
- 137,92,36,28,131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,
- 233,137,133,233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255,
- 131,227,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,
- 15,182,75,252,253,193,232,3,131,192,1,252,255,229,248,151,255,65,85,65,84,
- 65,83,65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,
- 252,248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,
- 0,65,139,142,233,65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,
- 252,236,239,72,131,197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,
- 117,252,240,252,242,68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,
- 15,17,93,216,252,242,68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,
- 17,69,192,252,242,15,17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,
- 252,242,15,17,101,160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,
- 17,77,136,252,242,15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,
- 65,199,134,233,0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26,
- 72,139,141,233,72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,
- 233,252,233,244,247,255,248,152,255,72,131,196,16,248,1,76,139,108,36,8,76,
- 139,36,36,133,192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,
- 233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,
- 204,15,182,232,131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,
- 36,4,248,2,65,252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,
- 251,1,1,255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
- 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
- 36,4,139,68,36,8,195,255,248,153,72,184,237,237,102,72,15,110,208,72,184,
+ 15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,143,129,
+ 252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,
+ 242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,
+ 252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
+ 129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,
+ 237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,
+ 197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,233,244,
+ 63,248,129,184,237,248,63,139,108,36,24,139,90,252,252,137,92,36,28,137,149,
+ 233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,
+ 15,135,244,251,137,252,239,252,255,144,233,139,149,233,133,192,15,143,244,
+ 78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,
+ 248,15,133,244,33,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,
+ 65,252,255,36,252,238,248,33,137,209,252,247,195,237,15,133,244,249,15,182,
+ 107,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,221,131,
+ 229,252,248,41,252,234,252,233,244,28,248,5,190,237,137,252,239,232,251,1,
+ 0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,8,139,108,36,24,
+ 137,92,36,28,137,149,233,255,141,68,194,252,248,137,252,239,137,133,233,232,
+ 251,1,22,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,
+ 8,85,195,248,145,255,65,15,182,134,233,168,235,15,133,244,251,168,235,15,
+ 133,244,247,168,235,15,132,244,247,65,252,255,142,233,252,233,244,247,255,
+ 248,146,65,15,182,134,233,168,235,15,133,244,251,252,233,244,247,248,147,
+ 65,15,182,134,233,168,235,15,133,244,251,168,235,15,132,244,251,65,252,255,
+ 142,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,24,137,
+ 149,233,137,222,137,252,239,232,251,1,23,248,3,139,149,233,248,4,15,182,75,
+ 252,253,248,5,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,252,
+ 238,233,248,148,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,149,255,
+ 139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,24,137,149,
+ 233,137,133,233,137,222,65,141,190,233,73,137,174,233,137,92,36,28,232,251,
+ 1,24,252,233,244,3,255,248,150,137,92,36,28,255,248,151,255,137,92,36,28,
+ 131,203,1,248,1,255,141,68,194,252,248,139,108,36,24,137,149,233,137,133,
+ 233,137,222,137,252,239,232,251,1,25,199,68,36,28,0,0,0,0,255,131,227,252,
+ 254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252,
+ 253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,65,82,65,
+ 81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,
+ 252,240,76,137,125,252,248,76,137,117,252,240,68,139,117,0,65,139,142,233,
+ 65,199,134,233,237,65,137,134,233,65,137,142,233,72,129,252,236,239,72,131,
+ 197,128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,
+ 68,15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,
+ 68,15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,
+ 17,125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,
+ 160,252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,
+ 15,17,69,128,65,139,174,233,65,139,150,233,73,137,174,233,65,199,134,233,
+ 0,0,0,0,137,149,233,72,137,230,65,141,190,233,232,251,1,26,72,139,141,233,
+ 72,129,225,239,72,137,204,137,169,233,139,149,233,139,153,233,252,233,244,
+ 247,255,248,153,255,72,131,196,16,248,1,76,139,108,36,8,76,139,36,36,133,
+ 192,15,136,244,249,137,68,36,4,68,139,122,252,248,69,139,191,233,69,139,191,
+ 233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232,
+ 131,195,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,4,248,2,65,
+ 252,255,36,252,238,248,3,252,247,216,137,252,239,137,198,232,251,1,1,255,
+ 248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
+ 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
+ 36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
+ 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
+ 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
+ 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,
+ 193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,
+ 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
+ 36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,
237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
- 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
- 200,15,40,193,248,1,195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
- 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
- 217,108,36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,
- 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
- 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
- 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
- 15,92,200,15,40,193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184,
- 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
- 139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237,
- 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
- 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
- 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
- 86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184,
- 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
- 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
- 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
- 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,
- 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
- 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
- 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
- 252,233,195,255,248,97,217,252,234,222,201,248,157,217,84,36,252,248,129,
- 124,36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,
- 255,15,132,244,248,248,158,217,192,217,252,252,220,252,233,217,201,217,252,
- 240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,
- 195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102,15,46,
- 202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244,252,248,
- 1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,
- 2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,
- 244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,
- 89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,
- 72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,
- 184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,
- 192,12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,
- 132,244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,
- 15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,
- 36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,
- 217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,
- 252,248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,
- 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,
- 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,
- 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,
- 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
- 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255,
- 131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,15,
- 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,
- 36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,97,252,233,
- 244,253,248,1,232,244,157,255,252,233,244,253,248,2,131,252,255,7,15,132,
- 244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,
- 1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,
- 244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,
- 1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,
- 135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,
- 92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,
- 4,131,252,255,1,15,130,244,90,15,132,244,92,131,252,255,3,15,130,244,113,
- 15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,97,15,132,244,
- 157,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
+ 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
+ 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
+ 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
+ 68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
+ 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
+ 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,
+ 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,
+ 202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,237,
+ 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,
+ 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,
+ 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,
+ 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,
+ 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,
+ 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
+ 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,
+ 233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,252,248,129,124,
+ 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,
+ 15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,
+ 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,
+ 255,248,117,255,248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,
+ 15,133,244,254,15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,
+ 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,
+ 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,
+ 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,
+ 193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,
+ 184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,
+ 237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,
+ 12,72,61,252,254,15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,
+ 244,250,255,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,
+ 17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240,221,68,36,
+ 252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252,240,217,
+ 232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15,16,68,36,252,
+ 248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,247,
+ 15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,194,
+ 72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,193,
+ 15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,255,
+ 102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,192,
+ 195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,162,255,131,
+ 252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,135,
+ 244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248,221,68,36,
+ 252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,98,252,233,244,
+ 253,248,1,232,244,158,255,252,233,244,253,248,2,131,252,255,7,15,132,244,
+ 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1,
+ 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9,15,132,244,
+ 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1,
+ 255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244,247,15,135,
+ 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92,
+ 36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12,221,68,36,4,
+ 131,252,255,1,15,130,244,91,15,132,244,93,131,252,255,3,15,130,244,114,15,
+ 135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,98,15,132,244,
+ 158,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255,9,15,132,
244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217,252,255,
- 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,131,252,255,
+ 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,131,252,255,
1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89,193,
- 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,156,15,132,
- 244,116,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102,
+ 195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,157,15,132,
+ 244,117,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255,102,
72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,84,
193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248,252,
242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244,247,
@@ -481,55 +482,65 @@ static const unsigned char build_actionlist[16165] = {
9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,
247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,
15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,
- 252,248,5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135,
+ 252,248,5,15,130,244,157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,
244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,
9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,
221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,
233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,
223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,
225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,
- 163,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,164,
- 255,204,248,165,255,85,72,137,229,83,72,137,252,251,139,131,233,72,41,196,
- 255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,72,139,132,253,203,
- 233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,
- 72,139,187,233,72,139,179,233,72,139,147,233,72,139,139,233,76,139,131,233,
- 76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,40,139,233,255,15,
- 40,147,233,15,40,155,233,131,252,248,4,15,134,244,251,15,40,163,233,15,40,
- 171,233,15,40,179,233,15,40,187,233,248,5,252,255,147,233,72,137,131,233,
- 15,41,131,233,72,137,147,233,15,41,139,233,255,72,139,93,252,248,201,195,
- 255,249,255,129,124,253,202,4,239,15,133,244,253,129,124,253,194,4,239,15,
- 133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,244,255,255,15,140,
- 244,255,255,15,143,244,255,255,15,142,244,255,255,248,6,15,183,67,252,254,
- 141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
- 65,252,255,36,252,238,248,7,15,135,244,43,129,124,253,194,4,239,15,130,244,
- 247,15,133,244,43,255,252,242,15,42,4,194,252,233,244,248,255,221,4,202,219,
- 4,194,252,233,244,249,255,248,8,15,135,244,43,255,252,242,15,42,12,202,252,
- 242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,
- 255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,219,4,202,252,233,
- 244,248,255,129,124,253,202,4,239,15,131,244,43,129,124,253,194,4,239,15,
- 131,244,43,255,248,1,252,242,15,16,4,194,248,2,131,195,4,102,15,46,4,202,
- 248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,255,223,252,233,
- 221,216,255,218,252,233,223,224,158,255,15,134,244,247,255,15,135,244,247,
- 255,15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131,
- 233,248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
- 252,238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129,
- 124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255,
- 255,15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3,
- 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,
- 135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242,
- 15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252,
- 242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250,
- 255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255,
- 248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,
- 248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
- 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,
- 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,
- 5,255,129,252,253,239,15,132,244,48,129,124,253,202,4,239,15,132,244,48,255,
+ 164,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,165,
+ 255,204,248,166,255,83,65,87,65,86,72,131,252,236,40,68,141,181,233,139,157,
+ 233,15,183,192,137,131,233,72,137,187,233,72,137,179,233,72,137,147,233,72,
+ 137,139,233,252,242,15,17,131,233,252,242,15,17,139,233,252,242,15,17,147,
+ 233,252,242,15,17,155,233,72,141,132,253,36,233,76,137,131,233,76,137,139,
+ 233,252,242,15,17,163,233,252,242,15,17,171,233,252,242,15,17,179,233,252,
+ 242,15,17,187,233,72,137,131,233,72,137,230,137,92,36,28,137,223,232,251,
+ 1,27,65,199,134,233,237,255,139,144,233,139,128,233,41,208,139,106,252,248,
+ 193,232,3,131,192,1,139,157,233,139,11,15,182,252,233,15,182,205,131,195,
+ 4,65,252,255,36,252,238,255,248,32,255,139,76,36,24,65,139,158,233,72,137,
+ 139,233,137,145,233,137,169,233,137,223,137,198,232,251,1,28,72,139,131,233,
+ 252,242,15,16,131,233,252,233,244,16,255,248,167,255,85,72,137,229,83,72,
+ 137,252,251,139,131,233,72,41,196,255,15,182,139,233,131,252,233,1,15,136,
+ 244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,
+ 15,137,244,1,248,2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,
+ 233,72,139,139,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,
+ 40,131,233,15,40,139,233,255,15,40,147,233,15,40,155,233,131,252,248,4,15,
+ 134,244,251,15,40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,
+ 252,255,147,233,72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,
+ 255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,15,133,244,253,129,
+ 124,253,194,4,239,15,133,244,254,139,44,202,131,195,4,59,44,194,255,15,141,
+ 244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,248,
+ 6,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,204,15,182,232,
+ 131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,44,129,124,253,
+ 194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,
+ 248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,
+ 242,15,42,12,202,252,242,15,16,4,194,131,195,4,102,15,46,193,255,15,134,244,
+ 9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
+ 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
+ 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,195,4,
+ 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,195,4,
+ 255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,135,244,247,255,
+ 15,130,244,247,255,15,131,244,247,255,15,183,67,252,254,141,156,253,131,233,
+ 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
+ 238,255,139,108,194,4,131,195,4,255,129,252,253,239,15,133,244,253,129,124,
+ 253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,133,244,255,255,
+ 15,132,244,255,255,15,183,67,252,254,141,156,253,131,233,248,9,139,3,15,182,
+ 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,7,15,135,244,
+ 251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,252,242,15,42,
+ 4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,255,252,242,
+ 15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,244,250,255,
+ 129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,251,255,248,
+ 1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,
+ 2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,
+ 132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255,248,
+ 2,15,183,67,252,254,141,156,253,131,233,248,1,255,252,233,244,9,255,248,5,
+ 255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
- 49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,248,3,129,252,253,239,255,
- 15,133,244,9,255,252,233,244,48,255,72,252,247,208,139,108,202,4,131,195,
+ 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
+ 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,195,
4,129,252,253,239,15,133,244,249,139,12,202,65,59,12,135,255,139,108,202,
4,131,195,4,255,129,252,253,239,15,133,244,253,65,129,124,253,199,4,239,15,
133,244,254,65,139,44,199,59,44,202,255,15,183,67,252,254,141,156,253,131,
@@ -541,8 +552,8 @@ static const unsigned char build_actionlist[16165] = {
202,248,4,255,248,1,65,221,4,199,248,2,221,4,202,248,4,255,72,252,247,208,
139,108,202,4,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254,141,156,
253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
- 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255,15,132,
- 244,248,129,252,253,239,15,132,244,48,15,183,67,252,254,141,156,253,131,233,
+ 255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
+ 244,248,129,252,253,239,15,132,244,49,15,183,67,252,254,141,156,253,131,233,
248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
238,255,139,108,194,4,131,195,4,129,252,253,239,255,137,108,202,4,139,44,
194,137,44,202,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,
@@ -551,42 +562,42 @@ static const unsigned char build_actionlist[16165] = {
232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,133,244,251,139,
44,194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,3,
15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,199,
- 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255,
- 129,124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237,
+ 68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,
+ 129,124,253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,72,184,237,237,
102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,
28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,
248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,
1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204,
15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194,
- 4,239,15,133,244,56,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255,
- 248,3,255,248,57,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234,
+ 4,239,15,133,244,57,139,60,194,255,139,175,233,131,252,253,0,15,133,244,255,
+ 248,3,255,248,58,137,213,232,251,1,21,255,252,242,15,42,192,255,137,252,234,
15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,
- 3,252,233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,
- 239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,
- 3,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,
- 124,253,199,4,239,15,133,244,52,65,139,4,199,3,4,252,234,15,128,244,51,255,
- 129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,
- 55,139,44,252,234,3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,
- 253,252,234,4,239,15,131,244,50,255,65,129,124,253,199,4,239,15,131,244,50,
+ 3,252,233,244,57,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,
+ 239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,
+ 3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,
+ 124,253,199,4,239,15,133,244,53,65,139,4,199,3,4,252,234,15,128,244,52,255,
+ 129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,
+ 56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,255,129,124,
+ 253,252,234,4,239,15,131,244,51,255,65,129,124,253,199,4,239,15,131,244,51,
255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,221,4,252,234,65,220,
- 4,199,255,129,124,253,252,234,4,239,15,131,244,52,255,65,129,124,253,199,
- 4,239,15,131,244,52,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,
- 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,55,129,
- 124,253,194,4,239,15,131,244,55,255,252,242,15,16,4,252,234,252,242,15,88,
+ 4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,65,129,124,253,199,
+ 4,239,15,131,244,53,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,
+ 65,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,
+ 124,253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,
4,194,255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,
- 50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,65,43,44,199,15,
- 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,65,129,124,253,199,
- 4,239,15,133,244,52,65,139,4,199,43,4,252,234,15,128,244,51,255,129,124,253,
- 252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,
- 234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234,252,242,65,15,92,
+ 51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,65,43,44,199,15,
+ 128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,65,129,124,253,199,
+ 4,239,15,133,244,53,65,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,
+ 252,234,4,239,15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,
+ 234,43,44,194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,65,15,92,
4,199,255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,
15,92,4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,
252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,252,234,
- 4,239,15,133,244,50,65,129,124,253,199,4,239,15,133,244,50,139,44,252,234,
- 65,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,
- 65,129,124,253,199,4,239,15,133,244,52,65,139,4,199,15,175,4,252,234,15,128,
- 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,
- 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16,
+ 4,239,15,133,244,51,65,129,124,253,199,4,239,15,133,244,51,139,44,252,234,
+ 65,15,175,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,133,244,53,
+ 65,129,124,253,199,4,239,15,133,244,53,65,139,4,199,15,175,4,252,234,15,128,
+ 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
+ 15,133,244,56,139,44,252,234,15,175,44,194,15,128,244,55,255,252,242,15,16,
4,252,234,252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,
242,65,15,16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,
255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,
@@ -596,10 +607,10 @@ static const unsigned char build_actionlist[16165] = {
221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12,
199,255,221,4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15,
16,12,252,234,255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,
- 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,166,232,244,156,
- 255,252,233,244,166,255,232,244,116,255,15,182,252,236,15,182,192,139,124,
- 36,24,137,151,233,141,52,194,137,194,41,252,234,248,35,137,252,253,137,92,
- 36,28,232,251,1,27,139,149,233,133,192,15,133,244,44,15,182,107,252,255,15,
+ 252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,157,
+ 255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,124,
+ 36,24,137,151,233,141,52,194,137,194,41,252,234,248,36,137,252,253,137,92,
+ 36,28,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,107,252,255,15,
182,75,252,253,72,139,4,252,234,72,137,4,202,139,3,15,182,204,15,182,232,
131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,
199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,
@@ -616,82 +627,82 @@ static const unsigned char build_actionlist[16165] = {
69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,
129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,
- 137,213,65,141,190,233,255,232,251,1,28,137,252,234,252,233,244,1,255,72,
+ 137,213,65,141,190,233,255,232,251,1,30,137,252,234,252,233,244,1,255,72,
252,247,208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,
137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,
204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,
233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,
- 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
+ 233,232,251,1,30,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
65,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,
221,25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,
137,65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
238,255,141,156,253,131,233,139,108,36,24,131,189,233,0,15,132,244,247,137,
- 149,233,141,52,202,137,252,239,232,251,1,29,139,149,233,248,1,139,3,15,182,
+ 149,233,141,52,202,137,252,239,232,251,1,31,139,149,233,248,1,139,3,15,182,
204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,
208,139,108,36,24,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,
- 92,36,28,232,251,1,30,139,149,233,15,182,75,252,253,137,4,202,199,68,202,
+ 92,36,28,232,251,1,32,139,149,233,15,182,75,252,253,137,4,202,199,68,202,
4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
238,255,139,108,36,24,137,149,233,65,139,142,233,65,59,142,233,137,92,36,
28,15,131,244,251,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255,
- 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,31,139,149,233,15,
+ 7,0,0,15,132,244,249,248,2,137,252,239,137,198,232,251,1,33,139,149,233,15,
182,75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,
195,4,193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,
- 5,137,252,239,232,251,1,32,15,183,67,252,254,252,233,244,1,255,72,252,247,
+ 5,137,252,239,232,251,1,34,15,183,67,252,254,252,233,244,1,255,72,252,247,
208,139,108,36,24,65,139,142,233,137,92,36,28,65,59,142,233,137,149,233,15,
- 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,33,139,149,233,15,182,
+ 131,244,249,248,2,65,139,52,135,137,252,239,232,251,1,35,139,149,233,15,182,
75,252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,
- 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,32,15,183,
+ 4,193,232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,34,15,183,
67,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,
- 139,173,233,65,139,4,135,252,233,244,167,255,72,252,247,208,139,106,252,248,
- 139,173,233,65,139,4,135,252,233,244,168,255,15,182,252,236,15,182,192,129,
- 124,253,252,234,4,239,15,133,244,38,139,44,252,234,255,129,124,253,194,4,
+ 139,173,233,65,139,4,135,252,233,244,169,255,72,252,247,208,139,106,252,248,
+ 139,173,233,65,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,129,
+ 124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,4,
239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
- 15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,
+ 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
- 244,249,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252,253,248,
+ 244,249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,75,252,253,248,
3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
- 38,139,4,194,252,233,244,167,255,15,182,252,236,15,182,192,72,252,247,208,
- 65,139,4,135,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,248,167,
+ 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
+ 65,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
67,252,253,72,139,41,72,137,44,194,248,2,255,139,3,15,182,204,15,182,232,
131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253,199,68,
194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
- 36,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,37,
- 139,44,252,234,59,133,233,15,131,244,37,193,224,3,3,133,233,129,120,253,4,
+ 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
+ 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,3,15,182,204,15,182,
232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233,0,15,132,
- 244,249,139,141,233,252,246,129,233,235,15,132,244,37,255,15,182,75,252,253,
+ 244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,75,252,253,
248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,
- 253,252,234,4,239,15,133,244,41,139,44,252,234,255,15,133,244,41,255,59,133,
- 233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
+ 253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,
+ 233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,
1,252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,3,
15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,
- 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,41,
- 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,41,
- 139,4,194,252,233,244,168,248,7,128,165,233,235,65,139,142,233,65,137,174,
+ 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,
+ 15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,
+ 139,4,194,252,233,244,170,248,7,128,165,233,235,65,139,142,233,65,137,174,
233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15,182,
- 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,39,139,
- 44,252,234,248,168,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,
+ 192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,
+ 44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,
233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,
253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,
3,15,182,67,252,253,72,139,44,194,72,137,41,139,3,15,182,204,15,182,232,131,
195,4,193,232,16,65,252,255,36,252,238,248,4,131,189,233,0,15,132,244,2,137,
- 12,36,139,141,233,252,246,129,233,235,15,132,244,39,139,12,36,252,233,244,
+ 12,36,139,141,233,252,246,129,233,235,15,132,244,40,139,12,36,252,233,244,
2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
- 252,252,246,129,233,235,15,132,244,39,248,6,137,4,36,199,68,36,4,237,137,
+ 252,252,246,129,233,235,15,132,244,40,248,6,137,4,36,199,68,36,4,237,137,
108,36,8,139,124,36,24,137,151,233,72,141,20,36,137,252,238,137,252,253,137,
- 92,36,28,232,251,1,34,139,149,233,139,108,36,8,137,193,252,233,244,2,248,
+ 92,36,28,232,251,1,36,139,149,233,139,108,36,8,137,193,252,233,244,2,248,
7,128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,3,
- 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,
- 44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,
+ 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
+ 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
72,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
238,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
- 15,132,244,40,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,
+ 15,132,244,41,15,182,75,252,253,252,233,244,1,248,7,128,165,233,235,65,139,
142,233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,68,
137,60,36,69,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,
235,15,133,244,253,248,2,139,68,36,4,131,232,1,15,132,244,250,68,1,252,248,
@@ -699,12 +710,12 @@ static const unsigned char build_actionlist[16165] = {
139,41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,3,248,4,68,139,
60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
238,248,5,139,124,36,24,137,151,233,137,252,238,137,194,137,252,253,137,92,
- 36,28,232,251,1,35,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255,
+ 36,28,232,251,1,37,139,149,233,15,182,75,252,253,252,233,244,1,248,7,255,
128,165,233,235,65,139,134,233,65,137,174,233,137,133,233,252,233,244,2,255,
- 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,
+ 3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,59,141,84,202,8,
137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,131,195,4,65,
252,255,36,252,238,255,141,76,202,8,65,137,215,139,105,252,248,129,121,253,
- 252,252,239,15,133,244,29,248,59,139,90,252,252,252,247,195,237,15,133,244,
+ 252,252,239,15,133,244,29,248,60,139,90,252,252,252,247,195,237,15,133,244,
253,248,1,137,106,252,248,137,68,36,4,131,232,1,15,132,244,249,248,2,72,139,
41,131,193,8,73,137,47,65,131,199,8,131,232,1,15,133,244,2,139,106,252,248,
248,3,139,68,36,4,128,189,233,1,15,135,244,251,248,4,139,157,233,139,11,15,
@@ -752,19 +763,19 @@ static const unsigned char build_actionlist[16165] = {
65,199,71,252,252,237,65,131,199,8,255,199,68,194,252,244,237,255,131,192,
1,252,233,244,5,248,7,141,171,233,252,247,197,237,15,133,244,14,41,252,234,
255,1,252,233,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,
- 238,15,130,244,148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
- 129,121,253,12,239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41,
- 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,164,129,121,
- 253,20,239,15,133,244,164,255,139,105,16,133,252,237,15,136,244,251,3,41,
+ 238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,
+ 129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,133,244,61,139,41,
+ 131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,244,165,129,121,
+ 253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,244,251,3,41,
15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,
253,248,1,248,6,141,156,253,131,233,255,141,156,253,131,233,15,183,67,252,
254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,156,253,131,233,248,
1,255,248,7,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
252,238,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,255,141,156,253,
131,233,15,183,67,252,254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,
- 9,255,129,121,253,4,239,255,15,131,244,60,129,121,253,12,239,15,131,244,60,
- 255,129,121,253,12,239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,
- 139,105,20,255,129,252,253,239,15,131,244,60,255,252,242,15,16,1,252,242,
+ 9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,239,15,131,244,61,
+ 255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,15,131,244,165,255,
+ 139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,15,16,1,252,242,
15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,
249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,
65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,
@@ -778,7 +789,7 @@ static const unsigned char build_actionlist[16165] = {
233,76,137,36,36,76,137,108,36,8,72,131,252,236,16,252,255,224,255,141,156,
253,131,233,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,
252,238,255,137,221,209,252,237,129,229,239,102,65,129,172,253,46,233,238,
- 15,130,244,150,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,
+ 15,130,244,151,255,68,139,187,233,139,108,36,24,141,12,202,59,141,233,15,
135,244,24,15,182,139,233,57,200,15,134,244,249,248,2,255,15,183,67,252,254,
252,233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,
3,252,233,244,2,255,141,44,197,237,141,4,194,68,139,122,252,248,137,104,252,
@@ -818,6 +829,7 @@ enum {
GLOB_vmeta_call,
GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
+ GLOB_cont_ffi_callback,
GLOB_vm_call_tail,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -951,6 +963,7 @@ enum {
GLOB_vm_foldarith,
GLOB_vm_cpuid,
GLOB_assert_bad_for_arg_type,
+ GLOB_vm_ffi_callback,
GLOB_vm_ffi_call,
GLOB_BC_MODVN_Z,
GLOB_BC_TGETS_Z,
@@ -980,6 +993,7 @@ static const char *const globnames[] = {
"vmeta_call",
"vm_call_dispatch_f",
"vm_cpcall",
+ "cont_ffi_callback",
"vm_call_tail",
"cont_cat",
"cont_ra",
@@ -1113,6 +1127,7 @@ static const char *const globnames[] = {
"vm_foldarith",
"vm_cpuid",
"assert_bad_for_arg_type",
+ "vm_ffi_callback",
"vm_ffi_call@4",
"BC_MODVN_Z",
"BC_TGETS_Z",
@@ -1147,6 +1162,8 @@ static const char *const extnames[] = {
"lj_trace_hot@8",
"lj_dispatch_call@8",
"lj_trace_exit@8",
+ "lj_ccallback_enter@8",
+ "lj_ccallback_leave@8",
"lj_meta_cat",
"lj_gc_barrieruv@8",
"lj_func_closeuv@8",
@@ -1187,667 +1204,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
dasm_put(Dst, 385, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
dasm_put(Dst, 548, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
dasm_put(Dst, 648, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
- dasm_put(Dst, 819, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
- dasm_put(Dst, 944);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 958, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 967);
- } else {
- }
- dasm_put(Dst, 979, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
- dasm_put(Dst, 1125, DISPATCH_GL(tmptv), LJ_TTAB);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 958, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 967);
- } else {
- }
- dasm_put(Dst, 1149, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1321, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1420);
#if LJ_HASFFI
- dasm_put(Dst, 1440, Dt1(->base));
+ dasm_put(Dst, 813);
#endif
- dasm_put(Dst, 1471);
-#if LJ_DUALNUM
- dasm_put(Dst, 1474);
+ dasm_put(Dst, 822, 0);
+#if LJ_HASFFI
+#endif
+ dasm_put(Dst, 831, Dt7(->pc), PC2PROTO(k));
+#if LJ_HASFFI
+ dasm_put(Dst, 848);
+#endif
+ dasm_put(Dst, 869, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 967, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 976);
+ } else {
+ }
+ dasm_put(Dst, 988, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1134, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 967, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 976);
+ } else {
+ }
+ dasm_put(Dst, 1158, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1330, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1429);
+#if LJ_HASFFI
+ dasm_put(Dst, 1449, Dt1(->base));
#endif
dasm_put(Dst, 1480);
#if LJ_DUALNUM
- dasm_put(Dst, 952);
+ dasm_put(Dst, 1483);
#endif
- dasm_put(Dst, 1493);
+ dasm_put(Dst, 1489);
#if LJ_DUALNUM
- dasm_put(Dst, 1474);
+ dasm_put(Dst, 961);
#endif
- dasm_put(Dst, 1522, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1502);
+#if LJ_DUALNUM
+ dasm_put(Dst, 1483);
+#endif
+ dasm_put(Dst, 1531, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 1624);
+ dasm_put(Dst, 1633);
#else
- dasm_put(Dst, 1643);
+ dasm_put(Dst, 1652);
#endif
- dasm_put(Dst, 1648, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
- dasm_put(Dst, 1834, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1657, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+ dasm_put(Dst, 1843, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 1903);
+ dasm_put(Dst, 1912);
} else {
- dasm_put(Dst, 1907);
+ dasm_put(Dst, 1916);
}
- dasm_put(Dst, 1916, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
- dasm_put(Dst, 1995, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
- dasm_put(Dst, 2053, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
- dasm_put(Dst, 2119, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
- dasm_put(Dst, 2190, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
- dasm_put(Dst, 2280, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1925, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+ dasm_put(Dst, 2004, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
+ dasm_put(Dst, 2062, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
+ dasm_put(Dst, 2128, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
+ dasm_put(Dst, 2199, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
+ dasm_put(Dst, 2289, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2294);
+ dasm_put(Dst, 2303);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 2316);
+ dasm_put(Dst, 2325);
} else {
- dasm_put(Dst, 2326);
+ dasm_put(Dst, 2335);
}
- dasm_put(Dst, 2333, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 2402, Dt1(->base));
+ dasm_put(Dst, 2342, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 2411, Dt1(->base));
if (LJ_DUALNUM) {
- dasm_put(Dst, 2428);
+ dasm_put(Dst, 2437);
} else {
- dasm_put(Dst, 2433);
+ dasm_put(Dst, 2442);
}
- dasm_put(Dst, 2438, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
- dasm_put(Dst, 2530, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2447, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+ dasm_put(Dst, 2539, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2577, Dt6(->metatable));
+ dasm_put(Dst, 2586, Dt6(->metatable));
#endif
- dasm_put(Dst, 2586, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2595, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2572);
+ dasm_put(Dst, 2581);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
- dasm_put(Dst, 2641);
+ dasm_put(Dst, 2650);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2646, LJ_TISNUM);
+ dasm_put(Dst, 2655, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2662, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 2671, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
}
- dasm_put(Dst, 2695, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2557, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2704, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2566, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2577, Dt6(->metatable));
+ dasm_put(Dst, 2586, Dt6(->metatable));
#endif
- dasm_put(Dst, 2772, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2781, Dt8(->upvalue[0]), LJ_TFUNC);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2793, LJ_TISNUM);
+ dasm_put(Dst, 2802, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2805);
+ dasm_put(Dst, 2814);
} else {
- dasm_put(Dst, 2815);
+ dasm_put(Dst, 2824);
}
- dasm_put(Dst, 2822, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
- dasm_put(Dst, 2887, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
- dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
- dasm_put(Dst, 3063, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
- dasm_put(Dst, 3178, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
- dasm_put(Dst, 3273, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3339, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
- dasm_put(Dst, 3428, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
- dasm_put(Dst, 3538, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2831, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2896, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2985, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 3072, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 3187, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3282, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3348, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3437, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3547, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (!LJ_DUALNUM) {
- dasm_put(Dst, 3565);
+ dasm_put(Dst, 3574);
}
if (sse) {
- dasm_put(Dst, 3568);
+ dasm_put(Dst, 3577);
}
- dasm_put(Dst, 3583, 1+1);
+ dasm_put(Dst, 3592, 1+1);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3594, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 3603, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 3674, LJ_TISNUM);
+ dasm_put(Dst, 3683, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3684, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 3693, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 3715);
+ dasm_put(Dst, 3724);
}
- dasm_put(Dst, 3732, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3741, 1+1, FRAME_TYPE, LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3829, LJ_TISNUM);
+ dasm_put(Dst, 3838, LJ_TISNUM);
} else {
- dasm_put(Dst, 3674, LJ_TISNUM);
+ dasm_put(Dst, 3683, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3851);
- if (LJ_DUALNUM) {
dasm_put(Dst, 3860);
- }
- dasm_put(Dst, 2321);
- } else {
- dasm_put(Dst, 3894);
if (LJ_DUALNUM) {
- } else {
- dasm_put(Dst, 2328);
+ dasm_put(Dst, 3869);
}
- }
- dasm_put(Dst, 3900);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 3829, LJ_TISNUM);
+ dasm_put(Dst, 2330);
} else {
- dasm_put(Dst, 3674, LJ_TISNUM);
- }
- if (sse) {
dasm_put(Dst, 3903);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3860);
+ } else {
+ dasm_put(Dst, 2337);
}
- dasm_put(Dst, 2321);
+ }
+ dasm_put(Dst, 3909);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 3838, LJ_TISNUM);
} else {
+ dasm_put(Dst, 3683, LJ_TISNUM);
+ }
+ if (sse) {
dasm_put(Dst, 3912);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 3869);
+ }
+ dasm_put(Dst, 2330);
+ } else {
+ dasm_put(Dst, 3921);
+ if (LJ_DUALNUM) {
} else {
- dasm_put(Dst, 2328);
+ dasm_put(Dst, 2337);
}
}
if (sse) {
- dasm_put(Dst, 3918, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3927, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 3947, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3956, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3976, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4045, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4102, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4165, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4255);
+ dasm_put(Dst, 3985, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4111, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4174, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4264);
if (sse) {
- dasm_put(Dst, 4267, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4276, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4292);
+ dasm_put(Dst, 4301);
if (sse) {
- dasm_put(Dst, 4306, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4315, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4331);
+ dasm_put(Dst, 4340);
if (sse) {
- dasm_put(Dst, 4345, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4354, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4370);
+ dasm_put(Dst, 4379);
if (sse) {
- dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4395, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4425, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4434, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4458, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4523, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4467, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4532, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4622);
+ dasm_put(Dst, 4631);
} else {
- dasm_put(Dst, 4628);
+ dasm_put(Dst, 4637);
}
- dasm_put(Dst, 4635);
+ dasm_put(Dst, 4644);
if (sse) {
- dasm_put(Dst, 4660);
+ dasm_put(Dst, 4669);
} else {
- dasm_put(Dst, 4666);
+ dasm_put(Dst, 4675);
}
- dasm_put(Dst, 4669, 1+2);
+ dasm_put(Dst, 4678, 1+2);
if (sse) {
- dasm_put(Dst, 4678);
+ dasm_put(Dst, 4687);
} else {
- dasm_put(Dst, 4686);
+ dasm_put(Dst, 4695);
}
- dasm_put(Dst, 4694);
+ dasm_put(Dst, 4703);
if (sse) {
- dasm_put(Dst, 4697, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+ dasm_put(Dst, 4706, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
} else {
- dasm_put(Dst, 4724);
+ dasm_put(Dst, 4733);
}
- dasm_put(Dst, 4741);
+ dasm_put(Dst, 4750);
if (sse) {
- dasm_put(Dst, 4757, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4766, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4782, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4791, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4804);
+ dasm_put(Dst, 4813);
if (sse) {
- dasm_put(Dst, 4826);
+ dasm_put(Dst, 4835);
} else {
- dasm_put(Dst, 4852);
+ dasm_put(Dst, 4861);
}
- dasm_put(Dst, 4869, 1+2);
+ dasm_put(Dst, 4878, 1+2);
if (sse) {
- dasm_put(Dst, 4909);
+ dasm_put(Dst, 4918);
} else {
- dasm_put(Dst, 4917);
+ dasm_put(Dst, 4926);
}
- dasm_put(Dst, 4927, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4936, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4979, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4988, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 5026, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 5035, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 5067, LJ_TISNUM);
+ dasm_put(Dst, 5076, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5080, LJ_TISNUM);
+ dasm_put(Dst, 5089, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4622);
+ dasm_put(Dst, 4631);
} else {
}
- dasm_put(Dst, 5130);
+ dasm_put(Dst, 5139);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 5141, LJ_TISNUM);
+ dasm_put(Dst, 5150, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5162);
+ dasm_put(Dst, 5171);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
- dasm_put(Dst, 5183);
+ dasm_put(Dst, 5192);
} else {
}
- dasm_put(Dst, 5208, LJ_TISNUM);
+ dasm_put(Dst, 5217, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5221, LJ_TISNUM);
+ dasm_put(Dst, 5230, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4622);
+ dasm_put(Dst, 4631);
} else {
}
- dasm_put(Dst, 5130);
+ dasm_put(Dst, 5139);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 5141, LJ_TISNUM);
+ dasm_put(Dst, 5150, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5162);
+ dasm_put(Dst, 5171);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
- dasm_put(Dst, 5271);
+ dasm_put(Dst, 5280);
} else {
}
if (!sse) {
- dasm_put(Dst, 5296);
+ dasm_put(Dst, 5305);
}
- dasm_put(Dst, 5305, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5314, 1+1, LJ_TSTR);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5327, Dt5(->len));
+ dasm_put(Dst, 5336, Dt5(->len));
} else if (sse) {
- dasm_put(Dst, 5335, Dt5(->len));
+ dasm_put(Dst, 5344, Dt5(->len));
} else {
- dasm_put(Dst, 5346, Dt5(->len));
+ dasm_put(Dst, 5355, Dt5(->len));
}
- dasm_put(Dst, 5354, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5363, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (LJ_DUALNUM) {
- dasm_put(Dst, 5330);
+ dasm_put(Dst, 5339);
} else if (sse) {
- dasm_put(Dst, 5392);
+ dasm_put(Dst, 5401);
} else {
- dasm_put(Dst, 5402);
+ dasm_put(Dst, 5411);
}
- dasm_put(Dst, 5413, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5422, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5446);
+ dasm_put(Dst, 5455);
} else if (sse) {
- dasm_put(Dst, 5469);
+ dasm_put(Dst, 5478);
} else {
- dasm_put(Dst, 5495);
+ dasm_put(Dst, 5504);
}
- dasm_put(Dst, 5519, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 5528, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5628);
+ dasm_put(Dst, 5637);
} else if (sse) {
- dasm_put(Dst, 5640);
+ dasm_put(Dst, 5649);
} else {
- dasm_put(Dst, 5655);
+ dasm_put(Dst, 5664);
}
- dasm_put(Dst, 5667, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5676, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2572);
+ dasm_put(Dst, 2581);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
- dasm_put(Dst, 5684, Dt5(->len));
+ dasm_put(Dst, 5693, Dt5(->len));
if (LJ_DUALNUM) {
- dasm_put(Dst, 5694);
+ dasm_put(Dst, 5703);
} else if (sse) {
- dasm_put(Dst, 5698);
+ dasm_put(Dst, 5707);
} else {
}
- dasm_put(Dst, 5705, sizeof(GCstr)-1);
- dasm_put(Dst, 5780, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 5841, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5714, sizeof(GCstr)-1);
+ dasm_put(Dst, 5789, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 5850, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5858);
+ dasm_put(Dst, 5867);
} else if (sse) {
- dasm_put(Dst, 5866);
+ dasm_put(Dst, 5875);
} else {
- dasm_put(Dst, 5877);
+ dasm_put(Dst, 5886);
}
- dasm_put(Dst, 5893, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 5961, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 6028, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6101, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6186, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 6260, 1+1, LJ_TTAB);
+ dasm_put(Dst, 5902, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5970, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 6037, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 6110, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 6195, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 6269, 1+1, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6327);
+ dasm_put(Dst, 6336);
} else if (sse) {
- dasm_put(Dst, 6334);
+ dasm_put(Dst, 6343);
} else {
}
- dasm_put(Dst, 6344, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6353, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6360);
+ dasm_put(Dst, 6369);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
dasm_put(Dst, 106);
if (LJ_DUALNUM || sse) {
if (!sse) {
}
- dasm_put(Dst, 6401);
+ dasm_put(Dst, 6410);
} else {
}
- dasm_put(Dst, 6406, 1+1);
+ dasm_put(Dst, 6415, 1+1);
if (sse) {
- dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
- dasm_put(Dst, 6427);
+ dasm_put(Dst, 6436);
}
- dasm_put(Dst, 2288, LJ_TISNUM);
+ dasm_put(Dst, 2297, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6452);
+ dasm_put(Dst, 6461);
} else {
}
- dasm_put(Dst, 6467, LJ_TISNUM);
+ dasm_put(Dst, 6476, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6492);
+ dasm_put(Dst, 6501);
} else {
- dasm_put(Dst, 6512);
+ dasm_put(Dst, 6521);
}
if (sse) {
- dasm_put(Dst, 6517);
+ dasm_put(Dst, 6526);
} else {
}
- dasm_put(Dst, 6534, 1+1);
+ dasm_put(Dst, 6543, 1+1);
if (sse) {
- dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
- dasm_put(Dst, 6427);
+ dasm_put(Dst, 6436);
}
- dasm_put(Dst, 2288, LJ_TISNUM);
+ dasm_put(Dst, 2297, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6452);
+ dasm_put(Dst, 6461);
} else {
}
- dasm_put(Dst, 6467, LJ_TISNUM);
+ dasm_put(Dst, 6476, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6552);
+ dasm_put(Dst, 6561);
} else {
- dasm_put(Dst, 6512);
+ dasm_put(Dst, 6521);
}
if (sse) {
- dasm_put(Dst, 6572);
+ dasm_put(Dst, 6581);
} else {
}
- dasm_put(Dst, 6589, 1+1);
+ dasm_put(Dst, 6598, 1+1);
if (sse) {
- dasm_put(Dst, 6417, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6426, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
- dasm_put(Dst, 6427);
+ dasm_put(Dst, 6436);
}
- dasm_put(Dst, 2288, LJ_TISNUM);
+ dasm_put(Dst, 2297, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6452);
+ dasm_put(Dst, 6461);
} else {
}
- dasm_put(Dst, 6467, LJ_TISNUM);
+ dasm_put(Dst, 6476, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6607);
+ dasm_put(Dst, 6616);
} else {
- dasm_put(Dst, 6512);
+ dasm_put(Dst, 6521);
}
if (sse) {
- dasm_put(Dst, 6627);
+ dasm_put(Dst, 6636);
} else {
}
- dasm_put(Dst, 6644, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6653, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6667, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6676, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6691);
+ dasm_put(Dst, 6700);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6401);
+ dasm_put(Dst, 6410);
} else if (sse) {
- dasm_put(Dst, 6697);
+ dasm_put(Dst, 6706);
} else {
}
- dasm_put(Dst, 6709);
+ dasm_put(Dst, 6718);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6720, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6729, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6736, LJ_TISNUM);
+ dasm_put(Dst, 6745, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6751, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6760, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6818);
+ dasm_put(Dst, 6827);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6825, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6834, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6736, LJ_TISNUM);
+ dasm_put(Dst, 6745, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6841, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6850, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6908);
+ dasm_put(Dst, 6917);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6916, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6925, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6736, LJ_TISNUM);
+ dasm_put(Dst, 6745, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6932, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6941, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6999);
+ dasm_put(Dst, 7008);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7007, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7016, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6736, LJ_TISNUM);
+ dasm_put(Dst, 6745, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7023, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 7032, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7090);
+ dasm_put(Dst, 7099);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7097, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7106, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6435);
+ dasm_put(Dst, 6444);
} else {
- dasm_put(Dst, 2311);
+ dasm_put(Dst, 2320);
}
if (sse) {
- dasm_put(Dst, 6377, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6386, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6736, LJ_TISNUM);
+ dasm_put(Dst, 6745, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7113, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 7122, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7180, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 7256, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 7383, Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7189, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 7265, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 7392, Dt1(->top), Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7422, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 7431, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- dasm_put(Dst, 7455, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
- dasm_put(Dst, 7509, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 7464, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+ dasm_put(Dst, 7518, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
#if LJ_HASJIT
- dasm_put(Dst, 7576, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+ dasm_put(Dst, 7585, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
#endif
- dasm_put(Dst, 7623);
+ dasm_put(Dst, 7632);
#if LJ_HASJIT
- dasm_put(Dst, 7450);
+ dasm_put(Dst, 7459);
#endif
- dasm_put(Dst, 7630);
+ dasm_put(Dst, 7639);
#if LJ_HASJIT
- dasm_put(Dst, 7633);
+ dasm_put(Dst, 7642);
#endif
- dasm_put(Dst, 7643, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7652, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7676);
+ dasm_put(Dst, 7685);
#endif
- dasm_put(Dst, 7681, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7690, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7712, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+ dasm_put(Dst, 7721, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
#endif
- dasm_put(Dst, 7951);
+ dasm_put(Dst, 7960);
#if LJ_HASJIT
- dasm_put(Dst, 7954, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+ dasm_put(Dst, 7963, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
#endif
- dasm_put(Dst, 8054);
+ dasm_put(Dst, 8063);
if (!sse) {
- dasm_put(Dst, 8057);
+ dasm_put(Dst, 8066);
}
- dasm_put(Dst, 8102, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8111, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 8188);
+ dasm_put(Dst, 8197);
}
- dasm_put(Dst, 8233, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+ dasm_put(Dst, 8242, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 8319);
+ dasm_put(Dst, 8328);
}
- dasm_put(Dst, 8358, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8367, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (sse) {
- dasm_put(Dst, 8447, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8456, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
- dasm_put(Dst, 8561);
+ dasm_put(Dst, 8570);
}
- dasm_put(Dst, 8608);
+ dasm_put(Dst, 8617);
if (!sse) {
} else {
- dasm_put(Dst, 8685);
+ dasm_put(Dst, 8694);
}
- dasm_put(Dst, 8688);
- dasm_put(Dst, 8773, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
- dasm_put(Dst, 8876, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
- dasm_put(Dst, 9038);
+ dasm_put(Dst, 8697);
+ dasm_put(Dst, 8782, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8885, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+ dasm_put(Dst, 9047);
#if LJ_HASJIT
if (sse) {
- dasm_put(Dst, 9079);
- dasm_put(Dst, 9149);
- dasm_put(Dst, 9221);
+ dasm_put(Dst, 9088);
+ dasm_put(Dst, 9158);
+ dasm_put(Dst, 9230);
} else {
- dasm_put(Dst, 9273);
- dasm_put(Dst, 9365);
+ dasm_put(Dst, 9282);
+ dasm_put(Dst, 9374);
}
- dasm_put(Dst, 9411);
+ dasm_put(Dst, 9420);
#endif
- dasm_put(Dst, 9415);
+ dasm_put(Dst, 9424);
if (sse) {
- dasm_put(Dst, 9418, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
- dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 9427, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+ dasm_put(Dst, 9512, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 9631);
- dasm_put(Dst, 9714);
+ dasm_put(Dst, 9640);
+ dasm_put(Dst, 9723);
if (cmov) {
- dasm_put(Dst, 9769);
+ dasm_put(Dst, 9778);
} else {
- dasm_put(Dst, 9788);
+ dasm_put(Dst, 9797);
}
- dasm_put(Dst, 9411);
+ dasm_put(Dst, 9420);
}
- dasm_put(Dst, 9829);
+ dasm_put(Dst, 9838);
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 9413);
+ dasm_put(Dst, 9422);
#endif
- dasm_put(Dst, 9853);
+ dasm_put(Dst, 9862);
#if LJ_HASFFI
-#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
- dasm_put(Dst, 9857, DtE(->spadj));
+#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
+ dasm_put(Dst, 9866, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE, DtE(->cb.gpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[4]), DtE(->cb.fpr[5]), DtE(->cb.fpr[6]), DtE(->cb.fpr[7]), DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 9990, Dt1(->base), Dt1(->top), Dt7(->pc));
+#endif
+ dasm_put(Dst, 10030);
+#if LJ_HASFFI
+ dasm_put(Dst, 10033, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
+#endif
+ dasm_put(Dst, 10074);
+#if LJ_HASFFI
+#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
+ dasm_put(Dst, 10077, DtF(->spadj));
#if LJ_TARGET_WINDOWS
#endif
- dasm_put(Dst, 9873, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->gpr[4]), DtE(->gpr[5]), DtE(->fpr[0]), DtE(->fpr[1]));
- dasm_put(Dst, 9952, DtE(->fpr[2]), DtE(->fpr[3]), DtE(->fpr[4]), DtE(->fpr[5]), DtE(->fpr[6]), DtE(->fpr[7]), DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]), DtE(->gpr[1]), DtE(->fpr[1]));
+ dasm_put(Dst, 10093, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->fpr[0]), DtF(->fpr[1]));
+ dasm_put(Dst, 10172, DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->fpr[1]));
#if LJ_TARGET_WINDOWS
#endif
- dasm_put(Dst, 10007);
+ dasm_put(Dst, 10227);
#endif
}
@@ -1855,7 +1891,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
{
int vk = 0;
- dasm_put(Dst, 10015, defop);
+ dasm_put(Dst, 829, defop);
switch (op) {
@@ -1866,302 +1902,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 10017, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10235, LJ_TISNUM, LJ_TISNUM);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10047);
+ dasm_put(Dst, 10265);
break;
case BC_ISGE:
- dasm_put(Dst, 10052);
+ dasm_put(Dst, 10270);
break;
case BC_ISLE:
- dasm_put(Dst, 10057);
+ dasm_put(Dst, 10275);
break;
case BC_ISGT:
- dasm_put(Dst, 10062);
+ dasm_put(Dst, 10280);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10067, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 10285, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10122);
+ dasm_put(Dst, 10340);
} else {
- dasm_put(Dst, 10133);
+ dasm_put(Dst, 10351);
}
- dasm_put(Dst, 10144);
+ dasm_put(Dst, 10362);
if (sse) {
- dasm_put(Dst, 10151);
+ dasm_put(Dst, 10369);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10171);
+ dasm_put(Dst, 10389);
break;
case BC_ISGE:
- dasm_put(Dst, 10176);
+ dasm_put(Dst, 10394);
break;
case BC_ISLE:
- dasm_put(Dst, 10181);
+ dasm_put(Dst, 10399);
break;
case BC_ISGT:
- dasm_put(Dst, 10186);
+ dasm_put(Dst, 10404);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10191);
+ dasm_put(Dst, 10409);
} else {
- dasm_put(Dst, 10196);
+ dasm_put(Dst, 10414);
}
} else {
- dasm_put(Dst, 10204, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10422, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 10225);
+ dasm_put(Dst, 10443);
} else {
- dasm_put(Dst, 10246);
+ dasm_put(Dst, 10464);
if (cmov) {
- dasm_put(Dst, 10262);
+ dasm_put(Dst, 10480);
} else {
- dasm_put(Dst, 10268);
+ dasm_put(Dst, 10486);
}
}
if (LJ_DUALNUM) {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10171);
+ dasm_put(Dst, 10389);
break;
case BC_ISGE:
- dasm_put(Dst, 10176);
+ dasm_put(Dst, 10394);
break;
case BC_ISLE:
- dasm_put(Dst, 10181);
+ dasm_put(Dst, 10399);
break;
case BC_ISGT:
- dasm_put(Dst, 10186);
+ dasm_put(Dst, 10404);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10191);
+ dasm_put(Dst, 10409);
} else {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10275);
+ dasm_put(Dst, 817);
break;
case BC_ISGE:
- dasm_put(Dst, 10280);
+ dasm_put(Dst, 10493);
break;
case BC_ISLE:
- dasm_put(Dst, 10285);
+ dasm_put(Dst, 10498);
break;
case BC_ISGT:
- dasm_put(Dst, 10290);
+ dasm_put(Dst, 10503);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10295, -BCBIAS_J*4);
+ dasm_put(Dst, 10508, -BCBIAS_J*4);
}
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 10328);
+ dasm_put(Dst, 10541);
if (LJ_DUALNUM) {
- dasm_put(Dst, 10336, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10549, LJ_TISNUM, LJ_TISNUM);
if (vk) {
- dasm_put(Dst, 10361);
+ dasm_put(Dst, 10574);
} else {
- dasm_put(Dst, 10366);
+ dasm_put(Dst, 10579);
}
- dasm_put(Dst, 10371, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 10584, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10424);
+ dasm_put(Dst, 10637);
} else {
- dasm_put(Dst, 10431);
+ dasm_put(Dst, 10644);
}
- dasm_put(Dst, 10435);
+ dasm_put(Dst, 10648);
if (sse) {
- dasm_put(Dst, 10446);
+ dasm_put(Dst, 10659);
} else {
- dasm_put(Dst, 10458);
+ dasm_put(Dst, 10671);
}
- dasm_put(Dst, 10465);
+ dasm_put(Dst, 10678);
} else {
- dasm_put(Dst, 10470, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10683, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 10489);
+ dasm_put(Dst, 10702);
} else {
- dasm_put(Dst, 10507);
+ dasm_put(Dst, 10720);
if (cmov) {
- dasm_put(Dst, 10262);
+ dasm_put(Dst, 10480);
} else {
- dasm_put(Dst, 10268);
+ dasm_put(Dst, 10486);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 10520);
+ dasm_put(Dst, 10733);
} else {
- dasm_put(Dst, 10529);
+ dasm_put(Dst, 10742);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 10538, -BCBIAS_J*4);
+ dasm_put(Dst, 10751, -BCBIAS_J*4);
if (!LJ_HASFFI) {
- dasm_put(Dst, 4675);
+ dasm_put(Dst, 4684);
}
} else {
if (!LJ_HASFFI) {
- dasm_put(Dst, 4675);
+ dasm_put(Dst, 4684);
}
- dasm_put(Dst, 10553, -BCBIAS_J*4);
+ dasm_put(Dst, 10766, -BCBIAS_J*4);
}
if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
op == BC_ISEQN || op == BC_ISNEN)) {
- dasm_put(Dst, 10568);
+ dasm_put(Dst, 10781);
} else {
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
}
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 10573);
+ dasm_put(Dst, 10786);
if (LJ_HASFFI) {
- dasm_put(Dst, 10576, LJ_TCDATA, LJ_TCDATA);
+ dasm_put(Dst, 10789, LJ_TCDATA, LJ_TCDATA);
}
- dasm_put(Dst, 10595, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32));
+ dasm_put(Dst, 11387, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
} else {
- dasm_put(Dst, 11199);
+ dasm_put(Dst, 11412);
}
if (LJ_DUALNUM) {
- dasm_put(Dst, 10568);
+ dasm_put(Dst, 10781);
} else {
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
}
break;
case BC_LEN:
- dasm_put(Dst, 11208, LJ_TSTR);
+ dasm_put(Dst, 11421, LJ_TSTR);
if (LJ_DUALNUM) {
- dasm_put(Dst, 11222, Dt5(->len), LJ_TISNUM);
+ dasm_put(Dst, 11435, Dt5(->len), LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 11236, Dt5(->len));
+ dasm_put(Dst, 11449, Dt5(->len));
} else {
- dasm_put(Dst, 11254, Dt5(->len));
+ dasm_put(Dst, 11467, Dt5(->len));
}
- dasm_put(Dst, 11263, LJ_TTAB);
+ dasm_put(Dst, 11476, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 11299, Dt6(->metatable));
+ dasm_put(Dst, 11512, Dt6(->metatable));
#endif
- dasm_put(Dst, 11313);
+ dasm_put(Dst, 11526);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 11322);
+ dasm_put(Dst, 11535);
} else {
}
- dasm_put(Dst, 11328);
+ dasm_put(Dst, 11541);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 11341, Dt6(->nomm), 1<nomm), 1<base), Dt1(->base));
+ dasm_put(Dst, 12331, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 12202, LJ_TSTR);
+ dasm_put(Dst, 12415, LJ_TSTR);
break;
case BC_KCDATA:
#if LJ_HASFFI
- dasm_put(Dst, 12202, LJ_TCDATA);
+ dasm_put(Dst, 12415, LJ_TCDATA);
#endif
break;
case BC_KSHORT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 12239, LJ_TISNUM);
+ dasm_put(Dst, 12452, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 12251);
+ dasm_put(Dst, 12464);
} else {
- dasm_put(Dst, 12266);
+ dasm_put(Dst, 12479);
}
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 12274);
+ dasm_put(Dst, 12487);
} else {
- dasm_put(Dst, 12288);
+ dasm_put(Dst, 12501);
}
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
break;
case BC_KPRI:
- dasm_put(Dst, 12296);
+ dasm_put(Dst, 12509);
break;
case BC_KNIL:
- dasm_put(Dst, 12325, LJ_TNIL);
+ dasm_put(Dst, 12538, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 12373, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12586, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 12414, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
- dasm_put(Dst, 12510);
+ dasm_put(Dst, 12627, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+ dasm_put(Dst, 12723);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 12522, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+ dasm_put(Dst, 12735, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
break;
case BC_USETN:
- dasm_put(Dst, 12618);
+ dasm_put(Dst, 12831);
if (sse) {
- dasm_put(Dst, 12623);
+ dasm_put(Dst, 12836);
} else {
- dasm_put(Dst, 10839);
+ dasm_put(Dst, 11052);
}
- dasm_put(Dst, 12631, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12844, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 12640);
+ dasm_put(Dst, 12853);
} else {
- dasm_put(Dst, 12646);
+ dasm_put(Dst, 12859);
}
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
break;
case BC_USETP:
- dasm_put(Dst, 12649, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12862, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 12689, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 12902, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 12745, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 12958, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 12812, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 13025, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 12936, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 13149, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 13035, Dt7(->env));
+ dasm_put(Dst, 13248, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 13055, Dt7(->env));
+ dasm_put(Dst, 13268, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 13075, LJ_TTAB);
+ dasm_put(Dst, 13288, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 13098, LJ_TISNUM);
+ dasm_put(Dst, 13311, LJ_TISNUM);
} else {
- dasm_put(Dst, 13112, LJ_TISNUM);
+ dasm_put(Dst, 13325, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 13123);
+ dasm_put(Dst, 13336);
} else {
}
- dasm_put(Dst, 13144);
+ dasm_put(Dst, 13357);
}
- dasm_put(Dst, 13149, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 13344, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 13557, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13770, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETS:
- dasm_put(Dst, 13697, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 13774, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 13861, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13910, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 13987, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 14074, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETB:
- dasm_put(Dst, 13953, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 14048, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 14166, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 14261, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETM:
- dasm_put(Dst, 14096, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 14246, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 14309, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 14459, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 11361);
+ dasm_put(Dst, 11574);
if (op == BC_CALLM) {
- dasm_put(Dst, 14266);
+ dasm_put(Dst, 14479);
}
- dasm_put(Dst, 14271, LJ_TFUNC, Dt7(->pc));
+ dasm_put(Dst, 14484, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 14266);
+ dasm_put(Dst, 14479);
break;
case BC_CALLT:
- dasm_put(Dst, 14314, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
- dasm_put(Dst, 14432, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+ dasm_put(Dst, 14527, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 14645, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
break;
case BC_ITERC:
- dasm_put(Dst, 14506, LJ_TFUNC, 2+1, Dt7(->pc));
+ dasm_put(Dst, 14719, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_ITERN:
#if LJ_HASJIT
#endif
- dasm_put(Dst, 14578, Dt6(->asize), Dt6(->array), LJ_TNIL);
+ dasm_put(Dst, 14791, Dt6(->asize), Dt6(->array), LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 11227, LJ_TISNUM);
+ dasm_put(Dst, 11440, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 11322);
+ dasm_put(Dst, 11535);
} else {
- dasm_put(Dst, 14630);
+ dasm_put(Dst, 14843);
}
- dasm_put(Dst, 14636);
+ dasm_put(Dst, 14849);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 11192);
+ dasm_put(Dst, 11405);
} else {
- dasm_put(Dst, 11204);
+ dasm_put(Dst, 11417);
}
- dasm_put(Dst, 14649, -BCBIAS_J*4);
+ dasm_put(Dst, 14862, -BCBIAS_J*4);
if (!LJ_DUALNUM && !sse) {
- dasm_put(Dst, 14703);
+ dasm_put(Dst, 14916);
}
- dasm_put(Dst, 14709, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+ dasm_put(Dst, 14922, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
break;
case BC_ISNEXT:
- dasm_put(Dst, 14788, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+ dasm_put(Dst, 15001, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
break;
case BC_VARG:
- dasm_put(Dst, 14889, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
- dasm_put(Dst, 15056, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 15102, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+ dasm_put(Dst, 15269, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 14266);
+ dasm_put(Dst, 14479);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 15126);
+ dasm_put(Dst, 15339);
}
- dasm_put(Dst, 15130, FRAME_TYPE);
+ dasm_put(Dst, 15343, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 15149);
+ dasm_put(Dst, 15362);
break;
case BC_RET1:
- dasm_put(Dst, 15203);
+ dasm_put(Dst, 15416);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 15213);
+ dasm_put(Dst, 15426);
default:
break;
}
- dasm_put(Dst, 15224, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 15437, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 15272, LJ_TNIL);
+ dasm_put(Dst, 15485, LJ_TNIL);
} else {
- dasm_put(Dst, 15283, LJ_TNIL);
+ dasm_put(Dst, 15496, LJ_TNIL);
}
- dasm_put(Dst, 15290, -FRAME_VARG, FRAME_TYPEP);
+ dasm_put(Dst, 15503, -FRAME_VARG, FRAME_TYPEP);
if (op != BC_RET0) {
- dasm_put(Dst, 15314);
+ dasm_put(Dst, 15527);
}
- dasm_put(Dst, 4752);
+ dasm_put(Dst, 4761);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2776,7 +2812,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -2788,111 +2824,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORI:
case BC_IFORL:
vk = (op == BC_IFORL || op == BC_JFORL);
- dasm_put(Dst, 15339);
+ dasm_put(Dst, 15552);
if (LJ_DUALNUM) {
- dasm_put(Dst, 15343, LJ_TISNUM);
+ dasm_put(Dst, 15556, LJ_TISNUM);
if (!vk) {
- dasm_put(Dst, 15353, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15566, LJ_TISNUM, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 15382, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15595, LJ_TISNUM, LJ_TISNUM);
#endif
- dasm_put(Dst, 15401);
+ dasm_put(Dst, 15614);
}
- dasm_put(Dst, 15420, LJ_TISNUM);
+ dasm_put(Dst, 15633, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 15431, -BCBIAS_J*4);
+ dasm_put(Dst, 15644, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15445, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15658, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15463, -BCBIAS_J*4);
+ dasm_put(Dst, 15676, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 15455, BC_JLOOP);
+ dasm_put(Dst, 15668, BC_JLOOP);
}
- dasm_put(Dst, 15477);
+ dasm_put(Dst, 15690);
if (vk) {
- dasm_put(Dst, 15502);
+ dasm_put(Dst, 15715);
}
- dasm_put(Dst, 15420, LJ_TISNUM);
+ dasm_put(Dst, 15633, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 15511);
+ dasm_put(Dst, 15724);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15516, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15729, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15530);
+ dasm_put(Dst, 15743);
} else {
- dasm_put(Dst, 15526, BC_JLOOP);
+ dasm_put(Dst, 15739, BC_JLOOP);
}
- dasm_put(Dst, 15535);
+ dasm_put(Dst, 15748);
} else if (!vk) {
- dasm_put(Dst, 15542, LJ_TISNUM);
+ dasm_put(Dst, 15755, LJ_TISNUM);
}
if (!vk) {
- dasm_put(Dst, 15548, LJ_TISNUM);
+ dasm_put(Dst, 15761, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 15562, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15775, LJ_TISNUM, LJ_TISNUM);
#endif
}
- dasm_put(Dst, 15581);
+ dasm_put(Dst, 15794);
if (!vk) {
- dasm_put(Dst, 15585, LJ_TISNUM);
+ dasm_put(Dst, 15798, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 15594);
+ dasm_put(Dst, 15807);
if (vk) {
- dasm_put(Dst, 15606);
+ dasm_put(Dst, 15819);
} else {
- dasm_put(Dst, 15625);
+ dasm_put(Dst, 15838);
}
- dasm_put(Dst, 15630);
+ dasm_put(Dst, 15843);
} else {
- dasm_put(Dst, 15643);
+ dasm_put(Dst, 15856);
if (vk) {
- dasm_put(Dst, 15649);
+ dasm_put(Dst, 15862);
} else {
- dasm_put(Dst, 15665);
+ dasm_put(Dst, 15878);
}
- dasm_put(Dst, 15673);
+ dasm_put(Dst, 15886);
if (cmov) {
- dasm_put(Dst, 10262);
+ dasm_put(Dst, 10480);
} else {
- dasm_put(Dst, 10268);
+ dasm_put(Dst, 10486);
}
if (!cmov) {
- dasm_put(Dst, 15678);
+ dasm_put(Dst, 15891);
}
}
if (op == BC_FORI) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 15684);
+ dasm_put(Dst, 15897);
} else {
- dasm_put(Dst, 15689, -BCBIAS_J*4);
+ dasm_put(Dst, 15902, -BCBIAS_J*4);
}
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15699, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15912, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 15713);
+ dasm_put(Dst, 15926);
} else {
- dasm_put(Dst, 15718, -BCBIAS_J*4);
+ dasm_put(Dst, 15931, -BCBIAS_J*4);
}
} else {
- dasm_put(Dst, 15709, BC_JLOOP);
+ dasm_put(Dst, 15922, BC_JLOOP);
}
if (LJ_DUALNUM) {
- dasm_put(Dst, 10191);
+ dasm_put(Dst, 10409);
} else {
- dasm_put(Dst, 10973);
+ dasm_put(Dst, 11186);
}
if (sse) {
- dasm_put(Dst, 15728);
+ dasm_put(Dst, 15941);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -2901,33 +2937,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 15739, LJ_TNIL);
+ dasm_put(Dst, 15952, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 15754, BC_JLOOP);
+ dasm_put(Dst, 15967, BC_JLOOP);
} else {
- dasm_put(Dst, 15768, -BCBIAS_J*4);
+ dasm_put(Dst, 15981, -BCBIAS_J*4);
}
- dasm_put(Dst, 10305);
+ dasm_put(Dst, 10518);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15318, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15531, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15784, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 15997, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 15825, -BCBIAS_J*4);
+ dasm_put(Dst, 16038, -BCBIAS_J*4);
break;
/* -- Function headers -------------------------------------------------- */
@@ -2941,7 +2977,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FUNCF:
#if LJ_HASJIT
- dasm_put(Dst, 15851, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
+ dasm_put(Dst, 16064, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
#endif
case BC_FUNCV: /* NYI: compiled vararg functions. */
break;
@@ -2951,47 +2987,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IFUNCF:
- dasm_put(Dst, 15872, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ dasm_put(Dst, 16085, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
if (op == BC_JFUNCF) {
- dasm_put(Dst, 15903, BC_JLOOP);
+ dasm_put(Dst, 16116, BC_JLOOP);
} else {
- dasm_put(Dst, 10307);
+ dasm_put(Dst, 10520);
}
- dasm_put(Dst, 15912, LJ_TNIL);
+ dasm_put(Dst, 16125, LJ_TNIL);
break;
case BC_JFUNCV:
#if !LJ_HASJIT
break;
#endif
- dasm_put(Dst, 9413);
+ dasm_put(Dst, 9422);
break; /* NYI: compiled vararg functions. */
case BC_IFUNCV:
- dasm_put(Dst, 15934, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ dasm_put(Dst, 16147, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
if (op == BC_JFUNCV) {
- dasm_put(Dst, 15903, BC_JLOOP);
+ dasm_put(Dst, 16116, BC_JLOOP);
} else {
- dasm_put(Dst, 16031, -4+PC2PROTO(k));
+ dasm_put(Dst, 16244, -4+PC2PROTO(k));
}
- dasm_put(Dst, 16056, LJ_TNIL);
+ dasm_put(Dst, 16269, LJ_TNIL);
break;
case BC_FUNCC:
case BC_FUNCCW:
- dasm_put(Dst, 16078, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ dasm_put(Dst, 16291, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
if (op == BC_FUNCC) {
- dasm_put(Dst, 2424);
+ dasm_put(Dst, 2433);
} else {
- dasm_put(Dst, 16108);
+ dasm_put(Dst, 16321);
}
- dasm_put(Dst, 16116, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 16329, DISPATCH_GL(vmstate), ~LJ_VMST_C);
if (op == BC_FUNCC) {
- dasm_put(Dst, 16126);
+ dasm_put(Dst, 16339);
} else {
- dasm_put(Dst, 16131, DISPATCH_GL(wrapf));
+ dasm_put(Dst, 16344, DISPATCH_GL(wrapf));
}
- dasm_put(Dst, 16137, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 16350, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -3019,7 +3055,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 16163);
+ dasm_put(Dst, 16376);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index b051974c..533d5b00 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[16020] = {
+static const unsigned char build_actionlist[16196] = {
254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
36,84,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,
@@ -50,746 +50,755 @@ static const unsigned char build_actionlist[16020] = {
124,36,88,72,139,189,233,72,137,124,36,104,72,137,165,233,65,252,255,209,
133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,209,131,230,
252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,117,252,244,
- 72,99,77,252,240,133,201,15,132,244,247,255,72,141,61,245,72,1,252,249,139,
- 122,252,248,139,191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,
- 3,141,69,252,255,252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,
- 12,202,41,252,233,15,132,244,34,252,247,217,193,252,233,3,65,137,200,139,
- 76,36,96,137,145,233,72,139,0,72,137,69,0,137,252,234,252,233,244,35,248,
- 36,137,68,36,80,199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,
- 244,247,141,139,233,137,41,199,65,4,237,255,137,205,252,233,244,248,248,37,
- 15,182,70,252,254,255,199,68,36,84,237,137,68,36,80,255,252,242,15,42,192,
- 252,242,15,17,68,36,80,255,72,141,68,36,80,252,233,244,247,248,38,15,182,
- 70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,
- 36,96,137,145,233,137,252,234,73,137,192,137,205,137,116,36,100,232,251,1,
- 1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,72,139,40,72,
- 137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,248,3,139,141,233,137,113,252,244,141,177,233,41,214,139,105,252,248,
- 184,237,252,233,244,30,248,39,137,68,36,80,199,68,36,84,237,72,141,68,36,
- 80,128,126,252,252,235,15,133,244,247,255,141,139,233,137,41,199,65,4,237,
- 137,205,252,233,244,248,248,40,15,182,70,252,254,255,72,141,68,36,80,252,
- 233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,
- 44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,205,
- 137,116,36,100,232,251,1,2,139,149,233,133,192,15,132,244,249,15,182,78,252,
- 253,72,139,44,202,72,137,40,248,42,139,6,15,182,204,15,182,232,131,198,4,
- 193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,15,182,70,
- 252,253,72,139,44,194,72,137,105,16,141,177,233,41,214,139,105,252,248,184,
- 237,252,233,244,30,248,43,139,108,36,96,137,149,233,68,141,4,194,141,20,202,
- 137,252,233,68,15,182,78,252,252,137,116,36,100,232,251,1,3,248,3,139,149,
- 233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248,5,
- 15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,131,
- 198,4,193,232,16,252,255,36,252,235,248,45,131,198,4,129,120,253,4,239,15,
- 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131,
- 252,238,4,65,137,192,65,137,252,233,139,108,36,96,137,149,233,255,137,202,
- 137,252,233,137,116,36,100,232,251,1,4,252,233,244,3,248,48,255,131,252,238,
- 4,139,108,36,96,137,149,233,137,252,233,139,86,252,252,137,116,36,100,232,
- 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4,
- 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233,
- 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4,
- 194,248,1,141,44,252,234,248,2,141,12,202,65,137,232,65,137,193,15,182,70,
- 252,252,137,68,36,32,139,108,36,96,137,149,233,137,202,137,252,233,137,116,
- 36,100,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193,41,208,
- 137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,36,96,137,
- 149,233,141,20,194,137,252,233,137,116,36,100,232,251,1,7,139,149,233,255,
- 133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57,255,252,
- 233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,84,137,68,36,80,131,252,
- 233,8,139,108,36,96,137,149,233,137,202,68,141,4,193,137,252,233,137,116,
- 36,100,232,251,1,8,139,149,233,139,76,36,84,139,68,36,80,139,105,252,248,
- 131,192,1,57,215,15,132,244,59,137,202,137,114,252,252,139,181,233,139,14,
- 15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,248,60,139,108,36,
- 96,137,149,233,137,202,137,252,233,137,116,36,100,232,251,1,9,139,149,233,
- 139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,253,252,235,233,
- 248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239,15,131,244,
- 62,139,114,252,252,137,68,36,84,137,106,252,252,139,42,137,106,252,248,131,
- 232,2,15,132,244,248,255,137,209,248,1,131,193,8,72,139,41,72,137,105,252,
- 248,131,232,1,15,133,244,1,248,2,139,68,36,84,252,233,244,63,248,64,129,252,
- 248,239,15,130,244,62,139,106,4,137,252,233,193,252,249,15,131,252,249,252,
- 254,15,132,244,249,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,
- 247,137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,
- 252,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,184,237,252,233,
- 244,2,248,66,129,252,248,239,15,130,244,62,139,106,4,139,114,252,252,129,
- 252,253,239,15,133,244,252,248,1,139,42,139,173,233,248,2,133,252,237,199,
- 66,252,252,237,255,15,132,244,65,139,131,233,199,66,252,252,237,137,106,252,
- 248,139,141,233,35,136,233,105,201,239,3,141,233,248,3,129,185,233,239,15,
- 133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,244,
- 3,255,252,233,244,65,248,5,139,105,4,129,252,253,239,15,132,244,65,139,1,
- 137,106,252,252,137,66,252,248,252,233,244,65,248,6,129,252,253,239,15,132,
- 244,1,129,252,253,239,15,135,244,254,129,252,253,239,15,134,244,253,189,237,
- 252,233,244,254,248,7,255,189,237,248,8,252,247,213,139,172,253,171,233,252,
- 233,244,2,248,67,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,
- 62,139,42,131,189,233,0,15,133,244,62,129,122,253,12,239,15,133,244,62,139,
- 66,8,137,133,233,139,114,252,252,199,66,252,252,237,255,137,106,252,248,252,
- 246,133,233,235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,
- 133,233,248,1,252,233,244,65,248,68,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,15,133,244,62,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1,
- 10,137,252,234,72,139,40,139,114,252,252,72,137,106,252,248,252,233,244,65,
- 248,69,255,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244,
- 247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244,62,255,252,242,
- 15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73,129,252,248,239,
- 15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,
- 2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129,122,253,4,239,
- 15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171,233,255,15,130,
- 244,247,232,244,74,248,1,139,108,36,96,137,149,233,137,116,36,100,137,252,
- 233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,75,
- 129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253,4,239,15,133,
- 244,62,139,108,36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,
- 139,18,137,252,233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132,
- 244,249,72,139,106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,76,184,
- 237,255,252,233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,
- 252,237,252,233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122,
- 253,4,239,15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248,
- 139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,
- 184,237,252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4,
- 239,15,133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,
- 192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,
- 237,102,72,15,110,205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,
- 252,248,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,
- 120,253,4,239,15,132,244,80,72,139,40,72,137,42,252,233,244,76,248,2,131,
- 189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14,137,252,
- 234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255,139,106,
- 252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,255,
- 199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,
- 238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15,130,244,
- 62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,
- 1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129,122,253,
- 12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,
- 8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,84,129,252,
- 248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,100,137,108,36,80,
- 129,122,253,4,239,15,133,244,62,72,131,189,233,0,15,133,244,62,128,189,233,
- 235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244,62,
- 248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108,36,
- 96,137,149,233,131,194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,
- 15,132,244,249,248,2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,
- 133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233,237,255,139,108,
- 36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,
- 142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,
- 193,252,238,3,59,133,233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,
- 72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,
- 237,248,7,139,116,36,100,137,68,36,84,72,199,193,252,248,252,255,252,255,
- 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
- 252,237,139,142,233,131,252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,
- 233,244,7,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,232,251,
- 1,0,139,116,36,80,139,149,233,252,233,244,4,248,85,139,106,252,248,139,173,
- 233,139,114,252,252,137,116,36,100,137,108,36,80,72,131,189,233,0,15,133,
- 244,62,255,128,189,233,235,15,135,244,62,139,141,233,15,132,244,247,59,141,
- 233,15,132,244,62,248,1,141,116,193,252,248,59,181,233,15,135,244,62,137,
- 181,233,139,108,36,96,137,149,233,137,149,233,141,108,194,252,240,72,41,252,
- 245,57,206,15,132,244,249,248,2,255,72,139,4,46,72,137,70,252,248,131,252,
- 238,8,57,206,15,133,244,2,248,3,137,202,139,76,36,80,232,244,25,199,131,233,
- 237,139,108,36,96,139,116,36,80,139,149,233,129,252,248,239,15,135,244,254,
- 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
- 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,72,41,205,248,
- 5,72,139,1,72,137,4,41,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,
- 7,139,116,36,100,137,68,36,84,49,201,252,247,198,237,15,132,244,13,252,233,
- 244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139,76,36,80,137,
- 185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,233,252,
- 233,244,4,248,86,139,108,36,96,72,252,247,133,233,237,15,132,244,62,255,137,
- 149,233,141,68,194,252,248,137,133,233,49,192,72,137,133,233,176,235,136,
- 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248,
- 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4,
- 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136,
- 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248,
- 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252,
- 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131,
- 244,62,255,252,242,15,16,2,72,184,237,237,102,72,15,110,200,15,84,193,248,
- 71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,225,248,71,248,
- 72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77,137,68,36,84,
- 248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,
- 15,182,78,252,253,72,252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,
- 198,4,193,232,16,252,255,36,252,235,248,6,199,68,194,252,244,237,131,192,
- 1,252,233,244,5,248,7,72,199,193,252,248,252,255,252,255,252,255,252,233,
- 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70,
- 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232,
- 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138,
- 244,71,15,132,244,70,255,221,2,232,244,90,255,248,91,255,252,242,15,16,2,
- 232,244,92,255,221,2,232,244,92,255,248,93,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,15,131,244,62,252,242,15,81,2,252,233,244,71,255,248,93,
- 129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,
- 250,252,233,244,72,255,248,94,129,252,248,239,15,130,244,62,129,122,253,4,
- 239,15,131,244,62,217,252,237,221,2,217,252,241,252,233,244,72,248,95,129,
- 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,236,221,
- 2,217,252,241,252,233,244,72,248,96,129,252,248,239,255,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,221,2,232,244,97,252,233,244,72,248,98,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,254,252,
- 233,244,72,248,99,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,
- 131,244,62,221,2,217,252,255,252,233,244,72,248,100,129,252,248,239,15,130,
- 244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,242,221,216,252,233,
- 244,72,248,101,129,252,248,239,15,130,244,62,255,129,122,253,4,239,15,131,
- 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
- 233,244,72,248,102,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
- 243,252,233,244,72,248,103,129,252,248,239,15,130,244,62,129,122,253,4,239,
- 15,131,244,62,255,221,2,217,232,217,252,243,252,233,244,72,255,248,104,129,
- 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,
- 255,137,213,232,251,1,16,137,252,234,252,233,244,71,255,248,105,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137,
- 213,232,251,1,17,137,252,234,252,233,244,71,255,248,106,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,137,213,232,
- 251,1,18,137,252,234,252,233,244,71,248,107,255,248,108,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248,
- 252,242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244,
- 62,129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252,
- 233,244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15,
- 131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252,
- 233,244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221,
- 217,252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252,
- 253,239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248,
- 209,229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,
- 252,254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,
- 197,255,252,242,15,42,197,255,137,108,36,80,219,68,36,80,255,139,106,252,
- 252,129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,
- 2,255,252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15,
- 87,192,252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,
- 15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,89,193,252,242,15,17,
- 66,252,248,255,221,2,199,68,36,80,0,0,128,90,216,76,36,80,221,90,252,248,
- 255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,255,
- 248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,
- 2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,132,
- 244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15,17,66,
- 252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1,221,90,
- 252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,248,2,184,
- 237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,
- 4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,1,255,248,
- 114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
- 253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223,224,158,15,
- 138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,
- 15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248,115,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,
- 15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248,117,185,2,
- 0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,
- 70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,79,108,
- 202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252,233,244,252,
- 248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244,71,129,124,
- 253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15,42,76,202,
- 252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,
- 242,15,93,193,131,193,1,252,233,244,5,255,248,118,185,2,0,0,0,129,122,253,
- 4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129,124,253,202,
- 252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,
- 1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76,202,252,248,
- 248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,248,9,221,216,252,233,
- 244,62,255,248,119,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,
- 244,62,139,42,255,139,173,233,252,233,244,70,255,252,242,15,42,133,233,252,
- 233,244,71,255,219,133,233,252,233,244,72,255,248,120,129,252,248,239,15,
- 133,244,62,129,122,253,4,239,15,133,244,62,139,42,139,114,252,252,131,189,
- 233,1,15,130,244,80,15,182,173,233,255,252,242,15,42,197,252,233,244,71,255,
- 137,108,36,80,219,68,36,80,252,233,244,72,255,248,121,139,171,233,59,171,
- 233,15,130,244,247,232,244,74,248,1,129,252,248,239,15,133,244,62,129,122,
- 253,4,239,255,15,133,244,62,139,42,129,252,253,252,255,0,0,0,15,135,244,62,
- 137,108,36,84,255,15,131,244,62,252,242,15,44,42,129,252,253,252,255,0,0,
- 0,15,135,244,62,137,108,36,84,255,15,131,244,62,221,2,219,92,36,84,129,124,
- 36,84,252,255,0,0,0,15,135,244,62,255,199,68,36,32,1,0,0,0,72,141,68,36,84,
- 248,122,139,108,36,96,137,149,233,68,139,68,36,32,72,137,194,137,252,233,
- 137,116,36,100,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,237,
- 137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233,15,130,244,247,
- 232,244,74,248,1,199,68,36,84,252,255,252,255,252,255,252,255,129,252,248,
- 239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,133,244,62,139,
- 106,16,137,108,36,84,255,15,131,244,62,252,242,15,44,106,16,137,108,36,84,
- 255,15,131,244,62,221,66,16,219,92,36,84,255,248,1,129,122,253,4,239,15,133,
- 244,62,129,122,253,12,239,255,139,42,137,108,36,32,139,173,233,255,139,74,
- 8,255,252,242,15,44,74,8,255,139,68,36,84,57,197,15,130,244,251,248,2,133,
- 201,15,142,244,253,248,3,139,108,36,32,41,200,15,140,244,124,141,172,253,
- 13,233,131,192,1,248,4,137,68,36,32,137,232,252,233,244,122,248,5,15,140,
- 244,252,141,68,40,1,252,233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,
- 132,244,254,1,252,233,131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,
- 3,248,124,49,192,252,233,244,4,248,125,129,252,248,239,15,130,244,62,139,
- 171,233,59,171,233,15,130,244,247,232,244,74,248,1,255,129,122,253,4,239,
- 15,133,244,62,129,122,253,12,239,139,42,255,15,133,244,62,139,66,8,255,15,
- 131,244,62,252,242,15,44,66,8,255,15,131,244,62,221,66,8,219,92,36,84,139,
- 68,36,84,255,133,192,15,142,244,124,131,189,233,1,15,130,244,124,15,133,244,
- 126,57,131,233,15,130,244,126,15,182,141,233,139,171,233,137,68,36,32,248,
- 1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248,
- 127,129,252,248,239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247,
- 232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192,
- 15,132,244,124,57,131,233,15,130,244,128,129,197,239,137,116,36,84,137,68,
- 36,32,139,179,233,248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,
- 244,1,137,252,240,139,116,36,84,252,233,244,122,248,129,129,252,248,239,15,
- 130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,
- 253,4,239,15,133,244,62,139,42,139,133,233,57,131,233,255,15,130,244,128,
+ 72,99,77,252,240,255,131,252,249,1,15,134,244,247,255,72,141,61,245,72,1,
+ 252,249,255,139,122,252,248,139,191,233,139,191,233,252,255,225,255,248,1,
+ 15,132,244,32,41,213,193,252,237,3,141,69,252,255,252,233,244,33,255,248,
+ 34,15,182,78,252,255,131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,
+ 247,217,193,252,233,3,65,137,200,139,76,36,96,137,145,233,72,139,0,72,137,
+ 69,0,137,252,234,252,233,244,36,248,37,137,68,36,80,199,68,36,84,237,72,141,
+ 68,36,80,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,65,4,237,
+ 137,205,252,233,244,248,248,38,15,182,70,252,254,255,199,68,36,84,237,137,
+ 68,36,80,255,252,242,15,42,192,252,242,15,17,68,36,80,255,72,141,68,36,80,
+ 252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,
+ 141,44,252,234,248,2,139,76,36,96,137,145,233,137,252,234,73,137,192,137,
+ 205,137,116,36,100,232,251,1,1,139,149,233,133,192,15,132,244,249,248,35,
+ 15,182,78,252,253,72,139,40,72,137,44,202,139,6,15,182,204,15,182,232,131,
+ 198,4,193,232,16,252,255,36,252,235,248,3,139,141,233,137,113,252,244,141,
+ 177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,40,137,68,36,80,
+ 199,68,36,84,237,72,141,68,36,80,128,126,252,252,235,15,133,244,247,255,141,
+ 139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,41,15,182,70,252,
+ 254,255,72,141,68,36,80,252,233,244,247,248,42,15,182,70,252,254,141,4,194,
+ 248,1,15,182,110,252,255,141,44,252,234,248,2,139,76,36,96,137,145,233,137,
+ 252,234,73,137,192,137,205,137,116,36,100,232,251,1,2,139,149,233,133,192,
+ 15,132,244,249,15,182,78,252,253,72,139,44,202,72,137,40,248,43,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,139,141,
+ 233,137,113,252,244,15,182,70,252,253,72,139,44,194,72,137,105,16,141,177,
+ 233,41,214,139,105,252,248,184,237,252,233,244,30,248,44,139,108,36,96,137,
+ 149,233,68,141,4,194,141,20,202,137,252,233,68,15,182,78,252,252,137,116,
+ 36,100,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
+ 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
+ 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,
+ 46,131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,
+ 253,4,239,252,233,244,4,248,48,131,252,238,4,65,137,192,65,137,252,233,139,
+ 108,36,96,137,149,233,255,137,202,137,252,233,137,116,36,100,232,251,1,4,
+ 252,233,244,3,248,49,255,131,252,238,4,139,108,36,96,137,149,233,137,252,
+ 233,139,86,252,252,137,116,36,100,232,251,1,5,252,233,244,3,255,248,50,255,
+ 15,182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,
+ 141,4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,
+ 233,244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,
+ 202,65,137,232,65,137,193,15,182,70,252,252,137,68,36,32,139,108,36,96,137,
+ 149,233,137,202,137,252,233,137,116,36,100,232,251,1,6,139,149,233,133,192,
+ 15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,252,
+ 233,244,28,248,57,139,108,36,96,137,149,233,141,20,194,137,252,233,137,116,
+ 36,100,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,254,
+ 139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,248,
+ 29,137,76,36,84,137,68,36,80,131,252,233,8,139,108,36,96,137,149,233,137,
+ 202,68,141,4,193,137,252,233,137,116,36,100,232,251,1,8,139,149,233,139,76,
+ 36,84,139,68,36,80,139,105,252,248,131,192,1,57,215,15,132,244,60,137,202,
+ 137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,
+ 255,36,252,235,248,61,139,108,36,96,137,149,233,137,202,137,252,233,137,116,
+ 36,100,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,
+ 16,252,255,164,253,252,235,233,248,62,129,252,248,239,15,130,244,63,139,106,
+ 4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,84,137,106,252,
+ 252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,
+ 193,8,72,139,41,72,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
+ 84,252,233,244,64,248,65,129,252,248,239,15,130,244,63,139,106,4,137,252,
+ 233,193,252,249,15,131,252,249,252,254,15,132,244,249,184,237,252,247,213,
+ 57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,2,139,106,252,
+ 248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
+ 252,233,244,66,248,3,184,237,252,233,244,2,248,67,129,252,248,239,15,130,
+ 244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,
+ 42,139,173,233,248,2,133,252,237,199,66,252,252,237,255,15,132,244,66,139,
+ 131,233,199,66,252,252,237,137,106,252,248,139,141,233,35,136,233,105,201,
+ 239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,
+ 251,248,4,139,137,233,133,201,15,133,244,3,255,252,233,244,66,248,5,139,105,
+ 4,129,252,253,239,15,132,244,66,139,1,137,106,252,252,137,66,252,248,252,
+ 233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,
+ 254,129,252,253,239,15,134,244,253,189,237,252,233,244,254,248,7,255,189,
+ 237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,15,133,244,63,139,42,131,189,233,0,15,
+ 133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,133,233,139,114,
+ 252,252,199,66,252,252,237,255,137,106,252,248,252,246,133,233,235,15,132,
+ 244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,252,233,
+ 244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
+ 63,137,213,68,141,66,8,139,18,139,76,36,96,232,251,1,10,137,252,234,72,139,
+ 40,139,114,252,252,72,137,106,252,248,252,233,244,66,248,70,255,129,252,248,
+ 239,15,133,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
+ 71,248,1,15,135,244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,
+ 72,255,221,2,252,233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,
+ 114,252,252,129,122,253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,
+ 137,66,252,248,252,233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,
+ 233,0,15,133,244,63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,
+ 248,1,139,108,36,96,137,149,233,137,116,36,100,137,252,233,255,232,251,1,
+ 11,255,232,251,1,12,255,139,149,233,252,233,244,2,248,76,129,252,248,239,
+ 15,130,244,63,15,132,244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,
+ 36,96,137,149,233,137,149,233,139,114,252,252,68,141,66,8,139,18,137,252,
+ 233,137,116,36,100,232,251,1,13,139,149,233,133,192,15,132,244,249,72,139,
+ 106,8,72,139,66,16,72,137,106,252,248,72,137,2,248,77,184,237,255,252,233,
+ 244,78,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,233,
+ 244,66,248,79,129,252,248,239,15,130,244,63,139,42,129,122,253,4,239,15,133,
+ 244,63,255,131,189,233,0,15,133,244,63,255,139,106,252,248,139,133,233,139,
+ 114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,252,233,
+ 244,78,248,80,129,252,248,239,15,130,244,63,129,122,253,4,239,15,133,244,
+ 63,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,199,66,252,
+ 252,237,137,66,252,248,255,252,242,15,16,66,8,72,189,237,237,102,72,15,110,
+ 205,252,242,15,88,193,252,242,15,45,192,252,242,15,17,66,252,248,255,139,
+ 42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,120,253,4,239,
+ 15,132,244,81,72,139,40,72,137,42,252,233,244,77,248,2,131,189,233,0,15,132,
+ 244,81,137,252,233,137,213,137,194,232,251,1,14,137,252,234,133,192,15,133,
+ 244,1,248,81,184,237,252,233,244,78,248,82,255,139,106,252,248,139,133,233,
+ 139,114,252,252,199,66,252,252,237,137,66,252,248,255,199,66,12,237,199,66,
+ 8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,
+ 237,252,233,244,78,248,83,129,252,248,239,15,130,244,63,141,74,8,131,232,
+ 1,190,237,248,1,15,182,171,233,193,252,237,235,131,229,1,1,252,238,252,233,
+ 244,28,248,84,129,252,248,239,15,130,244,63,129,122,253,12,239,15,133,244,
+ 63,255,139,106,4,137,106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,
+ 141,74,16,131,232,2,190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,
+ 63,139,42,139,114,252,252,137,116,36,100,137,108,36,80,129,122,253,4,239,
+ 15,133,244,63,72,131,189,233,0,15,133,244,63,128,189,233,235,15,135,244,63,
+ 139,141,233,15,132,244,247,255,59,141,233,15,132,244,63,248,1,141,116,193,
+ 252,240,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,233,131,
+ 194,8,137,149,233,141,108,194,232,72,41,252,245,57,206,15,132,244,249,248,
+ 2,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,
+ 202,139,76,36,80,232,244,25,199,131,233,237,255,139,108,36,96,139,116,36,
+ 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
+ 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
+ 233,15,135,244,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,8,
+ 57,252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,
+ 100,137,68,36,84,72,199,193,252,248,252,255,252,255,252,255,252,247,198,237,
+ 255,15,132,244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,
+ 252,233,8,137,142,233,72,139,1,72,137,2,184,237,252,233,244,7,248,9,139,76,
+ 36,80,137,185,233,137,252,242,137,252,233,232,251,1,0,139,116,36,80,139,149,
+ 233,252,233,244,4,248,86,139,106,252,248,139,173,233,139,114,252,252,137,
+ 116,36,100,137,108,36,80,72,131,189,233,0,15,133,244,63,255,128,189,233,235,
+ 15,135,244,63,139,141,233,15,132,244,247,59,141,233,15,132,244,63,248,1,141,
+ 116,193,252,248,59,181,233,15,135,244,63,137,181,233,139,108,36,96,137,149,
+ 233,137,149,233,141,108,194,252,240,72,41,252,245,57,206,15,132,244,249,248,
+ 2,255,72,139,4,46,72,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,
+ 3,137,202,139,76,36,80,232,244,25,199,131,233,237,139,108,36,96,139,116,36,
+ 80,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,
+ 137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,
+ 233,15,135,244,255,255,137,213,72,41,205,248,5,72,139,1,72,137,4,41,131,193,
+ 8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,100,137,68,36,84,
+ 49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,242,137,
+ 252,233,232,251,1,15,248,9,139,76,36,80,137,185,233,137,252,242,137,252,233,
+ 232,251,1,0,139,116,36,80,139,149,233,252,233,244,4,248,87,139,108,36,96,
+ 72,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
+ 133,233,49,192,72,137,133,233,176,235,136,133,233,252,233,244,16,255,248,
+ 71,255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,
+ 252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,
+ 252,253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,
+ 252,252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,
+ 252,199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,
+ 15,135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,72,
+ 184,237,237,102,72,15,110,200,15,84,193,248,72,139,114,252,252,252,242,15,
+ 17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,252,221,90,252,
+ 248,255,248,66,184,237,248,78,137,68,36,84,248,64,252,247,198,237,15,133,
+ 244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,72,252,247,209,
+ 141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
+ 235,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,72,199,193,
+ 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
+ 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
+ 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
+ 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
+ 91,255,248,92,255,252,242,15,16,2,232,244,93,255,221,2,232,244,93,255,248,
+ 94,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,
+ 15,81,2,252,233,244,72,255,248,94,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,15,131,244,63,221,2,217,252,250,252,233,244,73,255,248,95,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,237,221,2,217,252,
+ 241,252,233,244,73,248,96,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,217,252,236,221,2,217,252,241,252,233,244,73,248,97,129,252,
+ 248,239,255,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,232,244,98,
+ 252,233,244,73,248,99,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
+ 131,244,63,221,2,217,252,254,252,233,244,73,248,100,129,252,248,239,255,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,255,252,233,244,
+ 73,248,101,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
+ 221,2,217,252,242,221,216,252,233,244,73,248,102,129,252,248,239,15,130,244,
+ 63,255,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
+ 225,217,252,250,217,252,243,252,233,244,73,248,103,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,15,131,244,63,221,2,217,192,216,200,217,232,222,
+ 225,217,252,250,217,201,217,252,243,252,233,244,73,248,104,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,255,221,2,217,232,217,252,243,
+ 252,233,244,73,255,248,105,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,252,242,15,16,2,255,137,213,232,251,1,16,137,252,234,252,233,
+ 244,72,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,252,242,15,16,2,255,137,213,232,251,1,17,137,252,234,252,233,244,72,
+ 255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
+ 252,242,15,16,2,255,137,213,232,251,1,18,137,252,234,252,233,244,72,248,108,
+ 255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,
+ 252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
+ 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
+ 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
+ 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
+ 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
+ 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
+ 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
+ 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
+ 108,36,80,219,68,36,80,255,139,106,252,252,129,229,252,255,252,255,15,128,
+ 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
+ 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
+ 252,233,244,2,255,248,4,255,252,242,15,16,2,72,189,237,237,102,72,15,110,
+ 205,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,68,36,80,0,0,
+ 128,90,216,76,36,80,221,90,252,248,255,139,106,252,252,184,52,4,0,0,209,229,
+ 252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,252,209,229,129,
+ 252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,244,114,252,242,
+ 15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,255,217,192,232,
+ 244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,252,252,139,106,
+ 4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,3,129,252,245,0,
+ 0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,244,1,255,217,
+ 252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,66,8,221,
+ 2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,233,244,73,255,248,
+ 116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,
+ 253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,232,244,117,252,
+ 233,244,72,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
+ 131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,232,244,117,252,
+ 233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,
+ 42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,
+ 59,108,202,252,248,15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,
+ 135,244,63,255,252,233,244,252,248,4,15,135,244,63,255,252,242,15,16,2,248,
+ 5,57,193,15,131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,
+ 135,244,63,252,242,15,42,76,202,252,248,252,233,244,253,255,248,6,252,242,
+ 15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,
+ 248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,
+ 193,15,131,244,71,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,
+ 248,15,76,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,63,255,
+ 248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,95,193,131,193,1,252,
+ 233,244,5,255,248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,
+ 244,71,255,252,242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,
+ 73,255,248,121,129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,
+ 63,139,42,139,114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,
+ 252,242,15,42,197,252,233,244,72,255,137,108,36,80,219,68,36,80,252,233,244,
+ 73,255,248,122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
+ 252,248,239,15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,
+ 252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,244,63,252,242,
+ 15,44,42,129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,84,255,15,131,
+ 244,63,221,2,219,92,36,84,129,124,36,84,252,255,0,0,0,15,135,244,63,255,199,
+ 68,36,32,1,0,0,0,72,141,68,36,84,248,123,139,108,36,96,137,149,233,68,139,
+ 68,36,32,72,137,194,137,252,233,137,116,36,100,232,251,1,19,139,149,233,139,
+ 114,252,252,199,66,252,252,237,137,66,252,248,252,233,244,66,248,124,139,
+ 171,233,59,171,233,15,130,244,247,232,244,75,248,1,199,68,36,84,252,255,252,
+ 255,252,255,252,255,129,252,248,239,15,130,244,63,15,134,244,247,129,122,
+ 253,20,239,255,15,133,244,63,139,106,16,137,108,36,84,255,15,131,244,63,252,
+ 242,15,44,106,16,137,108,36,84,255,15,131,244,63,221,66,16,219,92,36,84,255,
+ 248,1,129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,42,137,108,
+ 36,32,139,173,233,255,139,74,8,255,252,242,15,44,74,8,255,139,68,36,84,57,
+ 197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,36,32,41,200,
+ 15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,32,137,232,252,
+ 233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,248,6,137,232,
+ 252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,15,143,244,3,248,
+ 8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,248,126,129,252,
+ 248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,
+ 1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,42,255,15,133,
+ 244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,131,244,63,221,
+ 66,8,219,92,36,84,139,68,36,84,255,133,192,15,142,244,125,131,189,233,1,15,
+ 130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,182,141,233,139,171,
+ 233,137,68,36,32,248,1,136,77,0,131,197,1,131,232,1,15,133,244,1,139,131,
+ 233,252,233,244,123,248,128,129,252,248,239,255,15,130,244,63,139,171,233,
+ 59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,
+ 139,42,139,133,233,133,192,15,132,244,125,57,131,233,15,130,244,129,129,197,
+ 239,137,116,36,84,137,68,36,32,139,179,233,248,1,255,15,182,77,0,131,197,
+ 1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,36,84,252,233,244,123,
+ 248,130,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
+ 232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,
+ 233,255,15,130,244,129,129,197,239,137,116,36,84,137,68,36,32,139,179,233,
+ 252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,
+ 249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,
+ 244,1,137,252,240,139,116,36,84,252,233,244,123,248,131,129,252,248,239,15,
+ 130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,
+ 122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,15,130,244,129,
129,197,239,137,116,36,84,137,68,36,32,139,179,233,252,233,244,249,248,1,
- 15,182,76,5,0,131,252,249,65,15,130,244,248,131,252,249,90,15,135,244,248,
- 131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,
- 116,36,84,252,233,244,122,248,130,129,252,248,239,15,130,244,62,255,139,171,
- 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244,
- 62,139,42,139,133,233,57,131,233,15,130,244,128,129,197,239,137,116,36,84,
- 137,68,36,32,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,
- 97,15,130,244,248,255,131,252,249,122,15,135,244,248,131,252,241,32,248,2,
- 136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,84,252,233,244,
- 122,248,131,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62,
- 137,213,139,10,232,251,1,20,137,252,234,255,137,197,252,233,244,70,255,252,
- 242,15,42,192,252,233,244,71,255,248,132,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248,1,15,135,244,62,
- 255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,252,242,15,88,193,102,
- 15,126,197,255,252,233,244,88,255,248,133,129,252,248,239,15,130,244,62,255,
- 72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,0,192,89,255,15,133,244,
- 247,139,42,252,233,244,248,248,1,15,135,244,62,255,252,242,15,16,2,252,242,
- 15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,68,194,252,240,248,1,
- 57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,
- 252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252,242,15,16,0,
- 252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,252,233,244,1,248,135,
- 129,252,248,239,15,130,244,62,255,15,133,244,248,11,40,131,232,8,252,233,
- 244,1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,
- 193,9,205,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244,
- 62,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,244,134,
- 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,131,232,8,
- 252,233,244,1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255,
- 248,2,15,205,252,233,244,88,248,138,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,255,248,2,252,247,213,255,248,88,252,242,15,42,197,252,233,244,
- 71,255,248,134,139,68,36,84,252,233,244,62,255,248,139,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,62,139,
- 74,8,255,248,139,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,
- 189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,
- 126,197,102,15,126,201,255,211,229,252,233,244,88,255,248,140,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,255,248,140,129,252,248,239,15,130,244,
- 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,
- 15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,
- 194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,252,237,252,233,
- 244,88,255,248,141,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,
- 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
- 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,
- 102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,
- 15,126,201,255,211,252,253,252,233,244,88,255,248,142,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,
+ 15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,122,15,135,244,
+ 248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,1,137,252,240,
+ 139,116,36,84,252,233,244,123,248,132,129,252,248,239,15,130,244,63,129,122,
+ 253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,234,255,137,197,
+ 252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,248,133,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,
+ 89,248,1,15,135,244,63,255,252,242,15,16,2,72,189,237,237,102,72,15,110,205,
+ 252,242,15,88,193,102,15,126,197,255,252,233,244,89,255,248,134,129,252,248,
+ 239,15,130,244,63,255,72,189,237,237,102,72,15,110,205,255,199,68,36,80,0,
+ 0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,255,
+ 252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,248,2,137,68,36,84,141,
+ 68,194,252,240,248,1,57,208,15,134,244,89,129,120,253,4,239,255,15,133,244,
+ 248,35,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,15,131,244,135,
+ 255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,131,232,8,
+ 252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,15,133,244,248,11,
+ 40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,242,15,16,0,252,242,
+ 15,88,193,102,15,126,193,9,205,255,131,232,8,252,233,244,1,248,137,129,252,
+ 248,239,15,130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,
+ 2,15,135,244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,
+ 205,255,131,232,8,252,233,244,1,248,138,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,255,248,2,15,205,252,233,244,89,248,139,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,248,89,252,242,15,
+ 42,197,252,233,244,72,255,248,135,139,68,36,84,252,233,244,63,255,248,140,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,
+ 239,15,133,244,63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,
2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,
- 242,15,88,202,102,15,126,197,102,15,126,201,255,211,197,252,233,244,88,255,
- 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,
- 15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
+ 242,15,88,202,102,15,126,197,102,15,126,201,255,211,229,252,233,244,89,255,
+ 248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,
+ 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
+ 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,
110,213,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,
- 255,211,205,252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237,
- 248,62,139,108,36,96,139,114,252,252,137,116,36,100,137,149,233,141,68,194,
- 252,248,141,136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,
- 137,252,233,252,255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139,
- 141,233,41,209,193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,
- 32,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,
- 235,248,32,137,209,252,247,198,237,15,133,244,249,15,182,110,252,253,72,252,
- 247,213,141,20,252,234,252,233,244,28,248,3,137,252,245,131,229,252,248,41,
- 252,234,252,233,244,28,248,5,186,237,137,252,233,232,251,1,0,139,149,233,
- 49,192,252,233,244,1,248,74,93,72,137,108,36,32,139,108,36,96,137,116,36,
- 100,137,149,233,255,141,68,194,252,248,137,252,233,137,133,233,232,251,1,
- 21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,139,108,36,32,85,
- 195,248,144,255,15,182,131,233,168,235,15,133,244,251,168,235,15,133,244,
- 247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,255,248,145,15,
- 182,131,233,168,235,15,133,244,251,252,233,244,247,248,146,15,182,131,233,
- 168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,233,15,132,244,
- 247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,233,137,252,242,
- 137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,252,253,248,5,
- 15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,147,
- 131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,148,255,139,106,252,248,
- 139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,137,133,233,
- 137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,1,23,252,233,
- 244,3,255,248,149,137,116,36,100,255,248,150,255,137,116,36,100,131,206,1,
- 248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,133,233,137,252,
- 242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,230,252,254,255,
- 139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,78,252,253,193,
- 232,3,131,192,1,252,255,229,248,151,255,65,85,65,84,65,83,65,82,65,81,65,
- 80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,252,
- 240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,233,199,131,233,
- 237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,128,252,242,68,
- 15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,15,17,109,232,252,
- 242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,15,17,85,208,252,
- 242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,125,184,252,242,
- 15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,252,242,15,17,93,
- 152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,17,69,128,139,171,
- 233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,149,233,72,141,148,
- 253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,129,225,239,137,169,
- 233,139,149,233,139,177,233,252,233,244,247,255,248,152,255,72,141,140,253,
- 36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,102,68,15,111,169,
- 233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,15,111,145,233,102,
- 68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,233,72,137,204,102,
- 15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,36,32,76,139,100,36,
- 80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,139,191,233,139,191,
- 233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,
- 4,193,232,16,129,252,253,239,15,130,244,248,255,139,68,36,84,248,2,252,255,
- 36,252,235,248,3,252,247,216,137,252,233,137,194,232,251,1,26,255,248,90,
- 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
- 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
- 255,248,153,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
- 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
- 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,
- 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,
- 195,248,92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,
- 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
- 68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
- 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
- 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
- 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,
- 193,248,1,195,248,113,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,
- 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,
- 255,248,155,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,
- 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,
- 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,
- 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,
- 193,248,1,195,248,156,255,15,40,232,252,242,15,94,193,72,184,237,237,102,
- 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,
- 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,
- 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,
- 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,
- 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,
- 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,
- 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,
- 248,97,217,252,234,222,201,248,157,217,84,36,8,129,124,36,8,0,0,128,127,15,
- 132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,248,158,217,192,217,
- 252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,
- 248,1,195,248,2,221,216,217,252,238,195,255,248,116,255,248,159,252,242,15,
- 45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,
- 160,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,
- 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,
- 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,
- 200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,
- 130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,15,110,200,252,242,
- 15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,110,192,195,248,8,
- 102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,
- 248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,193,192,12,72,61,252,
- 254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17,68,36,8,221,
- 68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252,233,217,201,
- 217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252,242,15,16,
- 68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,
- 247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208,102,15,84,
- 194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1,102,15,80,
- 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184,237,237,
- 255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
- 192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,161,255,
- 131,252,250,1,15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15,
- 135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221,68,36,8,
- 131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,97,80,252,233,244,
- 253,248,1,232,244,157,255,80,252,233,244,253,248,2,131,252,250,7,15,132,244,
- 247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,253,248,1,
- 217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,15,132,244,
- 247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,253,248,1,
- 255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,247,15,135,
- 244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216,248,7,221,92,
- 36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,131,252,250,1,
- 15,130,244,90,15,132,244,92,131,252,250,3,15,130,244,113,15,135,244,248,217,
- 252,250,195,248,2,131,252,250,5,15,130,244,97,15,132,244,157,131,252,250,
- 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
- 217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,244,247,255,15,
- 135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
- 2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
- 252,242,221,216,195,255,248,9,204,255,248,162,255,65,131,252,248,1,15,132,
- 244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,193,195,
- 248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,195,
- 248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,156,15,132,
- 244,116,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,237,255,
- 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15,
- 84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,36,8,252,
- 242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,252,243,248,
- 7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,253,221,217,
- 252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,255,252,242,
- 15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,20,221,
- 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
- 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
- 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,156,15,132,
- 244,116,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
- 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
- 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
- 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
- 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
- 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
- 244,248,217,201,248,2,221,216,195,255,248,163,137,200,86,72,137,214,83,15,
- 162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,164,255,204,248,165,255,
- 85,72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131,
- 252,233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,
- 233,131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139,
- 147,233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,
- 15,40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137,
- 131,233,15,41,131,233,255,72,139,93,252,248,201,195,255,249,255,129,124,253,
- 202,4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,
- 131,198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,
- 255,255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,
- 9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,
- 7,15,135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252,
- 242,15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,
- 248,8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,
- 4,102,15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,
- 131,244,9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,
- 202,4,239,15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252,
- 242,15,16,4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,
- 248,2,221,4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223,
- 224,158,255,15,134,244,247,255,15,135,244,247,255,15,130,244,247,255,15,131,
- 244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,
- 198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133,244,
- 254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15,183,
- 70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,198,
- 4,193,232,16,252,255,36,252,235,248,7,15,135,244,251,129,124,253,202,4,239,
- 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252,
- 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202,
- 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244,
- 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248,
- 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15,
- 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
- 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
- 180,253,134,233,248,1,255,252,233,244,9,255,129,252,253,239,15,132,244,48,
- 129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244,2,129,252,
- 253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,
- 239,15,135,244,2,129,252,253,239,15,130,244,2,139,169,233,133,252,237,15,
- 132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,
- 255,252,233,244,47,255,248,3,129,252,253,239,255,15,133,244,9,255,252,233,
- 244,48,255,72,252,247,208,139,108,202,4,131,198,4,129,252,253,239,15,133,
- 244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,252,253,
- 239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,59,44,
- 202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,249,129,124,
- 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252,
- 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221,
- 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248,
- 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,72,
- 252,247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,
- 254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,
- 16,252,255,36,252,235,248,3,129,252,253,239,15,133,244,2,252,233,244,48,255,
- 15,132,244,248,129,252,253,239,15,132,244,48,15,183,70,252,254,141,180,253,
- 134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 252,235,255,139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,
- 44,194,137,44,202,255,72,139,44,194,72,137,44,202,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,255,49,252,237,129,124,253,194,
- 4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,252,235,255,129,124,253,194,4,239,15,133,244,251,139,44,
- 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,
- 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,199,68,202,
- 4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,53,255,129,
- 124,253,194,4,239,15,131,244,53,255,252,242,15,16,4,194,72,184,237,237,102,
- 72,15,110,200,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
- 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,
- 1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,
- 242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,
- 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,124,253,194,4,239,
- 15,133,244,56,139,12,194,255,139,169,233,131,252,253,0,15,133,244,255,248,
- 3,255,248,57,137,213,232,251,1,20,255,252,242,15,42,192,255,137,252,234,15,
- 182,78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252,
- 233,244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,
- 133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15,
- 128,244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,
- 239,15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252,
- 234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,
- 3,44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239,
- 15,131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4,
- 252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,
- 234,4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242,
- 15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,
- 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252,
- 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129,
- 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,
- 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,
- 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244,
- 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,
- 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234,
- 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,
- 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,
- 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,
- 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,
- 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,
- 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128,
- 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,
- 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16,
- 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,
- 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,
- 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,
- 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,
- 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,
- 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,
- 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,
- 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,
- 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,
- 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116,
- 255,15,182,252,236,15,182,192,139,76,36,96,137,145,233,141,20,194,65,137,
- 192,65,41,232,248,35,137,205,137,116,36,100,232,251,1,27,139,149,233,133,
- 192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,72,139,4,252,234,72,
- 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,15,191,192,199,
- 68,202,4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,
- 255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,
- 255,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,141,76,202,12,141,
- 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,
- 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,
- 139,106,252,248,139,172,253,133,233,139,173,233,72,139,69,0,72,137,4,202,
- 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,
- 106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,
- 68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,
- 248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,
- 132,244,1,135,213,141,139,233,255,232,251,1,28,137,252,234,252,233,244,1,
- 255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,133,
- 233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,
- 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,252,246,
- 129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,
- 233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,
- 15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
- 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
- 65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 255,141,180,253,134,233,139,108,36,96,131,189,233,0,15,132,244,247,137,149,
- 233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,
- 108,36,96,137,149,233,68,139,66,252,248,139,20,135,137,252,233,137,116,36,
- 100,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
- 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,139,
- 108,36,96,137,149,233,139,139,233,59,139,233,137,116,36,100,15,131,244,251,
- 248,1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,
- 249,248,2,137,252,233,137,194,232,251,1,31,139,149,233,15,182,78,252,253,
+ 255,211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,
+ 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
+ 15,16,74,8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,
+ 88,202,102,15,126,197,102,15,126,201,255,211,252,253,252,233,244,89,255,248,
+ 143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
+ 244,63,252,242,15,16,2,252,242,15,16,74,8,72,189,237,237,102,72,15,110,213,
+ 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,211,
+ 197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,74,
+ 8,72,189,237,237,102,72,15,110,213,252,242,15,88,194,252,242,15,88,202,102,
+ 15,126,197,102,15,126,201,255,211,205,252,233,244,89,248,127,184,237,252,
+ 233,244,63,248,129,184,237,248,63,139,108,36,96,139,114,252,252,137,116,36,
+ 100,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,66,252,248,
+ 59,141,233,15,135,244,251,137,252,233,252,255,144,233,139,149,233,133,192,
+ 15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,141,65,1,
+ 139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,15,182,205,
+ 131,198,4,252,255,36,252,235,248,33,137,209,252,247,198,237,15,133,244,249,
+ 15,182,110,252,253,72,252,247,213,141,20,252,234,252,233,244,28,248,3,137,
+ 252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,252,233,
+ 232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,72,137,108,36,32,139,
+ 108,36,96,137,116,36,100,137,149,233,255,141,68,194,252,248,137,252,233,137,
+ 133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,192,1,72,
+ 139,108,36,32,85,195,248,145,255,15,182,131,233,168,235,15,133,244,251,168,
+ 235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,244,247,
+ 255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,248,147,
+ 15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,255,139,
+ 233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,96,137,149,
+ 233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,15,182,78,
+ 252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,
+ 233,248,148,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,149,255,139,
+ 106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,96,137,149,233,
+ 137,133,233,137,252,242,141,139,233,72,137,171,233,137,116,36,100,232,251,
+ 1,23,252,233,244,3,255,248,150,137,116,36,100,255,248,151,255,137,116,36,
+ 100,131,206,1,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,
+ 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,100,0,0,0,0,255,131,
+ 230,252,254,255,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,
+ 78,252,253,193,232,3,131,192,1,252,255,229,248,152,255,65,85,65,84,65,83,
+ 65,82,65,81,65,80,87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,
+ 248,138,101,252,240,76,137,125,252,248,76,137,117,252,240,139,93,0,139,139,
+ 233,199,131,233,237,137,131,233,137,139,233,72,129,252,236,239,72,131,197,
+ 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,
+ 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,
+ 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,
+ 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,
+ 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,
+ 17,69,128,139,171,233,139,147,233,72,137,171,233,199,131,233,0,0,0,0,137,
+ 149,233,72,141,148,253,36,233,141,139,233,232,251,1,25,72,139,141,233,72,
+ 129,225,239,137,169,233,139,149,233,139,177,233,252,233,244,247,255,248,153,
+ 255,72,141,140,253,36,233,248,1,102,68,15,111,185,233,102,68,15,111,177,233,
+ 102,68,15,111,169,233,102,68,15,111,161,233,102,68,15,111,153,233,102,68,
+ 15,111,145,233,102,68,15,111,137,233,102,68,15,111,129,233,102,15,111,185,
+ 233,72,137,204,102,15,111,49,76,139,124,36,16,76,139,116,36,24,76,139,108,
+ 36,32,76,139,100,36,80,133,192,15,136,244,249,137,68,36,84,139,122,252,248,
+ 139,191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,255,139,
+ 68,36,84,248,2,252,255,36,252,235,248,3,252,247,216,137,252,233,137,194,232,
+ 251,1,26,255,248,91,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,
+ 4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
+ 36,4,139,68,36,8,195,255,248,154,72,184,237,237,102,72,15,110,208,72,184,
+ 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
+ 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
+ 237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,
+ 200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,184,0,8,102,
+ 11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,
+ 217,108,36,4,139,68,36,8,195,255,248,155,72,184,237,237,102,72,15,110,208,
+ 72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,
+ 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
+ 72,184,237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,
+ 15,92,200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,
+ 0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
+ 139,68,36,8,195,255,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,
+ 102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
+ 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,
+ 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,
+ 86,202,15,40,193,248,1,195,248,157,255,15,40,232,252,242,15,94,193,72,184,
+ 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,
+ 15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,
+ 242,15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,
+ 196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,
+ 15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,
+ 217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,
+ 252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,
+ 252,233,195,255,248,98,217,252,234,222,201,248,158,217,84,36,8,129,124,36,
+ 8,0,0,128,127,15,132,244,247,129,124,36,8,0,0,128,252,255,15,132,244,248,
+ 248,159,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,
+ 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,117,255,
+ 248,160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,
+ 15,138,244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,
+ 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,
+ 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,
+ 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,
+ 6,15,132,244,5,15,130,244,253,252,247,216,232,244,1,72,184,237,237,102,72,
+ 15,110,200,252,242,15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,
+ 110,192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,
+ 15,0,0,15,132,244,248,102,72,15,126,192,72,209,224,15,132,244,250,255,72,
+ 193,192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,
+ 242,15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,
+ 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,
+ 36,8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,
+ 15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,
+ 15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,
+ 132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,
+ 248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,
+ 15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,
+ 192,195,248,162,255,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,
+ 3,15,130,244,114,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,
+ 68,36,8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,
+ 98,80,252,233,244,253,248,1,232,244,158,255,80,252,233,244,253,248,2,131,
+ 252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,
+ 233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,
+ 250,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,
+ 244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,
+ 244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,
+ 216,248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,
+ 4,131,252,250,1,15,130,244,91,15,132,244,93,131,252,250,3,15,130,244,114,
+ 15,135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,98,15,132,244,
+ 158,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
+ 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
+ 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
+ 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
+ 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,163,255,65,131,252,
+ 248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,
+ 92,193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,
+ 89,193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,
+ 157,15,132,244,117,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,
+ 237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,
+ 110,200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,
+ 68,36,8,252,242,15,17,76,36,16,221,68,36,8,221,68,36,16,15,132,244,247,217,
+ 252,243,248,7,221,92,36,8,252,242,15,16,68,36,8,195,248,1,217,201,217,252,
+ 253,221,217,252,233,244,7,248,2,65,131,252,248,11,15,132,244,247,15,135,244,
+ 255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,
+ 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,
+ 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,
+ 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,
+ 157,15,132,244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,
+ 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,
+ 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
+ 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,
+ 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,
+ 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,
+ 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,164,137,200,86,
+ 72,137,214,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,248,165,
+ 255,204,248,166,255,87,86,83,72,131,252,236,40,141,157,233,139,181,233,15,
+ 183,192,137,134,233,72,137,142,233,72,137,150,233,76,137,134,233,76,137,142,
+ 233,252,242,15,17,134,233,252,242,15,17,142,233,252,242,15,17,150,233,252,
+ 242,15,17,158,233,72,141,132,253,36,233,72,137,134,233,72,137,226,137,116,
+ 36,100,137,252,241,232,251,1,27,199,131,233,237,139,144,233,139,128,233,41,
+ 208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,14,15,182,252,233,
+ 15,182,205,131,198,4,252,255,36,252,235,255,248,32,255,139,76,36,96,139,179,
+ 233,72,137,142,233,137,145,233,137,169,233,137,252,241,137,194,232,251,1,
+ 28,72,139,134,233,252,242,15,16,134,233,252,233,244,16,255,248,167,255,85,
+ 72,137,229,83,72,137,203,139,131,233,72,41,196,255,15,182,139,233,131,252,
+ 233,1,15,136,244,248,248,1,72,139,132,253,203,233,72,137,132,253,204,233,
+ 131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,139,233,72,139,147,
+ 233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,15,
+ 40,139,233,15,40,147,233,15,40,155,233,248,5,255,252,255,147,233,72,137,131,
+ 233,15,41,131,233,255,72,139,93,252,248,201,195,255,129,124,253,202,4,239,
+ 15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,
+ 59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,
+ 142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,15,135,244,
+ 44,129,124,253,194,4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,
+ 194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,
+ 135,244,44,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,
+ 46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,
+ 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239,
+ 15,131,244,44,129,124,253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,
+ 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,
+ 4,194,248,3,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
+ 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
+ 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,252,235,255,139,108,194,4,131,198,4,255,129,252,253,239,15,
+ 133,244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,
+ 15,133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
+ 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+ 248,7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,
+ 255,252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,
+ 251,255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,
+ 233,244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,
+ 244,251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,
+ 1,221,4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,
+ 138,244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,
+ 248,2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,
+ 9,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,244,49,255,
+ 57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,
+ 57,193,15,132,244,1,129,252,253,239,15,135,244,2,129,252,253,239,15,130,244,
+ 2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,
+ 49,252,237,255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,
+ 15,133,244,9,255,252,233,244,49,255,72,252,247,208,139,108,202,4,131,198,
+ 4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,
+ 198,4,255,129,252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,
+ 254,139,44,199,59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,
+ 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,7,
+ 15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,
+ 255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,
+ 4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131,244,249,255,248,
+ 1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,
+ 2,221,4,202,248,4,255,72,252,247,208,139,108,202,4,131,198,4,57,197,255,15,
+ 133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,129,252,253,239,
+ 15,133,244,2,252,233,244,49,255,15,132,244,248,129,252,253,239,15,132,244,
+ 49,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,255,139,108,194,4,131,198,4,129,252,
+ 253,239,255,137,108,202,4,139,44,194,137,44,202,255,72,139,44,194,72,137,
+ 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+ 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,129,124,253,194,
+ 4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250,199,68,202,4,237,
+ 137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,252,235,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,
+ 248,5,15,135,244,54,255,129,124,253,194,4,239,15,131,244,54,255,252,242,15,
+ 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255,
+ 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,
+ 4,194,255,139,128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,
+ 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
+ 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
+ 248,2,129,124,253,194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,
+ 252,253,0,15,133,244,255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,
+ 15,42,192,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,246,
+ 133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,255,
+ 129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,244,
+ 51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,15,
+ 133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,128,
+ 244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,239,
+ 15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,237,
+ 255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,15,
+ 131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
+ 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
+ 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
+ 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
+ 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
+ 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
+ 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
+ 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
+ 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
+ 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
+ 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
+ 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
+ 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
+ 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
+ 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
+ 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
+ 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
+ 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
+ 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
+ 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
+ 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
+ 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
+ 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
+ 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
+ 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
+ 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
+ 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
+ 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
+ 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,139,
+ 76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,36,137,205,137,116,
+ 36,100,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,110,252,255,
+ 15,182,78,252,253,72,139,4,252,234,72,137,4,202,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,255,72,252,247,208,139,4,135,199,
+ 68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,252,235,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,
+ 242,15,42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,
+ 15,16,4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,72,252,247,208,
+ 137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+ 252,235,255,141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,
+ 41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,252,235,255,139,106,252,248,139,172,253,133,233,139,173,
+ 233,72,139,69,0,72,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,252,235,255,139,106,252,248,139,172,253,141,233,128,189,233,
+ 0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,
+ 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,
+ 4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,248,239,15,134,
+ 244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,
+ 30,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,248,139,172,253,
+ 141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,
+ 133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,
+ 1,137,213,137,194,141,139,233,232,251,1,30,137,252,234,252,233,244,1,255,
+ 139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,
+ 255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,252,248,139,172,
+ 253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,36,96,131,189,233,
+ 0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1,31,139,149,
+ 233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
+ 235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,66,252,248,139,20,
+ 135,137,252,233,137,116,36,100,232,251,1,32,139,149,233,15,182,78,252,253,
137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
- 16,252,255,36,252,235,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,
- 251,1,32,15,183,70,252,254,252,233,244,1,255,72,252,247,208,139,108,36,96,
- 139,139,233,137,116,36,100,59,139,233,137,149,233,15,131,244,249,248,2,139,
- 20,135,137,252,233,232,251,1,33,139,149,233,15,182,78,252,253,137,4,202,199,
- 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 252,235,248,3,137,252,233,232,251,1,32,15,183,70,252,254,72,252,247,208,252,
- 233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,
- 244,167,255,72,252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,
- 244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
- 38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,
- 129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,
- 192,252,242,15,42,200,102,15,46,193,255,15,133,244,38,255,59,133,233,15,131,
- 244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,
- 137,44,202,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,252,235,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,
- 235,15,132,244,38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,
- 248,5,255,129,124,253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255,
- 15,182,252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,
- 239,15,133,244,36,139,44,252,234,248,167,139,141,233,35,136,233,105,201,239,
- 3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,
- 129,121,253,4,239,15,132,244,251,15,182,70,252,253,72,139,41,72,137,44,194,
- 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,
- 233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,
- 233,235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,
- 253,252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,
- 224,3,3,133,233,129,120,253,4,239,15,132,244,248,72,139,40,72,137,44,202,
- 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,
- 244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,
- 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44,252,
- 234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233,129,
- 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,
- 2,72,139,44,202,72,137,40,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
- 252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
- 233,235,255,15,132,244,41,15,182,78,252,253,252,233,244,1,248,5,129,124,253,
- 194,4,239,15,133,244,41,139,4,194,252,233,244,168,248,7,128,165,233,235,139,
- 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,
- 252,236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,
- 133,244,39,139,44,252,234,248,168,139,141,233,35,136,233,105,201,239,198,
- 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,
- 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,
- 133,244,253,248,3,15,182,70,252,253,72,139,44,194,72,137,41,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,189,233,
- 0,15,132,244,2,137,76,36,80,139,141,233,252,246,129,233,235,15,132,244,39,
- 139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,
- 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,39,248,6,137,
- 68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,76,141,68,
- 36,80,137,252,234,137,205,137,116,36,100,232,251,1,34,139,149,233,139,108,
- 36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233,
- 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234,
- 4,239,15,133,244,40,139,44,252,234,59,133,233,15,131,244,40,193,224,3,3,133,
- 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,
- 253,248,2,72,139,12,202,72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,252,235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,
- 252,246,129,233,235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,
- 165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,
- 244,2,255,137,124,36,80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,
- 133,233,235,15,133,244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,
- 252,248,59,133,233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,
- 139,41,131,193,8,72,137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,
- 36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
- 248,5,139,76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,
- 100,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,
- 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,
- 84,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114,
- 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,
- 252,235,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,
- 15,133,244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1,
- 137,106,252,248,137,68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,
- 193,8,72,137,47,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,
- 68,36,84,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,
- 233,15,182,205,131,198,4,252,255,36,252,235,248,5,255,252,247,198,237,15,
- 133,244,4,15,182,78,252,253,72,252,247,209,141,12,202,139,121,252,248,139,
- 191,233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,
- 133,244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,
- 239,252,233,244,1,255,141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,
- 41,72,137,65,8,139,105,224,139,65,228,137,105,252,248,137,65,252,252,129,
- 252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,233,139,
- 14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,137,124,36,
- 80,137,92,36,84,139,108,202,252,240,139,68,202,252,248,139,157,233,131,198,
- 4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,244,
- 250,255,219,68,202,252,248,255,72,139,44,199,72,137,108,202,8,131,192,1,255,
- 137,68,202,252,248,248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,
- 92,36,84,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,252,235,248,4,131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,
- 5,41,216,248,6,59,133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,
- 233,239,15,132,244,253,141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,
- 202,72,137,68,202,8,137,92,202,252,248,252,233,244,2,248,7,131,192,1,252,
- 233,244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,
- 129,124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,
- 133,244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,
- 252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,252,235,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,
- 233,244,1,255,15,182,252,236,15,182,192,137,124,36,80,141,188,253,194,233,
- 141,12,202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,
- 248,57,215,15,131,244,248,248,1,72,139,71,252,248,131,199,8,72,137,1,131,
- 193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,
- 193,8,57,252,233,15,130,244,2,248,3,139,124,36,80,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,
- 208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,36,84,
- 139,108,36,96,1,200,59,133,233,15,135,244,253,248,6,255,72,139,71,252,248,
- 131,199,8,72,137,1,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,
- 149,233,137,141,233,137,116,36,100,41,215,139,84,36,84,131,252,234,1,137,
- 252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,
- 3,255,248,1,139,114,252,252,137,68,36,84,252,247,198,237,15,133,244,253,255,
- 248,13,137,215,131,232,1,15,132,244,249,248,2,72,139,44,15,72,137,111,252,
- 248,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,
- 248,5,57,197,15,135,244,252,255,72,139,44,10,72,137,106,252,248,255,248,5,
- 56,70,252,255,15,135,244,252,255,15,182,78,252,253,72,252,247,209,141,20,
- 202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,
- 198,4,193,232,16,252,255,36,252,235,248,6,255,199,71,252,252,237,131,199,
- 8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,
- 252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,
- 252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,148,255,141,12,
- 202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,
- 60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15,140,244,251,255,
- 129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133,244,164,255,139,
- 105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,
- 199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,
- 255,141,180,253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,
- 244,253,248,6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,
- 232,131,198,4,193,232,16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,
- 41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,
- 255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,
- 244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12,239,15,131,244,
- 164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129,252,253,239,
- 15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,
- 16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,
- 15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,
- 17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,
- 217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,
- 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245,255,
- 15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,
- 252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,
- 137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,
- 139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,72,139,128,
- 233,139,108,36,96,137,147,233,137,171,233,76,137,100,36,80,76,137,108,36,
- 32,76,137,116,36,24,76,137,124,36,16,72,137,225,72,129,252,236,239,102,15,
- 127,49,102,15,127,185,233,102,68,15,127,129,233,102,68,15,127,137,233,102,
- 68,15,127,145,233,102,68,15,127,153,233,102,68,15,127,161,233,102,68,15,127,
- 169,233,102,68,15,127,177,233,102,68,15,127,185,233,252,255,224,255,141,180,
- 253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
- 235,255,137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,
- 130,244,150,255,139,190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,
- 24,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,
- 245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,
- 244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,
- 252,248,139,108,36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194,
- 15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
- 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
- 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,
- 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,
- 139,189,233,139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,
- 233,137,133,233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131,
- 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
- 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
+ 16,252,255,36,252,235,255,139,108,36,96,137,149,233,139,139,233,59,139,233,
+ 137,116,36,100,15,131,244,251,248,1,65,137,192,37,252,255,7,0,0,65,193,232,
+ 11,61,252,255,7,0,0,15,132,244,249,248,2,137,252,233,137,194,232,251,1,33,
+ 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,1,8,0,0,252,
+ 233,244,2,248,5,137,252,233,232,251,1,34,15,183,70,252,254,252,233,244,1,
+ 255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,139,233,137,
+ 149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,35,139,149,
+ 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,232,251,1,34,
+ 15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,
+ 252,248,139,173,233,139,4,135,252,233,244,169,255,72,252,247,208,139,106,
+ 252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,252,236,15,182,192,
+ 129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,255,129,124,253,194,
+ 4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,
+ 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,
+ 15,133,244,39,255,59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,
+ 4,239,15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,
+ 249,139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,
+ 199,68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
+ 39,139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,72,252,247,208,
+ 139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,
+ 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
+ 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
+ 70,252,253,72,139,41,72,137,44,194,248,2,255,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,248,3,15,182,70,252,253,199,68,194,
+ 4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,
+ 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,37,
+ 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,
+ 44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,
+ 15,132,244,248,72,139,40,72,137,44,202,248,1,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,248,2,131,189,233,0,15,132,244,249,
+ 139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,78,252,253,248,3,
+ 199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,192,129,124,253,
+ 252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,42,255,59,133,233,
+ 15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
+ 252,246,133,233,235,15,133,244,253,248,2,72,139,44,202,72,137,40,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,131,189,
+ 233,0,15,132,244,1,139,141,233,252,246,129,233,235,255,15,132,244,42,15,182,
+ 78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244,42,139,4,
+ 194,252,233,244,170,248,7,128,165,233,235,139,139,233,137,171,233,137,141,
+ 233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182,192,72,252,
+ 247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,40,139,44,252,234,
+ 248,170,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233,248,1,
+ 129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253,4,239,
+ 15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15,182,
+ 70,252,253,72,139,44,194,72,137,41,139,6,15,182,204,15,182,232,131,198,4,
+ 193,232,16,252,255,36,252,235,248,4,131,189,233,0,15,132,244,2,137,76,36,
+ 80,139,141,233,252,246,129,233,235,15,132,244,40,139,76,36,80,252,233,244,
+ 2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,
+ 252,252,246,129,233,235,15,132,244,40,248,6,137,68,36,80,199,68,36,84,237,
+ 137,108,36,32,139,76,36,96,137,145,233,76,141,68,36,80,137,252,234,137,205,
+ 137,116,36,100,232,251,1,36,139,149,233,139,108,36,32,137,193,252,233,244,
+ 2,248,7,128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,
+ 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,
+ 44,252,234,59,133,233,15,131,244,41,193,224,3,3,133,233,129,120,253,4,239,
+ 15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,72,139,12,202,
+ 72,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,
+ 235,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,
+ 15,132,244,41,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,
+ 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,
+ 80,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,
+ 244,253,248,2,139,68,36,84,131,232,1,15,132,244,250,1,252,248,59,133,233,
+ 15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,72,139,41,131,193,8,72,
+ 137,47,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,76,36,96,
+ 137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,1,37,139,
+ 149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,
+ 233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,84,255,129,124,253,
+ 202,4,239,139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,
+ 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,141,76,
+ 202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,
+ 139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
+ 68,36,84,131,232,1,15,132,244,249,248,2,72,139,41,131,193,8,72,137,47,131,
+ 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,84,128,189,233,
+ 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
+ 4,252,255,36,252,235,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,
+ 253,72,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,
+ 233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,
+ 137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,
+ 141,76,202,8,72,139,105,232,72,139,65,252,240,72,137,41,72,137,65,8,139,105,
+ 224,139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,
+ 133,244,29,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,
+ 205,131,198,4,252,255,36,252,235,255,137,124,36,80,137,92,36,84,139,108,202,
+ 252,240,139,68,202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,
+ 15,131,244,251,129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,
+ 255,72,139,44,199,72,137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,
+ 15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,84,139,124,36,80,139,
+ 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,4,131,
+ 192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,133,
+ 233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,253,
+ 141,92,24,1,72,139,175,233,72,139,135,233,72,137,44,202,72,137,68,202,8,137,
+ 92,202,252,248,252,233,244,2,248,7,131,192,1,252,233,244,6,255,129,124,253,
+ 202,252,236,239,15,133,244,251,139,108,202,232,129,124,253,202,252,244,239,
+ 15,133,244,251,129,124,253,202,252,252,239,15,133,244,251,128,189,233,235,
+ 15,133,244,251,141,180,253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,
+ 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,198,70,
+ 252,252,235,141,180,253,134,233,198,6,235,252,233,244,1,255,15,182,252,236,
+ 15,182,192,137,124,36,80,141,188,253,194,233,141,12,202,43,122,252,252,133,
+ 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
+ 1,72,139,71,252,248,131,199,8,72,137,1,131,193,8,57,252,233,15,131,244,249,
+ 57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,
+ 248,3,139,124,36,80,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,252,235,248,5,199,68,36,84,1,0,0,0,137,208,41,252,248,15,134,244,3,
+ 137,197,193,252,237,3,131,197,1,137,108,36,84,139,108,36,96,1,200,59,133,
+ 233,15,135,244,253,248,6,255,72,139,71,252,248,131,199,8,72,137,1,131,193,
+ 8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,
+ 36,100,41,215,139,84,36,84,131,252,234,1,137,252,233,232,251,1,0,139,149,
+ 233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,
+ 137,68,36,84,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,
+ 15,132,244,249,248,2,72,139,44,15,72,137,111,252,248,131,199,8,131,232,1,
+ 15,133,244,2,248,3,139,68,36,84,15,182,110,252,255,248,5,57,197,15,135,244,
+ 252,255,72,139,44,10,72,137,106,252,248,255,248,5,56,70,252,255,15,135,244,
+ 252,255,15,182,78,252,253,72,252,247,209,141,20,202,139,122,252,248,139,191,
+ 233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,252,235,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,
+ 237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,15,133,
+ 244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,239,102,
+ 129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,253,4,239,
+ 15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,20,239,15,
+ 133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,239,15,133,
+ 244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,237,15,136,
+ 244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,137,105,24,
+ 255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,253,134,233,
+ 15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,6,141,180,
+ 253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,252,235,248,5,255,3,41,15,128,244,1,137,41,255,15,141,244,7,
+ 255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,7,255,
+ 252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,253,12,
+ 239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,20,239,
+ 15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,252,242,
+ 15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,
+ 237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,242,15,
+ 17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,237,15,
+ 136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,183,70,
+ 252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,141,180,
+ 253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,130,244,
+ 248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,141,12,
+ 202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,41,137,
+ 105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,252,137,
+ 65,252,248,255,139,139,233,139,4,129,72,139,128,233,139,108,36,96,137,147,
+ 233,137,171,233,76,137,100,36,80,76,137,108,36,32,76,137,116,36,24,76,137,
+ 124,36,16,72,137,225,72,129,252,236,239,102,15,127,49,102,15,127,185,233,
+ 102,68,15,127,129,233,102,68,15,127,137,233,102,68,15,127,145,233,102,68,
+ 15,127,153,233,102,68,15,127,161,233,102,68,15,127,169,233,102,68,15,127,
+ 177,233,102,68,15,127,185,233,252,255,224,255,141,180,253,134,233,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,255,137,252,245,
+ 209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,
+ 190,233,139,108,36,96,141,12,202,59,141,233,15,135,244,24,15,182,142,233,
+ 57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,
+ 68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,
+ 197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,
+ 36,96,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,
+ 133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,
+ 252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,
+ 252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,252,235,255,248,3,199,64,4,237,131,192,8,
+ 131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,72,139,189,233,
+ 139,108,36,96,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,133,
+ 233,255,72,137,252,250,137,252,233,255,15,135,244,22,199,131,233,237,255,
+ 252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,
+ 252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
};
enum {
@@ -815,6 +824,7 @@ enum {
GLOB_vmeta_call,
GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
+ GLOB_cont_ffi_callback,
GLOB_vm_call_tail,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -948,6 +958,7 @@ enum {
GLOB_vm_foldarith,
GLOB_vm_cpuid,
GLOB_assert_bad_for_arg_type,
+ GLOB_vm_ffi_callback,
GLOB_vm_ffi_call,
GLOB_BC_MODVN_Z,
GLOB_BC_TGETS_Z,
@@ -977,6 +988,7 @@ static const char *const globnames[] = {
"vmeta_call",
"vm_call_dispatch_f",
"vm_cpcall",
+ "cont_ffi_callback",
"vm_call_tail",
"cont_cat",
"cont_ra",
@@ -1110,6 +1122,7 @@ static const char *const globnames[] = {
"vm_foldarith",
"vm_cpuid",
"assert_bad_for_arg_type",
+ "vm_ffi_callback",
"vm_ffi_call@4",
"BC_MODVN_Z",
"BC_TGETS_Z",
@@ -1144,6 +1157,8 @@ static const char *const extnames[] = {
"lj_dispatch_call@8",
"lj_trace_exit@8",
"lj_err_throw@8",
+ "lj_ccallback_enter@8",
+ "lj_ccallback_leave@8",
"lj_meta_cat",
"lj_gc_barrieruv@8",
"lj_func_closeuv@8",
@@ -1184,668 +1199,686 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
dasm_put(Dst, 356, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
dasm_put(Dst, 511, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
dasm_put(Dst, 604, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
- dasm_put(Dst, 770, 0, Dt7(->pc), PC2PROTO(k), Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
- dasm_put(Dst, 894);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 908, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 918);
- } else {
- }
- dasm_put(Dst, 931, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
- dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 908, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 918);
- } else {
- }
- dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1274, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1374);
#if LJ_HASFFI
- dasm_put(Dst, 1394, Dt1(->base));
+ dasm_put(Dst, 764);
#endif
- dasm_put(Dst, 1425);
-#if LJ_DUALNUM
- dasm_put(Dst, 1428);
+ dasm_put(Dst, 773, 0);
+#if LJ_HASFFI
+#endif
+ dasm_put(Dst, 782, Dt7(->pc), PC2PROTO(k));
+#if LJ_HASFFI
+ dasm_put(Dst, 796);
+#endif
+ dasm_put(Dst, 817, Dt1(->base), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 917, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 927);
+ } else {
+ }
+ dasm_put(Dst, 940, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1087, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 917, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 927);
+ } else {
+ }
+ dasm_put(Dst, 1110, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1283, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1383);
+#if LJ_HASFFI
+ dasm_put(Dst, 1403, Dt1(->base));
#endif
dasm_put(Dst, 1434);
#if LJ_DUALNUM
- dasm_put(Dst, 902);
+ dasm_put(Dst, 1437);
#endif
- dasm_put(Dst, 1446);
+ dasm_put(Dst, 1443);
#if LJ_DUALNUM
- dasm_put(Dst, 1428);
+ dasm_put(Dst, 911);
#endif
- dasm_put(Dst, 1474, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1455);
+#if LJ_DUALNUM
+ dasm_put(Dst, 1437);
+#endif
+ dasm_put(Dst, 1483, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 1580);
+ dasm_put(Dst, 1589);
#else
- dasm_put(Dst, 1599);
+ dasm_put(Dst, 1608);
#endif
- dasm_put(Dst, 1604, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
- dasm_put(Dst, 1790, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1613, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+ dasm_put(Dst, 1799, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 1859);
+ dasm_put(Dst, 1868);
} else {
- dasm_put(Dst, 1863);
+ dasm_put(Dst, 1872);
}
- dasm_put(Dst, 1872, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
- dasm_put(Dst, 1951, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
- dasm_put(Dst, 2008, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
- dasm_put(Dst, 2074, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
- dasm_put(Dst, 2144, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
- dasm_put(Dst, 2233, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1881, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, ~LJ_TLIGHTUD, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL);
+ dasm_put(Dst, 1960, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next));
+ dasm_put(Dst, 2017, LJ_TNIL, LJ_TUDATA, LJ_TNUMX, LJ_TISNUM, LJ_TLIGHTUD);
+ dasm_put(Dst, 2083, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB);
+ dasm_put(Dst, 2153, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist), 2+1, LJ_TTAB);
+ dasm_put(Dst, 2242, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2247);
+ dasm_put(Dst, 2256);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 2269);
+ dasm_put(Dst, 2278);
} else {
- dasm_put(Dst, 2279);
+ dasm_put(Dst, 2288);
}
- dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 2352, Dt1(->base));
+ dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 2361, Dt1(->base));
if (LJ_DUALNUM) {
- dasm_put(Dst, 2376);
+ dasm_put(Dst, 2385);
} else {
- dasm_put(Dst, 2381);
+ dasm_put(Dst, 2390);
}
- dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
- dasm_put(Dst, 2479, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+ dasm_put(Dst, 2488, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2526, Dt6(->metatable));
+ dasm_put(Dst, 2535, Dt6(->metatable));
#endif
- dasm_put(Dst, 2535, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2544, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2521);
+ dasm_put(Dst, 2530);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 2590);
+ dasm_put(Dst, 2599);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2595, LJ_TISNUM);
+ dasm_put(Dst, 2604, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2611, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 2620, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
}
- dasm_put(Dst, 2644, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2506, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2653, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2515, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2526, Dt6(->metatable));
+ dasm_put(Dst, 2535, Dt6(->metatable));
#endif
- dasm_put(Dst, 2721, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2730, Dt8(->upvalue[0]), LJ_TFUNC);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2742, LJ_TISNUM);
+ dasm_put(Dst, 2751, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2754);
+ dasm_put(Dst, 2763);
} else {
- dasm_put(Dst, 2764);
+ dasm_put(Dst, 2773);
}
- dasm_put(Dst, 2771, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
- dasm_put(Dst, 2835, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
- dasm_put(Dst, 2925, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
- dasm_put(Dst, 3013, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
- dasm_put(Dst, 3126, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
- dasm_put(Dst, 3224, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3291, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
- dasm_put(Dst, 3379, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
- dasm_put(Dst, 3491, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2780, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2844, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2934, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 3022, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 3135, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3233, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3300, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3388, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3500, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (!LJ_DUALNUM) {
- dasm_put(Dst, 3518);
+ dasm_put(Dst, 3527);
}
if (sse) {
- dasm_put(Dst, 3521);
+ dasm_put(Dst, 3530);
}
- dasm_put(Dst, 3536, 1+1);
+ dasm_put(Dst, 3545, 1+1);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3547, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 3556, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 3627, LJ_TISNUM);
+ dasm_put(Dst, 3636, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3637, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 3646, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 3668);
+ dasm_put(Dst, 3677);
}
- dasm_put(Dst, 3685, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3694, 1+1, FRAME_TYPE, LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3781, LJ_TISNUM);
+ dasm_put(Dst, 3790, LJ_TISNUM);
} else {
- dasm_put(Dst, 3627, LJ_TISNUM);
+ dasm_put(Dst, 3636, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3803);
- if (LJ_DUALNUM) {
dasm_put(Dst, 3812);
- }
- dasm_put(Dst, 2274);
- } else {
- dasm_put(Dst, 3846);
if (LJ_DUALNUM) {
- } else {
- dasm_put(Dst, 2281);
+ dasm_put(Dst, 3821);
}
- }
- dasm_put(Dst, 3852);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 3781, LJ_TISNUM);
+ dasm_put(Dst, 2283);
} else {
- dasm_put(Dst, 3627, LJ_TISNUM);
- }
- if (sse) {
dasm_put(Dst, 3855);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3812);
+ } else {
+ dasm_put(Dst, 2290);
}
- dasm_put(Dst, 2274);
+ }
+ dasm_put(Dst, 3861);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 3790, LJ_TISNUM);
} else {
+ dasm_put(Dst, 3636, LJ_TISNUM);
+ }
+ if (sse) {
dasm_put(Dst, 3864);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 3821);
+ }
+ dasm_put(Dst, 2283);
+ } else {
+ dasm_put(Dst, 3873);
+ if (LJ_DUALNUM) {
} else {
- dasm_put(Dst, 2281);
+ dasm_put(Dst, 2290);
}
}
if (sse) {
- dasm_put(Dst, 3870, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3879, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 3899, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 3908, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 3928, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 3997, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4054, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4117, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4207);
+ dasm_put(Dst, 3937, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4006, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4063, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4126, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4216);
if (sse) {
- dasm_put(Dst, 4219, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4228, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4244);
+ dasm_put(Dst, 4253);
if (sse) {
- dasm_put(Dst, 4258, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4267, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4283);
+ dasm_put(Dst, 4292);
if (sse) {
- dasm_put(Dst, 4297, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4306, 1+1, LJ_TISNUM);
} else {
}
- dasm_put(Dst, 4322);
+ dasm_put(Dst, 4331);
if (sse) {
- dasm_put(Dst, 4338, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4347, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4377, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4386, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4410, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4475, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4419, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4484, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4574);
+ dasm_put(Dst, 4583);
} else {
- dasm_put(Dst, 4580);
+ dasm_put(Dst, 4589);
}
- dasm_put(Dst, 4589);
+ dasm_put(Dst, 4598);
if (sse) {
- dasm_put(Dst, 4614);
+ dasm_put(Dst, 4623);
} else {
- dasm_put(Dst, 4620);
+ dasm_put(Dst, 4629);
}
- dasm_put(Dst, 4623, 1+2);
+ dasm_put(Dst, 4632, 1+2);
if (sse) {
- dasm_put(Dst, 4632);
+ dasm_put(Dst, 4641);
} else {
- dasm_put(Dst, 4640);
+ dasm_put(Dst, 4649);
}
- dasm_put(Dst, 4648);
+ dasm_put(Dst, 4657);
if (sse) {
- dasm_put(Dst, 4651, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
+ dasm_put(Dst, 4660, (unsigned int)(U64x(43500000,00000000)), (unsigned int)((U64x(43500000,00000000))>>32));
} else {
- dasm_put(Dst, 4678);
+ dasm_put(Dst, 4687);
}
- dasm_put(Dst, 4697);
+ dasm_put(Dst, 4706);
if (sse) {
- dasm_put(Dst, 4713, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4722, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4738, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4747, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4760);
+ dasm_put(Dst, 4769);
if (sse) {
- dasm_put(Dst, 4782);
+ dasm_put(Dst, 4791);
} else {
- dasm_put(Dst, 4808);
+ dasm_put(Dst, 4817);
}
- dasm_put(Dst, 4825, 1+2);
+ dasm_put(Dst, 4834, 1+2);
if (sse) {
- dasm_put(Dst, 4865);
+ dasm_put(Dst, 4874);
} else {
- dasm_put(Dst, 4873);
+ dasm_put(Dst, 4882);
}
- dasm_put(Dst, 4883, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4892, 2+1, LJ_TISNUM, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4935, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4944, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 4982, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4991, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 5023, LJ_TISNUM);
+ dasm_put(Dst, 5032, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5036, LJ_TISNUM);
+ dasm_put(Dst, 5045, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4574);
+ dasm_put(Dst, 4583);
} else {
}
- dasm_put(Dst, 5086);
+ dasm_put(Dst, 5095);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 5097, LJ_TISNUM);
+ dasm_put(Dst, 5106, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5118);
+ dasm_put(Dst, 5127);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5139);
+ dasm_put(Dst, 5148);
} else {
}
- dasm_put(Dst, 5164, LJ_TISNUM);
+ dasm_put(Dst, 5173, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5177, LJ_TISNUM);
+ dasm_put(Dst, 5186, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4574);
+ dasm_put(Dst, 4583);
} else {
}
- dasm_put(Dst, 5086);
+ dasm_put(Dst, 5095);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 5097, LJ_TISNUM);
+ dasm_put(Dst, 5106, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5118);
+ dasm_put(Dst, 5127);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5227);
+ dasm_put(Dst, 5236);
} else {
}
if (!sse) {
- dasm_put(Dst, 5252);
+ dasm_put(Dst, 5261);
}
- dasm_put(Dst, 5261, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5270, 1+1, LJ_TSTR);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5283, Dt5(->len));
+ dasm_put(Dst, 5292, Dt5(->len));
} else if (sse) {
- dasm_put(Dst, 5291, Dt5(->len));
+ dasm_put(Dst, 5300, Dt5(->len));
} else {
- dasm_put(Dst, 5302, Dt5(->len));
+ dasm_put(Dst, 5311, Dt5(->len));
}
- dasm_put(Dst, 5310, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5319, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (LJ_DUALNUM) {
- dasm_put(Dst, 5286);
+ dasm_put(Dst, 5295);
} else if (sse) {
- dasm_put(Dst, 5348);
+ dasm_put(Dst, 5357);
} else {
- dasm_put(Dst, 5358);
+ dasm_put(Dst, 5367);
}
- dasm_put(Dst, 5371, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5380, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5402);
+ dasm_put(Dst, 5411);
} else if (sse) {
- dasm_put(Dst, 5425);
+ dasm_put(Dst, 5434);
} else {
- dasm_put(Dst, 5451);
+ dasm_put(Dst, 5460);
}
- dasm_put(Dst, 5475, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 5484, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5583);
+ dasm_put(Dst, 5592);
} else if (sse) {
- dasm_put(Dst, 5595);
+ dasm_put(Dst, 5604);
} else {
- dasm_put(Dst, 5610);
+ dasm_put(Dst, 5619);
}
- dasm_put(Dst, 5622, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5631, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2521);
+ dasm_put(Dst, 2530);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5639, Dt5(->len));
+ dasm_put(Dst, 5648, Dt5(->len));
if (LJ_DUALNUM) {
- dasm_put(Dst, 5649);
+ dasm_put(Dst, 5658);
} else if (sse) {
- dasm_put(Dst, 5653);
+ dasm_put(Dst, 5662);
} else {
}
- dasm_put(Dst, 5660, sizeof(GCstr)-1);
- dasm_put(Dst, 5735, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 5794, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5669, sizeof(GCstr)-1);
+ dasm_put(Dst, 5744, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 5803, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5811);
+ dasm_put(Dst, 5820);
} else if (sse) {
- dasm_put(Dst, 5819);
+ dasm_put(Dst, 5828);
} else {
- dasm_put(Dst, 5830);
+ dasm_put(Dst, 5839);
}
- dasm_put(Dst, 5846, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 5911, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 5974, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6045, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6130, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 6200, 1+1, LJ_TTAB);
+ dasm_put(Dst, 5855, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 5920, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 5983, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 6054, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 6139, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 6209, 1+1, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6268);
+ dasm_put(Dst, 6277);
} else if (sse) {
- dasm_put(Dst, 6275);
+ dasm_put(Dst, 6284);
} else {
}
- dasm_put(Dst, 6285, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6294, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6301);
+ dasm_put(Dst, 6310);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
dasm_put(Dst, 106);
if (LJ_DUALNUM || sse) {
if (!sse) {
}
- dasm_put(Dst, 6342);
+ dasm_put(Dst, 6351);
} else {
}
- dasm_put(Dst, 6347, 1+1);
+ dasm_put(Dst, 6356, 1+1);
if (sse) {
- dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
- dasm_put(Dst, 6368);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
- if (LJ_DUALNUM) {
dasm_put(Dst, 6377);
- } else {
- dasm_put(Dst, 2264);
}
- if (sse) {
- dasm_put(Dst, 6394);
- } else {
- }
- dasm_put(Dst, 6409, LJ_TISNUM);
+ dasm_put(Dst, 2250, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6434);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 6454);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6459);
+ dasm_put(Dst, 6403);
} else {
}
- dasm_put(Dst, 6476, 1+1);
- if (sse) {
- dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- dasm_put(Dst, 6368);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
+ dasm_put(Dst, 6418, LJ_TISNUM);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 6443);
+ } else {
+ dasm_put(Dst, 6463);
+ }
+ if (sse) {
+ dasm_put(Dst, 6468);
+ } else {
+ }
+ dasm_put(Dst, 6485, 1+1);
+ if (sse) {
+ dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
dasm_put(Dst, 6377);
- } else {
- dasm_put(Dst, 2264);
}
- if (sse) {
- dasm_put(Dst, 6394);
- } else {
- }
- dasm_put(Dst, 6409, LJ_TISNUM);
+ dasm_put(Dst, 2250, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6494);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 6454);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6514);
+ dasm_put(Dst, 6403);
} else {
}
- dasm_put(Dst, 6531, 1+1);
- if (sse) {
- dasm_put(Dst, 6358, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
- } else {
- dasm_put(Dst, 6368);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
+ dasm_put(Dst, 6418, LJ_TISNUM);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 6503);
+ } else {
+ dasm_put(Dst, 6463);
+ }
+ if (sse) {
+ dasm_put(Dst, 6523);
+ } else {
+ }
+ dasm_put(Dst, 6540, 1+1);
+ if (sse) {
+ dasm_put(Dst, 6367, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ } else {
dasm_put(Dst, 6377);
+ }
+ dasm_put(Dst, 2250, LJ_TISNUM);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6394);
+ dasm_put(Dst, 6403);
} else {
}
- dasm_put(Dst, 6409, LJ_TISNUM);
+ dasm_put(Dst, 6418, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6549);
+ dasm_put(Dst, 6558);
} else {
- dasm_put(Dst, 6454);
+ dasm_put(Dst, 6463);
}
if (sse) {
- dasm_put(Dst, 6569);
+ dasm_put(Dst, 6578);
} else {
}
- dasm_put(Dst, 6586, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6595, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6609, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6618, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6633);
+ dasm_put(Dst, 6642);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6342);
+ dasm_put(Dst, 6351);
} else if (sse) {
- dasm_put(Dst, 6639);
+ dasm_put(Dst, 6648);
} else {
}
- dasm_put(Dst, 6651);
+ dasm_put(Dst, 6660);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6662, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6671, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6678, LJ_TISNUM);
+ dasm_put(Dst, 6687, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6693, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6702, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6760);
+ dasm_put(Dst, 6769);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6767, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6776, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6678, LJ_TISNUM);
+ dasm_put(Dst, 6687, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6783, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6792, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6850);
+ dasm_put(Dst, 6859);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6858, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6867, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6678, LJ_TISNUM);
+ dasm_put(Dst, 6687, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6874, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6883, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6941);
+ dasm_put(Dst, 6950);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6949, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6958, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6678, LJ_TISNUM);
+ dasm_put(Dst, 6687, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 6965, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6974, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7032);
+ dasm_put(Dst, 7041);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7039, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7048, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6377);
+ dasm_put(Dst, 6386);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6318, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 6327, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 6678, LJ_TISNUM);
+ dasm_put(Dst, 6687, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7055, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
+ dasm_put(Dst, 7064, 2+1, LJ_TISNUM, LJ_TISNUM, (unsigned int)(U64x(43380000,00000000)), (unsigned int)((U64x(43380000,00000000))>>32));
} else {
}
- dasm_put(Dst, 7122, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 7198, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 7325, Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7131, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 7207, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 7334, Dt1(->top), Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7364, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 7373, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- dasm_put(Dst, 7395, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
- dasm_put(Dst, 7446, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 7404, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+ dasm_put(Dst, 7455, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
#if LJ_HASJIT
- dasm_put(Dst, 7513, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+ dasm_put(Dst, 7522, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
#endif
- dasm_put(Dst, 7560);
+ dasm_put(Dst, 7569);
#if LJ_HASJIT
- dasm_put(Dst, 7390);
+ dasm_put(Dst, 7399);
#endif
- dasm_put(Dst, 7567);
+ dasm_put(Dst, 7576);
#if LJ_HASJIT
- dasm_put(Dst, 7570);
+ dasm_put(Dst, 7579);
#endif
- dasm_put(Dst, 7580, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7589, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7614);
+ dasm_put(Dst, 7623);
#endif
- dasm_put(Dst, 7619, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7628, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 7650, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+ dasm_put(Dst, 7659, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8+4*8, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), 4*8, GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
#endif
- dasm_put(Dst, 7880);
+ dasm_put(Dst, 7889);
#if LJ_HASJIT
- dasm_put(Dst, 7883, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
- dasm_put(Dst, 8025);
+ dasm_put(Dst, 7892, 9*16+4*8, -9*16, -8*16, -7*16, -6*16, -5*16, -4*16, -3*16, -2*16, -1*16, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+ dasm_put(Dst, 8034);
#endif
- dasm_put(Dst, 8051);
+ dasm_put(Dst, 8060);
if (!sse) {
- dasm_put(Dst, 8054);
+ dasm_put(Dst, 8063);
}
- dasm_put(Dst, 8099, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8108, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 8185);
+ dasm_put(Dst, 8194);
}
- dasm_put(Dst, 8230, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
+ dasm_put(Dst, 8239, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32));
if (!sse) {
- dasm_put(Dst, 8316);
+ dasm_put(Dst, 8325);
}
- dasm_put(Dst, 8355, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8364, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
if (sse) {
- dasm_put(Dst, 8444, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8453, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
} else {
- dasm_put(Dst, 8558);
+ dasm_put(Dst, 8567);
}
- dasm_put(Dst, 8605);
+ dasm_put(Dst, 8614);
if (!sse) {
} else {
- dasm_put(Dst, 8679);
+ dasm_put(Dst, 8688);
}
- dasm_put(Dst, 8682);
- dasm_put(Dst, 8767, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
- dasm_put(Dst, 8870, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
- dasm_put(Dst, 9026);
+ dasm_put(Dst, 8691);
+ dasm_put(Dst, 8776, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
+ dasm_put(Dst, 8879, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
+ dasm_put(Dst, 9035);
#if LJ_HASJIT
if (sse) {
- dasm_put(Dst, 9067);
- dasm_put(Dst, 9137);
- dasm_put(Dst, 9210);
+ dasm_put(Dst, 9076);
+ dasm_put(Dst, 9146);
+ dasm_put(Dst, 9219);
} else {
- dasm_put(Dst, 9260);
- dasm_put(Dst, 9352);
+ dasm_put(Dst, 9269);
+ dasm_put(Dst, 9361);
}
- dasm_put(Dst, 9398);
+ dasm_put(Dst, 9407);
#endif
- dasm_put(Dst, 9402);
+ dasm_put(Dst, 9411);
if (sse) {
- dasm_put(Dst, 9405, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
- dasm_put(Dst, 9494, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
+ dasm_put(Dst, 9414, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
+ dasm_put(Dst, 9503, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
} else {
- dasm_put(Dst, 9618);
- dasm_put(Dst, 9701);
+ dasm_put(Dst, 9627);
+ dasm_put(Dst, 9710);
if (cmov) {
- dasm_put(Dst, 9756);
+ dasm_put(Dst, 9765);
} else {
- dasm_put(Dst, 9775);
+ dasm_put(Dst, 9784);
}
- dasm_put(Dst, 9398);
+ dasm_put(Dst, 9407);
}
- dasm_put(Dst, 9816);
+ dasm_put(Dst, 9825);
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 9400);
+ dasm_put(Dst, 9409);
#endif
- dasm_put(Dst, 9844);
+ dasm_put(Dst, 9853);
#if LJ_HASFFI
-#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
- dasm_put(Dst, 9848, DtE(->spadj));
+#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
+ dasm_put(Dst, 9857, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[0]), DtE(->cb.fpr[1]), DtE(->cb.fpr[2]), DtE(->cb.fpr[3]), CFRAME_SIZE+4*8, DtE(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
+#endif
+ dasm_put(Dst, 9984);
+#if LJ_HASFFI
+ dasm_put(Dst, 9987, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]));
+#endif
+ dasm_put(Dst, 10028);
+#if LJ_HASFFI
+#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
+ dasm_put(Dst, 10031, DtF(->spadj));
#if LJ_TARGET_WINDOWS
#endif
- dasm_put(Dst, 9863, DtE(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtE(->nfpr), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->gpr[2]), DtE(->gpr[3]), DtE(->fpr[0]), DtE(->fpr[1]), DtE(->fpr[2]), DtE(->fpr[3]));
- dasm_put(Dst, 9944, DtE(->func), DtE(->gpr[0]), DtE(->fpr[0]));
+ dasm_put(Dst, 10046, DtF(->nsp), offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, DtF(->nfpr), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]));
+ dasm_put(Dst, 10127, DtF(->func), DtF(->gpr[0]), DtF(->fpr[0]));
#if LJ_TARGET_WINDOWS
#endif
- dasm_put(Dst, 9957);
+ dasm_put(Dst, 10140);
#endif
}
@@ -1853,7 +1886,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
{
int vk = 0;
- dasm_put(Dst, 9965, defop);
+ dasm_put(Dst, 780, defop);
switch (op) {
@@ -1864,302 +1897,302 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 9967, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10148, LJ_TISNUM, LJ_TISNUM);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 9997);
+ dasm_put(Dst, 10178);
break;
case BC_ISGE:
- dasm_put(Dst, 10002);
+ dasm_put(Dst, 10183);
break;
case BC_ISLE:
- dasm_put(Dst, 10007);
+ dasm_put(Dst, 10188);
break;
case BC_ISGT:
- dasm_put(Dst, 10012);
+ dasm_put(Dst, 10193);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10017, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 10198, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10071);
+ dasm_put(Dst, 10252);
} else {
- dasm_put(Dst, 10082);
+ dasm_put(Dst, 10263);
}
- dasm_put(Dst, 10093);
+ dasm_put(Dst, 10274);
if (sse) {
- dasm_put(Dst, 10100);
+ dasm_put(Dst, 10281);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10120);
+ dasm_put(Dst, 10301);
break;
case BC_ISGE:
- dasm_put(Dst, 10125);
+ dasm_put(Dst, 10306);
break;
case BC_ISLE:
- dasm_put(Dst, 10130);
+ dasm_put(Dst, 10311);
break;
case BC_ISGT:
- dasm_put(Dst, 10135);
+ dasm_put(Dst, 10316);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10140);
+ dasm_put(Dst, 10321);
} else {
- dasm_put(Dst, 10145);
+ dasm_put(Dst, 10326);
}
} else {
- dasm_put(Dst, 10153, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10334, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 10174);
+ dasm_put(Dst, 10355);
} else {
- dasm_put(Dst, 10195);
+ dasm_put(Dst, 10376);
if (cmov) {
- dasm_put(Dst, 10211);
+ dasm_put(Dst, 10392);
} else {
- dasm_put(Dst, 10217);
+ dasm_put(Dst, 10398);
}
}
if (LJ_DUALNUM) {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10120);
+ dasm_put(Dst, 10301);
break;
case BC_ISGE:
- dasm_put(Dst, 10125);
+ dasm_put(Dst, 10306);
break;
case BC_ISLE:
- dasm_put(Dst, 10130);
+ dasm_put(Dst, 10311);
break;
case BC_ISGT:
- dasm_put(Dst, 10135);
+ dasm_put(Dst, 10316);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10140);
+ dasm_put(Dst, 10321);
} else {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 10224);
+ dasm_put(Dst, 768);
break;
case BC_ISGE:
- dasm_put(Dst, 10229);
+ dasm_put(Dst, 10405);
break;
case BC_ISLE:
- dasm_put(Dst, 10234);
+ dasm_put(Dst, 10410);
break;
case BC_ISGT:
- dasm_put(Dst, 10239);
+ dasm_put(Dst, 10415);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 10244, -BCBIAS_J*4);
+ dasm_put(Dst, 10420, -BCBIAS_J*4);
}
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 10276);
+ dasm_put(Dst, 10452);
if (LJ_DUALNUM) {
- dasm_put(Dst, 10284, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10460, LJ_TISNUM, LJ_TISNUM);
if (vk) {
- dasm_put(Dst, 10309);
+ dasm_put(Dst, 10485);
} else {
- dasm_put(Dst, 10314);
+ dasm_put(Dst, 10490);
}
- dasm_put(Dst, 10319, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 10495, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 10371);
+ dasm_put(Dst, 10547);
} else {
- dasm_put(Dst, 10378);
+ dasm_put(Dst, 10554);
}
- dasm_put(Dst, 10382);
+ dasm_put(Dst, 10558);
if (sse) {
- dasm_put(Dst, 10393);
+ dasm_put(Dst, 10569);
} else {
- dasm_put(Dst, 10405);
+ dasm_put(Dst, 10581);
}
- dasm_put(Dst, 10412);
+ dasm_put(Dst, 10588);
} else {
- dasm_put(Dst, 10417, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 10593, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 10436);
+ dasm_put(Dst, 10612);
} else {
- dasm_put(Dst, 10454);
+ dasm_put(Dst, 10630);
if (cmov) {
- dasm_put(Dst, 10211);
+ dasm_put(Dst, 10392);
} else {
- dasm_put(Dst, 10217);
+ dasm_put(Dst, 10398);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 10467);
+ dasm_put(Dst, 10643);
} else {
- dasm_put(Dst, 10476);
+ dasm_put(Dst, 10652);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 10485, -BCBIAS_J*4);
+ dasm_put(Dst, 10661, -BCBIAS_J*4);
if (!LJ_HASFFI) {
- dasm_put(Dst, 4629);
+ dasm_put(Dst, 4638);
}
} else {
if (!LJ_HASFFI) {
- dasm_put(Dst, 4629);
+ dasm_put(Dst, 4638);
}
- dasm_put(Dst, 10500, -BCBIAS_J*4);
+ dasm_put(Dst, 10676, -BCBIAS_J*4);
}
if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
op == BC_ISEQN || op == BC_ISNEN)) {
- dasm_put(Dst, 10515);
+ dasm_put(Dst, 10691);
} else {
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
}
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 9941);
+ dasm_put(Dst, 10124);
if (LJ_HASFFI) {
- dasm_put(Dst, 10520, LJ_TCDATA, LJ_TCDATA);
+ dasm_put(Dst, 10696, LJ_TCDATA, LJ_TCDATA);
}
- dasm_put(Dst, 10539, LJ_TISPRI, LJ_TISTABUD, LJ_TUDATA, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<>32));
+ dasm_put(Dst, 11278, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
} else {
- dasm_put(Dst, 11127);
+ dasm_put(Dst, 11303);
}
if (LJ_DUALNUM) {
- dasm_put(Dst, 10515);
+ dasm_put(Dst, 10691);
} else {
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
}
break;
case BC_LEN:
- dasm_put(Dst, 11136, LJ_TSTR);
+ dasm_put(Dst, 11312, LJ_TSTR);
if (LJ_DUALNUM) {
- dasm_put(Dst, 11150, Dt5(->len), LJ_TISNUM);
+ dasm_put(Dst, 11326, Dt5(->len), LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 11164, Dt5(->len));
+ dasm_put(Dst, 11340, Dt5(->len));
} else {
- dasm_put(Dst, 11182, Dt5(->len));
+ dasm_put(Dst, 11358, Dt5(->len));
}
- dasm_put(Dst, 11191, LJ_TTAB);
+ dasm_put(Dst, 11367, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 11226, Dt6(->metatable));
+ dasm_put(Dst, 11402, Dt6(->metatable));
#endif
- dasm_put(Dst, 11240);
+ dasm_put(Dst, 11416);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 11249);
+ dasm_put(Dst, 11425);
} else {
}
- dasm_put(Dst, 11255);
+ dasm_put(Dst, 11431);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 11268, Dt6(->nomm), 1<nomm), 1<base), Dt1(->base));
+ dasm_put(Dst, 12187, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 12094, LJ_TSTR);
+ dasm_put(Dst, 12270, LJ_TSTR);
break;
case BC_KCDATA:
#if LJ_HASFFI
- dasm_put(Dst, 12094, LJ_TCDATA);
+ dasm_put(Dst, 12270, LJ_TCDATA);
#endif
break;
case BC_KSHORT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 12129, LJ_TISNUM);
+ dasm_put(Dst, 12305, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 12141);
+ dasm_put(Dst, 12317);
} else {
- dasm_put(Dst, 12156);
+ dasm_put(Dst, 12332);
}
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 12164);
+ dasm_put(Dst, 12340);
} else {
- dasm_put(Dst, 12177);
+ dasm_put(Dst, 12353);
}
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
break;
case BC_KPRI:
- dasm_put(Dst, 12184);
+ dasm_put(Dst, 12360);
break;
case BC_KNIL:
- dasm_put(Dst, 12212, LJ_TNIL);
+ dasm_put(Dst, 12388, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 12259, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12435, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 12299, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
- dasm_put(Dst, 12390);
+ dasm_put(Dst, 12475, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+ dasm_put(Dst, 12566);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 12402, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+ dasm_put(Dst, 12578, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
break;
case BC_USETN:
- dasm_put(Dst, 12495);
+ dasm_put(Dst, 12671);
if (sse) {
- dasm_put(Dst, 12500);
+ dasm_put(Dst, 12676);
} else {
- dasm_put(Dst, 10775);
+ dasm_put(Dst, 10951);
}
- dasm_put(Dst, 12507, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12683, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 12516);
+ dasm_put(Dst, 12692);
} else {
- dasm_put(Dst, 12522);
+ dasm_put(Dst, 12698);
}
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
break;
case BC_USETP:
- dasm_put(Dst, 12525, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 12701, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 12564, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 12740, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 12619, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 12795, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 12685, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12861, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 12807, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 12983, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 12902, Dt7(->env));
+ dasm_put(Dst, 13078, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 12921, Dt7(->env));
+ dasm_put(Dst, 13097, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 12940, LJ_TTAB);
+ dasm_put(Dst, 13116, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 12963, LJ_TISNUM);
+ dasm_put(Dst, 13139, LJ_TISNUM);
} else {
- dasm_put(Dst, 12977, LJ_TISNUM);
+ dasm_put(Dst, 13153, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 12988);
+ dasm_put(Dst, 13164);
} else {
}
- dasm_put(Dst, 13009);
+ dasm_put(Dst, 13185);
}
- dasm_put(Dst, 13014, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 13207, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 13383, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13594, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETS:
- dasm_put(Dst, 13555, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 13631, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 13719, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13731, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 13807, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 13895, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETB:
- dasm_put(Dst, 13810, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 13904, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 13986, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 14080, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETM:
- dasm_put(Dst, 13950, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 14093, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 14126, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 14269, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 11288);
+ dasm_put(Dst, 11464);
if (op == BC_CALLM) {
- dasm_put(Dst, 14111);
+ dasm_put(Dst, 14287);
}
- dasm_put(Dst, 14116, LJ_TFUNC, Dt7(->pc));
+ dasm_put(Dst, 14292, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 14111);
+ dasm_put(Dst, 14287);
break;
case BC_CALLT:
- dasm_put(Dst, 14158, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
- dasm_put(Dst, 14273, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+ dasm_put(Dst, 14334, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 14449, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
break;
case BC_ITERC:
- dasm_put(Dst, 14344, LJ_TFUNC, 2+1, Dt7(->pc));
+ dasm_put(Dst, 14520, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_ITERN:
#if LJ_HASJIT
#endif
- dasm_put(Dst, 14415, Dt6(->asize), Dt6(->array), LJ_TNIL);
+ dasm_put(Dst, 14591, Dt6(->asize), Dt6(->array), LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 11155, LJ_TISNUM);
+ dasm_put(Dst, 11331, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 11249);
+ dasm_put(Dst, 11425);
} else {
- dasm_put(Dst, 14461);
+ dasm_put(Dst, 14637);
}
- dasm_put(Dst, 14467);
+ dasm_put(Dst, 14643);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 11120);
+ dasm_put(Dst, 11296);
} else {
- dasm_put(Dst, 11132);
+ dasm_put(Dst, 11308);
}
- dasm_put(Dst, 14480, -BCBIAS_J*4);
+ dasm_put(Dst, 14656, -BCBIAS_J*4);
if (!LJ_DUALNUM && !sse) {
- dasm_put(Dst, 14532);
+ dasm_put(Dst, 14708);
}
- dasm_put(Dst, 14538, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
+ dasm_put(Dst, 14714, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key), DtB(->val));
break;
case BC_ISNEXT:
- dasm_put(Dst, 14610, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+ dasm_put(Dst, 14786, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
break;
case BC_VARG:
- dasm_put(Dst, 14710, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
- dasm_put(Dst, 14870, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 14886, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+ dasm_put(Dst, 15046, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 14111);
+ dasm_put(Dst, 14287);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 14936);
+ dasm_put(Dst, 15112);
}
- dasm_put(Dst, 14940, FRAME_TYPE);
+ dasm_put(Dst, 15116, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 14959);
+ dasm_put(Dst, 15135);
break;
case BC_RET1:
- dasm_put(Dst, 15011);
+ dasm_put(Dst, 15187);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 15021);
+ dasm_put(Dst, 15197);
default:
break;
}
- dasm_put(Dst, 15032, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 15208, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 15076, LJ_TNIL);
+ dasm_put(Dst, 15252, LJ_TNIL);
} else {
- dasm_put(Dst, 15085, LJ_TNIL);
+ dasm_put(Dst, 15261, LJ_TNIL);
}
- dasm_put(Dst, 15092, -FRAME_VARG, FRAME_TYPEP);
+ dasm_put(Dst, 15268, -FRAME_VARG, FRAME_TYPEP);
if (op != BC_RET0) {
- dasm_put(Dst, 15116);
+ dasm_put(Dst, 15292);
}
- dasm_put(Dst, 4708);
+ dasm_put(Dst, 4717);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2774,7 +2807,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -2786,111 +2819,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORI:
case BC_IFORL:
vk = (op == BC_IFORL || op == BC_JFORL);
- dasm_put(Dst, 15141);
+ dasm_put(Dst, 15317);
if (LJ_DUALNUM) {
- dasm_put(Dst, 15145, LJ_TISNUM);
+ dasm_put(Dst, 15321, LJ_TISNUM);
if (!vk) {
- dasm_put(Dst, 15155, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15331, LJ_TISNUM, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 15184, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15360, LJ_TISNUM, LJ_TISNUM);
#endif
- dasm_put(Dst, 15203);
+ dasm_put(Dst, 15379);
}
- dasm_put(Dst, 15222, LJ_TISNUM);
+ dasm_put(Dst, 15398, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 15233, -BCBIAS_J*4);
+ dasm_put(Dst, 15409, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15247, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15423, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15265, -BCBIAS_J*4);
+ dasm_put(Dst, 15441, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 15257, BC_JLOOP);
+ dasm_put(Dst, 15433, BC_JLOOP);
}
- dasm_put(Dst, 15279);
+ dasm_put(Dst, 15455);
if (vk) {
- dasm_put(Dst, 15303);
+ dasm_put(Dst, 15479);
}
- dasm_put(Dst, 15222, LJ_TISNUM);
+ dasm_put(Dst, 15398, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 15312);
+ dasm_put(Dst, 15488);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15317, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15493, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 15331);
+ dasm_put(Dst, 15507);
} else {
- dasm_put(Dst, 15327, BC_JLOOP);
+ dasm_put(Dst, 15503, BC_JLOOP);
}
- dasm_put(Dst, 15336);
+ dasm_put(Dst, 15512);
} else if (!vk) {
- dasm_put(Dst, 15343, LJ_TISNUM);
+ dasm_put(Dst, 15519, LJ_TISNUM);
}
if (!vk) {
- dasm_put(Dst, 15349, LJ_TISNUM);
+ dasm_put(Dst, 15525, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 15363, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 15539, LJ_TISNUM, LJ_TISNUM);
#endif
}
- dasm_put(Dst, 15382);
+ dasm_put(Dst, 15558);
if (!vk) {
- dasm_put(Dst, 15386, LJ_TISNUM);
+ dasm_put(Dst, 15562, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 15395);
+ dasm_put(Dst, 15571);
if (vk) {
- dasm_put(Dst, 15407);
+ dasm_put(Dst, 15583);
} else {
- dasm_put(Dst, 15426);
+ dasm_put(Dst, 15602);
}
- dasm_put(Dst, 15431);
+ dasm_put(Dst, 15607);
} else {
- dasm_put(Dst, 15444);
+ dasm_put(Dst, 15620);
if (vk) {
- dasm_put(Dst, 15450);
+ dasm_put(Dst, 15626);
} else {
- dasm_put(Dst, 15466);
+ dasm_put(Dst, 15642);
}
- dasm_put(Dst, 15474);
+ dasm_put(Dst, 15650);
if (cmov) {
- dasm_put(Dst, 10211);
+ dasm_put(Dst, 10392);
} else {
- dasm_put(Dst, 10217);
+ dasm_put(Dst, 10398);
}
if (!cmov) {
- dasm_put(Dst, 15479);
+ dasm_put(Dst, 15655);
}
}
if (op == BC_FORI) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 15485);
+ dasm_put(Dst, 15661);
} else {
- dasm_put(Dst, 15490, -BCBIAS_J*4);
+ dasm_put(Dst, 15666, -BCBIAS_J*4);
}
} else if (op == BC_JFORI) {
- dasm_put(Dst, 15500, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 15676, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 15514);
+ dasm_put(Dst, 15690);
} else {
- dasm_put(Dst, 15519, -BCBIAS_J*4);
+ dasm_put(Dst, 15695, -BCBIAS_J*4);
}
} else {
- dasm_put(Dst, 15510, BC_JLOOP);
+ dasm_put(Dst, 15686, BC_JLOOP);
}
if (LJ_DUALNUM) {
- dasm_put(Dst, 10140);
+ dasm_put(Dst, 10321);
} else {
- dasm_put(Dst, 10905);
+ dasm_put(Dst, 11081);
}
if (sse) {
- dasm_put(Dst, 15529);
+ dasm_put(Dst, 15705);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -2899,33 +2932,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 15540, LJ_TNIL);
+ dasm_put(Dst, 15716, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 15555, BC_JLOOP);
+ dasm_put(Dst, 15731, BC_JLOOP);
} else {
- dasm_put(Dst, 15569, -BCBIAS_J*4);
+ dasm_put(Dst, 15745, -BCBIAS_J*4);
}
- dasm_put(Dst, 10254);
+ dasm_put(Dst, 10430);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15120, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 15296, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 15585, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
+ dasm_put(Dst, 15761, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), 9*16+4*8, -1*16, -2*16, -3*16, -4*16, -5*16, -6*16, -7*16, -8*16, -9*16);
#endif
break;
case BC_JMP:
- dasm_put(Dst, 15694, -BCBIAS_J*4);
+ dasm_put(Dst, 15870, -BCBIAS_J*4);
break;
/* -- Function headers -------------------------------------------------- */
@@ -2939,7 +2972,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FUNCF:
#if LJ_HASJIT
- dasm_put(Dst, 15719, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
+ dasm_put(Dst, 15895, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
#endif
case BC_FUNCV: /* NYI: compiled vararg functions. */
break;
@@ -2949,47 +2982,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IFUNCF:
- dasm_put(Dst, 15740, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ dasm_put(Dst, 15916, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
if (op == BC_JFUNCF) {
- dasm_put(Dst, 15770, BC_JLOOP);
+ dasm_put(Dst, 15946, BC_JLOOP);
} else {
- dasm_put(Dst, 10256);
+ dasm_put(Dst, 10432);
}
- dasm_put(Dst, 15779, LJ_TNIL);
+ dasm_put(Dst, 15955, LJ_TNIL);
break;
case BC_JFUNCV:
#if !LJ_HASJIT
break;
#endif
- dasm_put(Dst, 9400);
+ dasm_put(Dst, 9409);
break; /* NYI: compiled vararg functions. */
case BC_IFUNCV:
- dasm_put(Dst, 15801, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ dasm_put(Dst, 15977, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
if (op == BC_JFUNCV) {
- dasm_put(Dst, 15770, BC_JLOOP);
+ dasm_put(Dst, 15946, BC_JLOOP);
} else {
- dasm_put(Dst, 15892, -4+PC2PROTO(k));
+ dasm_put(Dst, 16068, -4+PC2PROTO(k));
}
- dasm_put(Dst, 15915, LJ_TNIL);
+ dasm_put(Dst, 16091, LJ_TNIL);
break;
case BC_FUNCC:
case BC_FUNCCW:
- dasm_put(Dst, 15937, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ dasm_put(Dst, 16113, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
if (op == BC_FUNCC) {
- dasm_put(Dst, 2372);
+ dasm_put(Dst, 2381);
} else {
- dasm_put(Dst, 15967);
+ dasm_put(Dst, 16143);
}
- dasm_put(Dst, 15975, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 16151, DISPATCH_GL(vmstate), ~LJ_VMST_C);
if (op == BC_FUNCC) {
- dasm_put(Dst, 15984);
+ dasm_put(Dst, 16160);
} else {
- dasm_put(Dst, 15988, DISPATCH_GL(wrapf));
+ dasm_put(Dst, 16164, DISPATCH_GL(wrapf));
}
- dasm_put(Dst, 15993, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 16169, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -3017,7 +3050,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 16018);
+ dasm_put(Dst, 16194);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index dd409c5c..d6dfde88 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -114,10 +114,13 @@
|.if not X64 // x86 stack layout.
|
|.define CFRAME_SPACE, aword*7 // Delta for esp (see <--).
-|.macro saveregs
-| push ebp; push edi; push esi; push ebx
+|.macro saveregs_
+| push edi; push esi; push ebx
| sub esp, CFRAME_SPACE
|.endmacro
+|.macro saveregs
+| push ebp; saveregs_
+|.endmacro
|.macro restoreregs
| add esp, CFRAME_SPACE
| pop ebx; pop esi; pop edi; pop ebp
@@ -166,10 +169,13 @@
|.elif X64WIN // x64/Windows stack layout
|
|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
-|.macro saveregs
-| push rbp; push rdi; push rsi; push rbx
+|.macro saveregs_
+| push rdi; push rsi; push rbx
| sub rsp, CFRAME_SPACE
|.endmacro
+|.macro saveregs
+| push rbp; saveregs_
+|.endmacro
|.macro restoreregs
| add rsp, CFRAME_SPACE
| pop rbx; pop rsi; pop rdi; pop rbp
@@ -206,10 +212,13 @@
|.else // x64/POSIX stack layout
|
|.define CFRAME_SPACE, aword*5 // Delta for rsp (see <--).
-|.macro saveregs
-| push rbp; push rbx; push r15; push r14
+|.macro saveregs_
+| push rbx; push r15; push r14
| sub rsp, CFRAME_SPACE
|.endmacro
+|.macro saveregs
+| push rbp; saveregs_
+|.endmacro
|.macro restoreregs
| add rsp, CFRAME_SPACE
| pop r14; pop r15; pop rbx; pop rbp
@@ -760,14 +769,18 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| mov PC, [RB-12] // Restore PC from [cont|PC].
|.if X64
| movsxd RAa, dword [RB-16] // May be negative on WIN64 with debug.
- | test RA, RA
- | jz >1
+#if LJ_HASFFI
+ | cmp RA, 1
+ | jbe >1
+#endif
| lea KBASEa, qword [=>0]
| add RAa, KBASEa
|.else
| mov RA, dword [RB-16]
- | test RA, RA
- | jz >1
+#if LJ_HASFFI
+ | cmp RA, 1
+ | jbe >1
+#endif
|.endif
| mov LFUNC:KBASE, [BASE-8]
| mov KBASE, LFUNC:KBASE->pc
@@ -775,11 +788,15 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
| // BASE = base, RC = result, RB = meta base
| jmp RAa // Jump to continuation.
|
- |1: // Tail call from C function.
+#if LJ_HASFFI
+ |1:
+ | je ->cont_ffi_callback // cont = 1: return from FFI callback.
+ | // cont = 0: Tail call from C function.
| sub RB, BASE
| shr RB, 3
| lea RD, [RB-1]
| jmp ->vm_call_tail
+#endif
|
|->cont_cat: // BASE = base, RC = result, RB = mbase
| movzx RA, PC_RB
@@ -3699,6 +3716,103 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
|//-----------------------------------------------------------------------
|//-- FFI helper functions -----------------------------------------------
|//-----------------------------------------------------------------------
+ |
+ |// Handler for callback functions. Callback slot number in ah/al.
+ |->vm_ffi_callback:
+#if LJ_HASFFI
+ |.type CTSTATE, CTState, PC
+ |.if not X64
+ | sub esp, 16 // Leave room for SAVE_ERRF etc.
+ |.endif
+ | saveregs_ // ebp/rbp already saved. ebp now holds global_State *.
+ | lea DISPATCH, [ebp+GG_G2DISP]
+ | mov CTSTATE, GL:ebp->ctype_state
+ | movzx eax, ax
+ | mov CTSTATE->cb.slot, eax
+ |.if X64
+ | mov CTSTATE->cb.gpr[0], CARG1
+ | mov CTSTATE->cb.gpr[1], CARG2
+ | mov CTSTATE->cb.gpr[2], CARG3
+ | mov CTSTATE->cb.gpr[3], CARG4
+ | movsd qword CTSTATE->cb.fpr[0], xmm0
+ | movsd qword CTSTATE->cb.fpr[1], xmm1
+ | movsd qword CTSTATE->cb.fpr[2], xmm2
+ | movsd qword CTSTATE->cb.fpr[3], xmm3
+ |.if X64WIN
+ | lea rax, [rsp+CFRAME_SIZE+4*8]
+ |.else
+ | lea rax, [rsp+CFRAME_SIZE]
+ | mov CTSTATE->cb.gpr[4], CARG5
+ | mov CTSTATE->cb.gpr[5], CARG6
+ | movsd qword CTSTATE->cb.fpr[4], xmm4
+ | movsd qword CTSTATE->cb.fpr[5], xmm5
+ | movsd qword CTSTATE->cb.fpr[6], xmm6
+ | movsd qword CTSTATE->cb.fpr[7], xmm7
+ |.endif
+ | mov CTSTATE->cb.stack, rax
+ | mov CARG2, rsp
+ |.else
+ | lea eax, [esp+CFRAME_SIZE+16]
+ | mov CTSTATE->cb.gpr[0], FCARG1
+ | mov CTSTATE->cb.gpr[1], FCARG2
+ | mov CTSTATE->cb.stack, eax
+ | mov FCARG1, [esp+CFRAME_SIZE+12] // Move around misplaced retaddr/ebp.
+ | mov FCARG2, [esp+CFRAME_SIZE+8]
+ | mov SAVE_RET, FCARG1
+ | mov SAVE_R4, FCARG2
+ | mov FCARG2, esp
+ |.endif
+ | mov SAVE_PC, CTSTATE // Any value outside of bytecode is ok.
+ | mov FCARG1, CTSTATE
+ | call extern lj_ccallback_enter@8 // (CTState *cts, void *cf)
+ | // lua_State * returned in eax (RD).
+ | set_vmstate INTERP
+ | mov BASE, L:RD->base
+ | mov RD, L:RD->top
+ | sub RD, BASE
+ | mov LFUNC:RB, [BASE-8]
+ | shr RD, 3
+ | add RD, 1
+ | ins_callt
+#endif
+ |
+ |->cont_ffi_callback: // Return from FFI callback.
+#if LJ_HASFFI
+ | mov L:RA, SAVE_L
+ | mov CTSTATE, [DISPATCH+DISPATCH_GL(ctype_state)]
+ | mov aword CTSTATE->L, L:RAa
+ | mov L:RA->base, BASE
+ | mov L:RA->top, RB
+ | mov FCARG1, CTSTATE
+ | mov FCARG2, RC
+ | call extern lj_ccallback_leave@8 // (CTState *cts, TValue *o)
+ |.if X64
+ | mov rax, CTSTATE->cb.gpr[0]
+ | movsd xmm0, qword CTSTATE->cb.fpr[0]
+ | jmp ->vm_leave_unw
+ |.else
+ | mov L:RB, SAVE_L
+ | mov eax, CTSTATE->cb.gpr[0]
+ | mov edx, CTSTATE->cb.gpr[1]
+ | cmp dword CTSTATE->cb.gpr[2], 1
+ | jb >7
+ | je >6
+ | fld qword CTSTATE->cb.fpr[0].d
+ | jmp >7
+ |6:
+ | fld dword CTSTATE->cb.fpr[0].f
+ |7:
+ | mov ecx, L:RB->top
+ | movzx ecx, word [ecx+6] // Get stack adjustment and copy up.
+ | mov SAVE_L, ecx // Must be one slot above SAVE_RET
+ | restoreregs
+ | pop ecx // Move return addr from SAVE_RET.
+ | add esp, [esp] // Adjust stack.
+ | add esp, 16
+ | push ecx
+ | ret
+ |.endif
+#endif
|
|->vm_ffi_call@4: // Call C function via FFI.
| // Caveat: needs special frame unwinding, see below.
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 8add07c5..cd33cf87 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
#define DASM_SECTION_CODE_OP 0
#define DASM_SECTION_CODE_SUB 1
#define DASM_MAXSECTION 2
-static const unsigned char build_actionlist[17112] = {
+static const unsigned char build_actionlist[17321] = {
254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
20,252,247,198,237,15,132,244,13,248,14,129,252,246,239,252,247,198,237,15,
@@ -49,795 +49,806 @@ static const unsigned char build_actionlist[17112] = {
56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,165,233,
252,255,210,133,192,15,132,244,15,137,193,190,237,252,233,244,2,248,11,1,
209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,137,200,139,
- 117,252,244,139,77,252,240,133,201,15,132,244,247,255,139,122,252,248,139,
- 191,233,139,191,233,252,255,225,248,1,41,213,193,252,237,3,141,69,252,255,
- 252,233,244,32,248,33,15,182,78,252,255,131,252,237,16,141,12,202,41,252,
- 233,15,132,244,34,252,247,217,193,252,233,3,137,76,36,8,139,72,4,139,0,137,
- 77,4,137,69,0,137,108,36,4,252,233,244,35,248,36,137,68,36,16,199,68,36,20,
- 237,141,68,36,16,128,126,252,252,235,15,133,244,247,141,139,233,137,41,199,
- 65,4,237,137,205,252,233,244,248,248,37,255,15,182,70,252,254,255,199,68,
- 36,20,237,137,68,36,16,255,252,242,15,42,192,252,242,15,17,68,36,16,255,137,
- 68,36,12,219,68,36,12,221,92,36,16,255,141,68,36,16,252,233,244,247,248,38,
- 15,182,70,252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,
- 137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,
- 232,251,1,1,139,149,233,133,192,15,132,244,249,248,34,15,182,78,252,253,139,
- 104,4,139,0,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,
- 193,232,16,252,255,36,171,248,3,139,141,233,137,113,252,244,141,177,233,41,
- 214,139,105,252,248,184,237,252,233,244,30,248,39,137,68,36,16,199,68,36,
- 20,237,141,68,36,16,128,126,252,252,235,15,133,244,247,255,141,139,233,137,
- 41,199,65,4,237,137,205,252,233,244,248,248,40,15,182,70,252,254,255,141,
- 68,36,16,252,233,244,247,248,41,15,182,70,252,254,141,4,194,248,1,15,182,
+ 117,252,244,255,139,77,252,240,255,131,252,249,1,15,134,244,247,255,139,122,
+ 252,248,139,191,233,139,191,233,252,255,225,255,248,1,15,132,244,32,41,213,
+ 193,252,237,3,141,69,252,255,252,233,244,33,255,248,34,15,182,78,252,255,
+ 131,252,237,16,141,12,202,41,252,233,15,132,244,35,252,247,217,193,252,233,
+ 3,137,76,36,8,139,72,4,139,0,137,77,4,137,69,0,137,108,36,4,252,233,244,36,
+ 248,37,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,15,
+ 133,244,247,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,248,38,
+ 15,182,70,252,254,255,199,68,36,20,237,137,68,36,16,255,252,242,15,42,192,
+ 252,242,15,17,68,36,16,255,137,68,36,12,219,68,36,12,221,92,36,16,255,141,
+ 68,36,16,252,233,244,247,248,39,15,182,70,252,254,141,4,194,248,1,15,182,
110,252,255,141,44,252,234,248,2,137,108,36,4,139,108,36,48,137,68,36,8,137,
- 44,36,137,149,233,137,116,36,24,232,251,1,2,139,149,233,133,192,15,132,244,
- 249,15,182,78,252,253,139,108,202,4,139,12,202,137,104,4,137,8,248,42,139,
+ 44,36,137,149,233,137,116,36,24,232,251,1,1,139,149,233,133,192,15,132,244,
+ 249,248,35,15,182,78,252,253,139,104,4,139,0,137,108,202,4,137,4,202,139,
6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,139,141,
- 233,137,113,252,244,15,182,70,252,253,139,108,194,4,139,4,194,137,105,20,
- 137,65,16,141,177,233,41,214,139,105,252,248,184,237,252,233,244,30,248,43,
- 15,182,110,252,252,141,4,194,141,12,202,137,108,36,12,139,108,36,48,137,68,
- 36,8,137,76,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,3,248,3,139,
- 149,233,255,131,252,248,1,15,135,244,44,248,4,141,118,4,15,130,244,252,248,
- 5,15,183,70,252,254,141,180,253,134,233,248,6,139,6,15,182,204,15,182,232,
- 131,198,4,193,232,16,252,255,36,171,248,45,131,198,4,129,120,253,4,239,15,
- 130,244,5,252,233,244,6,248,46,129,120,253,4,239,252,233,244,4,248,47,131,
- 252,238,4,137,108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,
- 149,233,255,137,116,36,24,232,251,1,4,252,233,244,3,248,48,255,131,252,238,
- 4,139,108,36,48,137,149,233,137,252,233,139,86,252,252,137,116,36,24,232,
- 251,1,5,252,233,244,3,255,248,49,255,15,182,110,252,255,255,248,50,141,4,
- 199,252,233,244,247,248,51,255,248,52,141,4,199,141,44,252,234,149,252,233,
- 244,248,248,53,141,4,194,137,197,252,233,244,248,248,54,255,248,55,141,4,
- 194,248,1,141,44,252,234,248,2,141,12,202,137,108,36,8,139,108,36,48,137,
- 68,36,12,15,182,70,252,252,137,76,36,4,137,68,36,16,137,44,36,137,149,233,
- 137,116,36,24,232,251,1,6,139,149,233,133,192,15,132,244,42,248,44,137,193,
- 41,208,137,113,252,244,141,176,233,184,237,252,233,244,28,248,56,139,108,
- 36,48,137,149,233,141,20,194,137,252,233,137,116,36,24,232,251,1,7,139,149,
- 233,255,133,192,15,133,244,44,15,183,70,252,254,139,12,194,252,233,244,57,
- 255,252,233,244,44,255,248,58,141,76,202,8,248,29,137,76,36,20,137,68,36,
- 16,131,252,233,8,141,4,193,139,108,36,48,137,76,36,4,137,68,36,8,137,44,36,
- 137,149,233,137,116,36,24,232,251,1,8,139,149,233,139,76,36,20,139,68,36,
- 16,139,105,252,248,131,192,1,57,215,15,132,244,59,137,202,137,114,252,252,
- 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,
- 60,139,108,36,48,137,149,233,137,202,137,252,233,137,116,36,24,232,251,1,
- 9,139,149,233,139,70,252,252,15,182,204,15,182,232,193,232,16,252,255,164,
- 253,171,233,248,61,129,252,248,239,15,130,244,62,139,106,4,129,252,253,239,
- 15,131,244,62,139,114,252,252,137,68,36,20,137,106,252,252,139,42,137,106,
- 252,248,131,232,2,15,132,244,248,255,137,209,248,1,131,193,8,139,105,4,137,
- 105,252,252,139,41,137,105,252,248,131,232,1,15,133,244,1,248,2,139,68,36,
- 20,252,233,244,63,248,64,129,252,248,239,15,130,244,62,139,106,4,184,237,
- 252,247,213,57,232,255,15,71,197,255,15,134,244,247,137,232,248,1,255,248,
- 2,139,106,252,248,139,132,253,197,233,139,114,252,252,199,66,252,252,237,
- 137,66,252,248,252,233,244,65,248,66,129,252,248,239,15,130,244,62,139,106,
- 4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,139,42,139,173,233,
- 248,2,133,252,237,199,66,252,252,237,15,132,244,65,139,131,233,199,66,252,
- 252,237,255,137,106,252,248,139,141,233,35,136,233,105,201,239,3,141,233,
- 248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,244,251,248,4,139,
- 137,233,133,201,15,133,244,3,252,233,244,65,248,5,139,105,4,129,252,253,239,
- 255,15,132,244,65,139,1,137,106,252,252,137,66,252,248,252,233,244,65,248,
- 6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,244,254,189,237,248,
- 8,252,247,213,139,172,253,171,233,252,233,244,2,248,67,129,252,248,239,15,
- 130,244,62,255,129,122,253,4,239,15,133,244,62,139,42,131,189,233,0,15,133,
- 244,62,129,122,253,12,239,15,133,244,62,139,66,8,137,133,233,139,114,252,
- 252,199,66,252,252,237,137,106,252,248,252,246,133,233,235,15,132,244,247,
- 128,165,233,235,139,131,233,137,171,233,137,133,233,248,1,255,252,233,244,
- 65,248,68,129,252,248,239,15,130,244,62,129,122,253,4,239,15,133,244,62,139,
- 2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,137,84,36,8,232,251,
- 1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,106,252,248,137,66,252,
- 252,252,233,244,65,248,69,129,252,248,239,15,133,244,62,129,122,253,4,239,
- 255,15,133,244,247,139,42,252,233,244,70,248,1,15,135,244,62,255,15,131,244,
- 62,255,252,242,15,16,2,252,233,244,71,255,221,2,252,233,244,72,255,248,73,
- 129,252,248,239,15,130,244,62,139,114,252,252,129,122,253,4,239,15,133,244,
- 249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,233,244,65,248,3,129,
- 122,253,4,239,15,135,244,62,131,187,233,0,15,133,244,62,139,171,233,59,171,
- 233,255,15,130,244,247,232,244,74,248,1,139,108,36,48,137,149,233,137,116,
- 36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,255,139,149,233,252,233,
- 244,2,248,75,129,252,248,239,15,130,244,62,15,132,244,248,248,1,129,122,253,
- 4,239,15,133,244,62,139,108,36,48,137,149,233,137,149,233,139,114,252,252,
- 139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,137,116,36,24,232,251,1,
- 13,139,149,233,133,192,15,132,244,249,139,106,8,139,66,12,137,106,252,248,
- 137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,248,76,184,237,255,252,
- 233,244,77,248,2,199,66,12,237,252,233,244,1,248,3,199,66,252,252,237,252,
- 233,244,65,248,78,129,252,248,239,15,130,244,62,139,42,129,122,253,4,239,
- 15,133,244,62,255,131,189,233,0,15,133,244,62,255,139,106,252,248,139,133,
- 233,139,114,252,252,199,66,252,252,237,137,66,252,248,199,66,12,237,184,237,
- 252,233,244,77,248,79,129,252,248,239,15,130,244,62,129,122,253,4,239,15,
- 133,244,62,129,122,253,12,239,255,139,114,252,252,255,139,66,8,131,192,1,
- 199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,8,189,0,0,252,240,
- 63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,242,15,45,192,252,
- 242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,36,221,90,252,248,
- 139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,3,133,233,248,1,129,
- 120,253,4,239,15,132,244,80,139,40,139,64,4,137,42,137,66,4,252,233,244,76,
- 248,2,131,189,233,0,15,132,244,80,137,252,233,137,213,137,194,232,251,1,14,
- 137,252,234,133,192,15,133,244,1,248,80,184,237,252,233,244,77,248,81,255,
- 139,106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,
- 248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,252,242,15,17,66,8,255,
- 217,252,238,221,90,8,255,184,237,252,233,244,77,248,82,129,252,248,239,15,
- 130,244,62,141,74,8,131,232,1,190,237,248,1,15,182,171,233,193,252,237,235,
- 131,229,1,1,252,238,252,233,244,28,248,83,129,252,248,239,15,130,244,62,129,
- 122,253,12,239,15,133,244,62,255,139,106,4,137,106,12,199,66,4,237,139,42,
- 139,114,8,137,106,8,137,50,141,74,16,131,232,2,190,237,252,233,244,1,248,
- 84,129,252,248,239,15,130,244,62,139,42,139,114,252,252,137,116,36,24,137,
- 44,36,129,122,253,4,239,15,133,244,62,131,189,233,0,15,133,244,62,128,189,
- 233,235,15,135,244,62,139,141,233,15,132,244,247,255,59,141,233,15,132,244,
- 62,248,1,141,116,193,252,240,59,181,233,15,135,244,62,137,181,233,139,108,
- 36,48,137,149,233,131,194,8,137,149,233,141,108,194,232,41,252,245,57,206,
- 15,132,244,249,248,2,139,68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,
- 252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,
- 36,8,232,244,25,199,131,233,237,255,139,108,36,48,139,52,36,139,149,233,129,
- 252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,142,233,137,
- 252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,15,135,244,
- 255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,
- 252,249,15,133,244,5,248,6,141,70,2,199,66,252,252,237,248,7,139,116,36,24,
- 137,68,36,20,185,252,248,252,255,252,255,252,255,252,247,198,237,255,15,132,
- 244,13,252,233,244,14,248,8,199,66,252,252,237,139,142,233,131,252,233,8,
- 137,142,233,139,1,137,2,139,65,4,137,66,4,184,237,252,233,244,7,248,9,139,
- 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
- 252,233,244,4,248,85,139,106,252,248,139,173,233,139,114,252,252,137,116,
- 36,24,137,44,36,131,189,233,0,15,133,244,62,255,128,189,233,235,15,135,244,
- 62,139,141,233,15,132,244,247,59,141,233,15,132,244,62,248,1,141,116,193,
- 252,248,59,181,233,15,135,244,62,137,181,233,139,108,36,48,137,149,233,137,
- 149,233,141,108,194,252,240,41,252,245,57,206,15,132,244,249,248,2,255,139,
- 68,46,4,137,70,252,252,139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,
- 244,2,248,3,137,76,36,4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131,
- 233,237,139,108,36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,
- 248,4,139,142,233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,
- 141,4,50,193,252,238,3,59,133,233,15,135,244,255,255,137,213,41,205,248,5,
- 139,1,137,4,41,139,65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,
- 6,141,70,1,248,7,139,116,36,24,137,68,36,20,49,201,252,247,198,237,15,132,
- 244,13,252,233,244,14,248,8,137,252,242,137,252,233,232,251,1,15,248,9,139,
- 12,36,137,185,233,137,252,242,137,252,233,232,251,1,0,139,52,36,139,149,233,
- 252,233,244,4,248,86,139,108,36,48,252,247,133,233,237,15,132,244,62,255,
- 137,149,233,141,68,194,252,248,137,133,233,49,192,137,133,233,176,235,136,
- 133,233,252,233,244,16,255,248,70,255,248,72,139,114,252,252,221,90,252,248,
- 252,233,244,65,255,248,87,129,252,248,239,15,130,244,62,255,129,122,253,4,
- 239,15,133,244,248,139,42,131,252,253,0,15,137,244,70,252,247,221,15,136,
- 244,247,248,88,248,70,139,114,252,252,199,66,252,252,237,137,106,252,248,
- 252,233,244,65,248,1,139,114,252,252,199,66,252,252,0,0,224,65,199,66,252,
- 248,0,0,0,0,252,233,244,65,248,2,15,135,244,62,255,129,122,253,4,239,15,131,
- 244,62,255,252,242,15,16,2,102,15,252,239,201,102,15,118,201,102,15,115,209,
- 1,15,84,193,248,71,139,114,252,252,252,242,15,17,66,252,248,255,221,2,217,
- 225,248,71,248,72,139,114,252,252,221,90,252,248,255,248,65,184,237,248,77,
- 137,68,36,20,248,63,252,247,198,237,15,133,244,253,248,5,56,70,252,255,15,
- 135,244,252,15,182,78,252,253,252,247,209,141,20,202,139,6,15,182,204,15,
- 182,232,131,198,4,193,232,16,252,255,36,171,248,6,199,68,194,252,244,237,
- 131,192,1,252,233,244,5,248,7,185,252,248,252,255,252,255,252,255,252,233,
- 244,14,248,89,255,129,122,253,4,239,15,133,244,247,139,42,252,233,244,70,
- 248,1,15,135,244,62,255,252,242,15,16,2,232,244,90,255,252,242,15,45,232,
- 129,252,253,0,0,0,128,15,133,244,70,252,242,15,42,205,102,15,46,193,15,138,
- 244,71,15,132,244,70,255,221,2,232,244,90,255,219,20,36,139,44,36,129,252,
- 253,0,0,0,128,15,133,244,248,217,192,219,4,36,255,223,252,233,221,216,255,
- 218,252,233,223,224,158,255,15,138,244,72,15,133,244,72,248,2,221,216,252,
- 233,244,70,255,248,91,255,252,242,15,16,2,232,244,92,255,221,2,232,244,92,
- 255,248,93,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,
- 252,242,15,81,2,252,233,244,71,255,248,93,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,221,2,217,252,250,252,233,244,72,255,248,94,129,
- 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,217,252,237,221,
- 2,217,252,241,252,233,244,72,248,95,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,15,131,244,62,217,252,236,221,2,217,252,241,252,233,244,72,248,
- 96,129,252,248,239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,
- 2,232,244,97,252,233,244,72,248,98,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,15,131,244,62,221,2,217,252,254,252,233,244,72,248,99,129,252,248,
- 239,255,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,252,255,252,
- 233,244,72,248,100,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,221,2,217,252,242,221,216,252,233,244,72,248,101,129,252,248,239,15,
- 130,244,62,255,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,
- 232,222,225,217,252,250,217,252,243,252,233,244,72,248,102,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,217,192,216,200,217,232,
- 222,225,217,252,250,217,201,217,252,243,252,233,244,72,248,103,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,131,244,62,255,221,2,217,232,217,252,
- 243,252,233,244,72,255,248,104,129,252,248,239,15,130,244,62,129,122,253,
- 4,239,15,131,244,62,252,242,15,16,2,252,242,15,17,4,36,255,248,104,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255,
- 137,213,232,251,1,16,137,252,234,252,233,244,72,255,248,105,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,252,242,15,
- 17,4,36,255,248,105,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,221,2,221,28,36,255,137,213,232,251,1,17,137,252,234,252,233,244,72,
- 255,248,106,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,
- 252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,239,15,130,244,
- 62,129,122,253,4,239,15,131,244,62,221,2,221,28,36,255,137,213,232,251,1,
- 18,137,252,234,252,233,244,72,248,107,255,248,108,129,252,248,239,15,130,
- 244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,139,106,252,248,252,
- 242,15,89,133,233,252,233,244,71,255,248,108,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,15,131,244,62,221,2,139,106,252,248,220,141,233,252,233,
- 244,72,255,248,109,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,
- 244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,217,252,243,252,233,
- 244,72,248,110,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,129,122,253,12,239,255,15,131,244,62,221,66,8,221,2,217,252,253,221,217,
- 252,233,244,72,248,111,129,252,248,239,15,130,244,62,139,106,4,129,252,253,
- 239,15,131,244,62,139,114,252,252,139,2,137,106,252,252,137,66,252,248,209,
- 229,129,252,253,0,0,224,252,255,15,131,244,249,9,232,15,132,244,249,184,252,
- 254,3,0,0,129,252,253,0,0,32,0,15,130,244,250,248,1,193,252,237,21,41,197,
- 255,252,242,15,42,197,255,137,108,36,16,219,68,36,16,255,139,106,252,252,
- 129,229,252,255,252,255,15,128,129,205,0,0,224,63,137,106,252,252,248,2,255,
- 252,242,15,17,2,255,221,26,255,184,237,252,233,244,77,248,3,255,15,87,192,
- 252,233,244,2,255,217,252,238,252,233,244,2,255,248,4,255,252,242,15,16,2,
- 189,0,0,80,67,102,15,110,205,102,15,112,201,81,252,242,15,89,193,252,242,
- 15,17,66,252,248,255,221,2,199,68,36,16,0,0,128,90,216,76,36,16,221,90,252,
- 248,255,139,106,252,252,184,52,4,0,0,209,229,252,233,244,1,255,248,112,129,
- 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,252,242,15,16,2,
- 255,248,112,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,
- 221,2,255,139,106,4,139,114,252,252,209,229,129,252,253,0,0,224,252,255,15,
- 132,244,250,255,15,40,224,232,244,113,252,242,15,92,224,248,1,252,242,15,
- 17,66,252,248,252,242,15,17,34,255,217,192,232,244,113,220,252,233,248,1,
- 221,90,252,248,221,26,255,139,66,252,252,139,106,4,49,232,15,136,244,249,
- 248,2,184,237,252,233,244,77,248,3,129,252,245,0,0,0,128,137,106,4,252,233,
- 244,2,248,4,255,15,87,228,252,233,244,1,255,217,252,238,217,201,252,233,244,
- 1,255,248,114,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,
- 62,129,122,253,12,239,15,131,244,62,221,66,8,221,2,248,1,217,252,248,223,
- 224,158,15,138,244,1,221,217,252,233,244,72,255,248,115,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,
- 62,252,242,15,16,2,252,242,15,16,74,8,232,244,116,252,233,244,71,255,248,
- 115,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
- 253,12,239,15,131,244,62,221,2,221,66,8,232,244,116,252,233,244,72,255,248,
- 117,185,2,0,0,0,129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,
- 15,131,244,70,129,124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,
- 15,79,108,202,252,248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,252,
- 233,244,252,248,4,15,135,244,62,255,252,242,15,16,2,248,5,57,193,15,131,244,
- 71,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,62,252,242,15,
- 42,76,202,252,248,252,233,244,253,255,248,6,252,242,15,16,76,202,252,248,
- 248,7,252,242,15,93,193,131,193,1,252,233,244,5,255,221,2,248,5,57,193,15,
- 131,244,72,129,124,253,202,252,252,239,255,15,130,244,252,15,135,244,255,
- 219,68,202,252,248,252,233,244,253,255,15,131,244,255,255,248,6,221,68,202,
- 252,248,248,7,255,219,252,233,219,209,221,217,255,80,221,225,223,224,252,
- 246,196,1,15,132,244,248,217,201,248,2,221,216,88,255,248,118,185,2,0,0,0,
- 129,122,253,4,239,255,15,133,244,250,139,42,248,1,57,193,15,131,244,70,129,
- 124,253,202,252,252,239,15,133,244,249,59,108,202,252,248,15,76,108,202,252,
- 248,131,193,1,252,233,244,1,248,3,15,135,244,62,255,248,6,252,242,15,16,76,
- 202,252,248,248,7,252,242,15,95,193,131,193,1,252,233,244,5,255,219,252,233,
- 218,209,221,217,255,80,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
- 248,2,221,216,88,255,248,9,221,216,252,233,244,62,255,248,119,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,133,244,62,139,42,255,139,173,233,
- 252,233,244,70,255,252,242,15,42,133,233,252,233,244,71,255,219,133,233,252,
- 233,244,72,255,248,120,129,252,248,239,15,133,244,62,129,122,253,4,239,15,
- 133,244,62,139,42,139,114,252,252,131,189,233,1,15,130,244,80,15,182,173,
- 233,255,252,242,15,42,197,252,233,244,71,255,137,108,36,16,219,68,36,16,252,
- 233,244,72,255,248,121,139,171,233,59,171,233,15,130,244,247,232,244,74,248,
- 1,129,252,248,239,15,133,244,62,129,122,253,4,239,255,15,133,244,62,139,42,
- 129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15,131,244,62,252,
- 242,15,44,42,129,252,253,252,255,0,0,0,15,135,244,62,137,108,36,20,255,15,
- 131,244,62,221,2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,62,255,
- 199,68,36,8,1,0,0,0,141,68,36,20,248,122,139,108,36,48,137,149,233,137,68,
- 36,4,137,44,36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,
- 66,252,252,237,137,66,252,248,252,233,244,65,248,123,139,171,233,59,171,233,
- 15,130,244,247,232,244,74,248,1,199,68,36,20,252,255,252,255,252,255,252,
- 255,129,252,248,239,15,130,244,62,15,134,244,247,129,122,253,20,239,255,15,
- 133,244,62,139,106,16,137,108,36,20,255,15,131,244,62,252,242,15,44,106,16,
- 137,108,36,20,255,15,131,244,62,221,66,16,219,92,36,20,255,248,1,129,122,
- 253,4,239,15,133,244,62,129,122,253,12,239,255,139,42,137,108,36,12,139,173,
- 233,255,139,74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,
- 8,255,139,68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,
- 3,139,108,36,12,41,200,15,140,244,124,141,172,253,13,233,131,192,1,248,4,
- 137,68,36,8,137,232,252,233,244,122,248,5,15,140,244,252,141,68,40,1,252,
- 233,244,2,248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,
- 131,193,1,15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,124,49,192,252,
- 233,244,4,248,125,129,252,248,239,15,130,244,62,139,171,233,59,171,233,15,
- 130,244,247,232,244,74,248,1,255,129,122,253,4,239,15,133,244,62,129,122,
- 253,12,239,139,42,255,15,133,244,62,139,66,8,255,15,131,244,62,252,242,15,
- 44,66,8,255,15,131,244,62,221,66,8,219,92,36,20,139,68,36,20,255,133,192,
- 15,142,244,124,131,189,233,1,15,130,244,124,15,133,244,126,57,131,233,15,
- 130,244,126,15,182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,
- 1,131,232,1,15,133,244,1,139,131,233,252,233,244,122,248,127,129,252,248,
- 239,255,15,130,244,62,139,171,233,59,171,233,15,130,244,247,232,244,74,248,
- 1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,133,192,15,132,244,124,
- 57,131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
- 248,1,255,15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,
- 139,116,36,20,252,233,244,122,248,129,129,252,248,239,15,130,244,62,139,171,
- 233,59,171,233,15,130,244,247,232,244,74,248,1,129,122,253,4,239,15,133,244,
- 62,139,42,139,133,233,57,131,233,255,15,130,244,128,129,197,239,137,116,36,
- 20,137,68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,
- 65,15,130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,
- 12,6,248,3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,122,
- 248,130,129,252,248,239,15,130,244,62,255,139,171,233,59,171,233,15,130,244,
- 247,232,244,74,248,1,129,122,253,4,239,15,133,244,62,139,42,139,133,233,57,
- 131,233,15,130,244,128,129,197,239,137,116,36,20,137,68,36,8,139,179,233,
- 252,233,244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,
- 252,249,122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,
- 15,137,244,1,137,252,240,139,116,36,20,252,233,244,122,248,131,129,252,248,
- 239,15,130,244,62,129,122,253,4,239,15,133,244,62,137,213,139,10,232,251,
- 1,20,137,252,234,255,137,197,252,233,244,70,255,252,242,15,42,192,252,233,
- 244,71,255,137,4,36,219,4,36,252,233,244,72,255,248,132,129,252,248,239,15,
- 130,244,62,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,88,248,
- 1,15,135,244,62,255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,
- 201,81,252,242,15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,
- 216,68,36,16,221,28,36,255,139,44,36,255,252,233,244,88,255,248,133,129,252,
- 248,239,15,130,244,62,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81,
- 255,199,68,36,16,0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,
- 1,15,135,244,62,255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,
- 221,2,216,68,36,16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194,
- 252,240,248,1,57,208,15,134,244,88,129,120,253,4,239,255,15,133,244,248,35,
- 40,131,232,8,252,233,244,1,248,2,15,135,244,134,255,15,131,244,134,255,252,
- 242,15,16,0,252,242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,
- 221,28,36,35,44,36,255,131,232,8,252,233,244,1,248,135,129,252,248,239,15,
- 130,244,62,255,15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,
- 244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,
- 0,216,68,36,16,221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,136,129,
- 252,248,239,15,130,244,62,255,15,133,244,248,51,40,131,232,8,252,233,244,
- 1,248,2,15,135,244,134,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,
- 49,205,255,221,0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244,
- 1,248,137,129,252,248,239,15,130,244,62,129,122,253,4,239,255,221,2,199,68,
- 36,16,0,0,192,89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,
- 244,88,248,138,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,
- 252,247,213,255,248,88,252,242,15,42,197,252,233,244,71,255,248,88,137,44,
- 36,219,4,36,252,233,244,72,255,248,134,139,68,36,20,252,233,244,62,255,248,
- 139,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,2,129,122,253,
- 12,239,15,133,244,62,139,74,8,255,248,139,129,252,248,239,15,130,244,62,129,
- 122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,15,16,
- 2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,
- 15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,139,129,
- 252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,
- 239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,
- 92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233,
- 244,88,255,248,140,129,252,248,239,15,130,244,62,129,122,253,4,239,255,248,
- 140,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
- 253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,
- 102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,
- 15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,130,244,62,129,122,
- 253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2,221,66,8,199,
- 68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,
- 36,8,139,44,36,255,211,252,237,252,233,244,88,255,248,141,129,252,248,239,
- 15,130,244,62,129,122,253,4,239,255,248,141,129,252,248,239,15,130,244,62,
- 129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,242,
- 15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,
- 252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,
- 141,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,122,
- 253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,
- 16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253,
- 252,233,244,88,255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239,
- 255,248,142,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,
- 129,122,253,12,239,15,131,244,62,252,242,15,16,2,252,242,15,16,74,8,189,0,
- 0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,
- 202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,15,130,244,
- 62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,221,2,
- 221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,
- 28,36,139,76,36,8,139,44,36,255,211,197,252,233,244,88,255,248,143,129,252,
- 248,239,15,130,244,62,129,122,253,4,239,255,248,143,129,252,248,239,15,130,
- 244,62,129,122,253,4,239,15,131,244,62,129,122,253,12,239,15,131,244,62,252,
- 242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,
- 81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,201,255,
- 248,143,129,252,248,239,15,130,244,62,129,122,253,4,239,15,131,244,62,129,
- 122,253,12,239,15,131,244,62,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,
- 36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,
- 252,233,244,88,248,126,184,237,252,233,244,62,248,128,184,237,248,62,139,
- 108,36,48,139,114,252,252,137,116,36,24,137,149,233,141,68,194,252,248,141,
- 136,233,137,133,233,139,66,252,248,59,141,233,15,135,244,251,137,44,36,252,
- 255,144,233,139,149,233,133,192,15,143,244,77,248,1,255,139,141,233,41,209,
- 193,252,233,3,133,192,141,65,1,139,106,252,248,15,133,244,32,139,181,233,
- 139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,248,32,137,209,
- 252,247,198,237,15,133,244,249,15,182,110,252,253,252,247,213,141,20,252,
- 234,252,233,244,28,248,3,137,252,245,131,229,252,248,41,252,234,252,233,244,
- 28,248,5,186,237,137,252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,
- 248,74,93,137,108,36,16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,
- 194,252,248,137,252,233,137,133,233,232,251,1,21,139,149,233,139,133,233,
- 41,208,193,232,3,131,192,1,139,108,36,16,85,195,248,144,255,15,182,131,233,
- 168,235,15,133,244,251,168,235,15,133,244,247,168,235,15,132,244,247,252,
- 255,139,233,252,233,244,247,255,248,145,15,182,131,233,168,235,15,133,244,
- 251,252,233,244,247,248,146,15,182,131,233,168,235,15,133,244,251,168,235,
- 15,132,244,251,252,255,139,233,15,132,244,247,168,235,15,132,244,251,248,
- 1,255,139,108,36,48,137,149,233,137,252,242,137,252,233,232,251,1,22,248,
- 3,139,149,233,248,4,15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,
- 252,254,252,255,164,253,171,233,248,147,131,198,4,139,77,232,137,76,36,20,
- 252,233,244,4,248,148,255,139,106,252,248,139,173,233,15,182,133,233,141,
- 4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,139,233,137,171,
- 233,137,116,36,24,232,251,1,23,252,233,244,3,255,248,149,137,116,36,24,255,
- 248,150,255,137,116,36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,
- 36,48,137,149,233,137,133,233,137,252,242,137,252,233,232,251,1,24,199,68,
- 36,24,0,0,0,0,255,131,230,252,254,255,139,149,233,137,193,139,133,233,41,
- 208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,255,229,248,151,255,
- 85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,
- 252,252,137,117,252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,
- 137,139,233,129,252,236,239,252,242,15,17,125,216,252,242,15,17,117,208,252,
- 242,15,17,109,200,252,242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,
- 85,176,252,242,15,17,77,168,252,242,15,17,69,160,139,171,233,139,147,233,
- 137,171,233,199,131,233,0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,
- 251,1,25,139,141,233,129,225,239,137,204,137,169,233,139,149,233,139,177,
- 233,255,248,152,255,133,192,15,136,244,249,137,68,36,20,139,122,252,248,139,
- 191,233,139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,129,252,253,239,15,130,244,248,139,68,36,
- 20,248,2,252,255,36,171,248,3,252,247,216,137,252,233,137,194,232,251,1,26,
- 255,248,90,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,
- 252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
- 68,36,8,195,255,248,153,102,15,252,239,210,102,15,118,210,102,15,115,210,
+ 233,137,113,252,244,141,177,233,41,214,139,105,252,248,184,237,252,233,244,
+ 30,248,40,137,68,36,16,199,68,36,20,237,141,68,36,16,128,126,252,252,235,
+ 15,133,244,247,255,141,139,233,137,41,199,65,4,237,137,205,252,233,244,248,
+ 248,41,15,182,70,252,254,255,141,68,36,16,252,233,244,247,248,42,15,182,70,
+ 252,254,141,4,194,248,1,15,182,110,252,255,141,44,252,234,248,2,137,108,36,
+ 4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,
+ 2,139,149,233,133,192,15,132,244,249,15,182,78,252,253,139,108,202,4,139,
+ 12,202,137,104,4,137,8,248,43,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,248,3,139,141,233,137,113,252,244,15,182,70,252,253,139,
+ 108,194,4,139,4,194,137,105,20,137,65,16,141,177,233,41,214,139,105,252,248,
+ 184,237,252,233,244,30,248,44,15,182,110,252,252,141,4,194,141,12,202,137,
+ 108,36,12,139,108,36,48,137,68,36,8,137,76,36,4,137,44,36,137,149,233,137,
+ 116,36,24,232,251,1,3,248,3,139,149,233,255,131,252,248,1,15,135,244,45,248,
+ 4,141,118,4,15,130,244,252,248,5,15,183,70,252,254,141,180,253,134,233,248,
+ 6,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,46,
+ 131,198,4,129,120,253,4,239,15,130,244,5,252,233,244,6,248,47,129,120,253,
+ 4,239,252,233,244,4,248,48,131,252,238,4,137,108,36,12,139,108,36,48,137,
+ 68,36,8,137,76,36,4,137,44,36,137,149,233,255,137,116,36,24,232,251,1,4,252,
+ 233,244,3,248,49,255,131,252,238,4,139,108,36,48,137,149,233,137,252,233,
+ 139,86,252,252,137,116,36,24,232,251,1,5,252,233,244,3,255,248,50,255,15,
+ 182,110,252,255,255,248,51,141,4,199,252,233,244,247,248,52,255,248,53,141,
+ 4,199,141,44,252,234,149,252,233,244,248,248,54,141,4,194,137,197,252,233,
+ 244,248,248,55,255,248,56,141,4,194,248,1,141,44,252,234,248,2,141,12,202,
+ 137,108,36,8,139,108,36,48,137,68,36,12,15,182,70,252,252,137,76,36,4,137,
+ 68,36,16,137,44,36,137,149,233,137,116,36,24,232,251,1,6,139,149,233,133,
+ 192,15,132,244,43,248,45,137,193,41,208,137,113,252,244,141,176,233,184,237,
+ 252,233,244,28,248,57,139,108,36,48,137,149,233,141,20,194,137,252,233,137,
+ 116,36,24,232,251,1,7,139,149,233,255,133,192,15,133,244,45,15,183,70,252,
+ 254,139,12,194,252,233,244,58,255,252,233,244,45,255,248,59,141,76,202,8,
+ 248,29,137,76,36,20,137,68,36,16,131,252,233,8,141,4,193,139,108,36,48,137,
+ 76,36,4,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,8,139,149,
+ 233,139,76,36,20,139,68,36,16,139,105,252,248,131,192,1,57,215,15,132,244,
+ 60,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,
+ 198,4,252,255,36,171,248,61,139,108,36,48,137,149,233,137,202,137,252,233,
+ 137,116,36,24,232,251,1,9,139,149,233,139,70,252,252,15,182,204,15,182,232,
+ 193,232,16,252,255,164,253,171,233,248,62,129,252,248,239,15,130,244,63,139,
+ 106,4,129,252,253,239,15,131,244,63,139,114,252,252,137,68,36,20,137,106,
+ 252,252,139,42,137,106,252,248,131,232,2,15,132,244,248,255,137,209,248,1,
+ 131,193,8,139,105,4,137,105,252,252,139,41,137,105,252,248,131,232,1,15,133,
+ 244,1,248,2,139,68,36,20,252,233,244,64,248,65,129,252,248,239,15,130,244,
+ 63,139,106,4,184,237,252,247,213,57,232,255,15,71,197,255,15,134,244,247,
+ 137,232,248,1,255,248,2,139,106,252,248,139,132,253,197,233,139,114,252,252,
+ 199,66,252,252,237,137,66,252,248,252,233,244,66,248,67,129,252,248,239,15,
+ 130,244,63,139,106,4,139,114,252,252,129,252,253,239,15,133,244,252,248,1,
+ 139,42,139,173,233,248,2,133,252,237,199,66,252,252,237,15,132,244,66,139,
+ 131,233,199,66,252,252,237,255,137,106,252,248,139,141,233,35,136,233,105,
+ 201,239,3,141,233,248,3,129,185,233,239,15,133,244,250,57,129,233,15,132,
+ 244,251,248,4,139,137,233,133,201,15,133,244,3,252,233,244,66,248,5,139,105,
+ 4,129,252,253,239,255,15,132,244,66,139,1,137,106,252,252,137,66,252,248,
+ 252,233,244,66,248,6,129,252,253,239,15,132,244,1,129,252,253,239,15,135,
+ 244,254,189,237,248,8,252,247,213,139,172,253,171,233,252,233,244,2,248,68,
+ 129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,63,139,42,
+ 131,189,233,0,15,133,244,63,129,122,253,12,239,15,133,244,63,139,66,8,137,
+ 133,233,139,114,252,252,199,66,252,252,237,137,106,252,248,252,246,133,233,
+ 235,15,132,244,247,128,165,233,235,139,131,233,137,171,233,137,133,233,248,
+ 1,255,252,233,244,66,248,69,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,133,244,63,139,2,139,108,36,48,137,68,36,4,137,44,36,137,213,131,194,8,
+ 137,84,36,8,232,251,1,10,137,252,234,139,40,139,64,4,139,114,252,252,137,
+ 106,252,248,137,66,252,252,252,233,244,66,248,70,129,252,248,239,15,133,244,
+ 63,129,122,253,4,239,255,15,133,244,247,139,42,252,233,244,71,248,1,15,135,
+ 244,63,255,15,131,244,63,255,252,242,15,16,2,252,233,244,72,255,221,2,252,
+ 233,244,73,255,248,74,129,252,248,239,15,130,244,63,139,114,252,252,129,122,
+ 253,4,239,15,133,244,249,139,2,248,2,199,66,252,252,237,137,66,252,248,252,
+ 233,244,66,248,3,129,122,253,4,239,15,135,244,63,131,187,233,0,15,133,244,
+ 63,139,171,233,59,171,233,255,15,130,244,247,232,244,75,248,1,139,108,36,
+ 48,137,149,233,137,116,36,24,137,252,233,255,232,251,1,11,255,232,251,1,12,
+ 255,139,149,233,252,233,244,2,248,76,129,252,248,239,15,130,244,63,15,132,
+ 244,248,248,1,129,122,253,4,239,15,133,244,63,139,108,36,48,137,149,233,137,
+ 149,233,139,114,252,252,139,2,137,68,36,4,137,44,36,131,194,8,137,84,36,8,
+ 137,116,36,24,232,251,1,13,139,149,233,133,192,15,132,244,249,139,106,8,139,
+ 66,12,137,106,252,248,137,66,252,252,139,106,16,139,66,20,137,42,137,66,4,
+ 248,77,184,237,255,252,233,244,78,248,2,199,66,12,237,252,233,244,1,248,3,
+ 199,66,252,252,237,252,233,244,66,248,79,129,252,248,239,15,130,244,63,139,
+ 42,129,122,253,4,239,15,133,244,63,255,131,189,233,0,15,133,244,63,255,139,
+ 106,252,248,139,133,233,139,114,252,252,199,66,252,252,237,137,66,252,248,
+ 199,66,12,237,184,237,252,233,244,78,248,80,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,15,133,244,63,129,122,253,12,239,255,139,114,252,252,255,
+ 139,66,8,131,192,1,199,66,252,252,237,137,66,252,248,255,252,242,15,16,66,
+ 8,189,0,0,252,240,63,102,15,110,205,102,15,112,201,81,252,242,15,88,193,252,
+ 242,15,45,192,252,242,15,17,66,252,248,255,221,66,8,217,232,222,193,219,20,
+ 36,221,90,252,248,139,4,36,255,139,42,59,133,233,15,131,244,248,193,224,3,
+ 3,133,233,248,1,129,120,253,4,239,15,132,244,81,139,40,139,64,4,137,42,137,
+ 66,4,252,233,244,77,248,2,131,189,233,0,15,132,244,81,137,252,233,137,213,
+ 137,194,232,251,1,14,137,252,234,133,192,15,133,244,1,248,81,184,237,252,
+ 233,244,78,248,82,255,139,106,252,248,139,133,233,139,114,252,252,199,66,
+ 252,252,237,137,66,252,248,255,199,66,12,237,199,66,8,0,0,0,0,255,15,87,192,
+ 252,242,15,17,66,8,255,217,252,238,221,90,8,255,184,237,252,233,244,78,248,
+ 83,129,252,248,239,15,130,244,63,141,74,8,131,232,1,190,237,248,1,15,182,
+ 171,233,193,252,237,235,131,229,1,1,252,238,252,233,244,28,248,84,129,252,
+ 248,239,15,130,244,63,129,122,253,12,239,15,133,244,63,255,139,106,4,137,
+ 106,12,199,66,4,237,139,42,139,114,8,137,106,8,137,50,141,74,16,131,232,2,
+ 190,237,252,233,244,1,248,85,129,252,248,239,15,130,244,63,139,42,139,114,
+ 252,252,137,116,36,24,137,44,36,129,122,253,4,239,15,133,244,63,131,189,233,
+ 0,15,133,244,63,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,
+ 255,59,141,233,15,132,244,63,248,1,141,116,193,252,240,59,181,233,15,135,
+ 244,63,137,181,233,139,108,36,48,137,149,233,131,194,8,137,149,233,141,108,
+ 194,232,41,252,245,57,206,15,132,244,249,248,2,139,68,46,4,137,70,252,252,
+ 139,4,46,137,70,252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,
+ 4,49,201,137,76,36,12,137,76,36,8,232,244,25,199,131,233,237,255,139,108,
+ 36,48,139,52,36,139,149,233,129,252,248,239,15,135,244,254,248,4,139,142,
+ 233,139,190,233,137,142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,
+ 252,238,3,59,133,233,15,135,244,255,137,213,41,205,248,5,139,1,137,4,41,139,
+ 65,4,137,68,41,4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,2,199,66,
+ 252,252,237,248,7,139,116,36,24,137,68,36,20,185,252,248,252,255,252,255,
+ 252,255,252,247,198,237,255,15,132,244,13,252,233,244,14,248,8,199,66,252,
+ 252,237,139,142,233,131,252,233,8,137,142,233,139,1,137,2,139,65,4,137,66,
+ 4,184,237,252,233,244,7,248,9,139,12,36,137,185,233,137,252,242,137,252,233,
+ 232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,86,139,106,252,248,139,
+ 173,233,139,114,252,252,137,116,36,24,137,44,36,131,189,233,0,15,133,244,
+ 63,255,128,189,233,235,15,135,244,63,139,141,233,15,132,244,247,59,141,233,
+ 15,132,244,63,248,1,141,116,193,252,248,59,181,233,15,135,244,63,137,181,
+ 233,139,108,36,48,137,149,233,137,149,233,141,108,194,252,240,41,252,245,
+ 57,206,15,132,244,249,248,2,255,139,68,46,4,137,70,252,252,139,4,46,137,70,
+ 252,248,131,252,238,8,57,206,15,133,244,2,248,3,137,76,36,4,49,201,137,76,
+ 36,12,137,76,36,8,232,244,25,199,131,233,237,139,108,36,48,139,52,36,139,
+ 149,233,129,252,248,239,15,135,244,254,248,4,139,142,233,139,190,233,137,
+ 142,233,137,252,254,41,206,15,132,244,252,141,4,50,193,252,238,3,59,133,233,
+ 15,135,244,255,255,137,213,41,205,248,5,139,1,137,4,41,139,65,4,137,68,41,
+ 4,131,193,8,57,252,249,15,133,244,5,248,6,141,70,1,248,7,139,116,36,24,137,
+ 68,36,20,49,201,252,247,198,237,15,132,244,13,252,233,244,14,248,8,137,252,
+ 242,137,252,233,232,251,1,15,248,9,139,12,36,137,185,233,137,252,242,137,
+ 252,233,232,251,1,0,139,52,36,139,149,233,252,233,244,4,248,87,139,108,36,
+ 48,252,247,133,233,237,15,132,244,63,255,137,149,233,141,68,194,252,248,137,
+ 133,233,49,192,137,133,233,176,235,136,133,233,252,233,244,16,255,248,71,
+ 255,248,73,139,114,252,252,221,90,252,248,252,233,244,66,255,248,88,129,252,
+ 248,239,15,130,244,63,255,129,122,253,4,239,15,133,244,248,139,42,131,252,
+ 253,0,15,137,244,71,252,247,221,15,136,244,247,248,89,248,71,139,114,252,
+ 252,199,66,252,252,237,137,106,252,248,252,233,244,66,248,1,139,114,252,252,
+ 199,66,252,252,0,0,224,65,199,66,252,248,0,0,0,0,252,233,244,66,248,2,15,
+ 135,244,63,255,129,122,253,4,239,15,131,244,63,255,252,242,15,16,2,102,15,
+ 252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,248,72,139,114,252,
+ 252,252,242,15,17,66,252,248,255,221,2,217,225,248,72,248,73,139,114,252,
+ 252,221,90,252,248,255,248,66,184,237,248,78,137,68,36,20,248,64,252,247,
+ 198,237,15,133,244,253,248,5,56,70,252,255,15,135,244,252,15,182,78,252,253,
+ 252,247,209,141,20,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,171,248,6,199,68,194,252,244,237,131,192,1,252,233,244,5,248,7,185,
+ 252,248,252,255,252,255,252,255,252,233,244,14,248,90,255,129,122,253,4,239,
+ 15,133,244,247,139,42,252,233,244,71,248,1,15,135,244,63,255,252,242,15,16,
+ 2,232,244,91,255,252,242,15,45,232,129,252,253,0,0,0,128,15,133,244,71,252,
+ 242,15,42,205,102,15,46,193,15,138,244,72,15,132,244,71,255,221,2,232,244,
+ 91,255,219,20,36,139,44,36,129,252,253,0,0,0,128,15,133,244,248,217,192,219,
+ 4,36,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15,138,244,73,
+ 15,133,244,73,248,2,221,216,252,233,244,71,255,248,92,255,252,242,15,16,2,
+ 232,244,93,255,221,2,232,244,93,255,248,94,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,15,131,244,63,252,242,15,81,2,252,233,244,72,255,248,94,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,
+ 250,252,233,244,73,255,248,95,129,252,248,239,15,130,244,63,129,122,253,4,
+ 239,15,131,244,63,217,252,237,221,2,217,252,241,252,233,244,73,248,96,129,
+ 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,217,252,236,221,
+ 2,217,252,241,252,233,244,73,248,97,129,252,248,239,255,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,221,2,232,244,98,252,233,244,73,248,99,129,252,
+ 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,254,252,
+ 233,244,73,248,100,129,252,248,239,255,15,130,244,63,129,122,253,4,239,15,
+ 131,244,63,221,2,217,252,255,252,233,244,73,248,101,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,15,131,244,63,221,2,217,252,242,221,216,252,233,
+ 244,73,248,102,129,252,248,239,15,130,244,63,255,129,122,253,4,239,15,131,
+ 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,252,243,252,
+ 233,244,73,248,103,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,
+ 244,63,221,2,217,192,216,200,217,232,222,225,217,252,250,217,201,217,252,
+ 243,252,233,244,73,248,104,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,255,221,2,217,232,217,252,243,252,233,244,73,255,248,105,129,
+ 252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,
+ 252,242,15,17,4,36,255,248,105,129,252,248,239,15,130,244,63,129,122,253,
+ 4,239,15,131,244,63,221,2,221,28,36,255,137,213,232,251,1,16,137,252,234,
+ 252,233,244,73,255,248,106,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,252,242,15,16,2,252,242,15,17,4,36,255,248,106,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,2,221,28,36,255,137,
+ 213,232,251,1,17,137,252,234,252,233,244,73,255,248,107,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,252,242,15,16,2,252,242,15,17,
+ 4,36,255,248,107,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,221,2,221,28,36,255,137,213,232,251,1,18,137,252,234,252,233,244,73,248,
+ 108,255,248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,252,242,15,16,2,139,106,252,248,252,242,15,89,133,233,252,233,244,72,255,
+ 248,109,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,221,
+ 2,139,106,252,248,220,141,233,252,233,244,73,255,248,110,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,2,221,66,8,217,252,243,252,233,244,73,248,111,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,255,15,131,244,
+ 63,221,66,8,221,2,217,252,253,221,217,252,233,244,73,248,112,129,252,248,
+ 239,15,130,244,63,139,106,4,129,252,253,239,15,131,244,63,139,114,252,252,
+ 139,2,137,106,252,252,137,66,252,248,209,229,129,252,253,0,0,224,252,255,
+ 15,131,244,249,9,232,15,132,244,249,184,252,254,3,0,0,129,252,253,0,0,32,
+ 0,15,130,244,250,248,1,193,252,237,21,41,197,255,252,242,15,42,197,255,137,
+ 108,36,16,219,68,36,16,255,139,106,252,252,129,229,252,255,252,255,15,128,
+ 129,205,0,0,224,63,137,106,252,252,248,2,255,252,242,15,17,2,255,221,26,255,
+ 184,237,252,233,244,78,248,3,255,15,87,192,252,233,244,2,255,217,252,238,
+ 252,233,244,2,255,248,4,255,252,242,15,16,2,189,0,0,80,67,102,15,110,205,
+ 102,15,112,201,81,252,242,15,89,193,252,242,15,17,66,252,248,255,221,2,199,
+ 68,36,16,0,0,128,90,216,76,36,16,221,90,252,248,255,139,106,252,252,184,52,
+ 4,0,0,209,229,252,233,244,1,255,248,113,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,15,131,244,63,252,242,15,16,2,255,248,113,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,221,2,255,139,106,4,139,114,252,
+ 252,209,229,129,252,253,0,0,224,252,255,15,132,244,250,255,15,40,224,232,
+ 244,114,252,242,15,92,224,248,1,252,242,15,17,66,252,248,252,242,15,17,34,
+ 255,217,192,232,244,114,220,252,233,248,1,221,90,252,248,221,26,255,139,66,
+ 252,252,139,106,4,49,232,15,136,244,249,248,2,184,237,252,233,244,78,248,
+ 3,129,252,245,0,0,0,128,137,106,4,252,233,244,2,248,4,255,15,87,228,252,233,
+ 244,1,255,217,252,238,217,201,252,233,244,1,255,248,115,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,66,8,221,2,248,1,217,252,248,223,224,158,15,138,244,1,221,217,252,
+ 233,244,73,255,248,116,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
+ 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
+ 74,8,232,244,117,252,233,244,72,255,248,116,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,
+ 66,8,232,244,117,252,233,244,73,255,248,118,185,2,0,0,0,129,122,253,4,239,
+ 255,15,133,244,250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,
+ 252,239,15,133,244,249,59,108,202,252,248,15,79,108,202,252,248,131,193,1,
+ 252,233,244,1,248,3,15,135,244,63,255,252,233,244,252,248,4,15,135,244,63,
+ 255,252,242,15,16,2,248,5,57,193,15,131,244,72,129,124,253,202,252,252,239,
+ 255,15,130,244,252,15,135,244,63,252,242,15,42,76,202,252,248,252,233,244,
+ 253,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,15,93,193,131,193,
+ 1,252,233,244,5,255,221,2,248,5,57,193,15,131,244,73,129,124,253,202,252,
+ 252,239,255,15,130,244,252,15,135,244,255,219,68,202,252,248,252,233,244,
+ 253,255,15,131,244,255,255,248,6,221,68,202,252,248,248,7,255,219,252,233,
+ 219,209,221,217,255,80,221,225,223,224,252,246,196,1,15,132,244,248,217,201,
+ 248,2,221,216,88,255,248,119,185,2,0,0,0,129,122,253,4,239,255,15,133,244,
+ 250,139,42,248,1,57,193,15,131,244,71,129,124,253,202,252,252,239,15,133,
+ 244,249,59,108,202,252,248,15,76,108,202,252,248,131,193,1,252,233,244,1,
+ 248,3,15,135,244,63,255,248,6,252,242,15,16,76,202,252,248,248,7,252,242,
+ 15,95,193,131,193,1,252,233,244,5,255,219,252,233,218,209,221,217,255,80,
+ 221,225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,88,255,
+ 248,9,221,216,252,233,244,63,255,248,120,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,15,133,244,63,139,42,255,139,173,233,252,233,244,71,255,252,
+ 242,15,42,133,233,252,233,244,72,255,219,133,233,252,233,244,73,255,248,121,
+ 129,252,248,239,15,133,244,63,129,122,253,4,239,15,133,244,63,139,42,139,
+ 114,252,252,131,189,233,1,15,130,244,81,15,182,173,233,255,252,242,15,42,
+ 197,252,233,244,72,255,137,108,36,16,219,68,36,16,252,233,244,73,255,248,
+ 122,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,252,248,239,
+ 15,133,244,63,129,122,253,4,239,255,15,133,244,63,139,42,129,252,253,252,
+ 255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,252,242,15,44,42,
+ 129,252,253,252,255,0,0,0,15,135,244,63,137,108,36,20,255,15,131,244,63,221,
+ 2,219,92,36,20,129,124,36,20,252,255,0,0,0,15,135,244,63,255,199,68,36,8,
+ 1,0,0,0,141,68,36,20,248,123,139,108,36,48,137,149,233,137,68,36,4,137,44,
+ 36,137,116,36,24,232,251,1,19,139,149,233,139,114,252,252,199,66,252,252,
+ 237,137,66,252,248,252,233,244,66,248,124,139,171,233,59,171,233,15,130,244,
+ 247,232,244,75,248,1,199,68,36,20,252,255,252,255,252,255,252,255,129,252,
+ 248,239,15,130,244,63,15,134,244,247,129,122,253,20,239,255,15,133,244,63,
+ 139,106,16,137,108,36,20,255,15,131,244,63,252,242,15,44,106,16,137,108,36,
+ 20,255,15,131,244,63,221,66,16,219,92,36,20,255,248,1,129,122,253,4,239,15,
+ 133,244,63,129,122,253,12,239,255,139,42,137,108,36,12,139,173,233,255,139,
+ 74,8,255,252,242,15,44,74,8,255,221,66,8,219,92,36,8,139,76,36,8,255,139,
+ 68,36,20,57,197,15,130,244,251,248,2,133,201,15,142,244,253,248,3,139,108,
+ 36,12,41,200,15,140,244,125,141,172,253,13,233,131,192,1,248,4,137,68,36,
+ 8,137,232,252,233,244,123,248,5,15,140,244,252,141,68,40,1,252,233,244,2,
+ 248,6,137,232,252,233,244,2,248,7,255,15,132,244,254,1,252,233,131,193,1,
+ 15,143,244,3,248,8,185,1,0,0,0,252,233,244,3,248,125,49,192,252,233,244,4,
+ 248,126,129,252,248,239,15,130,244,63,139,171,233,59,171,233,15,130,244,247,
+ 232,244,75,248,1,255,129,122,253,4,239,15,133,244,63,129,122,253,12,239,139,
+ 42,255,15,133,244,63,139,66,8,255,15,131,244,63,252,242,15,44,66,8,255,15,
+ 131,244,63,221,66,8,219,92,36,20,139,68,36,20,255,133,192,15,142,244,125,
+ 131,189,233,1,15,130,244,125,15,133,244,127,57,131,233,15,130,244,127,15,
+ 182,141,233,139,171,233,137,68,36,8,248,1,136,77,0,131,197,1,131,232,1,15,
+ 133,244,1,139,131,233,252,233,244,123,248,128,129,252,248,239,255,15,130,
+ 244,63,139,171,233,59,171,233,15,130,244,247,232,244,75,248,1,129,122,253,
+ 4,239,15,133,244,63,139,42,139,133,233,133,192,15,132,244,125,57,131,233,
+ 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,248,1,255,
+ 15,182,77,0,131,197,1,131,232,1,136,12,6,15,133,244,1,137,252,240,139,116,
+ 36,20,252,233,244,123,248,130,129,252,248,239,15,130,244,63,139,171,233,59,
+ 171,233,15,130,244,247,232,244,75,248,1,129,122,253,4,239,15,133,244,63,139,
+ 42,139,133,233,57,131,233,255,15,130,244,129,129,197,239,137,116,36,20,137,
+ 68,36,8,139,179,233,252,233,244,249,248,1,15,182,76,5,0,131,252,249,65,15,
+ 130,244,248,131,252,249,90,15,135,244,248,131,252,241,32,248,2,136,12,6,248,
+ 3,131,232,1,15,137,244,1,137,252,240,139,116,36,20,252,233,244,123,248,131,
+ 129,252,248,239,15,130,244,63,255,139,171,233,59,171,233,15,130,244,247,232,
+ 244,75,248,1,129,122,253,4,239,15,133,244,63,139,42,139,133,233,57,131,233,
+ 15,130,244,129,129,197,239,137,116,36,20,137,68,36,8,139,179,233,252,233,
+ 244,249,248,1,15,182,76,5,0,131,252,249,97,15,130,244,248,255,131,252,249,
+ 122,15,135,244,248,131,252,241,32,248,2,136,12,6,248,3,131,232,1,15,137,244,
+ 1,137,252,240,139,116,36,20,252,233,244,123,248,132,129,252,248,239,15,130,
+ 244,63,129,122,253,4,239,15,133,244,63,137,213,139,10,232,251,1,20,137,252,
+ 234,255,137,197,252,233,244,71,255,252,242,15,42,192,252,233,244,72,255,137,
+ 4,36,219,4,36,252,233,244,73,255,248,133,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,255,15,133,244,247,139,42,252,233,244,89,248,1,15,135,244,63,
+ 255,252,242,15,16,2,189,0,0,56,67,102,15,110,205,102,15,112,201,81,252,242,
+ 15,88,193,102,15,126,197,255,221,2,199,68,36,16,0,0,192,89,216,68,36,16,221,
+ 28,36,255,139,44,36,255,252,233,244,89,255,248,134,129,252,248,239,15,130,
+ 244,63,255,189,0,0,56,67,102,15,110,205,102,15,112,201,81,255,199,68,36,16,
+ 0,0,192,89,255,15,133,244,247,139,42,252,233,244,248,248,1,15,135,244,63,
+ 255,252,242,15,16,2,252,242,15,88,193,102,15,126,197,255,221,2,216,68,36,
+ 16,221,28,36,139,44,36,255,248,2,137,68,36,20,141,68,194,252,240,248,1,57,
+ 208,15,134,244,89,129,120,253,4,239,255,15,133,244,248,35,40,131,232,8,252,
+ 233,244,1,248,2,15,135,244,135,255,15,131,244,135,255,252,242,15,16,0,252,
+ 242,15,88,193,102,15,126,193,33,205,255,221,0,216,68,36,16,221,28,36,35,44,
+ 36,255,131,232,8,252,233,244,1,248,136,129,252,248,239,15,130,244,63,255,
+ 15,133,244,248,11,40,131,232,8,252,233,244,1,248,2,15,135,244,135,255,252,
+ 242,15,16,0,252,242,15,88,193,102,15,126,193,9,205,255,221,0,216,68,36,16,
+ 221,28,36,11,44,36,255,131,232,8,252,233,244,1,248,137,129,252,248,239,15,
+ 130,244,63,255,15,133,244,248,51,40,131,232,8,252,233,244,1,248,2,15,135,
+ 244,135,255,252,242,15,16,0,252,242,15,88,193,102,15,126,193,49,205,255,221,
+ 0,216,68,36,16,221,28,36,51,44,36,255,131,232,8,252,233,244,1,248,138,129,
+ 252,248,239,15,130,244,63,129,122,253,4,239,255,221,2,199,68,36,16,0,0,192,
+ 89,216,68,36,16,221,28,36,139,44,36,255,248,2,15,205,252,233,244,89,248,139,
+ 129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,2,252,247,213,255,
+ 248,89,252,242,15,42,197,252,233,244,72,255,248,89,137,44,36,219,4,36,252,
+ 233,244,73,255,248,135,139,68,36,20,252,233,244,63,255,248,140,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,255,248,2,129,122,253,12,239,15,133,244,
+ 63,139,74,8,255,248,140,129,252,248,239,15,130,244,63,129,122,253,4,239,15,
+ 131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,16,
+ 74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,252,
+ 242,15,88,202,102,15,126,197,102,15,126,201,255,248,140,129,252,248,239,15,
+ 130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
+ 36,16,221,28,36,139,76,36,8,139,44,36,255,211,229,252,233,244,89,255,248,
+ 141,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,141,129,252,248,
+ 239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,
+ 244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,213,102,
+ 15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,102,15,126,
+ 201,255,248,141,129,252,248,239,15,130,244,63,129,122,253,4,239,15,131,244,
+ 63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,0,0,192,89,
+ 216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,44,36,255,
+ 211,252,237,252,233,244,89,255,248,142,129,252,248,239,15,130,244,63,129,
+ 122,253,4,239,255,248,142,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,15,
+ 16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
+ 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,142,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
+ 36,16,221,28,36,139,76,36,8,139,44,36,255,211,252,253,252,233,244,89,255,
+ 248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,255,248,143,129,252,
+ 248,239,15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,
+ 15,131,244,63,252,242,15,16,2,252,242,15,16,74,8,189,0,0,56,67,102,15,110,
+ 213,102,15,112,210,81,252,242,15,88,194,252,242,15,88,202,102,15,126,197,
+ 102,15,126,201,255,248,143,129,252,248,239,15,130,244,63,129,122,253,4,239,
+ 15,131,244,63,129,122,253,12,239,15,131,244,63,221,2,221,66,8,199,68,36,16,
+ 0,0,192,89,216,68,36,16,221,92,36,8,216,68,36,16,221,28,36,139,76,36,8,139,
+ 44,36,255,211,197,252,233,244,89,255,248,144,129,252,248,239,15,130,244,63,
+ 129,122,253,4,239,255,248,144,129,252,248,239,15,130,244,63,129,122,253,4,
+ 239,15,131,244,63,129,122,253,12,239,15,131,244,63,252,242,15,16,2,252,242,
+ 15,16,74,8,189,0,0,56,67,102,15,110,213,102,15,112,210,81,252,242,15,88,194,
+ 252,242,15,88,202,102,15,126,197,102,15,126,201,255,248,144,129,252,248,239,
+ 15,130,244,63,129,122,253,4,239,15,131,244,63,129,122,253,12,239,15,131,244,
+ 63,221,2,221,66,8,199,68,36,16,0,0,192,89,216,68,36,16,221,92,36,8,216,68,
+ 36,16,221,28,36,139,76,36,8,139,44,36,255,211,205,252,233,244,89,248,127,
+ 184,237,252,233,244,63,248,129,184,237,248,63,139,108,36,48,139,114,252,252,
+ 137,116,36,24,137,149,233,141,68,194,252,248,141,136,233,137,133,233,139,
+ 66,252,248,59,141,233,15,135,244,251,137,44,36,252,255,144,233,139,149,233,
+ 133,192,15,143,244,78,248,1,255,139,141,233,41,209,193,252,233,3,133,192,
+ 141,65,1,139,106,252,248,15,133,244,33,139,181,233,139,14,15,182,252,233,
+ 15,182,205,131,198,4,252,255,36,171,248,33,137,209,252,247,198,237,15,133,
+ 244,249,15,182,110,252,253,252,247,213,141,20,252,234,252,233,244,28,248,
+ 3,137,252,245,131,229,252,248,41,252,234,252,233,244,28,248,5,186,237,137,
+ 252,233,232,251,1,0,139,149,233,49,192,252,233,244,1,248,75,93,137,108,36,
+ 16,139,108,36,48,137,116,36,24,137,149,233,255,141,68,194,252,248,137,252,
+ 233,137,133,233,232,251,1,21,139,149,233,139,133,233,41,208,193,232,3,131,
+ 192,1,139,108,36,16,85,195,248,145,255,15,182,131,233,168,235,15,133,244,
+ 251,168,235,15,133,244,247,168,235,15,132,244,247,252,255,139,233,252,233,
+ 244,247,255,248,146,15,182,131,233,168,235,15,133,244,251,252,233,244,247,
+ 248,147,15,182,131,233,168,235,15,133,244,251,168,235,15,132,244,251,252,
+ 255,139,233,15,132,244,247,168,235,15,132,244,251,248,1,255,139,108,36,48,
+ 137,149,233,137,252,242,137,252,233,232,251,1,22,248,3,139,149,233,248,4,
+ 15,182,78,252,253,248,5,15,182,110,252,252,15,183,70,252,254,252,255,164,
+ 253,171,233,248,148,131,198,4,139,77,232,137,76,36,20,252,233,244,4,248,149,
+ 255,139,106,252,248,139,173,233,15,182,133,233,141,4,194,139,108,36,48,137,
+ 149,233,137,133,233,137,252,242,141,139,233,137,171,233,137,116,36,24,232,
+ 251,1,23,252,233,244,3,255,248,150,137,116,36,24,255,248,151,255,137,116,
+ 36,24,131,206,1,248,1,255,141,68,194,252,248,139,108,36,48,137,149,233,137,
+ 133,233,137,252,242,137,252,233,232,251,1,24,199,68,36,24,0,0,0,0,255,131,
+ 230,252,254,255,139,149,233,137,193,139,133,233,41,208,137,205,15,182,78,
+ 252,253,193,232,3,131,192,1,252,255,229,248,152,255,85,141,108,36,12,85,83,
+ 82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117,252,248,
+ 139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129,252,236,
+ 239,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,252,
+ 242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,17,
+ 77,168,252,242,15,17,69,160,139,171,233,139,147,233,137,171,233,199,131,233,
+ 0,0,0,0,137,149,233,141,84,36,16,141,139,233,232,251,1,25,139,141,233,129,
+ 225,239,137,204,137,169,233,139,149,233,139,177,233,255,248,153,255,133,192,
+ 15,136,244,249,137,68,36,20,139,122,252,248,139,191,233,139,191,233,199,131,
+ 233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,129,252,253,239,15,130,244,248,139,68,36,20,248,2,252,255,36,171,248,3,
+ 252,247,216,137,252,233,137,194,232,251,1,26,255,248,91,255,217,124,36,4,
+ 137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,
+ 36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,154,102,
+ 15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,
+ 102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,
+ 15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,
+ 63,102,15,110,208,102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252,
+ 242,15,92,200,15,40,193,248,1,195,248,93,255,217,124,36,4,137,68,36,8,102,
+ 184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,
+ 6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252,239,210,
+ 102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,
+ 81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,
+ 242,15,88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,
+ 110,208,102,15,112,210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
+ 200,15,40,193,248,1,195,248,114,255,217,124,36,4,137,68,36,8,102,184,0,12,
+ 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
+ 68,36,8,195,255,248,156,102,15,252,239,210,102,15,118,210,102,15,115,210,
1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,
- 102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,
- 203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,
- 242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,
- 92,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,
- 252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,
- 195,255,248,154,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,
- 0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,
- 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
- 15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,
- 194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,113,255,
- 217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,
- 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,155,102,15,252,
- 239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,
- 15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
- 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,
- 15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,
- 92,200,102,15,86,202,15,40,193,248,1,195,248,156,255,15,40,232,252,242,15,
- 94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,
- 15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,
- 244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,
- 0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,
- 15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,
- 195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,
- 252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,
- 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,
- 255,248,97,217,252,234,222,201,248,157,217,84,36,4,129,124,36,4,0,0,128,127,
- 15,132,244,247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,158,217,192,
- 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,
- 217,248,1,195,248,2,221,216,217,252,238,195,255,248,116,219,84,36,4,219,68,
- 36,4,255,223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,
- 244,255,221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,
- 0,15,133,244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
- 217,192,248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,
- 244,3,248,4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232,
- 222,252,241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,
- 216,217,232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,
- 61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,
- 0,252,255,15,132,244,250,217,252,241,252,233,244,158,248,9,255,217,232,255,
- 223,252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,
- 221,216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,
- 252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,
- 248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,
- 133,192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,
- 68,36,4,195,255,248,116,255,248,159,252,242,15,45,193,252,242,15,42,208,102,
- 15,46,202,15,133,244,254,15,138,244,255,248,160,131,252,248,1,15,142,244,
- 252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,
- 1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,
- 15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,
- 242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,
- 244,1,184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,
- 15,40,193,195,248,7,184,0,0,252,240,63,102,15,110,192,102,15,112,192,81,195,
- 248,8,252,242,15,17,76,36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133,
- 244,247,139,68,36,16,209,224,61,0,0,224,252,255,15,132,244,248,248,1,131,
- 124,36,4,0,15,133,244,247,255,139,68,36,8,209,224,15,132,244,250,61,0,0,224,
- 252,255,15,132,244,251,248,1,221,68,36,12,221,68,36,4,217,252,241,217,192,
- 217,252,252,220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,
- 217,221,92,36,4,252,242,15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,
- 110,208,102,15,112,210,81,102,15,46,194,15,132,244,247,15,40,193,248,1,195,
- 248,2,102,15,252,239,210,102,15,118,210,102,15,115,210,1,102,15,84,194,184,
- 0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194,15,132,244,
- 1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,
- 0,0,252,240,127,102,15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,
- 133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,
- 3,255,15,87,192,195,248,161,255,139,68,36,12,252,242,15,16,68,36,4,131,252,
- 248,1,15,132,244,247,15,135,244,248,232,244,90,252,233,244,253,248,1,232,
- 244,92,252,233,244,253,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
- 232,244,113,255,252,233,244,253,248,1,252,242,15,81,192,248,7,252,242,15,
- 17,68,36,4,221,68,36,4,195,248,2,221,68,36,4,131,252,248,5,15,130,244,97,
- 15,132,244,157,248,2,131,252,248,7,15,132,244,247,15,135,244,248,217,252,
- 237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,
- 252,248,9,15,132,244,247,15,135,244,248,255,217,252,236,217,201,217,252,241,
- 195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,
- 255,217,252,255,195,248,1,217,252,242,221,216,195,255,139,68,36,12,221,68,
- 36,4,131,252,248,1,15,130,244,90,15,132,244,92,131,252,248,3,15,130,244,113,
- 15,135,244,248,217,252,250,195,248,2,131,252,248,5,15,130,244,97,15,132,244,
- 157,131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
- 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,
- 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
- 252,254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,
- 195,248,1,217,252,242,221,216,195,255,248,9,204,255,248,162,255,139,68,36,
- 20,252,242,15,16,68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244,
- 247,15,135,244,248,252,242,15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,
- 4,195,248,1,252,242,15,92,193,252,233,244,7,248,2,131,252,248,3,15,132,244,
- 247,15,135,244,248,252,242,15,89,193,252,233,244,7,248,1,252,242,15,94,193,
- 252,233,244,7,248,2,131,252,248,5,15,132,244,247,255,15,135,244,248,232,244,
- 156,252,233,244,7,248,1,90,232,244,116,82,252,233,244,7,248,2,131,252,248,
- 7,15,132,244,247,15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201,
- 81,15,87,193,252,233,244,7,248,1,102,15,252,239,201,102,15,118,201,102,15,
- 115,209,1,15,84,193,252,233,244,7,248,2,255,131,252,248,9,15,135,244,248,
- 221,68,36,4,221,68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217,
- 252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252,
- 242,15,93,193,252,233,244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,
- 255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,
- 135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,
- 244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,
- 5,15,130,244,156,15,132,244,116,131,252,248,7,15,132,244,247,15,135,244,248,
- 255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,
- 132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,
- 217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,
- 219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,
- 224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,
- 223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,163,
- 156,90,137,209,129,252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,
- 247,139,68,36,4,87,83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,
- 12,91,95,248,1,195,248,164,255,204,248,165,255,85,137,229,83,137,203,43,163,
- 233,255,137,163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,
- 139,132,253,139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,
- 139,147,233,252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,
- 244,253,15,132,244,252,221,155,233,252,233,244,253,248,6,255,217,155,233,
- 248,7,255,41,163,233,255,139,93,252,252,201,195,255,249,255,129,124,253,202,
- 4,239,15,133,244,253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,
- 198,4,59,44,194,255,15,141,244,255,255,15,140,244,255,255,15,143,244,255,
- 255,15,142,244,255,255,248,6,15,183,70,252,254,141,180,253,134,233,248,9,
- 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,
- 135,244,43,129,124,253,194,4,239,15,130,244,247,15,133,244,43,255,252,242,
- 15,42,4,194,252,233,244,248,255,221,4,202,219,4,194,252,233,244,249,255,248,
- 8,15,135,244,43,255,252,242,15,42,12,202,252,242,15,16,4,194,131,198,4,102,
- 15,46,193,255,15,134,244,9,255,15,135,244,9,255,15,130,244,9,255,15,131,244,
- 9,255,252,233,244,6,255,219,4,202,252,233,244,248,255,129,124,253,202,4,239,
- 15,131,244,43,129,124,253,194,4,239,15,131,244,43,255,248,1,252,242,15,16,
- 4,194,248,2,131,198,4,102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,
- 4,194,248,3,131,198,4,255,15,134,244,247,255,15,135,244,247,255,15,130,244,
- 247,255,15,131,244,247,255,15,183,70,252,254,141,180,253,134,233,248,1,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,
- 4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253,202,4,239,15,133,
- 244,254,139,44,194,59,44,202,255,15,133,244,255,255,15,132,244,255,255,15,
- 183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,232,131,
- 198,4,193,232,16,252,255,36,171,248,7,15,135,244,251,129,124,253,202,4,239,
- 15,130,244,247,15,133,244,251,255,252,242,15,42,4,202,255,219,4,202,255,252,
- 233,244,248,248,8,15,135,244,251,255,252,242,15,42,4,194,102,15,46,4,202,
- 255,219,4,194,221,4,202,255,252,233,244,250,255,129,252,253,239,15,131,244,
- 251,129,124,253,202,4,239,15,131,244,251,255,248,1,252,242,15,16,4,202,248,
- 2,102,15,46,4,194,248,4,255,248,1,221,4,202,248,2,221,4,194,248,4,255,15,
- 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15,
- 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141,
- 180,253,134,233,248,1,255,252,233,244,9,255,248,5,255,129,252,253,239,15,
- 132,244,48,129,124,253,202,4,239,15,132,244,48,255,57,108,202,4,15,133,244,
- 2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,
- 252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,
- 233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,47,255,
- 248,3,129,252,253,239,255,15,133,244,9,255,252,233,244,48,255,252,247,208,
- 139,108,202,4,131,198,4,129,252,253,239,15,133,244,249,139,12,202,59,12,135,
- 255,139,108,202,4,131,198,4,255,129,252,253,239,15,133,244,253,129,124,253,
- 199,4,239,15,133,244,254,139,44,199,59,44,202,255,15,183,70,252,254,141,180,
- 253,134,233,248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,171,248,7,15,135,244,249,129,124,253,199,4,239,15,130,244,247,255,252,
- 242,15,42,4,199,255,219,4,199,255,252,233,244,248,248,8,255,252,242,15,42,
- 4,202,102,15,46,4,199,255,219,4,202,221,4,199,255,129,252,253,239,15,131,
- 244,249,255,248,1,252,242,15,16,4,199,248,2,102,15,46,4,202,248,4,255,248,
- 1,221,4,199,248,2,221,4,202,248,4,255,252,247,208,139,108,202,4,131,198,4,
- 57,197,255,15,133,244,249,15,183,70,252,254,141,180,253,134,233,248,2,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,129,252,
- 253,239,15,133,244,2,252,233,244,48,255,15,132,244,248,129,252,253,239,15,
- 132,244,48,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15,182,204,15,
- 182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4,131,198,4,129,
- 252,253,239,255,137,108,202,4,139,44,194,137,44,202,255,139,108,194,4,139,
- 4,194,137,108,202,4,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
- 16,252,255,36,171,255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,
- 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
- 129,124,253,194,4,239,15,133,244,251,139,44,194,252,247,221,15,128,244,250,
- 199,68,202,4,237,137,44,202,248,9,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,171,248,4,199,68,202,4,0,0,224,65,199,4,202,0,0,0,0,252,
- 233,244,9,248,5,15,135,244,53,255,129,124,253,194,4,239,15,131,244,53,255,
- 252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,
- 193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,
- 194,4,239,15,133,244,248,139,4,194,255,139,128,233,248,1,199,68,202,4,237,
- 137,4,202,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,
- 219,128,233,248,1,221,28,202,255,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,171,248,2,129,124,253,194,4,239,15,133,244,56,139,12,194,
- 255,139,169,233,131,252,253,0,15,133,244,255,248,3,255,248,57,137,213,232,
- 251,1,20,255,252,242,15,42,192,255,137,4,36,219,4,36,255,137,252,234,15,182,
- 78,252,253,252,233,244,1,255,248,9,252,246,133,233,235,15,133,244,3,252,233,
- 244,56,255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,133,
- 244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,234,3,44,199,15,128,
- 244,49,255,129,124,253,252,234,4,239,15,133,244,52,129,124,253,199,4,239,
- 15,133,244,52,139,4,199,3,4,252,234,15,128,244,51,255,129,124,253,252,234,
- 4,239,15,133,244,55,129,124,253,194,4,239,15,133,244,55,139,44,252,234,3,
- 44,194,15,128,244,54,255,199,68,202,4,237,255,129,124,253,252,234,4,239,15,
- 131,244,50,255,129,124,253,199,4,239,15,131,244,50,255,252,242,15,16,4,252,
- 234,252,242,15,88,4,199,255,221,4,252,234,220,4,199,255,129,124,253,252,234,
- 4,239,15,131,244,52,255,129,124,253,199,4,239,15,131,244,52,255,252,242,15,
- 16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,
- 253,252,234,4,239,15,131,244,55,129,124,253,194,4,239,15,131,244,55,255,252,
- 242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,129,
- 124,253,252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,
- 44,252,234,43,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,
- 52,129,124,253,199,4,239,15,133,244,52,139,4,199,43,4,252,234,15,128,244,
- 51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,15,133,
- 244,55,139,44,252,234,43,44,194,15,128,244,54,255,252,242,15,16,4,252,234,
- 252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4,199,
- 252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16,4,
- 252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,129,124,253,
- 252,234,4,239,15,133,244,50,129,124,253,199,4,239,15,133,244,50,139,44,252,
- 234,15,175,44,199,15,128,244,49,255,129,124,253,252,234,4,239,15,133,244,
- 52,129,124,253,199,4,239,15,133,244,52,139,4,199,15,175,4,252,234,15,128,
- 244,51,255,129,124,253,252,234,4,239,15,133,244,55,129,124,253,194,4,239,
- 15,133,244,55,139,44,252,234,15,175,44,194,15,128,244,54,255,252,242,15,16,
- 4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242,15,
- 16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252,242,
- 15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,
- 242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199,255,
- 252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252,234,
- 255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,
- 194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234,221,
- 4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199,221,
- 4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4,252,
- 234,221,4,194,255,248,166,232,244,156,255,252,233,244,166,255,232,244,116,
- 255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36,8,248,
- 35,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,27,139,149,
- 233,133,192,15,133,244,44,15,182,110,252,255,15,182,78,252,253,139,68,252,
- 234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,
- 131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68,202,
- 4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,171,255,15,191,192,199,68,202,4,237,137,4,202,255,15,191,192,252,242,15,
- 42,192,252,242,15,17,4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,
- 4,199,252,242,15,17,4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,
- 202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
- 141,76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,
- 57,193,15,134,244,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,171,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,
- 109,0,137,68,202,4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,
- 16,252,255,36,171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,
- 173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,
- 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
- 232,16,252,255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,
- 246,129,233,235,15,132,244,1,135,213,141,139,233,255,232,251,1,28,137,252,
- 234,252,233,244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,
- 12,135,139,133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,
- 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
- 2,252,246,129,233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,
- 194,141,139,233,232,251,1,28,137,252,234,252,233,244,1,255,139,106,252,248,
- 255,252,242,15,16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,
- 17,1,255,221,25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,
- 233,137,65,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 171,255,141,180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,
- 149,233,141,20,202,137,252,233,232,251,1,29,139,149,233,248,1,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,
- 252,248,139,4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,
- 233,137,116,36,24,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,
- 68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 171,255,139,108,36,48,137,149,233,139,139,233,59,139,233,137,116,36,24,15,
- 131,244,251,248,1,137,193,37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,
- 252,255,7,0,0,15,132,244,249,248,2,137,44,36,137,68,36,4,232,251,1,31,139,
- 149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,
- 182,232,131,198,4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,
- 2,248,5,137,252,233,232,251,1,32,15,183,70,252,254,252,233,244,1,255,252,
- 247,208,139,108,36,48,139,139,233,137,116,36,24,59,139,233,137,149,233,15,
- 131,244,249,248,2,139,20,135,137,252,233,232,251,1,33,139,149,233,15,182,
- 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,
- 4,193,232,16,252,255,36,171,248,3,137,252,233,232,251,1,32,15,183,70,252,
- 254,252,247,208,252,233,244,2,255,252,247,208,139,106,252,248,139,173,233,
- 139,4,135,252,233,244,167,255,252,247,208,139,106,252,248,139,173,233,139,
- 4,135,252,233,244,168,255,15,182,252,236,15,182,192,129,124,253,252,234,4,
- 239,15,133,244,38,139,44,252,234,255,129,124,253,194,4,239,15,133,244,251,
- 139,4,194,255,129,124,253,194,4,239,15,131,244,251,255,252,242,15,16,4,194,
- 252,242,15,45,192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,
- 219,4,36,255,15,133,244,38,255,59,133,233,15,131,244,38,193,224,3,3,133,233,
- 129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,
- 248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
- 2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,
- 38,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,248,5,255,129,124,
- 253,194,4,239,15,133,244,38,139,4,194,252,233,244,167,255,15,182,252,236,
- 15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,36,
- 139,44,252,234,248,167,139,141,233,35,136,233,105,201,239,3,141,233,248,1,
- 129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,
- 15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,137,76,194,4,
- 248,2,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
- 248,3,15,182,70,252,253,199,68,194,4,237,252,233,244,2,248,4,139,137,233,
- 133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,
- 235,15,133,244,3,252,233,244,36,255,15,182,252,236,15,182,192,129,124,253,
- 252,234,4,239,15,133,244,37,139,44,252,234,59,133,233,15,131,244,37,193,224,
- 3,3,133,233,129,120,253,4,239,15,132,244,248,139,40,139,64,4,137,44,202,137,
- 68,202,4,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
- 171,248,2,131,189,233,0,15,132,244,249,139,141,233,252,246,129,233,235,15,
- 132,244,37,255,15,182,78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,
- 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,41,139,44,
- 252,234,255,15,133,244,41,255,59,133,233,15,131,244,41,193,224,3,3,133,233,
- 129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,
- 248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,
- 131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,
- 141,233,252,246,129,233,235,255,15,132,244,41,15,182,78,252,253,252,233,244,
- 1,248,5,129,124,253,194,4,239,15,133,244,41,139,4,194,252,233,244,168,248,
- 7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,
- 233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,
- 252,234,4,239,15,133,244,39,139,44,252,234,248,168,139,141,233,35,136,233,
- 105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,
- 57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,
- 246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4,139,
- 4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233,252,
- 246,129,233,235,15,132,244,39,139,76,36,16,252,233,244,2,248,5,139,137,233,
- 133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,
- 235,15,132,244,39,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,
- 36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,
- 36,24,232,251,1,34,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,
- 128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,
- 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,40,139,44,252,
- 234,59,133,233,15,131,244,40,193,224,3,3,133,233,129,120,253,4,239,15,132,
- 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,
- 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
- 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,
- 235,15,132,244,40,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
- 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,
- 36,16,139,60,199,248,1,141,12,202,139,105,252,248,252,246,133,233,235,15,
- 133,244,253,248,2,139,68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,
- 233,15,135,244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,
- 105,4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,
- 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
- 5,137,108,36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,
- 24,232,251,1,35,139,149,233,15,182,78,252,253,252,233,244,1,248,7,255,128,
- 165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,2,255,3,68,36,
- 20,255,129,124,253,202,4,239,139,44,202,15,133,244,58,141,84,202,8,137,114,
- 252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,
- 171,255,141,76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,
- 244,29,248,59,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,
- 252,248,137,68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,
- 4,131,193,8,137,111,4,131,199,8,131,232,1,15,133,244,2,139,106,252,248,248,
- 3,139,68,36,20,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,
- 252,233,15,182,205,131,198,4,252,255,36,171,248,5,255,252,247,198,237,15,
- 133,244,4,15,182,78,252,253,252,247,209,141,12,202,139,121,252,248,139,191,
- 233,139,191,233,252,233,244,4,248,7,129,252,238,239,252,247,198,237,15,133,
- 244,254,41,252,242,137,215,139,114,252,252,252,233,244,1,248,8,129,198,239,
- 252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,
- 139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,
- 137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,244,29,137,
- 202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
- 4,252,255,36,171,255,137,124,36,16,137,92,36,20,139,108,202,252,240,139,68,
- 202,252,248,139,157,233,131,198,4,139,189,233,248,1,57,216,15,131,244,251,
- 129,124,253,199,4,239,15,132,244,250,255,219,68,202,252,248,255,139,108,199,
- 4,137,108,202,12,139,44,199,137,108,202,8,131,192,1,255,137,68,202,252,248,
- 248,2,15,183,70,252,254,141,180,253,134,233,248,3,139,92,36,20,139,124,36,
- 16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,
- 131,192,1,255,137,68,202,252,248,255,252,233,244,1,248,5,41,216,248,6,59,
- 133,233,15,135,244,3,105,252,248,239,3,189,233,129,191,233,239,15,132,244,
- 253,141,92,24,1,139,175,233,139,135,233,137,44,202,137,68,202,4,139,175,233,
- 139,135,233,137,108,202,8,137,68,202,12,137,92,202,252,248,252,233,244,2,
- 248,7,255,131,192,1,252,233,244,6,255,129,124,253,202,252,236,239,15,133,
- 244,251,139,108,202,232,129,124,253,202,252,244,239,15,133,244,251,129,124,
- 253,202,252,252,239,15,133,244,251,128,189,233,235,15,133,244,251,141,180,
- 253,134,233,199,68,202,252,248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,
- 131,198,4,193,232,16,252,255,36,171,248,5,198,70,252,252,235,141,180,253,
- 134,233,198,6,235,252,233,244,1,255,15,182,252,236,15,182,192,137,124,36,
- 16,141,188,253,194,233,141,12,202,43,122,252,252,133,252,237,15,132,244,251,
- 141,108,252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,
- 139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,
- 215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,
- 3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
- 36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,137,197,
- 193,252,237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,
- 244,253,248,6,255,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,
- 131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,
- 137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,
- 149,233,139,141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,
- 252,137,68,36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,
- 1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,
- 252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,
- 248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,
- 106,252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,
- 252,247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,
- 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,
- 237,131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,
- 7,141,174,233,252,247,197,237,15,133,244,14,41,252,234,255,1,252,233,255,
- 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,
- 148,255,141,12,202,255,129,121,253,4,239,15,133,244,255,255,129,121,253,12,
- 239,15,133,244,60,129,121,253,20,239,15,133,244,60,139,41,131,121,16,0,15,
- 140,244,251,255,129,121,253,12,239,15,133,244,164,129,121,253,20,239,15,133,
- 244,164,255,139,105,16,133,252,237,15,136,244,251,3,41,15,128,244,247,137,
- 41,255,59,105,8,199,65,28,237,137,105,24,255,15,142,244,253,248,1,248,6,141,
- 180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,142,245,248,
- 1,248,6,255,15,143,244,253,248,6,141,180,253,134,233,248,1,255,248,7,139,
- 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,255,3,41,
- 15,128,244,1,137,41,255,15,141,244,7,255,141,180,253,134,233,15,183,70,252,
- 254,15,141,245,255,15,140,244,7,255,252,233,244,6,248,9,255,129,121,253,4,
- 239,255,15,131,244,60,129,121,253,12,239,15,131,244,60,255,129,121,253,12,
- 239,15,131,244,164,129,121,253,20,239,15,131,244,164,255,139,105,20,255,129,
- 252,253,239,15,131,244,60,255,252,242,15,16,1,252,242,15,16,73,8,255,252,
- 242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255,15,140,244,
- 249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,
- 65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24,15,140,244,
- 247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,7,255,15,131,244,
- 248,141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,
- 245,255,15,130,244,7,255,15,130,244,248,141,180,253,134,233,255,248,3,102,
- 15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,
- 247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,255,141,180,253,
- 134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,
- 128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,
- 134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
- 137,252,245,209,252,237,129,229,239,102,129,172,253,43,233,238,15,130,244,
- 150,255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,244,24,15,
- 182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,233,245,
- 255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,233,244,
- 2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,120,252,
- 248,139,108,36,48,141,12,200,59,141,233,15,135,244,23,137,209,137,194,15,
- 182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,244,
- 249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,252,
- 252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,204,
- 15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,131,
- 192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,189,
- 233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,137,
- 133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,22,199,131,
- 233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,233,
- 141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,0
+ 102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,
+ 242,15,92,203,184,0,0,252,240,63,102,15,110,216,102,15,112,219,81,252,242,
+ 15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,
+ 1,195,248,157,255,15,40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,
+ 210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,
+ 224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,
+ 227,252,242,15,92,227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,
+ 15,112,210,81,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,
+ 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,
+ 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,
+ 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
+ 252,252,217,108,36,4,222,201,222,252,233,195,255,248,98,217,252,234,222,201,
+ 248,158,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,
+ 0,0,128,252,255,15,132,244,248,248,159,217,192,217,252,252,220,252,233,217,
+ 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,
+ 217,252,238,195,255,248,117,219,84,36,4,219,68,36,4,255,223,252,233,255,221,
+ 252,233,223,224,158,255,15,133,244,254,15,138,244,255,221,216,139,68,36,4,
+ 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,
+ 232,252,233,244,1,248,2,209,232,15,132,244,251,217,192,248,3,216,200,209,
+ 232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248,4,255,222,201,248,
+ 5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,
+ 252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217,
+ 84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244,
+ 248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217,
+ 252,241,252,233,244,159,248,9,255,217,232,255,223,252,234,255,221,252,234,
+ 223,224,158,255,15,132,244,247,217,201,248,1,221,216,195,248,2,217,225,217,
+ 232,255,15,132,244,249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,
+ 209,200,51,68,36,4,15,137,244,249,217,201,248,3,221,217,217,225,195,248,4,
+ 131,124,36,4,0,15,141,244,3,221,216,221,216,133,192,15,132,244,251,217,252,
+ 238,195,248,5,199,68,36,4,0,0,128,127,217,68,36,4,195,255,248,117,255,248,
+ 160,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,
+ 244,255,248,161,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,
+ 248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,
+ 15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,
+ 252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,
+ 132,244,5,15,130,244,253,252,247,216,232,244,1,184,0,0,252,240,63,102,15,
+ 110,200,102,15,112,201,81,252,242,15,94,200,15,40,193,195,248,7,184,0,0,252,
+ 240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,
+ 252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,
+ 61,0,0,224,252,255,15,132,244,248,248,1,131,124,36,4,0,15,133,244,247,255,
+ 139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,
+ 1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,
+ 201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,
+ 16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,
+ 102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,
+ 102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,
+ 208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,
+ 136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,
+ 192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,15,87,
+ 192,195,248,5,102,15,80,193,133,192,15,132,244,3,255,15,87,192,195,248,162,
+ 255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,
+ 244,248,232,244,91,252,233,244,253,248,1,232,244,93,252,233,244,253,248,2,
+ 131,252,248,3,15,132,244,247,15,135,244,248,232,244,114,255,252,233,244,253,
+ 248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,
+ 221,68,36,4,131,252,248,5,15,130,244,98,15,132,244,158,248,2,131,252,248,
+ 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
+ 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,
+ 244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
+ 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
+ 252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,
+ 91,15,132,244,93,131,252,248,3,15,130,244,114,15,135,244,248,217,252,250,
+ 195,248,2,131,252,248,5,15,130,244,98,15,132,244,158,131,252,248,7,15,132,
+ 244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,
+ 217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,
+ 248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,
+ 248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,
+ 216,195,255,248,9,204,255,248,163,255,139,68,36,20,252,242,15,16,68,36,4,
+ 252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,
+ 15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,
+ 193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,
+ 15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,
+ 248,5,15,132,244,247,255,15,135,244,248,232,244,157,252,233,244,7,248,1,90,
+ 232,244,117,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,
+ 248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,
+ 7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,
+ 233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,
+ 15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
+ 2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,252,233,
+ 244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,
+ 68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,
+ 195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
+ 222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,157,15,132,
+ 244,117,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,
+ 248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,
+ 217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,
+ 15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,
+ 252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,
+ 248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,
+ 244,248,217,201,248,2,221,216,195,255,248,164,156,90,137,209,129,252,242,
+ 0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,
+ 162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,248,165,
+ 255,204,248,166,255,131,252,236,16,87,86,83,131,252,236,28,141,157,233,139,
+ 181,233,15,183,192,137,134,233,141,132,253,36,233,137,142,233,137,150,233,
+ 137,134,233,139,140,253,36,233,139,148,253,36,233,137,76,36,44,137,84,36,
+ 40,137,226,137,116,36,24,137,252,241,232,251,1,27,199,131,233,237,139,144,
+ 233,139,128,233,41,208,139,106,252,248,193,232,3,131,192,1,139,181,233,139,
+ 14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,248,32,255,139,
+ 76,36,48,139,179,233,137,142,233,137,145,233,137,169,233,137,252,241,137,
+ 194,232,251,1,28,139,108,36,48,139,134,233,139,150,233,131,190,233,1,15,130,
+ 244,253,15,132,244,252,221,134,233,252,233,244,253,248,6,217,134,233,248,
+ 7,139,141,233,15,183,73,6,137,76,36,48,131,196,28,91,94,95,93,89,3,36,36,
+ 131,196,16,81,195,255,248,167,255,85,137,229,83,137,203,43,163,233,255,137,
+ 163,233,255,15,182,139,233,131,252,233,1,15,136,244,248,248,1,139,132,253,
+ 139,233,137,4,140,131,252,233,1,15,137,244,1,248,2,139,139,233,139,147,233,
+ 252,255,147,233,137,131,233,137,147,233,128,187,233,1,15,130,244,253,15,132,
+ 244,252,221,155,233,252,233,244,253,248,6,255,217,155,233,248,7,255,41,163,
+ 233,255,139,93,252,252,201,195,255,249,255,129,124,253,202,4,239,15,133,244,
+ 253,129,124,253,194,4,239,15,133,244,254,139,44,202,131,198,4,59,44,194,255,
+ 15,141,244,255,255,15,140,244,255,255,15,143,244,255,255,15,142,244,255,255,
+ 248,6,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,44,129,124,253,194,
+ 4,239,15,130,244,247,15,133,244,44,255,252,242,15,42,4,194,252,233,244,248,
+ 255,221,4,202,219,4,194,252,233,244,249,255,248,8,15,135,244,44,255,252,242,
+ 15,42,12,202,252,242,15,16,4,194,131,198,4,102,15,46,193,255,15,134,244,9,
+ 255,15,135,244,9,255,15,130,244,9,255,15,131,244,9,255,252,233,244,6,255,
+ 219,4,202,252,233,244,248,255,129,124,253,202,4,239,15,131,244,44,129,124,
+ 253,194,4,239,15,131,244,44,255,248,1,252,242,15,16,4,194,248,2,131,198,4,
+ 102,15,46,4,202,248,3,255,248,1,221,4,202,248,2,221,4,194,248,3,131,198,4,
+ 255,15,135,244,247,255,15,130,244,247,255,15,131,244,247,255,15,183,70,252,
+ 254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,255,139,108,194,4,131,198,4,255,129,252,253,239,15,133,
+ 244,253,129,124,253,202,4,239,15,133,244,254,139,44,194,59,44,202,255,15,
+ 133,244,255,255,15,132,244,255,255,15,183,70,252,254,141,180,253,134,233,
+ 248,9,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
+ 7,15,135,244,251,129,124,253,202,4,239,15,130,244,247,15,133,244,251,255,
+ 252,242,15,42,4,202,255,219,4,202,255,252,233,244,248,248,8,15,135,244,251,
+ 255,252,242,15,42,4,194,102,15,46,4,202,255,219,4,194,221,4,202,255,252,233,
+ 244,250,255,129,252,253,239,15,131,244,251,129,124,253,202,4,239,15,131,244,
+ 251,255,248,1,252,242,15,16,4,202,248,2,102,15,46,4,194,248,4,255,248,1,221,
+ 4,202,248,2,221,4,194,248,4,255,15,138,244,248,15,133,244,248,255,15,138,
+ 244,248,15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,
+ 2,255,248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,252,233,244,9,
+ 255,248,5,255,129,252,253,239,15,132,244,49,129,124,253,202,4,239,15,132,
+ 244,49,255,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,
+ 202,139,4,194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,
+ 133,252,237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,
+ 255,189,1,0,0,0,255,252,233,244,48,255,248,3,129,252,253,239,255,15,133,244,
+ 9,255,252,233,244,49,255,252,247,208,139,108,202,4,131,198,4,129,252,253,
+ 239,15,133,244,249,139,12,202,59,12,135,255,139,108,202,4,131,198,4,255,129,
+ 252,253,239,15,133,244,253,129,124,253,199,4,239,15,133,244,254,139,44,199,
+ 59,44,202,255,15,183,70,252,254,141,180,253,134,233,248,9,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,171,248,7,15,135,244,249,129,124,
+ 253,199,4,239,15,130,244,247,255,252,242,15,42,4,199,255,219,4,199,255,252,
+ 233,244,248,248,8,255,252,242,15,42,4,202,102,15,46,4,199,255,219,4,202,221,
+ 4,199,255,129,252,253,239,15,131,244,249,255,248,1,252,242,15,16,4,199,248,
+ 2,102,15,46,4,202,248,4,255,248,1,221,4,199,248,2,221,4,202,248,4,255,252,
+ 247,208,139,108,202,4,131,198,4,57,197,255,15,133,244,249,15,183,70,252,254,
+ 141,180,253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
+ 252,255,36,171,248,3,129,252,253,239,15,133,244,2,252,233,244,49,255,15,132,
+ 244,248,129,252,253,239,15,132,244,49,15,183,70,252,254,141,180,253,134,233,
+ 248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,
+ 139,108,194,4,131,198,4,129,252,253,239,255,137,108,202,4,139,44,194,137,
+ 44,202,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253,
+ 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4,
+ 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,133,244,251,139,44,
+ 194,252,247,221,15,128,244,250,199,68,202,4,237,137,44,202,248,9,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,199,68,202,4,
+ 0,0,224,65,199,4,202,0,0,0,0,252,233,244,9,248,5,15,135,244,54,255,129,124,
+ 253,194,4,239,15,131,244,54,255,252,242,15,16,4,194,184,0,0,0,128,102,15,
+ 110,200,102,15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,
+ 224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,139,
+ 128,233,248,1,199,68,202,4,237,137,4,202,255,15,87,192,252,242,15,42,128,
+ 233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,
+ 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,
+ 194,4,239,15,133,244,57,139,12,194,255,139,169,233,131,252,253,0,15,133,244,
+ 255,248,3,255,248,58,137,213,232,251,1,20,255,252,242,15,42,192,255,137,4,
+ 36,219,4,36,255,137,252,234,15,182,78,252,253,252,233,244,1,255,248,9,252,
+ 246,133,233,235,15,133,244,3,252,233,244,57,255,15,182,252,236,15,182,192,
+ 255,129,124,253,252,234,4,239,15,133,244,51,129,124,253,199,4,239,15,133,
+ 244,51,139,44,252,234,3,44,199,15,128,244,50,255,129,124,253,252,234,4,239,
+ 15,133,244,53,129,124,253,199,4,239,15,133,244,53,139,4,199,3,4,252,234,15,
+ 128,244,52,255,129,124,253,252,234,4,239,15,133,244,56,129,124,253,194,4,
+ 239,15,133,244,56,139,44,252,234,3,44,194,15,128,244,55,255,199,68,202,4,
+ 237,255,129,124,253,252,234,4,239,15,131,244,51,255,129,124,253,199,4,239,
+ 15,131,244,51,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,
+ 234,220,4,199,255,129,124,253,252,234,4,239,15,131,244,53,255,129,124,253,
+ 199,4,239,15,131,244,53,255,252,242,15,16,4,199,252,242,15,88,4,252,234,255,
+ 221,4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,131,244,56,129,124,
+ 253,194,4,239,15,131,244,56,255,252,242,15,16,4,252,234,252,242,15,88,4,194,
+ 255,221,4,252,234,220,4,194,255,129,124,253,252,234,4,239,15,133,244,51,129,
+ 124,253,199,4,239,15,133,244,51,139,44,252,234,43,44,199,15,128,244,50,255,
+ 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
+ 53,139,4,199,43,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,15,
+ 133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,43,44,194,15,
+ 128,244,55,255,252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,
+ 234,220,36,199,255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,
+ 199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,
+ 4,252,234,220,36,194,255,129,124,253,252,234,4,239,15,133,244,51,129,124,
+ 253,199,4,239,15,133,244,51,139,44,252,234,15,175,44,199,15,128,244,50,255,
+ 129,124,253,252,234,4,239,15,133,244,53,129,124,253,199,4,239,15,133,244,
+ 53,139,4,199,15,175,4,252,234,15,128,244,52,255,129,124,253,252,234,4,239,
+ 15,133,244,56,129,124,253,194,4,239,15,133,244,56,139,44,252,234,15,175,44,
+ 194,15,128,244,55,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,
+ 4,252,234,220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,
+ 221,4,199,220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,
+ 255,221,4,252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,
+ 199,255,221,4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,
+ 252,234,255,221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,
+ 15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,
+ 242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,
+ 242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,
+ 234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,168,232,244,
+ 157,255,252,233,244,168,255,232,244,117,255,15,182,252,236,15,182,192,141,
+ 12,194,41,232,137,76,36,4,137,68,36,8,248,36,139,108,36,48,137,44,36,137,
+ 149,233,137,116,36,24,232,251,1,29,139,149,233,133,192,15,133,244,45,15,182,
+ 110,252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,
+ 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
+ 171,255,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,171,255,15,191,192,199,68,202,
+ 4,237,137,4,202,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,
+ 223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,
+ 221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,
+ 237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,
+ 172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,
+ 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,
+ 248,139,172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,
+ 137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,
+ 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,
+ 232,239,129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,
+ 213,141,139,233,255,232,251,1,30,137,252,234,252,233,244,1,255,252,247,208,
+ 139,106,252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,
+ 237,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,
+ 131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,
+ 1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,30,137,
+ 252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,
+ 172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,
+ 139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,
+ 108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,
+ 232,251,1,31,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,
+ 48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,
+ 32,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,36,48,137,
+ 149,233,139,139,233,59,139,233,137,116,36,24,15,131,244,251,248,1,137,193,
+ 37,252,255,7,0,0,193,252,233,11,137,76,36,8,61,252,255,7,0,0,15,132,244,249,
+ 248,2,137,44,36,137,68,36,4,232,251,1,33,139,149,233,15,182,78,252,253,137,
+ 4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
+ 255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,34,
+ 15,183,70,252,254,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,
+ 137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,
+ 252,233,232,251,1,35,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,
+ 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
+ 137,252,233,232,251,1,34,15,183,70,252,254,252,247,208,252,233,244,2,255,
+ 252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,169,255,252,
+ 247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,170,255,15,182,
+ 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,
+ 255,129,124,253,194,4,239,15,133,244,251,139,4,194,255,129,124,253,194,4,
+ 239,15,131,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,
+ 200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,39,255,
+ 59,133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,
+ 248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,249,
+ 139,141,233,252,246,129,233,235,15,132,244,39,15,182,78,252,253,248,3,199,
+ 68,202,4,237,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,39,
+ 139,4,194,252,233,244,169,255,15,182,252,236,15,182,192,252,247,208,139,4,
+ 135,129,124,253,252,234,4,239,15,133,244,37,139,44,252,234,248,169,139,141,
+ 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,
+ 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,
+ 253,139,41,139,73,4,137,44,194,137,76,194,4,248,2,255,139,6,15,182,204,15,
+ 182,232,131,198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,199,68,
+ 194,4,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,
+ 141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,
+ 37,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,
+ 139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,
+ 239,15,132,244,248,139,40,139,64,4,137,44,202,137,68,202,4,248,1,139,6,15,
+ 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,
+ 0,15,132,244,249,139,141,233,252,246,129,233,235,15,132,244,38,255,15,182,
+ 78,252,253,248,3,199,68,202,4,237,252,233,244,1,255,15,182,252,236,15,182,
+ 192,129,124,253,252,234,4,239,15,133,244,42,139,44,252,234,255,15,133,244,
+ 42,255,59,133,233,15,131,244,42,193,224,3,3,133,233,129,120,253,4,239,15,
+ 132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,
+ 139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
+ 233,235,255,15,132,244,42,15,182,78,252,253,252,233,244,1,248,5,129,124,253,
+ 194,4,239,15,133,244,42,139,4,194,252,233,244,170,248,7,128,165,233,235,139,
+ 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,
+ 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
+ 244,40,139,44,252,234,248,170,139,141,233,35,136,233,105,201,239,198,133,
+ 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
+ 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
+ 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
+ 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,
+ 233,0,15,132,244,2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,
+ 40,139,76,36,16,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,
+ 139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,40,248,
+ 6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,
+ 108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,36,139,
+ 149,233,139,108,36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,
+ 233,137,171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,
+ 124,253,252,234,4,239,15,133,244,41,139,44,252,234,59,133,233,15,131,244,
+ 41,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,
+ 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,
+ 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,
+ 233,0,15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,41,15,182,
+ 78,252,253,252,233,244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,
+ 141,233,15,182,78,252,253,252,233,244,2,255,137,124,36,16,139,60,199,248,
+ 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,
+ 68,36,20,131,232,1,15,132,244,250,1,252,248,59,133,233,15,135,244,251,41,
+ 252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,193,8,137,111,
+ 4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,
+ 182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,36,4,139,108,36,
+ 48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,1,37,139,149,233,
+ 15,182,78,252,253,252,233,244,1,248,7,255,128,165,233,235,139,131,233,137,
+ 171,233,137,133,233,252,233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,
+ 139,44,202,15,133,244,59,141,84,202,8,137,114,252,252,139,181,233,139,14,
+ 15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,
+ 139,105,252,248,129,121,253,252,252,239,15,133,244,29,248,60,139,114,252,
+ 252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,
+ 232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,131,193,8,137,111,4,131,
+ 199,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,
+ 1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,
+ 4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,
+ 252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,
+ 4,248,7,129,252,238,239,252,247,198,237,15,133,244,254,41,252,242,137,215,
+ 139,114,252,252,252,233,244,1,248,8,129,198,239,252,233,244,1,255,141,76,
+ 202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139,65,252,
+ 244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137,65,252,
+ 252,129,252,248,239,184,237,15,133,244,29,137,202,137,114,252,252,139,181,
+ 233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,137,124,
+ 36,16,137,92,36,20,139,108,202,252,240,139,68,202,252,248,139,157,233,131,
+ 198,4,139,189,233,248,1,57,216,15,131,244,251,129,124,253,199,4,239,15,132,
+ 244,250,255,219,68,202,252,248,255,139,108,199,4,137,108,202,12,139,44,199,
+ 137,108,202,8,131,192,1,255,137,68,202,252,248,248,2,15,183,70,252,254,141,
+ 180,253,134,233,248,3,139,92,36,20,139,124,36,16,139,6,15,182,204,15,182,
+ 232,131,198,4,193,232,16,252,255,36,171,248,4,131,192,1,255,137,68,202,252,
+ 248,255,252,233,244,1,248,5,41,216,248,6,59,133,233,15,135,244,3,105,252,
+ 248,239,3,189,233,129,191,233,239,15,132,244,253,141,92,24,1,139,175,233,
+ 139,135,233,137,44,202,137,68,202,4,139,175,233,139,135,233,137,108,202,8,
+ 137,68,202,12,137,92,202,252,248,252,233,244,2,248,7,255,131,192,1,252,233,
+ 244,6,255,129,124,253,202,252,236,239,15,133,244,251,139,108,202,232,129,
+ 124,253,202,252,244,239,15,133,244,251,129,124,253,202,252,252,239,15,133,
+ 244,251,128,189,233,235,15,133,244,251,141,180,253,134,233,199,68,202,252,
+ 248,0,0,0,0,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
+ 36,171,248,5,198,70,252,252,235,141,180,253,134,233,198,6,235,252,233,244,
+ 1,255,15,182,252,236,15,182,192,137,124,36,16,141,188,253,194,233,141,12,
+ 202,43,122,252,252,133,252,237,15,132,244,251,141,108,252,233,252,248,57,
+ 215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,
+ 65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,
+ 4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,
+ 204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,
+ 0,0,137,208,41,252,248,15,134,244,3,137,197,193,252,237,3,131,197,1,137,108,
+ 36,20,139,108,36,48,1,200,59,133,233,15,135,244,253,248,6,255,139,71,252,
+ 248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,
+ 252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,
+ 20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,
+ 233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,
+ 237,15,133,244,253,255,248,13,137,215,131,232,1,15,132,244,249,248,2,139,
+ 44,15,137,111,252,248,139,108,15,4,137,111,252,252,131,199,8,131,232,1,15,
+ 133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5,57,197,15,135,244,252,
+ 255,139,108,10,4,137,106,252,252,139,44,10,137,106,252,248,255,248,5,56,70,
+ 252,255,15,135,244,252,255,15,182,78,252,253,252,247,209,141,20,202,139,122,
+ 252,248,139,191,233,139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,
+ 232,16,252,255,36,171,248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,
+ 252,244,237,255,131,192,1,252,233,244,5,248,7,141,174,233,252,247,197,237,
+ 15,133,244,14,41,252,234,255,1,252,233,255,137,252,245,209,252,237,129,229,
+ 239,102,129,172,253,43,233,238,15,130,244,149,255,141,12,202,255,129,121,
+ 253,4,239,15,133,244,255,255,129,121,253,12,239,15,133,244,61,129,121,253,
+ 20,239,15,133,244,61,139,41,131,121,16,0,15,140,244,251,255,129,121,253,12,
+ 239,15,133,244,165,129,121,253,20,239,15,133,244,165,255,139,105,16,133,252,
+ 237,15,136,244,251,3,41,15,128,244,247,137,41,255,59,105,8,199,65,28,237,
+ 137,105,24,255,15,142,244,253,248,1,248,6,141,180,253,134,233,255,141,180,
+ 253,134,233,15,183,70,252,254,15,142,245,248,1,248,6,255,15,143,244,253,248,
+ 6,141,180,253,134,233,248,1,255,248,7,139,6,15,182,204,15,182,232,131,198,
+ 4,193,232,16,252,255,36,171,248,5,255,3,41,15,128,244,1,137,41,255,15,141,
+ 244,7,255,141,180,253,134,233,15,183,70,252,254,15,141,245,255,15,140,244,
+ 7,255,252,233,244,6,248,9,255,129,121,253,4,239,255,15,131,244,61,129,121,
+ 253,12,239,15,131,244,61,255,129,121,253,12,239,15,131,244,165,129,121,253,
+ 20,239,15,131,244,165,255,139,105,20,255,129,252,253,239,15,131,244,61,255,
+ 252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,17,
+ 1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,1,252,
+ 242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,252,
+ 237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,15,
+ 183,70,252,254,255,15,131,244,7,255,15,131,244,248,141,180,253,134,233,255,
+ 141,180,253,134,233,15,183,70,252,254,15,131,245,255,15,130,244,7,255,15,
+ 130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244,1,255,
+ 141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252,252,139,
+ 41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137,105,252,
+ 252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108,36,48,137,
+ 147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15,182,204,
+ 15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,252,245,209,252,237,
+ 129,229,239,102,129,172,253,43,233,238,15,130,244,151,255,139,190,233,139,
+ 108,36,48,141,12,202,59,141,233,15,135,244,24,15,182,142,233,57,200,15,134,
+ 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252,
+ 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141,
+ 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12,
+ 200,59,141,233,15,135,244,23,137,209,137,194,15,182,174,233,133,252,237,15,
+ 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56,
+ 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133,
+ 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232,
+ 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244,
+ 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194,
+ 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255,
+ 137,124,36,4,137,44,36,255,15,135,244,22,199,131,233,237,255,252,255,215,
+ 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217,
+ 3,141,233,139,114,252,252,252,233,244,12,255,254,0
};
enum {
@@ -863,6 +874,7 @@ enum {
GLOB_vmeta_call,
GLOB_vm_call_dispatch_f,
GLOB_vm_cpcall,
+ GLOB_cont_ffi_callback,
GLOB_vm_call_tail,
GLOB_cont_cat,
GLOB_cont_ra,
@@ -996,6 +1008,7 @@ enum {
GLOB_vm_foldarith,
GLOB_vm_cpuid,
GLOB_assert_bad_for_arg_type,
+ GLOB_vm_ffi_callback,
GLOB_vm_ffi_call,
GLOB_BC_MODVN_Z,
GLOB_BC_TGETS_Z,
@@ -1025,6 +1038,7 @@ static const char *const globnames[] = {
"vmeta_call",
"vm_call_dispatch_f",
"vm_cpcall",
+ "cont_ffi_callback",
"vm_call_tail",
"cont_cat",
"cont_ra",
@@ -1158,6 +1172,7 @@ static const char *const globnames[] = {
"vm_foldarith",
"vm_cpuid",
"assert_bad_for_arg_type",
+ "vm_ffi_callback",
"vm_ffi_call@4",
"BC_MODVN_Z",
"BC_TGETS_Z",
@@ -1192,6 +1207,8 @@ static const char *const extnames[] = {
"lj_dispatch_call@8",
"lj_trace_exit@8",
"lj_err_throw@8",
+ "lj_ccallback_enter@8",
+ "lj_ccallback_leave@8",
"lj_meta_cat",
"lj_gc_barrieruv@8",
"lj_func_closeuv@8",
@@ -1232,762 +1249,780 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
dasm_put(Dst, 353, Dt1(->top), Dt1(->base), Dt1(->top), Dt7(->pc), FRAME_CP, CFRAME_RESUME, Dt1(->glref), GG_G2DISP, Dt1(->cframe), Dt1(->status), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->status), Dt1(->base), Dt1(->top), FRAME_TYPE);
dasm_put(Dst, 495, FRAME_CP, FRAME_C, Dt1(->cframe), Dt1(->cframe), Dt1(->glref), GG_G2DISP, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base));
dasm_put(Dst, 573, Dt1(->top), LJ_TFUNC, Dt7(->pc), Dt1(->stack), Dt1(->top), Dt1(->cframe), Dt1(->cframe), FRAME_CP, LJ_TNIL);
- dasm_put(Dst, 753, Dt7(->pc), PC2PROTO(k), LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
- dasm_put(Dst, 875);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 881, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 891);
- } else {
- dasm_put(Dst, 904);
- }
- dasm_put(Dst, 917, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
- dasm_put(Dst, 1069, DISPATCH_GL(tmptv), LJ_TTAB);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 881, LJ_TISNUM);
- } else if (sse) {
- dasm_put(Dst, 891);
- } else {
- dasm_put(Dst, 904);
- }
- dasm_put(Dst, 1092, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 1286, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
- dasm_put(Dst, 1393);
#if LJ_HASFFI
- dasm_put(Dst, 1408, Dt1(->base));
#endif
- dasm_put(Dst, 1439);
-#if LJ_DUALNUM
- dasm_put(Dst, 1442);
+ dasm_put(Dst, 743);
+#if LJ_HASFFI
+ dasm_put(Dst, 748);
+#endif
+ dasm_put(Dst, 757, Dt7(->pc), PC2PROTO(k));
+#if LJ_HASFFI
+ dasm_put(Dst, 771);
+#endif
+ dasm_put(Dst, 792, LJ_TSTR, BC_GGET, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 890, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 900);
+ } else {
+ dasm_put(Dst, 913);
+ }
+ dasm_put(Dst, 926, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 2+1, LJ_TSTR, BC_GSET);
+ dasm_put(Dst, 1078, DISPATCH_GL(tmptv), LJ_TTAB);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 890, LJ_TISNUM);
+ } else if (sse) {
+ dasm_put(Dst, 900);
+ } else {
+ dasm_put(Dst, 913);
+ }
+ dasm_put(Dst, 1101, Dt1(->base), Dt1(->base), Dt1(->top), FRAME_CONT, 3+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1295, -BCBIAS_J*4, LJ_TISTRUECOND, LJ_TISTRUECOND, Dt1(->base));
+ dasm_put(Dst, 1402);
+#if LJ_HASFFI
+ dasm_put(Dst, 1417, Dt1(->base));
#endif
dasm_put(Dst, 1448);
#if LJ_DUALNUM
- dasm_put(Dst, 875);
+ dasm_put(Dst, 1451);
#endif
- dasm_put(Dst, 1460);
+ dasm_put(Dst, 1457);
#if LJ_DUALNUM
- dasm_put(Dst, 1442);
+ dasm_put(Dst, 884);
#endif
- dasm_put(Dst, 1488, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 1469);
+#if LJ_DUALNUM
+ dasm_put(Dst, 1451);
+#endif
+ dasm_put(Dst, 1497, Dt1(->base), Dt1(->base), FRAME_CONT, 2+1, Dt1(->base), Dt1(->base));
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 1598);
+ dasm_put(Dst, 1607);
#else
- dasm_put(Dst, 1617);
+ dasm_put(Dst, 1626);
#endif
- dasm_put(Dst, 1622, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
- dasm_put(Dst, 1811, 1+1, ~LJ_TNUMX);
+ dasm_put(Dst, 1631, Dt1(->base), Dt1(->base), Dt7(->pc), Dt1(->base), Dt1(->base), GG_DISP2STATIC, 1+1, LJ_TISTRUECOND);
+ dasm_put(Dst, 1820, 1+1, ~LJ_TNUMX);
if (cmov) {
- dasm_put(Dst, 1869);
+ dasm_put(Dst, 1878);
} else {
- dasm_put(Dst, 1873);
+ dasm_put(Dst, 1882);
}
- dasm_put(Dst, 1882, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
- dasm_put(Dst, 1965, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
- dasm_put(Dst, 2023, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
- dasm_put(Dst, 2086, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
- dasm_put(Dst, 2158, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 1891, ((char *)(&((GCfuncC *)0)->upvalue)), LJ_TSTR, 1+1, LJ_TTAB, Dt6(->metatable), LJ_TNIL, DISPATCH_GL(gcroot)+4*(GCROOT_MMNAME+MM_metatable), LJ_TTAB);
+ dasm_put(Dst, 1974, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), DtB(->next), LJ_TNIL);
+ dasm_put(Dst, 2032, LJ_TUDATA, LJ_TISNUM, LJ_TNUMX, DISPATCH_GL(gcroot[GCROOT_BASEMT]), 2+1);
+ dasm_put(Dst, 2095, LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->metatable), LJ_TTAB, Dt6(->marked), LJ_GC_BLACK, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 2167, 2+1, LJ_TTAB, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2247);
+ dasm_put(Dst, 2256);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 2269);
+ dasm_put(Dst, 2278);
} else {
- dasm_put(Dst, 2279);
+ dasm_put(Dst, 2288);
}
- dasm_put(Dst, 2286, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 2352, Dt1(->base));
+ dasm_put(Dst, 2295, 1+1, LJ_TSTR, LJ_TSTR, LJ_TISNUM, DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 2361, Dt1(->base));
if (LJ_DUALNUM) {
- dasm_put(Dst, 2376);
+ dasm_put(Dst, 2385);
} else {
- dasm_put(Dst, 2381);
+ dasm_put(Dst, 2390);
}
- dasm_put(Dst, 2386, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
- dasm_put(Dst, 2495, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2395, Dt1(->base), 1+1, LJ_TTAB, Dt1(->base), Dt1(->top), Dt1(->base), 1+2);
+ dasm_put(Dst, 2504, LJ_TNIL, LJ_TNIL, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2542, Dt6(->metatable));
+ dasm_put(Dst, 2551, Dt6(->metatable));
#endif
- dasm_put(Dst, 2551, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
+ dasm_put(Dst, 2560, Dt8(->upvalue[0]), LJ_TFUNC, LJ_TNIL, 1+3, 1+1, LJ_TTAB, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2537);
+ dasm_put(Dst, 2546);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 2606);
+ dasm_put(Dst, 2615);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2611, LJ_TISNUM);
+ dasm_put(Dst, 2620, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2627);
+ dasm_put(Dst, 2636);
} else {
- dasm_put(Dst, 2666);
+ dasm_put(Dst, 2675);
}
- dasm_put(Dst, 2684, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
- dasm_put(Dst, 2522, 1+1, LJ_TTAB);
+ dasm_put(Dst, 2693, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->hmask), 1+0);
+ dasm_put(Dst, 2531, 1+1, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 2542, Dt6(->metatable));
+ dasm_put(Dst, 2551, Dt6(->metatable));
#endif
- dasm_put(Dst, 2765, Dt8(->upvalue[0]), LJ_TFUNC);
+ dasm_put(Dst, 2774, Dt8(->upvalue[0]), LJ_TFUNC);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2786, LJ_TISNUM);
+ dasm_put(Dst, 2795, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 2798);
+ dasm_put(Dst, 2807);
} else {
- dasm_put(Dst, 2808);
+ dasm_put(Dst, 2817);
}
- dasm_put(Dst, 2815, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
- dasm_put(Dst, 2879, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
- dasm_put(Dst, 2967, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
- dasm_put(Dst, 3068, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
- dasm_put(Dst, 3182, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
- dasm_put(Dst, 3280, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
- dasm_put(Dst, 3346, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
- dasm_put(Dst, 3447, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
- dasm_put(Dst, 3560, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
+ dasm_put(Dst, 2824, 1+3, 1+1, 8+FRAME_PCALL, DISPATCH_GL(hookmask), HOOK_ACTIVE_SHIFT, 2+1, LJ_TFUNC);
+ dasm_put(Dst, 2888, LJ_TFUNC, 16+FRAME_PCALL, 1+1, LJ_TTHREAD, Dt1(->cframe), Dt1(->status), LUA_YIELD, Dt1(->top));
+ dasm_put(Dst, 2976, Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
+ dasm_put(Dst, 3077, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack), LJ_TTRUE, FRAME_TYPE);
+ dasm_put(Dst, 3191, LJ_TFALSE, Dt1(->top), Dt1(->top), 1+2, Dt1(->top), Dt1(->base), Dt8(->upvalue[0].gcr), Dt1(->cframe));
+ dasm_put(Dst, 3289, Dt1(->status), LUA_YIELD, Dt1(->top), Dt1(->base), Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 3355, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), LUA_YIELD, Dt1(->base), Dt1(->top), Dt1(->top), Dt1(->maxstack));
+ dasm_put(Dst, 3456, FRAME_TYPE, Dt1(->top), Dt1(->base), Dt1(->cframe), CFRAME_RESUME);
+ dasm_put(Dst, 3569, Dt1(->base), Dt1(->top), Dt1(->cframe), LUA_YIELD, Dt1(->status));
if (!LJ_DUALNUM) {
- dasm_put(Dst, 3586);
+ dasm_put(Dst, 3595);
}
if (sse) {
- dasm_put(Dst, 3589);
+ dasm_put(Dst, 3598);
}
- dasm_put(Dst, 3604, 1+1);
+ dasm_put(Dst, 3613, 1+1);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3615, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 3624, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 3695, LJ_TISNUM);
+ dasm_put(Dst, 3704, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3705);
+ dasm_put(Dst, 3714);
} else {
- dasm_put(Dst, 3741);
+ dasm_put(Dst, 3750);
}
- dasm_put(Dst, 3758, 1+1, FRAME_TYPE, LJ_TNIL);
+ dasm_put(Dst, 3767, 1+1, FRAME_TYPE, LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3850, LJ_TISNUM);
+ dasm_put(Dst, 3859, LJ_TISNUM);
} else {
- dasm_put(Dst, 3695, LJ_TISNUM);
+ dasm_put(Dst, 3704, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3872);
- if (LJ_DUALNUM) {
dasm_put(Dst, 3881);
- }
- dasm_put(Dst, 2274);
- } else {
- dasm_put(Dst, 3915);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3921);
+ dasm_put(Dst, 3890);
+ }
+ dasm_put(Dst, 2283);
+ } else {
+ dasm_put(Dst, 3924);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 3930);
if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3953);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3959);
}
- dasm_put(Dst, 3957);
+ dasm_put(Dst, 3966);
} else {
- dasm_put(Dst, 2281);
+ dasm_put(Dst, 2290);
}
}
- dasm_put(Dst, 3974);
+ dasm_put(Dst, 3983);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3850, LJ_TISNUM);
+ dasm_put(Dst, 3859, LJ_TISNUM);
} else {
- dasm_put(Dst, 3695, LJ_TISNUM);
+ dasm_put(Dst, 3704, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 3977);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 3881);
- }
- dasm_put(Dst, 2274);
- } else {
dasm_put(Dst, 3986);
if (LJ_DUALNUM) {
- dasm_put(Dst, 3921);
- if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3890);
+ }
+ dasm_put(Dst, 2283);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3995);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 3930);
+ if (cmov) {
+ dasm_put(Dst, 3953);
+ } else {
+ dasm_put(Dst, 3959);
}
- dasm_put(Dst, 3957);
+ dasm_put(Dst, 3966);
} else {
- dasm_put(Dst, 2281);
+ dasm_put(Dst, 2290);
}
}
if (sse) {
- dasm_put(Dst, 3992, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4001, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4021, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4030, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4050, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4119, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4176, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
- dasm_put(Dst, 4239, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
- dasm_put(Dst, 4329);
+ dasm_put(Dst, 4059, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4128, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4185, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1);
+ dasm_put(Dst, 4248, LJ_TISNUM, 1+1, LJ_TISNUM, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4338);
if (sse) {
- dasm_put(Dst, 4341, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4350, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4372, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4381, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4397);
+ dasm_put(Dst, 4406);
if (sse) {
- dasm_put(Dst, 4411, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4420, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4442, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4451, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4467);
+ dasm_put(Dst, 4476);
if (sse) {
- dasm_put(Dst, 4481, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4490, 1+1, LJ_TISNUM);
} else {
- dasm_put(Dst, 4512, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4521, 1+1, LJ_TISNUM);
}
- dasm_put(Dst, 4537);
+ dasm_put(Dst, 4546);
if (sse) {
- dasm_put(Dst, 4553, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4562, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
} else {
- dasm_put(Dst, 4592, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
+ dasm_put(Dst, 4601, 1+1, LJ_TISNUM, Dt8(->upvalue[0]));
}
- dasm_put(Dst, 4625, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
- dasm_put(Dst, 4690, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 4634, 2+1, LJ_TISNUM, LJ_TISNUM, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 4699, 1+1, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4789);
+ dasm_put(Dst, 4798);
} else {
- dasm_put(Dst, 4795);
+ dasm_put(Dst, 4804);
}
+ dasm_put(Dst, 4813);
+ if (sse) {
+ dasm_put(Dst, 4838);
+ } else {
+ dasm_put(Dst, 4844);
+ }
+ dasm_put(Dst, 4847, 1+2);
+ if (sse) {
+ dasm_put(Dst, 4856);
+ } else {
+ dasm_put(Dst, 4864);
+ }
+ dasm_put(Dst, 4872);
+ if (sse) {
+ dasm_put(Dst, 4875);
+ } else {
+ dasm_put(Dst, 4907);
+ }
+ dasm_put(Dst, 4926);
+ if (sse) {
+ dasm_put(Dst, 4942, 1+1, LJ_TISNUM);
+ } else {
+ dasm_put(Dst, 4967, 1+1, LJ_TISNUM);
+ }
+ dasm_put(Dst, 4989);
+ if (sse) {
+ dasm_put(Dst, 5011);
+ } else {
+ dasm_put(Dst, 5037);
+ }
+ dasm_put(Dst, 5054, 1+2);
+ if (sse) {
+ dasm_put(Dst, 5094);
+ } else {
+ dasm_put(Dst, 5102);
+ }
+ dasm_put(Dst, 5112, 2+1, LJ_TISNUM, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 5164, 2+1, LJ_TISNUM, LJ_TISNUM);
+ } else {
+ dasm_put(Dst, 5211, 2+1, LJ_TISNUM, LJ_TISNUM);
+ }
+ dasm_put(Dst, 5252, LJ_TISNUM);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 5265, LJ_TISNUM);
+ if (sse) {
+ dasm_put(Dst, 4798);
+ } else {
dasm_put(Dst, 4804);
- if (sse) {
- dasm_put(Dst, 4829);
- } else {
- dasm_put(Dst, 4835);
}
- dasm_put(Dst, 4838, 1+2);
- if (sse) {
- dasm_put(Dst, 4847);
+ dasm_put(Dst, 5315);
} else {
- dasm_put(Dst, 4855);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 4863);
if (sse) {
- dasm_put(Dst, 4866);
- } else {
- dasm_put(Dst, 4898);
- }
- dasm_put(Dst, 4917);
- if (sse) {
- dasm_put(Dst, 4933, 1+1, LJ_TISNUM);
- } else {
- dasm_put(Dst, 4958, 1+1, LJ_TISNUM);
- }
- dasm_put(Dst, 4980);
- if (sse) {
- dasm_put(Dst, 5002);
- } else {
- dasm_put(Dst, 5028);
- }
- dasm_put(Dst, 5045, 1+2);
- if (sse) {
- dasm_put(Dst, 5085);
- } else {
- dasm_put(Dst, 5093);
- }
- dasm_put(Dst, 5103, 2+1, LJ_TISNUM, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 5155, 2+1, LJ_TISNUM, LJ_TISNUM);
- } else {
- dasm_put(Dst, 5202, 2+1, LJ_TISNUM, LJ_TISNUM);
- }
- dasm_put(Dst, 5243, LJ_TISNUM);
+ dasm_put(Dst, 5326, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5256, LJ_TISNUM);
- if (sse) {
- dasm_put(Dst, 4789);
+ dasm_put(Dst, 5347);
} else {
- dasm_put(Dst, 4795);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5306);
+ dasm_put(Dst, 5368);
} else {
- dasm_put(Dst, 2264);
- }
- if (sse) {
- dasm_put(Dst, 5317, LJ_TISNUM);
+ dasm_put(Dst, 5393, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5338);
+ dasm_put(Dst, 5411);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 5429);
}
- dasm_put(Dst, 5359);
- } else {
- dasm_put(Dst, 5384, LJ_TISNUM);
- if (LJ_DUALNUM) {
- dasm_put(Dst, 5402);
- } else {
- dasm_put(Dst, 5420);
- }
- dasm_put(Dst, 5425);
+ dasm_put(Dst, 5434);
if (cmov) {
- dasm_put(Dst, 5435);
+ dasm_put(Dst, 5444);
} else {
- dasm_put(Dst, 5443);
+ dasm_put(Dst, 5452);
}
- dasm_put(Dst, 5376);
+ dasm_put(Dst, 5385);
}
- dasm_put(Dst, 5464, LJ_TISNUM);
+ dasm_put(Dst, 5473, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5477, LJ_TISNUM);
+ dasm_put(Dst, 5486, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 4789);
+ dasm_put(Dst, 4798);
} else {
- dasm_put(Dst, 4795);
+ dasm_put(Dst, 4804);
}
- dasm_put(Dst, 5306);
+ dasm_put(Dst, 5315);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 5317, LJ_TISNUM);
+ dasm_put(Dst, 5326, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5338);
+ dasm_put(Dst, 5347);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5527);
+ dasm_put(Dst, 5536);
} else {
- dasm_put(Dst, 5384, LJ_TISNUM);
+ dasm_put(Dst, 5393, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5402);
+ dasm_put(Dst, 5411);
} else {
- dasm_put(Dst, 5420);
+ dasm_put(Dst, 5429);
}
- dasm_put(Dst, 5425);
+ dasm_put(Dst, 5434);
if (cmov) {
- dasm_put(Dst, 5552);
+ dasm_put(Dst, 5561);
} else {
- dasm_put(Dst, 5560);
+ dasm_put(Dst, 5569);
}
- dasm_put(Dst, 5376);
+ dasm_put(Dst, 5385);
}
if (!sse) {
- dasm_put(Dst, 5581);
+ dasm_put(Dst, 5590);
}
- dasm_put(Dst, 5590, 1+1, LJ_TSTR);
+ dasm_put(Dst, 5599, 1+1, LJ_TSTR);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5612, Dt5(->len));
+ dasm_put(Dst, 5621, Dt5(->len));
} else if (sse) {
- dasm_put(Dst, 5620, Dt5(->len));
+ dasm_put(Dst, 5629, Dt5(->len));
} else {
- dasm_put(Dst, 5631, Dt5(->len));
+ dasm_put(Dst, 5640, Dt5(->len));
}
- dasm_put(Dst, 5639, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
+ dasm_put(Dst, 5648, 1+1, LJ_TSTR, Dt5(->len), Dt5([1]));
if (LJ_DUALNUM) {
- dasm_put(Dst, 3969);
+ dasm_put(Dst, 3978);
} else if (sse) {
- dasm_put(Dst, 5677);
+ dasm_put(Dst, 5686);
} else {
- dasm_put(Dst, 5687);
+ dasm_put(Dst, 5696);
}
- dasm_put(Dst, 5700, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
+ dasm_put(Dst, 5709, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5731);
+ dasm_put(Dst, 5740);
} else if (sse) {
- dasm_put(Dst, 5754);
+ dasm_put(Dst, 5763);
} else {
- dasm_put(Dst, 5780);
+ dasm_put(Dst, 5789);
}
- dasm_put(Dst, 5804, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
+ dasm_put(Dst, 5813, Dt1(->base), Dt1(->base), LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), 1+2, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 5907);
+ dasm_put(Dst, 5916);
} else if (sse) {
- dasm_put(Dst, 5919);
+ dasm_put(Dst, 5928);
} else {
- dasm_put(Dst, 5934);
+ dasm_put(Dst, 5943);
}
- dasm_put(Dst, 5946, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 5955, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 2537);
+ dasm_put(Dst, 2546);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
- dasm_put(Dst, 5963, Dt5(->len));
+ dasm_put(Dst, 5972, Dt5(->len));
if (LJ_DUALNUM) {
- dasm_put(Dst, 5973);
+ dasm_put(Dst, 5982);
} else if (sse) {
- dasm_put(Dst, 5977);
+ dasm_put(Dst, 5986);
} else {
- dasm_put(Dst, 5984);
+ dasm_put(Dst, 5993);
}
- dasm_put(Dst, 5996, sizeof(GCstr)-1);
- dasm_put(Dst, 6071, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
- dasm_put(Dst, 6130, LJ_TSTR, LJ_TISNUM);
+ dasm_put(Dst, 6005, sizeof(GCstr)-1);
+ dasm_put(Dst, 6080, 2+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold));
+ dasm_put(Dst, 6139, LJ_TSTR, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6147);
+ dasm_put(Dst, 6156);
} else if (sse) {
- dasm_put(Dst, 6155);
+ dasm_put(Dst, 6164);
} else {
- dasm_put(Dst, 6166);
+ dasm_put(Dst, 6175);
}
- dasm_put(Dst, 6182, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6247, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 6310, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
- dasm_put(Dst, 6381, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
- dasm_put(Dst, 6466, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
- dasm_put(Dst, 6536, 1+1, LJ_TTAB);
+ dasm_put(Dst, 6191, Dt5(->len), DISPATCH_GL(tmpbuf.sz), Dt5([1]), DISPATCH_GL(tmpbuf.buf), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 6256, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 6319, 1+1, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz));
+ dasm_put(Dst, 6390, sizeof(GCstr), DISPATCH_GL(tmpbuf.buf), 1+1);
+ dasm_put(Dst, 6475, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), sizeof(GCstr), DISPATCH_GL(tmpbuf.buf));
+ dasm_put(Dst, 6545, 1+1, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6604);
+ dasm_put(Dst, 6613);
} else if (sse) {
- dasm_put(Dst, 6611);
+ dasm_put(Dst, 6620);
} else {
- dasm_put(Dst, 6621);
+ dasm_put(Dst, 6630);
}
- dasm_put(Dst, 6632, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 6641, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6648);
+ dasm_put(Dst, 6657);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 6694);
+ dasm_put(Dst, 6703);
}
dasm_put(Dst, 111);
if (LJ_DUALNUM || sse) {
if (!sse) {
- dasm_put(Dst, 6712);
+ dasm_put(Dst, 6721);
}
- dasm_put(Dst, 6716);
+ dasm_put(Dst, 6725);
} else {
- dasm_put(Dst, 6624);
+ dasm_put(Dst, 6633);
}
- dasm_put(Dst, 6721, 1+1);
+ dasm_put(Dst, 6730, 1+1);
if (sse) {
- dasm_put(Dst, 6732);
+ dasm_put(Dst, 6741);
} else {
- dasm_put(Dst, 6747);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
- if (LJ_DUALNUM) {
dasm_put(Dst, 6756);
- } else {
- dasm_put(Dst, 2264);
}
- if (sse) {
- dasm_put(Dst, 6773);
- } else {
- dasm_put(Dst, 6788);
- }
- dasm_put(Dst, 6801, LJ_TISNUM);
+ dasm_put(Dst, 2250, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6826);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 6846);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6851);
+ dasm_put(Dst, 6782);
} else {
- dasm_put(Dst, 6868);
+ dasm_put(Dst, 6797);
}
- dasm_put(Dst, 6881, 1+1);
- if (sse) {
- dasm_put(Dst, 6732);
- } else {
- dasm_put(Dst, 6747);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
+ dasm_put(Dst, 6810, LJ_TISNUM);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 6835);
+ } else {
+ dasm_put(Dst, 6855);
+ }
+ if (sse) {
+ dasm_put(Dst, 6860);
+ } else {
+ dasm_put(Dst, 6877);
+ }
+ dasm_put(Dst, 6890, 1+1);
+ if (sse) {
+ dasm_put(Dst, 6741);
+ } else {
dasm_put(Dst, 6756);
- } else {
- dasm_put(Dst, 2264);
}
- if (sse) {
- dasm_put(Dst, 6773);
- } else {
- dasm_put(Dst, 6788);
- }
- dasm_put(Dst, 6801, LJ_TISNUM);
+ dasm_put(Dst, 2250, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6899);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 6846);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6919);
+ dasm_put(Dst, 6782);
} else {
- dasm_put(Dst, 6936);
+ dasm_put(Dst, 6797);
}
- dasm_put(Dst, 6949, 1+1);
- if (sse) {
- dasm_put(Dst, 6732);
- } else {
- dasm_put(Dst, 6747);
- }
- dasm_put(Dst, 2241, LJ_TISNUM);
+ dasm_put(Dst, 6810, LJ_TISNUM);
if (LJ_DUALNUM) {
+ dasm_put(Dst, 6908);
+ } else {
+ dasm_put(Dst, 6855);
+ }
+ if (sse) {
+ dasm_put(Dst, 6928);
+ } else {
+ dasm_put(Dst, 6945);
+ }
+ dasm_put(Dst, 6958, 1+1);
+ if (sse) {
+ dasm_put(Dst, 6741);
+ } else {
dasm_put(Dst, 6756);
+ }
+ dasm_put(Dst, 2250, LJ_TISNUM);
+ if (LJ_DUALNUM) {
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6773);
+ dasm_put(Dst, 6782);
} else {
- dasm_put(Dst, 6788);
+ dasm_put(Dst, 6797);
}
- dasm_put(Dst, 6801, LJ_TISNUM);
+ dasm_put(Dst, 6810, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6967);
+ dasm_put(Dst, 6976);
} else {
- dasm_put(Dst, 6846);
+ dasm_put(Dst, 6855);
}
if (sse) {
- dasm_put(Dst, 6987);
+ dasm_put(Dst, 6996);
} else {
- dasm_put(Dst, 7004);
+ dasm_put(Dst, 7013);
}
- dasm_put(Dst, 7017, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7026, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7061, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7070, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7085);
+ dasm_put(Dst, 7094);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6716);
+ dasm_put(Dst, 6725);
} else if (sse) {
- dasm_put(Dst, 7091);
+ dasm_put(Dst, 7100);
} else {
- dasm_put(Dst, 7103);
+ dasm_put(Dst, 7112);
}
- dasm_put(Dst, 7116);
+ dasm_put(Dst, 7125);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7127, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7136, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7143, LJ_TISNUM);
+ dasm_put(Dst, 7152, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7158, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7167, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7230, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7239, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7294);
+ dasm_put(Dst, 7303);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7301, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7310, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7143, LJ_TISNUM);
+ dasm_put(Dst, 7152, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7317, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7326, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7389, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7398, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7453);
+ dasm_put(Dst, 7462);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7461, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7470, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7143, LJ_TISNUM);
+ dasm_put(Dst, 7152, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7477, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7486, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7549, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7558, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7613);
+ dasm_put(Dst, 7622);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7621, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7630, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7143, LJ_TISNUM);
+ dasm_put(Dst, 7152, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7637, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7646, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7709, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7718, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7773);
+ dasm_put(Dst, 7782);
if (LJ_DUALNUM) {
- dasm_put(Dst, 7780, 1+1, LJ_TISNUM);
+ dasm_put(Dst, 7789, 1+1, LJ_TISNUM);
if (LJ_DUALNUM) {
- dasm_put(Dst, 6756);
+ dasm_put(Dst, 6765);
} else {
- dasm_put(Dst, 2264);
+ dasm_put(Dst, 2273);
}
if (sse) {
- dasm_put(Dst, 6665);
+ dasm_put(Dst, 6674);
} else {
- dasm_put(Dst, 7040);
+ dasm_put(Dst, 7049);
}
- dasm_put(Dst, 7143, LJ_TISNUM);
+ dasm_put(Dst, 7152, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 7796, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7805, 2+1, LJ_TISNUM, LJ_TISNUM);
} else {
- dasm_put(Dst, 7868, 2+1, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 7877, 2+1, LJ_TISNUM, LJ_TISNUM);
}
- dasm_put(Dst, 7932, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
- dasm_put(Dst, 8008, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
- dasm_put(Dst, 8132, Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 7941, 1+2, 1+1, Dt1(->base), 8*LUA_MINSTACK, Dt1(->top), Dt1(->maxstack), Dt8(->f), Dt1(->base));
+ dasm_put(Dst, 8017, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK, Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 8141, Dt1(->top), Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 8170, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
+ dasm_put(Dst, 8179, DISPATCH_GL(hookmask), HOOK_VMEVENT, HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount));
#endif
- dasm_put(Dst, 8201, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
- dasm_put(Dst, 8252, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
+ dasm_put(Dst, 8210, DISPATCH_GL(hookmask), HOOK_ACTIVE, DISPATCH_GL(hookmask), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE);
+ dasm_put(Dst, 8261, Dt1(->base), Dt1(->base), GG_DISP2STATIC);
#if LJ_HASJIT
- dasm_put(Dst, 8318, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
+ dasm_put(Dst, 8327, Dt7(->pc), PC2PROTO(framesize), Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L));
#endif
- dasm_put(Dst, 8364);
+ dasm_put(Dst, 8373);
#if LJ_HASJIT
- dasm_put(Dst, 8196);
+ dasm_put(Dst, 8205);
#endif
- dasm_put(Dst, 8371);
+ dasm_put(Dst, 8380);
#if LJ_HASJIT
- dasm_put(Dst, 8374);
+ dasm_put(Dst, 8383);
#endif
- dasm_put(Dst, 8384, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 8393, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 8418);
+ dasm_put(Dst, 8427);
#endif
- dasm_put(Dst, 8423, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 8432, Dt1(->base), Dt1(->top));
#if LJ_HASJIT
- dasm_put(Dst, 8452, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
+ dasm_put(Dst, 8461, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), DISPATCH_GL(jit_L), Dt1(->base), GG_DISP2J, Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC);
#endif
- dasm_put(Dst, 8595);
+ dasm_put(Dst, 8604);
#if LJ_HASJIT
- dasm_put(Dst, 8598, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
+ dasm_put(Dst, 8607, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF);
#endif
- dasm_put(Dst, 8676);
+ dasm_put(Dst, 8685);
if (!sse) {
- dasm_put(Dst, 8679);
+ dasm_put(Dst, 8688);
}
- dasm_put(Dst, 8724);
+ dasm_put(Dst, 8733);
if (!sse) {
- dasm_put(Dst, 8826);
+ dasm_put(Dst, 8835);
}
- dasm_put(Dst, 8871);
+ dasm_put(Dst, 8880);
if (!sse) {
- dasm_put(Dst, 8973);
+ dasm_put(Dst, 8982);
}
- dasm_put(Dst, 9012);
+ dasm_put(Dst, 9021);
if (sse) {
- dasm_put(Dst, 9117);
+ dasm_put(Dst, 9126);
} else {
- dasm_put(Dst, 9247);
+ dasm_put(Dst, 9256);
}
- dasm_put(Dst, 9294);
+ dasm_put(Dst, 9303);
if (!sse) {
- dasm_put(Dst, 9368);
+ dasm_put(Dst, 9377);
if (cmov) {
- dasm_put(Dst, 9379);
+ dasm_put(Dst, 9388);
} else {
- dasm_put(Dst, 9383);
+ dasm_put(Dst, 9392);
}
- dasm_put(Dst, 9390);
- dasm_put(Dst, 9464);
- dasm_put(Dst, 9564);
+ dasm_put(Dst, 9399);
+ dasm_put(Dst, 9473);
+ dasm_put(Dst, 9573);
if (cmov) {
- dasm_put(Dst, 9567);
+ dasm_put(Dst, 9576);
} else {
- dasm_put(Dst, 9571);
+ dasm_put(Dst, 9580);
}
- dasm_put(Dst, 9578);
+ dasm_put(Dst, 9587);
if (cmov) {
- dasm_put(Dst, 9379);
+ dasm_put(Dst, 9388);
} else {
- dasm_put(Dst, 9383);
+ dasm_put(Dst, 9392);
}
- dasm_put(Dst, 9596);
+ dasm_put(Dst, 9605);
} else {
- dasm_put(Dst, 9675);
+ dasm_put(Dst, 9684);
}
- dasm_put(Dst, 9678);
- dasm_put(Dst, 9763);
- dasm_put(Dst, 9893);
- dasm_put(Dst, 10099);
+ dasm_put(Dst, 9687);
+ dasm_put(Dst, 9772);
+ dasm_put(Dst, 9902);
+ dasm_put(Dst, 10108);
#if LJ_HASJIT
if (sse) {
- dasm_put(Dst, 10106);
- dasm_put(Dst, 10163);
- dasm_put(Dst, 10254);
+ dasm_put(Dst, 10115);
+ dasm_put(Dst, 10172);
+ dasm_put(Dst, 10263);
} else {
- dasm_put(Dst, 10296);
- dasm_put(Dst, 10388);
+ dasm_put(Dst, 10305);
+ dasm_put(Dst, 10397);
}
- dasm_put(Dst, 10434);
+ dasm_put(Dst, 10443);
#endif
- dasm_put(Dst, 10438);
+ dasm_put(Dst, 10447);
if (sse) {
- dasm_put(Dst, 10441);
- dasm_put(Dst, 10546);
- dasm_put(Dst, 10629);
+ dasm_put(Dst, 10450);
+ dasm_put(Dst, 10555);
+ dasm_put(Dst, 10638);
} else {
- dasm_put(Dst, 10701);
- dasm_put(Dst, 10784);
+ dasm_put(Dst, 10710);
+ dasm_put(Dst, 10793);
if (cmov) {
- dasm_put(Dst, 10839);
+ dasm_put(Dst, 10848);
} else {
- dasm_put(Dst, 10858);
+ dasm_put(Dst, 10867);
}
- dasm_put(Dst, 10434);
+ dasm_put(Dst, 10443);
}
- dasm_put(Dst, 10899);
+ dasm_put(Dst, 10908);
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 10436);
+ dasm_put(Dst, 10445);
#endif
- dasm_put(Dst, 10955);
+ dasm_put(Dst, 10964);
#if LJ_HASFFI
-#define DtE(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
- dasm_put(Dst, 10959, DtE(->spadj));
-#if LJ_TARGET_WINDOWS
- dasm_put(Dst, 10969, DtE(->spadj));
+#define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V)
+ dasm_put(Dst, 10968, GG_G2DISP, Dt2(->ctype_state), DtE(->cb.slot), CFRAME_SIZE+16, DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.stack), CFRAME_SIZE+12, CFRAME_SIZE+8, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc));
#endif
- dasm_put(Dst, 10973, DtE(->nsp), offsetof(CCallState, stack), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->func), DtE(->gpr[0]), DtE(->gpr[1]), DtE(->resx87), DtE(->fpr[0].d[0]));
- dasm_put(Dst, 11043, DtE(->fpr[0].f[0]));
-#if LJ_TARGET_WINDOWS
- dasm_put(Dst, 11049, DtE(->spadj));
+ dasm_put(Dst, 11078);
+#if LJ_HASFFI
+ dasm_put(Dst, 11081, DISPATCH_GL(ctype_state), DtE(->L), Dt1(->base), Dt1(->top), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.gpr[2]), DtE(->cb.fpr[0].d), DtE(->cb.fpr[0].f), Dt1(->top));
#endif
- dasm_put(Dst, 11053);
+ dasm_put(Dst, 11170);
+#if LJ_HASFFI
+#define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V)
+ dasm_put(Dst, 11173, DtF(->spadj));
+#if LJ_TARGET_WINDOWS
+ dasm_put(Dst, 11183, DtF(->spadj));
+#endif
+ dasm_put(Dst, 11187, DtF(->nsp), offsetof(CCallState, stack), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->resx87), DtF(->fpr[0].d[0]));
+ dasm_put(Dst, 11257, DtF(->fpr[0].f[0]));
+#if LJ_TARGET_WINDOWS
+ dasm_put(Dst, 11263, DtF(->spadj));
+#endif
+ dasm_put(Dst, 11267);
#endif
}
@@ -1995,7 +2030,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
{
int vk = 0;
- dasm_put(Dst, 11060, defop);
+ dasm_put(Dst, 11274, defop);
switch (op) {
@@ -2006,303 +2041,303 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 11062, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11276, LJ_TISNUM, LJ_TISNUM);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11092);
+ dasm_put(Dst, 11306);
break;
case BC_ISGE:
- dasm_put(Dst, 11097);
+ dasm_put(Dst, 11311);
break;
case BC_ISLE:
- dasm_put(Dst, 11102);
+ dasm_put(Dst, 11316);
break;
case BC_ISGT:
- dasm_put(Dst, 11107);
+ dasm_put(Dst, 11321);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11112, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 11326, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11165);
+ dasm_put(Dst, 11379);
} else {
- dasm_put(Dst, 11176);
+ dasm_put(Dst, 11390);
}
- dasm_put(Dst, 11187);
+ dasm_put(Dst, 11401);
if (sse) {
- dasm_put(Dst, 11194);
+ dasm_put(Dst, 11408);
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11214);
+ dasm_put(Dst, 11428);
break;
case BC_ISGE:
- dasm_put(Dst, 11219);
+ dasm_put(Dst, 11433);
break;
case BC_ISLE:
- dasm_put(Dst, 11224);
+ dasm_put(Dst, 11438);
break;
case BC_ISGT:
- dasm_put(Dst, 11229);
+ dasm_put(Dst, 11443);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11234);
+ dasm_put(Dst, 11448);
} else {
- dasm_put(Dst, 11239);
+ dasm_put(Dst, 11453);
}
} else {
- dasm_put(Dst, 11247, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11461, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 11268);
+ dasm_put(Dst, 11482);
} else {
- dasm_put(Dst, 11289);
+ dasm_put(Dst, 11503);
if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3953);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3959);
}
}
if (LJ_DUALNUM) {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11214);
+ dasm_put(Dst, 11428);
break;
case BC_ISGE:
- dasm_put(Dst, 11219);
+ dasm_put(Dst, 11433);
break;
case BC_ISLE:
- dasm_put(Dst, 11224);
+ dasm_put(Dst, 11438);
break;
case BC_ISGT:
- dasm_put(Dst, 11229);
+ dasm_put(Dst, 11443);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11234);
+ dasm_put(Dst, 11448);
} else {
switch (op) {
case BC_ISLT:
- dasm_put(Dst, 11305);
+ dasm_put(Dst, 752);
break;
case BC_ISGE:
- dasm_put(Dst, 11310);
+ dasm_put(Dst, 11519);
break;
case BC_ISLE:
- dasm_put(Dst, 11315);
+ dasm_put(Dst, 11524);
break;
case BC_ISGT:
- dasm_put(Dst, 11320);
+ dasm_put(Dst, 11529);
break;
default: break; /* Shut up GCC. */
}
- dasm_put(Dst, 11325, -BCBIAS_J*4);
+ dasm_put(Dst, 11534, -BCBIAS_J*4);
}
break;
case BC_ISEQV: case BC_ISNEV:
vk = op == BC_ISEQV;
- dasm_put(Dst, 11356);
+ dasm_put(Dst, 11565);
if (LJ_DUALNUM) {
- dasm_put(Dst, 11364, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11573, LJ_TISNUM, LJ_TISNUM);
if (vk) {
- dasm_put(Dst, 11389);
+ dasm_put(Dst, 11598);
} else {
- dasm_put(Dst, 11394);
+ dasm_put(Dst, 11603);
}
- dasm_put(Dst, 11399, -BCBIAS_J*4, LJ_TISNUM);
+ dasm_put(Dst, 11608, -BCBIAS_J*4, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 11450);
+ dasm_put(Dst, 11659);
} else {
- dasm_put(Dst, 11457);
+ dasm_put(Dst, 11666);
}
- dasm_put(Dst, 11461);
+ dasm_put(Dst, 11670);
if (sse) {
- dasm_put(Dst, 11472);
+ dasm_put(Dst, 11681);
} else {
- dasm_put(Dst, 11484);
+ dasm_put(Dst, 11693);
}
- dasm_put(Dst, 11491);
+ dasm_put(Dst, 11700);
} else {
- dasm_put(Dst, 11496, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 11705, LJ_TISNUM, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 11515);
+ dasm_put(Dst, 11724);
} else {
- dasm_put(Dst, 11533);
+ dasm_put(Dst, 11742);
if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3953);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3959);
}
}
iseqne_fp:
if (vk) {
- dasm_put(Dst, 11546);
+ dasm_put(Dst, 11755);
} else {
- dasm_put(Dst, 11555);
+ dasm_put(Dst, 11764);
}
iseqne_end:
if (vk) {
- dasm_put(Dst, 11564, -BCBIAS_J*4);
+ dasm_put(Dst, 11773, -BCBIAS_J*4);
if (!LJ_HASFFI) {
- dasm_put(Dst, 4844);
+ dasm_put(Dst, 4853);
}
} else {
if (!LJ_HASFFI) {
- dasm_put(Dst, 4844);
+ dasm_put(Dst, 4853);
}
- dasm_put(Dst, 11579, -BCBIAS_J*4);
+ dasm_put(Dst, 11788, -BCBIAS_J*4);
}
if (LJ_DUALNUM && (op == BC_ISEQV || op == BC_ISNEV ||
op == BC_ISEQN || op == BC_ISNEN)) {
- dasm_put(Dst, 11594);
+ dasm_put(Dst, 11803);
} else {
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
}
if (op == BC_ISEQV || op == BC_ISNEV) {
- dasm_put(Dst, 11599);
+ dasm_put(Dst, 11808);
if (LJ_HASFFI) {
- dasm_put(Dst, 11602, LJ_TCDATA, LJ_TCDATA);
+ dasm_put(Dst, 11811, LJ_TCDATA, LJ_TCDATA);
}
- dasm_put(Dst, 11621, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<len), LJ_TISNUM);
+ dasm_put(Dst, 12436, Dt5(->len), LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 12241, Dt5(->len));
+ dasm_put(Dst, 12450, Dt5(->len));
} else {
- dasm_put(Dst, 12259, Dt5(->len));
+ dasm_put(Dst, 12468, Dt5(->len));
}
- dasm_put(Dst, 12268, LJ_TTAB);
+ dasm_put(Dst, 12477, LJ_TTAB);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 12302, Dt6(->metatable));
+ dasm_put(Dst, 12511, Dt6(->metatable));
#endif
- dasm_put(Dst, 12316);
+ dasm_put(Dst, 12525);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 12325);
+ dasm_put(Dst, 12534);
} else {
- dasm_put(Dst, 12331);
+ dasm_put(Dst, 12540);
}
- dasm_put(Dst, 12338);
+ dasm_put(Dst, 12547);
#ifdef LUAJIT_ENABLE_LUA52COMPAT
- dasm_put(Dst, 12351, Dt6(->nomm), 1<nomm), 1<base), Dt1(->base));
+ dasm_put(Dst, 13303, Dt1(->base), Dt1(->base));
break;
/* -- Constant ops ------------------------------------------------------ */
case BC_KSTR:
- dasm_put(Dst, 13188, LJ_TSTR);
+ dasm_put(Dst, 13397, LJ_TSTR);
break;
case BC_KCDATA:
#if LJ_HASFFI
- dasm_put(Dst, 13188, LJ_TCDATA);
+ dasm_put(Dst, 13397, LJ_TCDATA);
#endif
break;
case BC_KSHORT:
if (LJ_DUALNUM) {
- dasm_put(Dst, 13221, LJ_TISNUM);
+ dasm_put(Dst, 13430, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 13233);
+ dasm_put(Dst, 13442);
} else {
- dasm_put(Dst, 13248);
+ dasm_put(Dst, 13457);
}
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
break;
case BC_KNUM:
if (sse) {
- dasm_put(Dst, 13256);
+ dasm_put(Dst, 13465);
} else {
- dasm_put(Dst, 13269);
+ dasm_put(Dst, 13478);
}
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
break;
case BC_KPRI:
- dasm_put(Dst, 13276);
+ dasm_put(Dst, 13485);
break;
case BC_KNIL:
- dasm_put(Dst, 13302, LJ_TNIL);
+ dasm_put(Dst, 13511, LJ_TNIL);
break;
/* -- Upvalue and function ops ------------------------------------------ */
case BC_UGET:
- dasm_put(Dst, 13348, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 13557, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_USETV:
#define TV2MARKOFS \
((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
- dasm_put(Dst, 13392, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
- dasm_put(Dst, 13482);
+ dasm_put(Dst, 13601, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
+ dasm_put(Dst, 13691);
break;
#undef TV2MARKOFS
case BC_USETS:
- dasm_put(Dst, 13494, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
+ dasm_put(Dst, 13703, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
break;
case BC_USETN:
- dasm_put(Dst, 13585);
+ dasm_put(Dst, 13794);
if (sse) {
- dasm_put(Dst, 13590);
+ dasm_put(Dst, 13799);
} else {
- dasm_put(Dst, 11847);
+ dasm_put(Dst, 12056);
}
- dasm_put(Dst, 13597, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 13806, offsetof(GCfuncL, uvptr), DtA(->v));
if (sse) {
- dasm_put(Dst, 13606);
+ dasm_put(Dst, 13815);
} else {
- dasm_put(Dst, 13612);
+ dasm_put(Dst, 13821);
}
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
break;
case BC_USETP:
- dasm_put(Dst, 13615, offsetof(GCfuncL, uvptr), DtA(->v));
+ dasm_put(Dst, 13824, offsetof(GCfuncL, uvptr), DtA(->v));
break;
case BC_UCLO:
- dasm_put(Dst, 13652, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 13861, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
break;
case BC_FNEW:
- dasm_put(Dst, 13706, Dt1(->base), Dt1(->base), LJ_TFUNC);
+ dasm_put(Dst, 13915, Dt1(->base), Dt1(->base), LJ_TFUNC);
break;
/* -- Table ops --------------------------------------------------------- */
case BC_TNEW:
- dasm_put(Dst, 13777, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 13986, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
break;
case BC_TDUP:
- dasm_put(Dst, 13903, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
+ dasm_put(Dst, 14112, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
break;
case BC_GGET:
- dasm_put(Dst, 13995, Dt7(->env));
+ dasm_put(Dst, 14204, Dt7(->env));
break;
case BC_GSET:
- dasm_put(Dst, 14013, Dt7(->env));
+ dasm_put(Dst, 14222, Dt7(->env));
break;
case BC_TGETV:
- dasm_put(Dst, 14031, LJ_TTAB);
+ dasm_put(Dst, 14240, LJ_TTAB);
if (LJ_DUALNUM) {
- dasm_put(Dst, 14054, LJ_TISNUM);
+ dasm_put(Dst, 14263, LJ_TISNUM);
} else {
- dasm_put(Dst, 14068, LJ_TISNUM);
+ dasm_put(Dst, 14277, LJ_TISNUM);
if (sse) {
- dasm_put(Dst, 14079);
+ dasm_put(Dst, 14288);
} else {
- dasm_put(Dst, 14100);
+ dasm_put(Dst, 14309);
if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3953);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3959);
}
- dasm_put(Dst, 2680);
+ dasm_put(Dst, 2689);
}
- dasm_put(Dst, 14110);
+ dasm_put(Dst, 14319);
}
- dasm_put(Dst, 14115, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 14316, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 14525, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 14739, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETS:
- dasm_put(Dst, 14671, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
- dasm_put(Dst, 14746, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
- dasm_put(Dst, 14838, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 14880, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
+ dasm_put(Dst, 14955, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<next));
+ dasm_put(Dst, 15047, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETB:
- dasm_put(Dst, 14934, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
- dasm_put(Dst, 15032, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 15143, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
+ dasm_put(Dst, 15241, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
case BC_TSETM:
- dasm_put(Dst, 15078, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
- dasm_put(Dst, 15227, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
+ dasm_put(Dst, 15287, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base));
+ dasm_put(Dst, 15436, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
break;
/* -- Calls and vararg handling ----------------------------------------- */
case BC_CALL: case BC_CALLM:
- dasm_put(Dst, 12371);
+ dasm_put(Dst, 12580);
if (op == BC_CALLM) {
- dasm_put(Dst, 15245);
+ dasm_put(Dst, 15454);
}
- dasm_put(Dst, 15250, LJ_TFUNC, Dt7(->pc));
+ dasm_put(Dst, 15459, LJ_TFUNC, Dt7(->pc));
break;
case BC_CALLMT:
- dasm_put(Dst, 15245);
+ dasm_put(Dst, 15454);
break;
case BC_CALLT:
- dasm_put(Dst, 15291, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
- dasm_put(Dst, 15409, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
+ dasm_put(Dst, 15500, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
+ dasm_put(Dst, 15618, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG);
break;
case BC_ITERC:
- dasm_put(Dst, 15479, LJ_TFUNC, 2+1, Dt7(->pc));
+ dasm_put(Dst, 15688, LJ_TFUNC, 2+1, Dt7(->pc));
break;
case BC_ITERN:
#if LJ_HASJIT
#endif
- dasm_put(Dst, 15559, Dt6(->asize), Dt6(->array), LJ_TNIL);
+ dasm_put(Dst, 15768, Dt6(->asize), Dt6(->array), LJ_TNIL);
if (LJ_DUALNUM) {
- dasm_put(Dst, 12232, LJ_TISNUM);
+ dasm_put(Dst, 12441, LJ_TISNUM);
} else if (sse) {
- dasm_put(Dst, 12325);
+ dasm_put(Dst, 12534);
} else {
- dasm_put(Dst, 15605);
+ dasm_put(Dst, 15814);
}
- dasm_put(Dst, 15611);
+ dasm_put(Dst, 15820);
if (LJ_DUALNUM) {
} else if (sse) {
- dasm_put(Dst, 12197);
+ dasm_put(Dst, 12406);
} else {
- dasm_put(Dst, 12209);
+ dasm_put(Dst, 12418);
}
- dasm_put(Dst, 15630, -BCBIAS_J*4);
+ dasm_put(Dst, 15839, -BCBIAS_J*4);
if (!LJ_DUALNUM && !sse) {
- dasm_put(Dst, 15681);
+ dasm_put(Dst, 15890);
}
- dasm_put(Dst, 15687, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
- dasm_put(Dst, 15762);
+ dasm_put(Dst, 15896, Dt6(->hmask), sizeof(Node), Dt6(->node), DtB(->val.it), LJ_TNIL, DtB(->key.gcr), DtB(->key.it), DtB(->val.gcr), DtB(->val.it));
+ dasm_put(Dst, 15971);
break;
case BC_ISNEXT:
- dasm_put(Dst, 15770, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
+ dasm_put(Dst, 15979, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, BC_JMP, -BCBIAS_J*4, BC_ITERC);
break;
case BC_VARG:
- dasm_put(Dst, 15869, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
- dasm_put(Dst, 16033, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 16078, (8+FRAME_VARG), LJ_TNIL, Dt1(->maxstack));
+ dasm_put(Dst, 16242, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
break;
/* -- Returns ----------------------------------------------------------- */
case BC_RETM:
- dasm_put(Dst, 15245);
+ dasm_put(Dst, 15454);
break;
case BC_RET: case BC_RET0: case BC_RET1:
if (op != BC_RET0) {
- dasm_put(Dst, 16104);
+ dasm_put(Dst, 16313);
}
- dasm_put(Dst, 16108, FRAME_TYPE);
+ dasm_put(Dst, 16317, FRAME_TYPE);
switch (op) {
case BC_RET:
- dasm_put(Dst, 16127);
+ dasm_put(Dst, 16336);
break;
case BC_RET1:
- dasm_put(Dst, 16185);
+ dasm_put(Dst, 16394);
/* fallthrough */
case BC_RET0:
- dasm_put(Dst, 16201);
+ dasm_put(Dst, 16410);
default:
break;
}
- dasm_put(Dst, 16212, Dt7(->pc), PC2PROTO(k));
+ dasm_put(Dst, 16421, Dt7(->pc), PC2PROTO(k));
if (op == BC_RET) {
- dasm_put(Dst, 16254, LJ_TNIL);
+ dasm_put(Dst, 16463, LJ_TNIL);
} else {
- dasm_put(Dst, 16263, LJ_TNIL);
+ dasm_put(Dst, 16472, LJ_TNIL);
}
- dasm_put(Dst, 16270, -FRAME_VARG, FRAME_TYPEP);
+ dasm_put(Dst, 16479, -FRAME_VARG, FRAME_TYPEP);
if (op != BC_RET0) {
- dasm_put(Dst, 16294);
+ dasm_put(Dst, 16503);
}
- dasm_put(Dst, 4928);
+ dasm_put(Dst, 4937);
break;
/* -- Loops and branches ------------------------------------------------ */
@@ -2932,7 +2967,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORL:
#if LJ_HASJIT
- dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -2944,111 +2979,111 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FORI:
case BC_IFORL:
vk = (op == BC_IFORL || op == BC_JFORL);
- dasm_put(Dst, 16319);
+ dasm_put(Dst, 16528);
if (LJ_DUALNUM) {
- dasm_put(Dst, 16323, LJ_TISNUM);
+ dasm_put(Dst, 16532, LJ_TISNUM);
if (!vk) {
- dasm_put(Dst, 16333, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 16542, LJ_TISNUM, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 16362, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 16571, LJ_TISNUM, LJ_TISNUM);
#endif
- dasm_put(Dst, 16381);
+ dasm_put(Dst, 16590);
}
- dasm_put(Dst, 16400, LJ_TISNUM);
+ dasm_put(Dst, 16609, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 16411, -BCBIAS_J*4);
+ dasm_put(Dst, 16620, -BCBIAS_J*4);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 16425, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 16634, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 16443, -BCBIAS_J*4);
+ dasm_put(Dst, 16652, -BCBIAS_J*4);
} else {
- dasm_put(Dst, 16435, BC_JLOOP);
+ dasm_put(Dst, 16644, BC_JLOOP);
}
- dasm_put(Dst, 16457);
+ dasm_put(Dst, 16666);
if (vk) {
- dasm_put(Dst, 16480);
+ dasm_put(Dst, 16689);
}
- dasm_put(Dst, 16400, LJ_TISNUM);
+ dasm_put(Dst, 16609, LJ_TISNUM);
if (op == BC_FORI) {
- dasm_put(Dst, 16489);
+ dasm_put(Dst, 16698);
} else if (op == BC_JFORI) {
- dasm_put(Dst, 16494, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 16703, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
- dasm_put(Dst, 16508);
+ dasm_put(Dst, 16717);
} else {
- dasm_put(Dst, 16504, BC_JLOOP);
+ dasm_put(Dst, 16713, BC_JLOOP);
}
- dasm_put(Dst, 16513);
+ dasm_put(Dst, 16722);
} else if (!vk) {
- dasm_put(Dst, 16520, LJ_TISNUM);
+ dasm_put(Dst, 16729, LJ_TISNUM);
}
if (!vk) {
- dasm_put(Dst, 16526, LJ_TISNUM);
+ dasm_put(Dst, 16735, LJ_TISNUM);
} else {
#ifdef LUA_USE_ASSERT
- dasm_put(Dst, 16540, LJ_TISNUM, LJ_TISNUM);
+ dasm_put(Dst, 16749, LJ_TISNUM, LJ_TISNUM);
#endif
}
- dasm_put(Dst, 16559);
+ dasm_put(Dst, 16768);
if (!vk) {
- dasm_put(Dst, 16563, LJ_TISNUM);
+ dasm_put(Dst, 16772, LJ_TISNUM);
}
if (sse) {
- dasm_put(Dst, 16572);
+ dasm_put(Dst, 16781);
if (vk) {
- dasm_put(Dst, 16584);
+ dasm_put(Dst, 16793);
} else {
- dasm_put(Dst, 16603);
+ dasm_put(Dst, 16812);
}
- dasm_put(Dst, 16608);
+ dasm_put(Dst, 16817);
} else {
- dasm_put(Dst, 16621);
+ dasm_put(Dst, 16830);
if (vk) {
- dasm_put(Dst, 16627);
+ dasm_put(Dst, 16836);
} else {
- dasm_put(Dst, 16643);
+ dasm_put(Dst, 16852);
}
- dasm_put(Dst, 16651);
+ dasm_put(Dst, 16860);
if (cmov) {
- dasm_put(Dst, 3944);
+ dasm_put(Dst, 3953);
} else {
- dasm_put(Dst, 3950);
+ dasm_put(Dst, 3959);
}
if (!cmov) {
- dasm_put(Dst, 16656);
+ dasm_put(Dst, 16865);
}
}
if (op == BC_FORI) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 16662);
+ dasm_put(Dst, 16871);
} else {
- dasm_put(Dst, 16667, -BCBIAS_J*4);
+ dasm_put(Dst, 16876, -BCBIAS_J*4);
}
} else if (op == BC_JFORI) {
- dasm_put(Dst, 16677, -BCBIAS_J*4, BC_JLOOP);
+ dasm_put(Dst, 16886, -BCBIAS_J*4, BC_JLOOP);
} else if (op == BC_IFORL) {
if (LJ_DUALNUM) {
- dasm_put(Dst, 16691);
+ dasm_put(Dst, 16900);
} else {
- dasm_put(Dst, 16696, -BCBIAS_J*4);
+ dasm_put(Dst, 16905, -BCBIAS_J*4);
}
} else {
- dasm_put(Dst, 16687, BC_JLOOP);
+ dasm_put(Dst, 16896, BC_JLOOP);
}
if (LJ_DUALNUM) {
- dasm_put(Dst, 11234);
+ dasm_put(Dst, 11448);
} else {
- dasm_put(Dst, 11975);
+ dasm_put(Dst, 12184);
}
if (sse) {
- dasm_put(Dst, 16706);
+ dasm_put(Dst, 16915);
}
break;
case BC_ITERL:
#if LJ_HASJIT
- dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
@@ -3057,33 +3092,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IITERL:
- dasm_put(Dst, 16717, LJ_TNIL);
+ dasm_put(Dst, 16926, LJ_TNIL);
if (op == BC_JITERL) {
- dasm_put(Dst, 16732, BC_JLOOP);
+ dasm_put(Dst, 16941, BC_JLOOP);
} else {
- dasm_put(Dst, 16746, -BCBIAS_J*4);
+ dasm_put(Dst, 16955, -BCBIAS_J*4);
}
- dasm_put(Dst, 11335);
+ dasm_put(Dst, 11544);
break;
case BC_LOOP:
#if LJ_HASJIT
- dasm_put(Dst, 16298, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
+ dasm_put(Dst, 16507, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP);
#endif
break;
case BC_ILOOP:
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
break;
case BC_JLOOP:
#if LJ_HASJIT
- dasm_put(Dst, 16762, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
+ dasm_put(Dst, 16971, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
#endif
break;
case BC_JMP:
- dasm_put(Dst, 16785, -BCBIAS_J*4);
+ dasm_put(Dst, 16994, -BCBIAS_J*4);
break;
/* -- Function headers -------------------------------------------------- */
@@ -3097,7 +3132,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
case BC_FUNCF:
#if LJ_HASJIT
- dasm_put(Dst, 16809, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
+ dasm_put(Dst, 17018, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL);
#endif
case BC_FUNCV: /* NYI: compiled vararg functions. */
break;
@@ -3107,47 +3142,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
break;
#endif
case BC_IFUNCF:
- dasm_put(Dst, 16830, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
+ dasm_put(Dst, 17039, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
if (op == BC_JFUNCF) {
- dasm_put(Dst, 16860, BC_JLOOP);
+ dasm_put(Dst, 17069, BC_JLOOP);
} else {
- dasm_put(Dst, 11337);
+ dasm_put(Dst, 11546);
}
- dasm_put(Dst, 16869, LJ_TNIL);
+ dasm_put(Dst, 17078, LJ_TNIL);
break;
case BC_JFUNCV:
#if !LJ_HASJIT
break;
#endif
- dasm_put(Dst, 10436);
+ dasm_put(Dst, 10445);
break; /* NYI: compiled vararg functions. */
case BC_IFUNCV:
- dasm_put(Dst, 16891, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
+ dasm_put(Dst, 17100, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
if (op == BC_JFUNCV) {
- dasm_put(Dst, 16860, BC_JLOOP);
+ dasm_put(Dst, 17069, BC_JLOOP);
} else {
- dasm_put(Dst, 16982, -4+PC2PROTO(k));
+ dasm_put(Dst, 17191, -4+PC2PROTO(k));
}
- dasm_put(Dst, 17004, LJ_TNIL);
+ dasm_put(Dst, 17213, LJ_TNIL);
break;
case BC_FUNCC:
case BC_FUNCCW:
- dasm_put(Dst, 17026, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
+ dasm_put(Dst, 17235, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
if (op == BC_FUNCC) {
- dasm_put(Dst, 17055);
+ dasm_put(Dst, 17264);
} else {
- dasm_put(Dst, 17059);
+ dasm_put(Dst, 17268);
}
- dasm_put(Dst, 17067, DISPATCH_GL(vmstate), ~LJ_VMST_C);
+ dasm_put(Dst, 17276, DISPATCH_GL(vmstate), ~LJ_VMST_C);
if (op == BC_FUNCC) {
- dasm_put(Dst, 17076);
+ dasm_put(Dst, 17285);
} else {
- dasm_put(Dst, 17080, DISPATCH_GL(wrapf));
+ dasm_put(Dst, 17289, DISPATCH_GL(wrapf));
}
- dasm_put(Dst, 17085, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
+ dasm_put(Dst, 17294, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
break;
/* ---------------------------------------------------------------------- */
@@ -3175,7 +3210,7 @@ static int build_backend(BuildCtx *ctx)
build_subroutines(ctx, cmov, sse);
- dasm_put(Dst, 17110);
+ dasm_put(Dst, 17319);
for (op = 0; op < BC__MAX; op++)
build_ins(ctx, (BCOp)op, op, cmov, sse);
diff --git a/src/lib_ffi.c b/src/lib_ffi.c
index af500118..850805e6 100644
--- a/src/lib_ffi.c
+++ b/src/lib_ffi.c
@@ -27,6 +27,7 @@
#include "lj_cconv.h"
#include "lj_carith.h"
#include "lj_ccall.h"
+#include "lj_ccallback.h"
#include "lj_clib.h"
#include "lj_ff.h"
#include "lj_lib.h"
@@ -384,6 +385,50 @@ LJLIB_CF(ffi_clib___gc)
#include "lj_libdef.h"
+/* -- Callback function metamethods --------------------------------------- */
+
+#define LJLIB_MODULE_ffi_callback
+
+static int ffi_callback_set(lua_State *L, GCfunc *fn)
+{
+ GCcdata *cd = ffi_checkcdata(L, 1);
+ CTState *cts = ctype_cts(L);
+ CType *ct = ctype_raw(cts, cd->typeid);
+ if (ctype_isptr(ct->info) && (LJ_32 || ct->size == 8)) {
+ MSize slot = lj_ccallback_ptr2slot(cts, *(void **)cdataptr(cd));
+ if (slot < cts->cb.sizeid && cts->cb.cbid[slot] != 0) {
+ GCtab *t = cts->miscmap;
+ TValue *tv = lj_tab_setint(L, t, (int32_t)slot);
+ if (fn) {
+ setfuncV(L, tv, fn);
+ lj_gc_anybarriert(L, t);
+ } else {
+ setnilV(tv);
+ cts->cb.cbid[slot] = 0;
+ cts->cb.topid = slot < cts->cb.topid ? slot : cts->cb.topid;
+ }
+ return 0;
+ }
+ }
+ lj_err_caller(L, LJ_ERR_FFI_BADCBACK);
+ return 0;
+}
+
+LJLIB_CF(ffi_callback_free)
+{
+ return ffi_callback_set(L, NULL);
+}
+
+LJLIB_CF(ffi_callback_set)
+{
+ GCfunc *fn = lj_lib_checkfunc(L, 2);
+ return ffi_callback_set(L, fn);
+}
+
+LJLIB_PUSH(top-1) LJLIB_SET(__index)
+
+#include "lj_libdef.h"
+
/* -- FFI library functions ----------------------------------------------- */
#define LJLIB_MODULE_ffi
@@ -428,7 +473,7 @@ LJLIB_CF(ffi_new) LJLIB_REC(.)
o, (MSize)(L->top - o)); /* Initialize cdata. */
if (ctype_isstruct(ct->info)) {
/* Handle ctype __gc metamethod. Use the fast lookup here. */
- cTValue *tv = lj_tab_getint(cts->metatype, (int32_t)id);
+ cTValue *tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
if (tv && tvistab(tv) && (tv = lj_meta_fast(L, tabV(tv), MM_gc))) {
GCtab *t = cts->finalizer;
if (gcref(t->metatable)) {
@@ -650,21 +695,21 @@ LJLIB_CF(ffi_abi) LJLIB_REC(.)
#undef H_
-LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to metatype table. */
+LJLIB_PUSH(top-8) LJLIB_SET(!) /* Store reference to miscmap table. */
LJLIB_CF(ffi_metatype)
{
CTState *cts = ctype_cts(L);
CTypeID id = ffi_checkctype(L, cts);
GCtab *mt = lj_lib_checktab(L, 2);
- GCtab *t = cts->metatype;
+ GCtab *t = cts->miscmap;
CType *ct = ctype_get(cts, id); /* Only allow raw types. */
TValue *tv;
GCcdata *cd;
if (!(ctype_isstruct(ct->info) || ctype_iscomplex(ct->info) ||
ctype_isvector(ct->info)))
lj_err_arg(L, 1, LJ_ERR_FFI_INVTYPE);
- tv = lj_tab_setint(L, t, (int32_t)id);
+ tv = lj_tab_setinth(L, t, -(int32_t)id);
if (!tvisnil(tv))
lj_err_caller(L, LJ_ERR_PROTMT);
settabV(L, tv, mt);
@@ -745,12 +790,16 @@ static void ffi_register_module(lua_State *L)
LUALIB_API int luaopen_ffi(lua_State *L)
{
CTState *cts = lj_ctype_init(L);
- settabV(L, L->top++, (cts->metatype = lj_tab_new(L, 0, 0)));
+ settabV(L, L->top++, (cts->miscmap = lj_tab_new(L, 0, 1)));
cts->finalizer = ffi_finalizer(L);
LJ_LIB_REG(L, NULL, ffi_meta);
/* NOBARRIER: basemt is a GC root. */
setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1)));
LJ_LIB_REG(L, NULL, ffi_clib);
+ LJ_LIB_REG(L, NULL, ffi_callback);
+ /* NOBARRIER: the key is new and lj_tab_newkey() handles the barrier. */
+ settabV(L, lj_tab_setstr(L, cts->miscmap, &cts->g->strempty), tabV(L->top-1));
+ L->top--;
lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */
lua_pushliteral(L, LJ_OS_NAME);
lua_pushliteral(L, LJ_ARCH_NAME);
diff --git a/src/lj_ccall.c b/src/lj_ccall.c
index c1c04b6f..5ed1bf5b 100644
--- a/src/lj_ccall.c
+++ b/src/lj_ccall.c
@@ -10,6 +10,7 @@
#include "lj_gc.h"
#include "lj_err.h"
#include "lj_str.h"
+#include "lj_tab.h"
#include "lj_ctype.h"
#include "lj_cconv.h"
#include "lj_cdata.h"
@@ -290,7 +291,7 @@
}
#else
-#error "missing calling convention definitions for this architecture"
+#error "Missing calling convention definitions for this architecture"
#endif
#ifndef CCALL_HANDLE_STRUCTRET2
@@ -649,7 +650,13 @@ int lj_ccall_func(lua_State *L, GCcdata *cd)
int gcsteps, ret;
cc.func = (void (*)(void))cdata_getptr(cdataptr(cd), sz);
gcsteps = ccall_set_args(L, cts, ct, &cc);
+ cts->cb.slot = ~0u;
lj_vm_ffi_call(&cc);
+ if (cts->cb.slot != ~0u) { /* Blacklist function that called a callback. */
+ TValue tv;
+ setlightudV(&tv, (void *)cc.func);
+ setboolV(lj_tab_set(L, cts->miscmap, &tv), 1);
+ }
gcsteps += ccall_get_results(L, cts, ct, &cc, &ret);
#if LJ_TARGET_X86 && LJ_ABI_WIN
/* Automatically detect __stdcall and fix up C function declaration. */
diff --git a/src/lj_ccall.h b/src/lj_ccall.h
index 14f61924..0641625f 100644
--- a/src/lj_ccall.h
+++ b/src/lj_ccall.h
@@ -81,7 +81,7 @@ typedef double FPRArg;
typedef intptr_t GPRArg;
#else
-#error "missing calling convention definitions for this architecture"
+#error "Missing calling convention definitions for this architecture"
#endif
#ifndef CCALL_SPS_EXTRA
@@ -99,6 +99,10 @@ typedef intptr_t GPRArg;
#define CCALL_NUM_FPR \
(CCALL_NARG_FPR > CCALL_NRET_FPR ? CCALL_NARG_FPR : CCALL_NRET_FPR)
+/* Check against constants in lj_ctype.h. */
+LJ_STATIC_ASSERT(CCALL_NUM_GPR <= CCALL_MAX_GPR);
+LJ_STATIC_ASSERT(CCALL_NUM_FPR <= CCALL_MAX_FPR);
+
#define CCALL_MAXSTACK 32
/* -- C call state -------------------------------------------------------- */
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c
new file mode 100644
index 00000000..8aab7f36
--- /dev/null
+++ b/src/lj_ccallback.c
@@ -0,0 +1,461 @@
+/*
+** FFI C callback handling.
+** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#include "lj_obj.h"
+
+#if LJ_HASFFI
+
+#include "lj_gc.h"
+#include "lj_err.h"
+#include "lj_tab.h"
+#include "lj_state.h"
+#include "lj_frame.h"
+#include "lj_ctype.h"
+#include "lj_cconv.h"
+#include "lj_ccall.h"
+#include "lj_ccallback.h"
+#include "lj_target.h"
+#include "lj_vm.h"
+
+/* -- Target-specific handling of callback slots -------------------------- */
+
+#define CALLBACK_MCODE_SIZE (LJ_PAGESIZE * LJ_NUM_CBPAGE)
+
+#if LJ_TARGET_X86ORX64
+
+#define CALLBACK_MCODE_HEAD (LJ_64 ? 8 : 0)
+#define CALLBACK_MCODE_GROUP (-2+1+2+5+(LJ_64 ? 6 : 5))
+
+#define CALLBACK_SLOT2OFS(slot) \
+ (CALLBACK_MCODE_HEAD + CALLBACK_MCODE_GROUP*((slot)/32) + 4*(slot))
+
+static MSize CALLBACK_OFS2SLOT(MSize ofs)
+{
+ MSize group;
+ ofs -= CALLBACK_MCODE_HEAD;
+ group = ofs / (32*4 + CALLBACK_MCODE_GROUP);
+ return (ofs % (32*4 + CALLBACK_MCODE_GROUP))/4 + group*32;
+}
+
+#define CALLBACK_MAX_SLOT \
+ (((CALLBACK_MCODE_SIZE-CALLBACK_MCODE_HEAD)/(CALLBACK_MCODE_GROUP+4*32))*32)
+
+#else
+
+/* Missing support for this architecture. */
+#define CALLBACK_SLOT2OFS(slot) (0*(slot))
+#define CALLBACK_OFS2SLOT(ofs) (0*(ofs))
+#define CALLBACK_MAX_SLOT 0
+
+#endif
+
+/* Convert callback slot number to callback function pointer. */
+static void *callback_slot2ptr(CTState *cts, MSize slot)
+{
+ return (uint8_t *)cts->cb.mcode + CALLBACK_SLOT2OFS(slot);
+}
+
+/* Convert callback function pointer to slot number. */
+MSize lj_ccallback_ptr2slot(CTState *cts, void *p)
+{
+ uintptr_t ofs = (uintptr_t)((uint8_t *)p -(uint8_t *)cts->cb.mcode);
+ if (ofs < CALLBACK_MCODE_SIZE) {
+ MSize slot = CALLBACK_OFS2SLOT((MSize)ofs);
+ if (CALLBACK_SLOT2OFS(slot) == (MSize)ofs)
+ return slot;
+ }
+ return ~0u; /* Not a known callback function pointer. */
+}
+
+#if LJ_TARGET_X86ORX64
+/* Initialize machine code for callback function pointers. */
+static void callback_mcode_init(global_State *g, uint8_t *page)
+{
+ uint8_t *p = page;
+ uint8_t *target = (uint8_t *)(void *)lj_vm_ffi_callback;
+ MSize slot;
+#if LJ_64
+ *(void **)p = target; p += 8;
+#endif
+ for (slot = 0; slot < CALLBACK_MAX_SLOT; slot++) {
+ /* mov al, slot; jmp group */
+ *p++ = XI_MOVrib | RID_EAX; *p++ = (uint8_t)slot;
+ if ((slot & 31) == 31 || slot == CALLBACK_MAX_SLOT-1) {
+ /* push ebp/rbp; mov ah, slot>>8; mov ebp, &g. */
+ *p++ = XI_PUSH + RID_EBP;
+ *p++ = XI_MOVrib | (RID_EAX+4); *p++ = (uint8_t)(slot >> 8);
+ *p++ = XI_MOVri | RID_EBP;
+ *(int32_t *)p = i32ptr(g); p += 4;
+#if LJ_64
+ /* jmp [rip-pageofs] where lj_vm_ffi_callback is stored. */
+ *p++ = XI_GROUP5; *p++ = XM_OFS0 + (XOg_JMP<<3) + RID_EBP;
+ *(int32_t *)p = (int32_t)(page-(p+4)); p += 4;
+#else
+ /* jmp lj_vm_ffi_callback. */
+ *p++ = XI_JMP; *(int32_t *)p = target-(p+4); p += 4;
+#endif
+ } else {
+ *p++ = XI_JMPs; *p++ = (uint8_t)((2+2)*(31-(slot&31)) - 2);
+ }
+ }
+ lua_assert(p - page <= CALLBACK_MCODE_SIZE);
+}
+#else
+/* Missing support for this architecture. */
+#define callback_mcode_init(g, p) UNUSED(p)
+#endif
+
+/* -- Machine code management --------------------------------------------- */
+
+#if LJ_TARGET_WINDOWS
+
+#define WIN32_LEAN_AND_MEAN
+#include
+
+#elif LJ_TARGET_POSIX
+
+#include
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+#endif
+
+/* Allocate and initialize area for callback function pointers. */
+static void callback_mcode_new(CTState *cts)
+{
+ size_t sz = (size_t)CALLBACK_MCODE_SIZE;
+ void *p;
+ if (CALLBACK_MAX_SLOT == 0)
+ lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
+#if LJ_TARGET_WINDOWS
+ p = VirtualAlloc(NULL, sz, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
+ if (!p)
+ lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
+#elif LJ_TARGET_POSIX
+ p = mmap(NULL, sz, (PROT_READ|PROT_WRITE), MAP_PRIVATE|MAP_ANONYMOUS,
+ -1, 0);
+ if (p == MAP_FAILED)
+ lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
+#else
+ /* Fallback allocator. Fails if memory is not executable by default. */
+ p = lj_mem_new(cts->L, sz);
+#endif
+ cts->cb.mcode = p;
+ callback_mcode_init(cts->g, p);
+#if LJ_TARGET_WINDOWS
+ {
+ DWORD oprot;
+ VirtualProtect(p, sz, PAGE_EXECUTE_READ, &oprot);
+ }
+#elif LJ_TARGET_POSIX
+ mprotect(p, sz, (PROT_READ|PROT_EXEC));
+#endif
+}
+
+/* Free area for callback function pointers. */
+void lj_ccallback_mcode_free(CTState *cts)
+{
+ size_t sz = (size_t)CALLBACK_MCODE_SIZE;
+ void *p = cts->cb.mcode;
+ if (p == NULL) return;
+#if LJ_TARGET_WINDOWS
+ VirtualFree(p, 0, MEM_RELEASE);
+ UNUSED(sz);
+#elif LJ_TARGET_POSIX
+ munmap(p, sz);
+#else
+ lj_mem_free(cts->g, p, sz);
+#endif
+}
+
+/* -- C callback entry ---------------------------------------------------- */
+
+/* Target-specific handling of register arguments. Similar to lj_ccall.c. */
+#if LJ_TARGET_X86
+
+#define CALLBACK_HANDLE_REGARG \
+ if (!isfp) { /* Only non-FP values may be passed in registers. */ \
+ if (n > 1) { /* Anything > 32 bit is passed on the stack. */ \
+ if (!LJ_ABI_WIN) ngpr = maxgpr; /* Prevent reordering. */ \
+ } else if (ngpr + 1 <= maxgpr) { \
+ sp = &cts->cb.gpr[ngpr]; \
+ ngpr += n; \
+ goto done; \
+ } \
+ }
+
+#elif LJ_TARGET_X64 && LJ_ABI_WIN
+
+/* Windows/x64 argument registers are strictly positional (use ngpr). */
+#define CALLBACK_HANDLE_REGARG \
+ if (isfp) { \
+ if (ngpr < 4) { sp = &cts->cb.fpr[ngpr++]; nfpr = ngpr; goto done; } \
+ } else { \
+ if (ngpr < 4) { sp = &cts->cb.gpr[ngpr++]; goto done; } \
+ }
+
+#elif LJ_TARGET_X64
+
+#define CALLBACK_HANDLE_REGARG \
+ if (isfp) { \
+ if (nfpr + n <= CCALL_NARG_FPR) { \
+ sp = &cts->cb.fpr[nfpr]; \
+ nfpr += n; \
+ goto done; \
+ } \
+ } else { \
+ if (ngpr + n <= maxgpr) { \
+ sp = &cts->cb.gpr[ngpr]; \
+ ngpr += n; \
+ goto done; \
+ } \
+ }
+
+#elif LJ_TARGET_ARM
+
+#define CALLBACK_HANDLE_REGARG \
+ UNUSED(ngpr); UNUSED(maxgpr); goto done; /* NYI */
+
+#elif LJ_TARGET_PPC
+
+#define CALLBACK_HANDLE_REGARG \
+ UNUSED(ngpr); UNUSED(nfpr); UNUSED(maxgpr); goto done; /* NYI */
+#define CALLBACK_HANDLE_RET /* NYI */
+
+#else
+#error "Missing calling convention definitions for this architecture"
+#endif
+
+/* Convert and push callback arguments to Lua stack. */
+static void callback_conv_args(CTState *cts, lua_State *L)
+{
+ TValue *o = L->top;
+ intptr_t *stack = cts->cb.stack;
+ MSize slot = cts->cb.slot;
+ CTypeID id = 0, rid, fid;
+ CType *ct;
+ GCfunc *fn;
+ MSize ngpr = 0, nsp = 0, maxgpr = CCALL_NARG_GPR;
+#if CCALL_NARG_FPR
+ MSize nfpr = 0;
+#endif
+
+ if (slot < cts->cb.sizeid && (id = cts->cb.cbid[slot]) != 0) {
+ ct = ctype_get(cts, id);
+ rid = ctype_cid(ct->info);
+ fn = funcV(lj_tab_getint(cts->miscmap, (int32_t)slot));
+ } else { /* Must set up frame first, before throwing the error. */
+ ct = NULL;
+ rid = 0;
+ fn = (GCfunc *)L;
+ }
+ o->u32.lo = LJ_CONT_FFI_CALLBACK; /* Continuation returns from callback. */
+ o->u32.hi = rid; /* Return type. x86: +(spadj<<16). */
+ o++;
+ setframe_gc(o, obj2gco(fn));
+ setframe_ftsz(o, (int)((char *)(o+1) - (char *)L->base) + FRAME_CONT);
+ L->top = L->base = ++o;
+ if (!ct)
+ lj_err_caller(cts->L, LJ_ERR_FFI_BADCBACK);
+ if (isluafunc(fn))
+ setcframe_pc(L->cframe, proto_bc(funcproto(fn))+1);
+ lj_state_checkstack(L, LUA_MINSTACK); /* May throw. */
+ o = L->base; /* Might have been reallocated. */
+
+#if LJ_TARGET_X86
+ /* x86 has several different calling conventions. */
+ switch (ctype_cconv(ct->info)) {
+ case CTCC_FASTCALL: maxgpr = 2; break;
+ case CTCC_THISCALL: maxgpr = 1; break;
+ default: maxgpr = 0; break;
+ }
+#endif
+
+ fid = ct->sib;
+ while (fid) {
+ CType *ctf = ctype_get(cts, fid);
+ if (!ctype_isattrib(ctf->info)) {
+ CType *cta;
+ void *sp;
+ CTSize sz;
+ int isfp;
+ MSize n;
+ lua_assert(ctype_isfield(ctf->info));
+ cta = ctype_rawchild(cts, ctf);
+ if (ctype_isenum(cta->info)) cta = ctype_child(cts, cta);
+ isfp = ctype_isfp(cta->info);
+ sz = (cta->size + CTSIZE_PTR-1) & ~(CTSIZE_PTR-1);
+ n = sz / CTSIZE_PTR; /* Number of GPRs or stack slots needed. */
+
+ CALLBACK_HANDLE_REGARG /* Handle register arguments. */
+
+ /* Otherwise pass argument on stack. */
+ if (CCALL_ALIGN_STACKARG && LJ_32 && sz == 8)
+ nsp = (nsp + 1) & ~1u; /* Align 64 bit argument on stack. */
+ sp = &stack[nsp];
+ nsp += n;
+
+ done:
+ if (LJ_BE && cta->size < CTSIZE_PTR)
+ sp = (void *)((uint8_t *)sp + CTSIZE_PTR-cta->size);
+ lj_cconv_tv_ct(cts, cta, 0, o++, sp);
+ }
+ fid = ctf->sib;
+ }
+ L->top = o;
+#if LJ_TARGET_X86
+ /* Store stack adjustment for returns from fastcall/stdcall callbacks. */
+ switch (ctype_cconv(ct->info)) {
+ case CTCC_FASTCALL: case CTCC_STDCALL:
+ (L->base-2)->u32.hi |= (nsp << (16+2));
+ break;
+ }
+#endif
+}
+
+/* Convert Lua object to callback result. */
+static void callback_conv_result(CTState *cts, lua_State *L, TValue *o)
+{
+ CType *ctr = ctype_raw(cts, (uint16_t)(L->base-2)->u32.hi);
+#if LJ_TARGET_X86
+ cts->cb.gpr[2] = 0;
+#endif
+ if (!ctype_isvoid(ctr->info)) {
+ uint8_t *dp = (uint8_t *)&cts->cb.gpr[0];
+#ifdef CALLBACK_HANDLE_RET
+ CALLBACK_HANDLE_RET
+#endif
+#if CCALL_NUM_FPR
+ if (ctype_isfp(ctr->info))
+ dp = (uint8_t *)&cts->cb.fpr[0];
+#endif
+ lj_cconv_ct_tv(cts, ctr, dp, o, 0);
+ /* Extend returned integers to (at least) 32 bits. */
+ if (ctype_isinteger_or_bool(ctr->info) && ctr->size < 4) {
+ if (ctr->info & CTF_UNSIGNED)
+ *(uint32_t *)dp = ctr->size == 1 ? (uint32_t)*(uint8_t *)dp :
+ (uint32_t)*(uint16_t *)dp;
+ else
+ *(int32_t *)dp = ctr->size == 1 ? (int32_t)*(int8_t *)dp :
+ (int32_t)*(int16_t *)dp;
+ }
+#if LJ_TARGET_X86
+ if (ctype_isfp(ctr->info))
+ cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2;
+#endif
+ }
+}
+
+/* Enter callback. */
+lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf)
+{
+ lua_State *L = cts->L;
+ lua_assert(L != NULL);
+ if (gcref(cts->g->jit_L))
+ lj_err_caller(gco2th(gcref(cts->g->jit_L)), LJ_ERR_FFI_BADCBACK);
+ /* Setup C frame. */
+ cframe_prev(cf) = L->cframe;
+ setcframe_L(cf, L);
+ cframe_errfunc(cf) = -1;
+ cframe_nres(cf) = 0;
+ L->cframe = cf;
+ callback_conv_args(cts, L);
+ return L; /* Now call the function on this stack. */
+}
+
+/* Leave callback. */
+void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o)
+{
+ lua_State *L = cts->L;
+ GCfunc *fn;
+ TValue *obase = L->base;
+ L->base = L->top; /* Keep continuation frame for throwing errors. */
+ /* PC of RET* is lost. Point to last line for result conv. errors. */
+ fn = curr_func(L);
+ if (isluafunc(fn)) {
+ GCproto *pt = funcproto(fn);
+ setcframe_pc(L->cframe, proto_bc(pt)+pt->sizebc);
+ }
+ callback_conv_result(cts, L, o);
+ /* Finally drop C frame and continuation frame. */
+ L->cframe = cframe_prev(L->cframe);
+ L->top -= 2;
+ L->base = obase;
+}
+
+/* -- C callback management ----------------------------------------------- */
+
+/* Get an unused slot in the callback slot table. */
+static MSize callback_slot_new(CTState *cts, CType *ct)
+{
+ CTypeID id = ctype_typeid(cts, ct);
+ CTypeID1 *cbid = cts->cb.cbid;
+ MSize top;
+ for (top = cts->cb.topid; top < cts->cb.sizeid; top++)
+ if (LJ_LIKELY(cbid[top] == 0))
+ goto found;
+#if CALLBACK_MAX_SLOT
+ if (top >= CALLBACK_MAX_SLOT)
+#endif
+ lj_err_caller(cts->L, LJ_ERR_FFI_CBACKOV);
+ if (!cts->cb.mcode)
+ callback_mcode_new(cts);
+ lj_mem_growvec(cts->L, cbid, cts->cb.sizeid, CALLBACK_MAX_SLOT, CTypeID1);
+ cts->cb.cbid = cbid;
+ memset(cbid+top, 0, (cts->cb.sizeid-top)*sizeof(CTypeID1));
+found:
+ cbid[top] = id;
+ cts->cb.topid = top+1;
+ return top;
+}
+
+/* Check for function pointer and supported argument/result types. */
+static CType *callback_checkfunc(CTState *cts, CType *ct)
+{
+ int narg = 0;
+ if (!ctype_isptr(ct->info) || (LJ_64 && ct->size != CTSIZE_PTR))
+ return NULL;
+ ct = ctype_rawchild(cts, ct);
+ if (ctype_isfunc(ct->info)) {
+ CType *ctr = ctype_rawchild(cts, ct);
+ CTypeID fid = ct->sib;
+ if (!(ctype_isvoid(ctr->info) || ctype_isenum(ctr->info) ||
+ ctype_isptr(ctr->info) || (ctype_isnum(ctr->info) && ctr->size <= 8)))
+ return NULL;
+ if ((ct->info & CTF_VARARG))
+ return NULL;
+ while (fid) {
+ CType *ctf = ctype_get(cts, fid);
+ if (!ctype_isattrib(ctf->info)) {
+ CType *cta;
+ lua_assert(ctype_isfield(ctf->info));
+ cta = ctype_rawchild(cts, ctf);
+ if (!(ctype_isenum(cta->info) || ctype_isptr(cta->info) ||
+ (ctype_isnum(cta->info) && cta->size <= 8)) ||
+ ++narg >= LUA_MINSTACK-3)
+ return NULL;
+ }
+ fid = ctf->sib;
+ }
+ return ct;
+ }
+ return NULL;
+}
+
+/* Create a new callback and return the callback function pointer. */
+void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn)
+{
+ ct = callback_checkfunc(cts, ct);
+ if (ct) {
+ MSize slot = callback_slot_new(cts, ct);
+ GCtab *t = cts->miscmap;
+ setfuncV(cts->L, lj_tab_setint(cts->L, t, (int32_t)slot), fn);
+ return callback_slot2ptr(cts, slot);
+ }
+ return NULL; /* Bad conversion. */
+}
+
+#endif
diff --git a/src/lj_ccallback.h b/src/lj_ccallback.h
new file mode 100644
index 00000000..cbdc1e89
--- /dev/null
+++ b/src/lj_ccallback.h
@@ -0,0 +1,25 @@
+/*
+** FFI C callback handling.
+** Copyright (C) 2005-2011 Mike Pall. See Copyright Notice in luajit.h
+*/
+
+#ifndef _LJ_CCALLBACK_H
+#define _LJ_CCALLBACK_H
+
+#include "lj_obj.h"
+#include "lj_ctype.h"
+
+#if LJ_HASFFI
+
+/* Really belongs to lj_vm.h. */
+LJ_ASMF void lj_vm_ffi_callback(void);
+
+LJ_FUNC MSize lj_ccallback_ptr2slot(CTState *cts, void *p);
+LJ_FUNCA lua_State * LJ_FASTCALL lj_ccallback_enter(CTState *cts, void *cf);
+LJ_FUNCA void LJ_FASTCALL lj_ccallback_leave(CTState *cts, TValue *o);
+LJ_FUNC void *lj_ccallback_new(CTState *cts, CType *ct, GCfunc *fn);
+LJ_FUNC void lj_ccallback_mcode_free(CTState *cts);
+
+#endif
+
+#endif
diff --git a/src/lj_cconv.c b/src/lj_cconv.c
index 884edef1..d73984f4 100644
--- a/src/lj_cconv.c
+++ b/src/lj_cconv.c
@@ -12,6 +12,7 @@
#include "lj_ctype.h"
#include "lj_cdata.h"
#include "lj_cconv.h"
+#include "lj_ccallback.h"
/* -- Conversion errors --------------------------------------------------- */
@@ -603,6 +604,13 @@ void lj_cconv_ct_tv(CTState *cts, CType *d,
tmpptr = uddata(udataV(o));
} else if (tvislightud(o)) {
tmpptr = lightudV(o);
+ } else if (tvisfunc(o)) {
+ void *p = lj_ccallback_new(cts, d, funcV(o));
+ if (p) {
+ *(void **)dp = p;
+ return;
+ }
+ goto err_conv;
} else {
err_conv:
cconv_err_convtv(cts, d, o, flags);
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 2c63e8a6..9457b519 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -15,6 +15,7 @@
#include "lj_tab.h"
#include "lj_frame.h"
#include "lj_ctype.h"
+#include "lj_cdata.h"
#include "lj_cparse.h"
#include "lj_cconv.h"
#include "lj_clib.h"
@@ -785,7 +786,7 @@ static TRef crec_call_args(jit_State *J, RecordFFData *rd,
did = ctype_cid(ctf->info);
} else {
if (!(ct->info & CTF_VARARG))
- lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */
+ lj_trace_err(J, LJ_TRERR_NYICALL); /* Too many arguments. */
did = lj_ccall_ctid_vararg(cts, o); /* Infer vararg type. */
}
d = ctype_raw(cts, did);
@@ -853,6 +854,12 @@ static int crec_call(jit_State *J, RecordFFData *rd, GCcdata *cd)
CType *ctr = ctype_rawchild(cts, ct);
IRType t = crec_ct2irt(ctr);
TRef tr;
+ TValue tv;
+ /* Check for blacklisted C functions that might call a callback. */
+ setlightudV(&tv,
+ cdata_getptr(cdataptr(cd), (LJ_64 && tp == IRT_P64) ? 8 : 4));
+ if (tvistrue(lj_tab_get(J->L, cts->miscmap, &tv)))
+ lj_trace_err(J, LJ_TRERR_BLACKL);
if (ctype_isvoid(ctr->info)) {
t = IRT_NIL;
rd->nres = 0;
diff --git a/src/lj_ctype.c b/src/lj_ctype.c
index 85e9a0ba..7187d6ff 100644
--- a/src/lj_ctype.c
+++ b/src/lj_ctype.c
@@ -12,6 +12,7 @@
#include "lj_str.h"
#include "lj_tab.h"
#include "lj_ctype.h"
+#include "lj_ccallback.h"
/* -- C type definitions -------------------------------------------------- */
@@ -315,7 +316,11 @@ cTValue *lj_ctype_meta(CTState *cts, CTypeID id, MMS mm)
id = ctype_cid(ct->info);
ct = ctype_get(cts, id);
}
- tv = lj_tab_getint(cts->metatype, (int32_t)id);
+ if (ctype_isptr(ct->info) &&
+ ctype_isfunc(ctype_get(cts, ctype_cid(ct->info))->info))
+ tv = lj_tab_getstr(cts->miscmap, &cts->g->strempty);
+ else
+ tv = lj_tab_getinth(cts->miscmap, -(int32_t)id);
if (tv && tvistab(tv) &&
(tv = lj_tab_getstr(tabV(tv), mmname_str(cts->g, mm))) && !tvisnil(tv))
return tv;
@@ -592,7 +597,9 @@ void lj_ctype_freestate(global_State *g)
{
CTState *cts = ctype_ctsG(g);
if (cts) {
+ lj_ccallback_mcode_free(cts);
lj_mem_freevec(g, cts->tab, cts->sizetab, CType);
+ lj_mem_freevec(g, cts->cb.cbid, cts->cb.sizeid, CTypeID1);
lj_mem_freet(g, cts);
}
}
diff --git a/src/lj_ctype.h b/src/lj_ctype.h
index 49f28108..da313851 100644
--- a/src/lj_ctype.h
+++ b/src/lj_ctype.h
@@ -151,6 +151,25 @@ typedef struct CType {
#define CTHASH_SIZE 128 /* Number of hash anchors. */
#define CTHASH_MASK (CTHASH_SIZE-1)
+/* Simplify target-specific configuration. Checked in lj_ccall.h. */
+#define CCALL_MAX_GPR 8
+#define CCALL_MAX_FPR 8
+
+typedef LJ_ALIGN(8) union FPRCBArg { double d; float f; } FPRCBArg;
+
+/* C callback state. Defined here, to avoid dragging in lj_ccall.h. */
+
+typedef LJ_ALIGN(8) struct CCallback {
+ FPRCBArg fpr[CCALL_MAX_FPR]; /* Arguments/results in FPRs. */
+ intptr_t gpr[CCALL_MAX_GPR]; /* Arguments/results in GPRs. */
+ intptr_t *stack; /* Pointer to arguments on stack. */
+ void *mcode; /* Machine code for callback func. pointers. */
+ CTypeID1 *cbid; /* Callback type table. */
+ MSize sizeid; /* Size of callback type table. */
+ MSize topid; /* Highest unused callback type table slot. */
+ MSize slot; /* Current callback slot. */
+} CCallback;
+
/* C type state. */
typedef struct CTState {
CType *tab; /* C type table. */
@@ -159,7 +178,8 @@ typedef struct CTState {
lua_State *L; /* Lua state (needed for errors and allocations). */
global_State *g; /* Global state. */
GCtab *finalizer; /* Map of cdata to finalizer. */
- GCtab *metatype; /* Map of CTypeID to metatable. */
+ GCtab *miscmap; /* Map of -CTypeID to metatable and cb slot to func. */
+ CCallback cb; /* Temporary callback state. */
CTypeID1 hash[CTHASH_SIZE]; /* Hash anchors for C type table. */
} CTState;
diff --git a/src/lj_debug.c b/src/lj_debug.c
index 699fca28..4038e209 100644
--- a/src/lj_debug.c
+++ b/src/lj_debug.c
@@ -107,6 +107,7 @@ BCLine LJ_FASTCALL lj_debug_line(GCproto *pt, BCPos pc)
const void *lineinfo = proto_lineinfo(pt);
if (pc < pt->sizebc && lineinfo) {
BCLine first = pt->firstline;
+ if (pc == pt->sizebc-1) return first + pt->numline;
if (pc-- == 0) return first;
if (pt->numline < 256)
return first + (BCLine)((const uint8_t *)lineinfo)[pc];
@@ -124,7 +125,7 @@ static BCLine debug_frameline(lua_State *L, GCfunc *fn, cTValue *nextframe)
BCPos pc = debug_framepc(L, fn, nextframe);
if (pc != NO_BCPOS) {
GCproto *pt = funcproto(fn);
- lua_assert(pc < pt->sizebc);
+ lua_assert(pc <= pt->sizebc);
return lj_debug_line(pt, pc);
}
return -1;
diff --git a/src/lj_def.h b/src/lj_def.h
index dadb8c0a..5d21d584 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -67,6 +67,8 @@ typedef unsigned int uintptr_t;
#define LJ_MAX_IDXCHAIN 100 /* __index/__newindex chain limit. */
#define LJ_STACK_EXTRA 5 /* Extra stack space (metamethods). */
+#define LJ_NUM_CBPAGE 1 /* Number of FFI callback pages. */
+
/* Minimum table/buffer sizes. */
#define LJ_MIN_GLOBAL 6 /* Min. global table size (hbits). */
#define LJ_MIN_REGISTRY 2 /* Min. registry size (hbits). */
diff --git a/src/lj_err.c b/src/lj_err.c
index 406c833d..b0f3e5c7 100644
--- a/src/lj_err.c
+++ b/src/lj_err.c
@@ -113,6 +113,9 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
frame = frame_prevl(frame);
break;
case FRAME_C: /* C frame. */
+#if LJ_HASFFI
+ unwind_c:
+#endif
#if LJ_UNWIND_EXT
if (errcode) {
L->cframe = cframe_prev(cf);
@@ -145,6 +148,10 @@ static void *err_unwind(lua_State *L, void *stopcf, int errcode)
}
return cf;
case FRAME_CONT: /* Continuation frame. */
+#if LJ_HASFFI
+ if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
+ goto unwind_c;
+#endif
case FRAME_VARG: /* Vararg frame. */
frame = frame_prevd(frame);
break;
@@ -464,6 +471,10 @@ static ptrdiff_t finderrfunc(lua_State *L)
cf = cframe_prev(cf);
/* fallthrough */
case FRAME_CONT:
+#if LJ_HASFFI
+ if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK)
+ cf = cframe_prev(cf);
+#endif
case FRAME_VARG:
frame = frame_prevd(frame);
break;
@@ -591,15 +602,23 @@ LJ_NOINLINE void lj_err_callermsg(lua_State *L, const char *msg)
if (frame_islua(frame)) {
pframe = frame_prevl(frame);
} else if (frame_iscont(frame)) {
- pframe = frame_prevd(frame);
#if LJ_HASFFI
- /* Remove frame for FFI metamethods. */
- if (frame_func(frame)->c.ffid >= FF_ffi_meta___index &&
- frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) {
- L->base = pframe+1;
- L->top = frame;
- }
+ if ((frame-1)->u32.lo == LJ_CONT_FFI_CALLBACK) {
+ pframe = frame;
+ frame = NULL;
+ } else
#endif
+ {
+ pframe = frame_prevd(frame);
+#if LJ_HASFFI
+ /* Remove frame for FFI metamethods. */
+ if (frame_func(frame)->c.ffid >= FF_ffi_meta___index &&
+ frame_func(frame)->c.ffid <= FF_ffi_meta___tostring) {
+ L->base = pframe+1;
+ L->top = frame;
+ }
+#endif
+ }
}
lj_debug_addloc(L, msg, pframe, frame);
lj_err_run(L);
diff --git a/src/lj_errmsg.h b/src/lj_errmsg.h
index dc015ef2..e9ad0451 100644
--- a/src/lj_errmsg.h
+++ b/src/lj_errmsg.h
@@ -160,6 +160,12 @@ ERRDEF(FFI_BADMEMBER, LUA_QS " has no member named " LUA_QS)
ERRDEF(FFI_BADIDX, LUA_QS " cannot be indexed")
ERRDEF(FFI_WRCONST, "attempt to write to constant location")
ERRDEF(FFI_NODECL, "missing declaration for symbol " LUA_QS)
+ERRDEF(FFI_BADCBACK, "bad callback")
+#if LJ_TARGET_X86ORX64
+ERRDEF(FFI_CBACKOV, "too many callbacks")
+#else
+ERRDEF(FFI_CBACKOV, "no support for callbacks (yet)")
+#endif
ERRDEF(FFI_NYIPACKBIT, "NYI: packed bit fields")
ERRDEF(FFI_NYICALL, "NYI: cannot call this C function (yet)")
#endif
diff --git a/src/lj_frame.h b/src/lj_frame.h
index 89484565..3497671b 100644
--- a/src/lj_frame.h
+++ b/src/lj_frame.h
@@ -138,6 +138,8 @@ enum {
(&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
#define cframe_pc(cf) \
(mref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), const BCIns))
+#define setcframe_L(cf, L) \
+ (setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_L), (L)))
#define setcframe_pc(cf, pc) \
(setmref(*(MRef *)(((char *)(cf))+CFRAME_OFS_PC), (pc)))
#define cframe_canyield(cf) ((intptr_t)(cf) & CFRAME_RESUME)
diff --git a/src/lj_meta.c b/src/lj_meta.c
index 278d2d34..f258e3e1 100644
--- a/src/lj_meta.c
+++ b/src/lj_meta.c
@@ -77,7 +77,7 @@ int lj_meta_tailcall(lua_State *L, cTValue *tv)
TValue *top = L->top;
const BCIns *pc = frame_pc(base-1); /* Preserve old PC from frame. */
copyTV(L, base-1, tv); /* Replace frame with new object. */
- top->u64 = 0;
+ top->u32.lo = LJ_CONT_TAILCALL;
setframe_pc(top, pc);
setframe_gc(top+1, obj2gco(L)); /* Dummy frame object. */
setframe_ftsz(top+1, (int)((char *)(top+2) - (char *)base) + FRAME_CONT);
diff --git a/src/lj_target_x86.h b/src/lj_target_x86.h
index 233b77e5..593e7b00 100644
--- a/src/lj_target_x86.h
+++ b/src/lj_target_x86.h
@@ -192,6 +192,7 @@ typedef enum {
XI_CALL = 0xe8,
XI_JMP = 0xe9,
XI_JMPs = 0xeb,
+ XI_PUSH = 0x50, /* Really 50+r. */
XI_JCCs = 0x70, /* Really 7x. */
XI_JCCn = 0x80, /* Really 0f8x. */
XI_LEA = 0x8d,
@@ -203,6 +204,7 @@ typedef enum {
XI_PUSHi8 = 0x6a,
XI_TEST = 0x85,
XI_MOVmi = 0xc7,
+ XI_GROUP5 = 0xff,
/* Note: little-endian byte-order! */
XI_FLDZ = 0xeed9,
diff --git a/src/lj_vm.h b/src/lj_vm.h
index 5a82dab0..9ce14acc 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -88,6 +88,8 @@ LJ_ASMF void lj_cont_condt(void); /* Branch if result is true. */
LJ_ASMF void lj_cont_condf(void); /* Branch if result is false. */
LJ_ASMF void lj_cont_hook(void); /* Continue from hook yield. */
+enum { LJ_CONT_TAILCALL, LJ_CONT_FFI_CALLBACK }; /* Special continuations. */
+
/* Start of the ASM code. */
LJ_ASMF char lj_vm_asm_begin[];
diff --git a/src/ljamalg.c b/src/ljamalg.c
index cc32bf30..17c4b65e 100644
--- a/src/ljamalg.c
+++ b/src/ljamalg.c
@@ -52,6 +52,7 @@
#include "lj_cdata.c"
#include "lj_cconv.c"
#include "lj_ccall.c"
+#include "lj_ccallback.c"
#include "lj_carith.c"
#include "lj_clib.c"
#include "lj_cparse.c"