diff --git a/.gitignore b/.gitignore index 1e5c71dd2..817e7fd0a 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ /polymer/eduke32/build/obj /polymer/eduke32/source/jaudiolib/obj /polymer/eduke32/source/enet/obj +/polymer/eduke32/source/testgame/obj diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index edba60fa4..1b6ddfcb0 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -4,7 +4,6 @@ include Makefile.common - DUKE3D_SRC=source DUKE3D_INC=$(DUKE3D_SRC) DUKE3D_RSRC=rsrc @@ -15,6 +14,19 @@ o=o asm=nasm obj=obj +COMPILERFLAGS += -I$(ENGINE_INC) -I$(DUKE3D_SRC)/jmact -I$(AUDIOLIB_ROOT)/include -I$(ENET_ROOT)/include + + +# EBacktrace + +ifndef EBACKTRACEDLL + EBACKTRACEDLL = ebacktrace1.dll + ifeq ($(findstring x86_64,$(COMPILERTARGET)),x86_64) + EBACKTRACEDLL = ebacktrace1-64.dll + endif +endif +EBACKTRACEDLL_TARGET:=$(EBACKTRACEDLL) + # BUILD Engine @@ -23,8 +35,7 @@ UTIL_LIBS= -lm # -lpthread ENGINE_OBJ=$(ENGINE_ROOT)/$(obj) - -ENGINE_OBJS=baselayer cache1d compat crc32 defs engine polymost texcache dxtfilter hightile textfont smalltextfont kplib lz4 osd pragmas scriptfile mutex xxhash +ENGINE_OBJS=baselayer cache1d compat crc32 defs engine polymost texcache dxtfilter hightile textfont smalltextfont kplib lz4 osd pragmas scriptfile mmulti_null mutex xxhash ENGINE_EDITOR_OBJS=build config defs ifeq (0,$(NOASM)) ENGINE_OBJS+= a @@ -75,6 +86,11 @@ ENGINE_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(ENGINE_OBJS))) ENGINE_EDITOR_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(ENGINE_EDITOR_OBJS))) +# MACT + +MACT_OBJ=file_lib control keyboard mouse joystick mathutil scriplib animlib + + # AudioLib AUDIOLIB_OBJS=drivers fx_man multivoc mix mixst pitch formats vorbis flac xa driver_nosound @@ -131,6 +147,12 @@ endif ENET_OBJS_EXP:=$(addprefix $(ENET_OBJ)/,$(addsuffix .$o,$(ENET_OBJS))) +ifeq ($(NETCODE),0) + ENET_TARGET= +else + ENET_TARGET=$(ENET_OBJS_EXP) +endif + # Tools @@ -143,58 +165,62 @@ SDLUTILS=makesdlkeytrans UTIL_OBJS_EXP:=$(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTIL_OBJS))) -# Duke Nukem 3D +# KenBuild (Test Game) -ifneq (0,$(RELEASE)) - # Debugging disabled - COMMONFLAGS += $(F_NO_STACK_PROTECTOR) -else - # Debugging enabled - ifneq (0,$(KRANDDEBUG)) - COMMONFLAGS += -fno-inline -fno-inline-functions -fno-inline-functions-called-once - endif - ifeq (1,$(SDL_TARGET)) - COMPILERFLAGS += -DNOSDLPARACHUTE - endif +TESTGAME_ROOT=$(DUKE3D_SRC)/testgame +TESTGAME_SRC=$(TESTGAME_ROOT)/src +TESTGAME_RSRC=$(TESTGAME_ROOT)/rsrc +TESTGAME_OBJ=$(TESTGAME_ROOT)/$(obj) + +TEST_CFLAGS=-I$(TESTGAME_SRC) + +TESTGAME ?= testgame$(EXESUFFIX) +TESTEDITOR ?= testeditor$(EXESUFFIX) + +TESTGAME_TARGET:=$(TESTGAME) +TESTEDITOR_TARGET:=$(TESTEDITOR) + +TESTGAME_OBJS=game sound_stub common config +TESTEDITOR_OBJS=bstub common + +ifeq ($(RENDERTYPE),SDL) + ifeq (1,$(HAVE_GTK2)) + TESTGAME_OBJS+= game_banner startgtk.game + TESTEDITOR_OBJS+= editor_banner + endif + + TESTGAME_OBJS+= game_icon + TESTEDITOR_OBJS+= build_icon +endif +ifeq ($(PLATFORM),WINDOWS) + TESTGAME_OBJS+= gameres startwin.game + TESTEDITOR_OBJS+= buildres endif -COMPILERFLAGS += -I$(DUKE3D_INC) -I$(ENGINE_INC) -I$(DUKE3D_SRC)/jmact -I$(AUDIOLIB_ROOT)/include -I$(ENET_ROOT)/include +TESTGAME_OBJS_EXP:=$(addprefix $(TESTGAME_OBJ)/,$(addsuffix .$o,$(TESTGAME_OBJS))) +TESTEDITOR_OBJS_EXP:=$(addprefix $(TESTGAME_OBJ)/,$(addsuffix .$o,$(TESTEDITOR_OBJS))) + + +# Duke Nukem 3D + +DUKE3D_CFLAGS=-I$(DUKE3D_INC) -# Game/editor-specific linker options DUKE3D_LINKERFLAGS= DUKE3D_EDITOR_LINKERFLAGS= DUKE3D_OBJ=$(DUKE3D_SRC)/$(obj) -ifeq ($(NETCODE),0) - ENET_TARGET= -else - ENET_TARGET=$(ENET_OBJS_EXP) -endif - EDUKE32 ?= eduke32$(EXESUFFIX) MAPSTER32 ?= mapster32$(EXESUFFIX) EDUKE32_TARGET:=$(EDUKE32) MAPSTER32_TARGET:=$(MAPSTER32) -ifndef EBACKTRACEDLL - EBACKTRACEDLL = ebacktrace1.dll - ifeq ($(findstring x86_64,$(COMPILERTARGET)),x86_64) - EBACKTRACEDLL = ebacktrace1-64.dll - endif -endif -EBACKTRACEDLL_TARGET:=$(EBACKTRACEDLL) +COMMON_OBJS=common rev +COMMON_EDITOR_OBJS=common m32def m32exec m32vars mathutil rev -ifeq ($(SUBPLATFORM),LINUX) - LIBS+= -lrt -endif - -MACT_OBJ=file_lib control keyboard mouse joystick mathutil scriplib animlib - -DUKE3D_OBJS=game actors anim common rev config demo gamedef gameexec gamevars global input menus namesdyn net player premap savegame sector rts osdfuncs osdcmds grpscan sounds soundsdyn $(MACT_OBJ) - -DUKE3D_EDITOR_OBJS=astub common rev m32def m32exec m32vars mathutil sounds_mapster32 +DUKE3D_OBJS=game actors anim config demo gamedef gameexec gamevars global input menus namesdyn net player premap savegame sector rts osdfuncs osdcmds grpscan sounds soundsdyn $(MACT_OBJ) +DUKE3D_EDITOR_OBJS=astub sounds_mapster32 ifneq ($(USE_LIBVPX),0) DUKE3D_OBJS+= animvpx @@ -259,18 +285,11 @@ ifneq (0,$(LUNATIC)) endif endif - -# PLATFORM SPECIFIC SETTINGS - ifeq ($(SUBPLATFORM),LINUX) - ifeq (0,$(CLANG)) - COMMONFLAGS += -fno-pic - endif LIBS += -lFLAC -lvorbisfile -lvorbis -logg endif ifeq ($(PLATFORM),DARWIN) - COMMONFLAGS += -fno-pic LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Apple/lib LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lm \ @@ -287,7 +306,6 @@ ifeq ($(PLATFORM),DARWIN) endif ifeq ($(PLATFORM),WINDOWS) - COMMONFLAGS += -fno-pic LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lcompat-from-mingw-w64 LIBDIRS += -L$(AUDIOLIB_ROOT)/third-party/Windows/lib$(WINLIB) DUKE3D_OBJS+= gameres winbits startwin.game @@ -316,6 +334,9 @@ ifeq ($(MIXERTYPE),SDL) endif +COMMON_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(COMMON_OBJS))) +COMMON_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(COMMON_EDITOR_OBJS))) + DUKE3D_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_OBJS))) DUKE3D_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_EDITOR_OBJS))) @@ -325,7 +346,7 @@ DUKE3D_EDITOR_OBJS_EXP:=$(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(DUKE3D_EDIT ifeq ($(PRETTY_OUTPUT),1) .SILENT: endif -.PHONY: veryclean clean all cleanutils utils dxutils sdlutils printutils printsdlutils printdxutils rev rev_clean +.PHONY: veryclean clean all test cleanutils utils dxutils sdlutils printutils printsdlutils printdxutils rev rev_clean # TARGETS @@ -337,6 +358,14 @@ ifneq (,$(MAPSTER32_TARGET)) @ls -l $(MAPSTER32) endif +test: start $(TESTGAME_TARGET) $(TESTEDITOR_TARGET) finish +ifneq (,$(TESTGAME_TARGET)) + @ls -l $(TESTGAME) +endif +ifneq (,$(TESTEDITOR_TARGET)) + @ls -l $(TESTEDITOR) +endif + ebacktrace: start $(EBACKTRACEDLL_TARGET) finish ifneq (,$(EBACKTRACEDLL_TARGET)) @ls -l $(EBACKTRACEDLL) @@ -357,7 +386,21 @@ dxutils: $(addsuffix $(EXESUFFIX),$(DXUTILS)) sdlutils: $(addsuffix $(EXESUFFIX),$(SDLUTILS)) @ls -l $^ -$(EDUKE32): $(DUKE3D_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(ENET_TARGET) $(DUKE3D_MISCDEPS) +$(TESTGAME): $(TESTGAME_OBJS_EXP) $(COMMON_OBJS_EXP) $(ENGINE_OBJS_EXP) + $(LINK_STATUS) + $(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK) +ifneq ($(STRIP),) + $(STRIP) $(TESTGAME) +endif + +$(TESTEDITOR): $(TESTEDITOR_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP) + $(LINK_STATUS) + $(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK) +ifneq ($(STRIP),) + $(STRIP) $(TESTEDITOR) +endif + +$(EDUKE32): $(DUKE3D_OBJS_EXP) $(COMMON_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(ENET_TARGET) $(DUKE3D_MISCDEPS) $(LINK_STATUS) $(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK) ifneq ($(STRIP),) @@ -369,7 +412,7 @@ ifeq ($(PLATFORM),DARWIN) cp -f "$(EDUKE32)" "EDuke32.app/Contents/MacOS/" endif -$(MAPSTER32): $(DUKE3D_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(DUKE3D_EDITOR_MISCDEPS) +$(MAPSTER32): $(DUKE3D_EDITOR_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(ENGINE_EDITOR_OBJS_EXP) $(ENGINE_OBJS_EXP) $(AUDIOLIB_OBJS_EXP) $(DUKE3D_EDITOR_MISCDEPS) $(LINK_STATUS) $(RECIPE_IF) $(LINKER) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(DUKE3D_EDITOR_LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(RECIPE_RESULT_LINK) ifneq ($(STRIP),) @@ -381,6 +424,7 @@ ifeq ($(PLATFORM),DARWIN) cp -f "$(MAPSTER32)" "Mapster32.app/Contents/MacOS/" endif + include Makefile.deps include $(ENGINE_ROOT)/Makefile.deps @@ -415,10 +459,6 @@ arttool$(EXESUFFIX): $(ENGINE_OBJ)/arttool.$o $(ONESTEP_STATUS) $(RECIPE_IF) $(L_CXX) $(CPPONLYFLAGS) -o $@ $^ $(COMMONFLAGS) $(LINKERFLAGS) $(LIBDIRS) $(LIBS) $(STATICSTDCPP) $(STDCPPLIB) $(UTIL_LIBS) $(RECIPE_RESULT_ONESTEP) -$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c | $(DUKE3D_OBJ) - $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) - #### Lunatic # Create object files directly with luajit @@ -435,7 +475,7 @@ $(DUKE3D_OBJ)/luaJIT_BC_%.$o: source/lunatic/%.ilua $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/lunatic/%.c $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) # TODO: _m32 # List of exported symbols, OS X @@ -473,10 +513,6 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.c | $(ENGINE_OBJ) $(COMPILE_STATUS) $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) -$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/util/%.c | $(DUKE3D_OBJ) - $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) - $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/%.m | $(ENGINE_OBJ) $(COMPILE_STATUS) $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) @@ -489,10 +525,6 @@ $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.c | $(ENGINE_OBJ) $(COMPILE_STATUS) $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) -$(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/misc/%.rc | $(ENGINE_OBJ) - $(COMPILE_STATUS) - $(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(ENGINE_SRC) $(RECIPE_RESULT_COMPILE) - $(ENGINE_OBJ)/%.$o: $(ENGINE_SRC)/util/%.c | $(ENGINE_OBJ) $(COMPILE_STATUS) $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENGINE_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) @@ -517,25 +549,45 @@ $(ENET_OBJ)/%.o: $(ENET_SRC)/%.c $(ENET_INC)/enet/*.h | $(ENET_OBJ) $(COMPILE_STATUS) $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(ENET_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) +$(TESTGAME_OBJ)/%.$o: $(TESTGAME_SRC)/%.c | $(TESTGAME_OBJ) + $(COMPILE_STATUS) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(TESTGAME_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + +$(TESTGAME_OBJ)/%.$o: $(TESTGAME_RSRC)/%.rc | $(TESTGAME_OBJ) + $(COMPILE_STATUS) + $(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(TESTGAME_SRC) --include-dir=$(TESTGAME_RSRC) $(RECIPE_RESULT_COMPILE) + +$(TESTGAME_OBJ)/%.$o: $(TESTGAME_RSRC)/%.c | $(TESTGAME_OBJ) + $(COMPILE_STATUS) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(TESTGAME_CFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE) + +$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.c | $(DUKE3D_OBJ) + $(COMPILE_STATUS) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + +$(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/util/%.c | $(DUKE3D_OBJ) + $(COMPILE_STATUS) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.m | $(DUKE3D_OBJ) $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/%.cpp | $(DUKE3D_OBJ) $(COMPILE_STATUS) - $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(CXX) $(CPPONLYFLAGS) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/jmact/%.c | $(DUKE3D_OBJ) $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(DUKE3D_OBJ)/%.$o: $(DUKE3D_SRC)/misc/%.rc | $(DUKE3D_OBJ) $(COMPILE_STATUS) - $(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(DUKE3D_SRC) -DPOLYMER=$(POLYMER) $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(RC) -i $< -o $@ --include-dir=$(ENGINE_INC) --include-dir=$(DUKE3D_SRC) --include-dir=$(DUKE3D_RSRC) -DPOLYMER=$(POLYMER) $(RECIPE_RESULT_COMPILE) $(DUKE3D_OBJ)/%.$o: $(DUKE3D_RSRC)/%.c | $(DUKE3D_OBJ) $(COMPILE_STATUS) - $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE) + $(RECIPE_IF) $(COMPILER) $(COMMONFLAGS) $(COMPILERFLAGS) $(DUKE3D_CFLAGS) -Wno-pointer-sign -c $< -o $@ $(RECIPE_RESULT_COMPILE) $(DUKE3D_RSRC)/game_banner.c: $(DUKE3D_RSRC)/game.bmp echo "#include " > $@ @@ -546,17 +598,20 @@ $(DUKE3D_RSRC)/editor_banner.c: $(DUKE3D_RSRC)/build.bmp echo "extern const GdkPixdata startbanner_pixdata;" >> $@ gdk-pixbuf-csource --extern --struct --raw --name=startbanner_pixdata $^ | sed 's/load_inc//' >> $@ -$(ENGINE_OBJ) $(AUDIOLIB_OBJ) $(ENET_OBJ) $(DUKE3D_OBJ): +$(ENGINE_OBJ) $(AUDIOLIB_OBJ) $(ENET_OBJ) $(DUKE3D_OBJ) $(TESTGAME_OBJ): mkdir $@ # PHONIES clean: $(UNDO_REV) - -rm -f $(EDUKE32) $(MAPSTER32) $(DUKE3D_OBJS_EXP) $(DUKE3D_EDITOR_OBJS_EXP) $(DUKE3D_MISCDEPS) $(DUKE3D_EDITOR_MISCDEPS) core* + -rm -f $(EDUKE32) $(MAPSTER32) $(COMMON_OBJS_EXP) $(DUKE3D_OBJS_EXP) $(COMMON_EDITOR_OBJS_EXP) $(DUKE3D_EDITOR_OBJS_EXP) $(DUKE3D_MISCDEPS) $(DUKE3D_EDITOR_MISCDEPS) core* ifeq ($(PLATFORM),DARWIN) -rm -rf EDuke32.app Mapster32.app endif +cleantest: + -rm -f $(TESTGAME) $(TESTEDITOR) $(TESTGAME_OBJS_EXP) $(TESTEDITOR_OBJS_EXP) + cleanutils: -rm -f $(addsuffix $(EXESUFFIX),$(UTILS) $(GAMEUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(UTILS))) $(addprefix $(DUKE3D_OBJ)/,$(addsuffix .$o,$(GAMEUTILS))) $(addsuffix $(EXESUFFIX),$(DXUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(DXUTILS))) $(addsuffix $(EXESUFFIX),$(SDLUTILS)) $(addprefix $(ENGINE_OBJ)/,$(addsuffix .$o,$(SDLUTILS))) $(UTIL_OBJS_EXP) diff --git a/polymer/eduke32/Makefile.common b/polymer/eduke32/Makefile.common index 00bce6337..e20e844d8 100644 --- a/polymer/eduke32/Makefile.common +++ b/polymer/eduke32/Makefile.common @@ -43,10 +43,10 @@ ifeq ($(findstring clang,$(CC)),clang) endif ifneq (0,$(CLANG)) - CC=clang -x c - CXX=clang -x c++ - L_CC=clang - L_CXX=clang + override CC=clang -x c + override CXX=clang -x c++ + override L_CC=clang + override L_CXX=clang endif CCFULLPATH=$(CC) @@ -341,6 +341,19 @@ ifeq ($(PLATFORM),DARWIN) endif +ifneq (0,$(RELEASE)) + # Debugging disabled + COMMONFLAGS += $(F_NO_STACK_PROTECTOR) +else + # Debugging enabled + ifneq (0,$(KRANDDEBUG)) + COMMONFLAGS += -fno-inline -fno-inline-functions -fno-inline-functions-called-once + endif + ifeq (1,$(SDL_TARGET)) + COMPILERFLAGS += -DNOSDLPARACHUTE + endif +endif + ifndef OPTOPT ifeq ($(PLATFORM), WII) OPTOPT= @@ -641,6 +654,11 @@ ifeq ($(SUBPLATFORM),LINUX) override NOASM=1 endif endif + + LIBS+= -lrt + ifeq (0,$(CLANG)) + COMMONFLAGS += -fno-pic + endif endif ifeq ($(PLATFORM),DARWIN) COMPILERFLAGS+= -DUNDERSCORES @@ -685,6 +703,8 @@ ifeq ($(PLATFORM),DARWIN) LINKERFLAGS += -read_only_relocs suppress endif endif + + COMMONFLAGS += -fno-pic endif ifeq ($(PLATFORM),WINDOWS) COMPILERFLAGS+= -DUNDERSCORES -DHAVE_INTTYPES -Iplatform/Windows/include @@ -723,6 +743,8 @@ ifeq ($(PLATFORM),WINDOWS) override NOASM=1 endif endif + + COMMONFLAGS += -fno-pic endif ifeq ($(PLATFORM),BSD) COMPILERFLAGS+= -I/usr/X11R6/include diff --git a/polymer/eduke32/build/include/baselayer.h b/polymer/eduke32/build/include/baselayer.h index 64ba4b3ec..f6196745f 100644 --- a/polymer/eduke32/build/include/baselayer.h +++ b/polymer/eduke32/build/include/baselayer.h @@ -117,7 +117,10 @@ void uninitsystem(void); void system_getcvars(void); extern int32_t flushlogwindow; +void initputs(const char *); +#define buildputs initputs void initprintf(const char *, ...) ATTRIBUTE((format(printf,1,2))); +#define buildprintf initprintf void debugprintf(const char *,...) ATTRIBUTE((format(printf,1,2))); int32_t handleevents(void); diff --git a/polymer/eduke32/build/include/build.h b/polymer/eduke32/build/include/build.h index f821639a0..94443f64b 100644 --- a/polymer/eduke32/build/include/build.h +++ b/polymer/eduke32/build/include/build.h @@ -1078,7 +1078,7 @@ void E_MapArt_Setup(const char *filename); void loadtile(int16_t tilenume); int32_t qloadkvx(int32_t voxindex, const char *filename); intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz); -//void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2); +void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, int32_t ysiz, int32_t tilenume2, int32_t sx2, int32_t sy2); void makepalookup(int32_t palnum, const char *remapbuf, int8_t r, int8_t g, int8_t b, char dastat); //void setvgapalette(void); void setbasepaltable(uint8_t **basepaltable, uint8_t basepalcount); diff --git a/polymer/eduke32/build/include/common.h b/polymer/eduke32/build/include/common.h index 3ebced2c0..cea197d58 100644 --- a/polymer/eduke32/build/include/common.h +++ b/polymer/eduke32/build/include/common.h @@ -47,6 +47,9 @@ enum //// EXTERN DECLS extern struct strllist *CommandPaths, *CommandGrps; +extern const char *s_buildRev; +extern const char *s_buildTimestamp; +extern const char *s_buildInfo; //// FUNCTIONS void G_AddGroup(const char *buffer); @@ -77,6 +80,8 @@ int32_t dist(const spritetype *s1, const spritetype *s2); void COMMON_clearbackground(int32_t numcols, int32_t numrows); +extern void G_ExtPreInit(void); + // timer defs for profiling function chunks the simple way #define EDUKE32_TMRDEF int32_t t[20], ti=0; const char *tmrstr=__func__; fprintf(stderr,"%s\n",tmrstr); t[ti++]=getticks(); #define EDUKE32_TMRTIC t[ti++]=getticks() diff --git a/polymer/eduke32/build/include/editor.h b/polymer/eduke32/build/include/editor.h index cfa8bc32c..ceb054492 100644 --- a/polymer/eduke32/build/include/editor.h +++ b/polymer/eduke32/build/include/editor.h @@ -158,6 +158,7 @@ extern void SetFirstWall(int32_t sectnum, int32_t wallnum, int32_t alsoynw); extern int32_t fixspritesectors(void); extern void clearkeys(void); +extern const char *ExtGetVer(void); extern int32_t ExtInit(void); extern int32_t ExtPreInit(int32_t argc,const char **argv); extern void ExtUnInit(void); diff --git a/polymer/eduke32/build/include/mmulti.h b/polymer/eduke32/build/include/mmulti.h new file mode 100644 index 000000000..d0382d510 --- /dev/null +++ b/polymer/eduke32/build/include/mmulti.h @@ -0,0 +1,29 @@ +// mmulti.h + +#ifndef __mmulti_h__ +#define __mmulti_h__ + +#define MAXMULTIPLAYERS 16 + +extern int myconnectindex, numplayers; +extern int connecthead, connectpoint2[MAXMULTIPLAYERS]; +extern unsigned char syncstate; + +int initmultiplayersparms(int argc, char const * const argv[]); +int initmultiplayerscycle(void); + +void initmultiplayers(int argc, char const * const argv[], unsigned char damultioption, unsigned char dacomrateoption, unsigned char dapriority); +void setpackettimeout(int datimeoutcount, int daresendagaincount); +void uninitmultiplayers(void); +void sendlogon(void); +void sendlogoff(void); +int getoutputcirclesize(void); +void setsocket(int newsocket); +void sendpacket(int other, unsigned char *bufptr, int messleng); +int getpacket(int *other, unsigned char *bufptr); +void flushpackets(void); +void genericmultifunction(int other, unsigned char *bufptr, int messleng, int command); +int isvalidipaddress(const char *st); + +#endif // __mmulti_h__ + diff --git a/polymer/eduke32/build/include/osd.h b/polymer/eduke32/build/include/osd.h index 05caa622f..78793201e 100644 --- a/polymer/eduke32/build/include/osd.h +++ b/polymer/eduke32/build/include/osd.h @@ -254,6 +254,9 @@ void OSD_Draw(void); // just like printf void OSD_Printf(const char *fmt, ...) ATTRIBUTE((format(printf,1,2))); +// just like puts +void OSD_Puts(const char *str); + // executes buffered commands void OSD_DispatchQueued(void); diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 5f77a803c..2bb42a1f7 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -29,7 +29,28 @@ static int32_t crctable[256]; static char kensig[64]; -extern const char *ExtGetVer(void); +static const char *CallExtGetVer(void); +static int32_t CallExtInit(void); +static int32_t CallExtPreInit(int32_t argc,const char **argv); +static void CallExtUnInit(void); +static void CallExtPreCheckKeys(void); +static void CallExtAnalyzeSprites(int32_t, int32_t, int32_t, int32_t); +static void CallExtCheckKeys(void); +static void CallExtPreLoadMap(void); +static void CallExtSetupMapFilename(const char *mapname); +static void CallExtLoadMap(const char *mapname); +static int32_t CallExtPreSaveMap(void); +static void CallExtSaveMap(const char *mapname); +static const char *CallExtGetSectorCaption(int16_t sectnum); +static const char *CallExtGetWallCaption(int16_t wallnum); +static const char *CallExtGetSpriteCaption(int16_t spritenum); +static void CallExtShowSectorData(int16_t sectnum); +static void CallExtShowWallData(int16_t wallnum); +static void CallExtShowSpriteData(int16_t spritenum); +static void CallExtEditSectorData(int16_t sectnum); +static void CallExtEditWallData(int16_t wallnum); +static void CallExtEditSpriteData(int16_t spritenum); +// static const char *CallExtGetSectorType(int32_t lotag); int8_t m32_clipping=2; static int32_t m32_rotateang = 0; @@ -472,9 +493,9 @@ void M32_DrawRoomsAndMasks(void) yax_preparedrawrooms(); drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum); - yax_drawrooms(ExtAnalyzeSprites, cursectnum, 0, 0); + yax_drawrooms(CallExtAnalyzeSprites, cursectnum, 0, 0); - ExtAnalyzeSprites(0,0,0,0); + CallExtAnalyzeSprites(0,0,0,0); drawmasks(); M32_ResetFakeRORTiles(); @@ -483,7 +504,7 @@ void M32_DrawRoomsAndMasks(void) { polymer_editorpick(); drawrooms(pos.x,pos.y,pos.z,ang,horiz,cursectnum); - ExtAnalyzeSprites(0,0,0,0); + CallExtAnalyzeSprites(0,0,0,0); drawmasks(); M32_ResetFakeRORTiles(); } @@ -521,7 +542,7 @@ int32_t app_main(int32_t argc, const char **argv) editstatus = 1; newaspect_enable = 1; - if ((i = ExtPreInit(argc,argv)) < 0) return -1; + if ((i = CallExtPreInit(argc,argv)) < 0) return -1; #ifdef _WIN32 backgroundidle = 1; @@ -564,7 +585,7 @@ int32_t app_main(int32_t argc, const char **argv) Bstrcat(boardfilename, ".map"); //Bcanonicalisefilename(boardfilename,0); - if ((i = ExtInit()) < 0) return -1; + if ((i = CallExtInit()) < 0) return -1; #ifdef STARTUP_SETUP_WINDOW if (i || forcesetup || cmdsetup) { @@ -677,7 +698,7 @@ int32_t app_main(int32_t argc, const char **argv) setbrightness(0,0,0); if (setgamemode(fullscreen, xdim2d, ydim2d, 8) < 0) { - ExtUnInit(); + CallExtUnInit(); uninitengine(); Bprintf("%d * %d not supported in this graphics mode\n",xdim2d,ydim2d); Bexit(0); @@ -703,7 +724,7 @@ int32_t app_main(int32_t argc, const char **argv) { if (setgamemode(fullscreen, xdimgame, ydimgame, bppgame) < 0) { - ExtUnInit(); + CallExtUnInit(); uninitengine(); Bprintf("%d * %d not supported in this graphics mode\n",xdim,ydim); Bexit(0); @@ -736,7 +757,7 @@ CANCEL: synctics = totalclock-lockclock; lockclock += synctics; - ExtPreCheckKeys(); + CallExtPreCheckKeys(); M32_DrawRoomsAndMasks(); @@ -752,7 +773,7 @@ CANCEL: M32_drawdebug(); #endif - ExtCheckKeys(); + CallExtCheckKeys(); if (keystatus[1]) @@ -823,7 +844,7 @@ CANCEL: } - ExtUnInit(); + CallExtUnInit(); // clearfilenames(); uninitengine(); @@ -1295,12 +1316,12 @@ void editinput(void) { case SEARCH_CEILING: case SEARCH_FLOOR: - ExtShowSectorData(searchsector); break; + CallExtShowSectorData(searchsector); break; case SEARCH_WALL: case SEARCH_MASKWALL: - ExtShowWallData(searchwall); break; + CallExtShowWallData(searchwall); break; case SEARCH_SPRITE: - ExtShowSpriteData(searchwall); break; + CallExtShowSpriteData(searchwall); break; } keystatus[0x3f] = keystatus[0x40] = 0; @@ -1311,12 +1332,12 @@ void editinput(void) { case SEARCH_CEILING: case SEARCH_FLOOR: - ExtEditSectorData(searchsector); break; + CallExtEditSectorData(searchsector); break; case SEARCH_WALL: case SEARCH_MASKWALL: - ExtEditWallData(searchwall); break; + CallExtEditWallData(searchwall); break; case SEARCH_SPRITE: - ExtEditSpriteData(searchwall); break; + CallExtEditSpriteData(searchwall); break; } keystatus[0x41] = keystatus[0x42] = 0; @@ -3285,7 +3306,7 @@ void overheadeditor(void) draw2dgrid(pos.x,pos.y,pos.z,cursectnum,ang,zoom,grid); - ExtPreCheckKeys(); + CallExtPreCheckKeys(); { int32_t cx, cy; @@ -3342,7 +3363,7 @@ void overheadeditor(void) YAX_SKIPSECTOR(i); - dabuffer = ExtGetSectorCaption(i); + dabuffer = CallExtGetSectorCaption(i); if (dabuffer[0] == 0) continue; @@ -3383,7 +3404,7 @@ void overheadeditor(void) //Get average point of wall // if ((dax > x3) && (dax < x4) && (day > y3) && (day < y4)) { - dabuffer = ExtGetWallCaption(i); + dabuffer = CallExtGetWallCaption(i); if (dabuffer[0] == 0) continue; @@ -3414,7 +3435,7 @@ void overheadeditor(void) if ((!m32_sideview || !alwaysshowgray) && sprite[i].sectnum >= 0) YAX_SKIPSECTOR(sprite[i].sectnum); - dabuffer = ExtGetSpriteCaption(i); + dabuffer = CallExtGetSpriteCaption(i); if (dabuffer[0] != 0) { int32_t blocking = (sprite[i].cstat&1); @@ -3701,7 +3722,7 @@ void overheadeditor(void) inputchecked = 1; VM_OnEvent(EVENT_PREKEYS2D, -1); - ExtCheckKeys(); // TX 20050101, it makes more sense to have this here so keys can be overwritten with new functions in bstub.c + CallExtCheckKeys(); // TX 20050101, it makes more sense to have this here so keys can be overwritten with new functions in bstub.c // Flip/mirror sector Ed Coolidge if (keystatus[0x2d] || keystatus[0x15]) // X or Y (2D) @@ -3862,7 +3883,7 @@ void overheadeditor(void) keystatus[88] = 0; //__clearscreen_beforecapture__ - Bsprintf(tempbuf, "Mapster32 %s", ExtGetVer()); + Bsprintf(tempbuf, "Mapster32 %s", CallExtGetVer()); screencapture("captxxxx.tga", eitherSHIFT, tempbuf); showframe(1); @@ -4011,16 +4032,16 @@ rotate_hlsect_out: #if 1 if (keystatus[0x3f]) //F5 { - ExtShowSectorData(0); + CallExtShowSectorData(0); } if (keystatus[0x40]) //F6 { if (pointhighlight >= 16384) - ExtShowSpriteData(pointhighlight-16384); + CallExtShowSpriteData(pointhighlight-16384); else if (linehighlight >= 0) - ExtShowWallData(linehighlight); + CallExtShowWallData(linehighlight); else - ExtShowWallData(0); + CallExtShowWallData(0); } if (keystatus[0x41]) //F7 { @@ -4031,7 +4052,7 @@ rotate_hlsect_out: { YAX_SKIPSECTOR(i); - ExtEditSectorData(i); + CallExtEditSectorData(i); break; } } @@ -4040,9 +4061,9 @@ rotate_hlsect_out: keystatus[0x42] = 0; if (pointhighlight >= 16384) - ExtEditSpriteData(pointhighlight-16384); + CallExtEditSpriteData(pointhighlight-16384); else if (linehighlight >= 0) - ExtEditWallData(linehighlight); + CallExtEditWallData(linehighlight); } #endif @@ -5543,11 +5564,11 @@ end_point_dragging: if (cursectornum < numsectors) { if (pointhighlight >= 16384) - ExtEditSpriteData(pointhighlight-16384); + CallExtEditSpriteData(pointhighlight-16384); else if ((linehighlight >= 0) && ((bstatus&1) || sectorofwall(linehighlight) == cursectornum)) - ExtEditWallData(linehighlight); + CallExtEditWallData(linehighlight); else if (cursectornum >= 0) - ExtEditSectorData(cursectornum); + CallExtEditSectorData(cursectornum); } bstatus &= ~6; @@ -7678,7 +7699,7 @@ CANCEL: reset_default_mapstate(); Bstrcpy(boardfilename,"newboard.map"); - ExtLoadMap(boardfilename); + CallExtLoadMap(boardfilename); #if M32_UNDO map_undoredo_free(); #endif @@ -7820,7 +7841,7 @@ CANCEL: SaveBoardAndPrintMessage(selectedboardfilename); Bstrcpy(boardfilename, selectedboardfilename); - ExtSetupMapFilename(boardfilename); + CallExtSetupMapFilename(boardfilename); } bad = 0; } @@ -7880,7 +7901,7 @@ CANCEL: goto CANCEL; } - ExtUnInit(); + CallExtUnInit(); // clearfilenames(); uninitengine(); @@ -7916,7 +7937,7 @@ CANCEL: if (setgamemode(fullscreen,xdimgame,ydimgame,bppgame) < 0) { initprintf("%d * %d not supported in this graphics mode\n",xdim,ydim); - ExtUnInit(); + CallExtUnInit(); // clearfilenames(); uninitengine(); Bexit(1); @@ -8087,12 +8108,12 @@ const char *SaveBoard(const char *fn, uint32_t flags) #endif saveboard_savedtags = 0; - saveboard_fixedsprites = ExtPreSaveMap(); + saveboard_fixedsprites = CallExtPreSaveMap(); ret = saveboard(f, &startpos, startang, startsectnum); if ((flags&M32_SB_NOEXT)==0) { - ExtSaveMap(f); + CallExtSaveMap(f); saveboard_savedtags = !taglab_save(f); } @@ -8115,7 +8136,7 @@ int32_t LoadBoard(const char *filename, uint32_t flags) editorzrange[0] = INT32_MIN; editorzrange[1] = INT32_MAX; - ExtPreLoadMap(); + CallExtPreLoadMap(); i = loadboard(filename, (flags&4)|loadingflags, &pos, &ang, &cursectnum); if (i == -2) i = loadoldboard(filename,loadingflags, &pos, &ang, &cursectnum); @@ -8140,7 +8161,7 @@ int32_t LoadBoard(const char *filename, uint32_t flags) loadmhk(0); tagstat = taglab_load(boardfilename, loadingflags); - ExtLoadMap(boardfilename); + CallExtLoadMap(boardfilename); { char msgtail[64]; @@ -8773,7 +8794,7 @@ static void clearministatbar16(void) if (xdim >= 800) { - Bsprintf(tempbuf, "Mapster32 %s", ExtGetVer()); + Bsprintf(tempbuf, "Mapster32 %s", CallExtGetVer()); printext16(xdim2d-(Bstrlen(tempbuf)<<3)-3, ydim2d-STATUS2DSIZ2+10, editorcolors[4],-1, tempbuf, 0); printext16(xdim2d-(Bstrlen(tempbuf)<<3)-2, ydim2d-STATUS2DSIZ2+9, editorcolors[12],-1, tempbuf, 0); } @@ -9045,7 +9066,7 @@ int32_t _getnumber256(const char *namestart, int32_t num, int32_t maxnumber, cha inputchecked = 1; if ((flags&8)==0) - ExtCheckKeys(); + CallExtCheckKeys(); getnumber_clearline(); @@ -10117,7 +10138,7 @@ void showsectordata(int16_t sectnum, int16_t small) if (small) { - _printmessage16("^10Sector %d %s ^O(F7 to edit)", sectnum, ExtGetSectorCaption(sectnum)); + _printmessage16("^10Sector %d %s ^O(F7 to edit)", sectnum, CallExtGetSectorCaption(sectnum)); return; } @@ -10187,7 +10208,7 @@ void showwalldata(int16_t wallnum, int16_t small) if (small) { _printmessage16("^10Wall %d %s ^O(F8 to edit)", wallnum, - ExtGetWallCaption(wallnum)); + CallExtGetWallCaption(wallnum)); return; } @@ -10236,7 +10257,7 @@ void showspritedata(int16_t spritenum, int16_t small) if (small) { - _printmessage16("^10Sprite %d %s ^O(F8 to edit)",spritenum, ExtGetSpriteCaption(spritenum)); + _printmessage16("^10Sprite %d %s ^O(F8 to edit)",spritenum, CallExtGetSpriteCaption(spritenum)); return; } @@ -10688,7 +10709,7 @@ void test_map(int32_t mode) } Bstrcat(fullparam, param); - ExtPreSaveMap(); + CallExtPreSaveMap(); if (mode) saveboard(PLAYTEST_MAPNAME, &startpos, startang, startsectnum); else @@ -10731,3 +10752,100 @@ void test_map(int32_t mode) else printmessage16("Position must be in valid player space to test map!"); } + +// These will be more useful in the future... +static const char *CallExtGetVer(void) +{ + return ExtGetVer(); +} +static int32_t CallExtInit(void) +{ + return ExtInit(); +} +static int32_t CallExtPreInit(int32_t argc,const char **argv) +{ + return ExtPreInit(argc, argv); +} +static void CallExtUnInit(void) +{ + ExtUnInit(); +} +static void CallExtPreCheckKeys(void) +{ + ExtPreCheckKeys(); +} +static void CallExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr) +{ + ExtAnalyzeSprites(ourx, oury, oura, smoothr); + VM_OnEvent(EVENT_ANALYZESPRITES, -1); +} +static void CallExtCheckKeys(void) +{ + ExtCheckKeys(); +} +static void CallExtPreLoadMap(void) +{ + VM_OnEvent(EVENT_PRELOADMAP, -1); + ExtPreLoadMap(); +} +static void CallExtSetupMapFilename(const char *mapname) +{ + ExtSetupMapFilename(mapname); +} +static void CallExtLoadMap(const char *mapname) +{ + ExtLoadMap(mapname); + VM_OnEvent(EVENT_LOADMAP, -1); +} +static int32_t CallExtPreSaveMap(void) +{ + VM_OnEvent(EVENT_PRESAVEMAP, -1); + return ExtPreSaveMap(); +} +static void CallExtSaveMap(const char *mapname) +{ + ExtSaveMap(mapname); + VM_OnEvent(EVENT_SAVEMAP, -1); +} +static const char *CallExtGetSectorCaption(int16_t sectnum) +{ + return ExtGetSectorCaption(sectnum); +} +static const char *CallExtGetWallCaption(int16_t wallnum) +{ + return ExtGetWallCaption(wallnum); +} +static const char *CallExtGetSpriteCaption(int16_t spritenum) +{ + return ExtGetSpriteCaption(spritenum); +} +static void CallExtShowSectorData(int16_t sectnum) +{ + ExtShowSectorData(sectnum); +} +static void CallExtShowWallData(int16_t wallnum) +{ + ExtShowWallData(wallnum); +} +static void CallExtShowSpriteData(int16_t spritenum) +{ + ExtShowSpriteData(spritenum); +} +static void CallExtEditSectorData(int16_t sectnum) +{ + ExtEditSectorData(sectnum); +} +static void CallExtEditWallData(int16_t wallnum) +{ + ExtEditWallData(wallnum); +} +static void CallExtEditSpriteData(int16_t spritenum) +{ + ExtEditSpriteData(spritenum); +} +#if 0 +static const char *CallExtGetSectorType(int32_t lotag) +{ + return ExtGetSectorType(lotag); +} +#endif diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index 09e584b9d..1d4bc7404 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -136,7 +136,7 @@ int32_t editorgridextent = 131072; #define MAXYSIZ 256 #define MAXZSIZ 255 #define MAXVOXMIPS 5 -static intptr_t voxoff[MAXVOXELS][MAXVOXMIPS]; +intptr_t voxoff[MAXVOXELS][MAXVOXMIPS]; // used in KenBuild static char voxlock[MAXVOXELS][MAXVOXMIPS]; int32_t voxscale[MAXVOXELS]; @@ -11736,7 +11736,6 @@ intptr_t allocatepermanenttile(int16_t tilenume, int32_t xsiz, int32_t ysiz) return waloff[tilenume]; } -#if 0 // // copytilepiece // @@ -11776,7 +11775,6 @@ void copytilepiece(int32_t tilenume1, int32_t sx1, int32_t sy1, int32_t xsiz, in } } } -#endif // // qloadkvx diff --git a/polymer/eduke32/build/src/mmulti_null.c b/polymer/eduke32/build/src/mmulti_null.c new file mode 100644 index 000000000..a643f0b24 --- /dev/null +++ b/polymer/eduke32/build/src/mmulti_null.c @@ -0,0 +1,101 @@ +// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman +// Ken Silverman's official web site: "http://www.advsys.net/ken" +// See the included license file "BUILDLIC.TXT" for license info. +// +// This file has been modified from Ken Silverman's original release +// by Jonathon Fowler (jf@jonof.id.au) + +#include "compat.h" +#include "mmulti.h" + + +int myconnectindex, numplayers; +int connecthead, connectpoint2[MAXMULTIPLAYERS] = { -1 }; +unsigned char syncstate = 0; + +int isvalidipaddress (const char *st) +{ + UNREFERENCED_PARAMETER(st); + return 0; +} + +int initmultiplayersparms(int argc, char const * const argv[]) +{ + UNREFERENCED_PARAMETER(argc); + UNREFERENCED_PARAMETER(argv); + return 0; +} + +int initmultiplayerscycle(void) +{ + return 0; +} + +void initmultiplayers(int argc, char const * const argv[], unsigned char damultioption, unsigned char dacomrateoption, unsigned char dapriority) +{ + UNREFERENCED_PARAMETER(argc); + UNREFERENCED_PARAMETER(argv); + UNREFERENCED_PARAMETER(damultioption); + UNREFERENCED_PARAMETER(dacomrateoption); + UNREFERENCED_PARAMETER(dapriority); + + numplayers = 1; myconnectindex = 0; + connecthead = 0; connectpoint2[0] = -1; +} + +void setpackettimeout(int datimeoutcount, int daresendagaincount) +{ + UNREFERENCED_PARAMETER(datimeoutcount); + UNREFERENCED_PARAMETER(daresendagaincount); +} + +void uninitmultiplayers(void) +{ +} + +void sendlogon(void) +{ +} + +void sendlogoff(void) +{ +} + +int getoutputcirclesize(void) +{ + return 0; +} + +void setsocket(int newsocket) +{ + UNREFERENCED_PARAMETER(newsocket); +} + +void sendpacket(int other, unsigned char *bufptr, int messleng) +{ + UNREFERENCED_PARAMETER(other); + UNREFERENCED_PARAMETER(bufptr); + UNREFERENCED_PARAMETER(messleng); +} + +int getpacket (int *other, unsigned char *bufptr) +{ + UNREFERENCED_PARAMETER(other); + UNREFERENCED_PARAMETER(bufptr); + + return 0; +} + +void flushpackets(void) +{ +} + +void genericmultifunction(int other, unsigned char *bufptr, int messleng, int command) +{ + UNREFERENCED_PARAMETER(other); + UNREFERENCED_PARAMETER(bufptr); + UNREFERENCED_PARAMETER(messleng); + UNREFERENCED_PARAMETER(command); +} + + diff --git a/polymer/eduke32/build/src/osd.c b/polymer/eduke32/build/src/osd.c index b87498a95..6fc065c0a 100644 --- a/polymer/eduke32/build/src/osd.c +++ b/polymer/eduke32/build/src/osd.c @@ -1531,7 +1531,25 @@ void OSD_Draw(void) // -// OSD_Printf() -- Print a string to the onscreen display +// OSD_Printf() -- Print a formatted string to the onscreen display +// and write it to the log file +// + +void OSD_Printf(const char *fmt, ...) +{ + static char tmpstr[8192]; + va_list va; + + va_start(va, fmt); + Bvsnprintf(tmpstr, sizeof(tmpstr), fmt, va); + va_end(va); + + OSD_Puts(tmpstr); +} + + +// +// OSD_Puts() -- Print a string to the onscreen display // and write it to the log file // @@ -1543,19 +1561,16 @@ static inline void OSD_LineFeed(void) Bmemset(osd->text.fmt, osd->draw.textpal, osd->draw.cols); if (osd->text.lines < osd->text.maxlines) osd->text.lines++; } + #define MAX_ERRORS 4096 -void OSD_Printf(const char *fmt, ...) + +void OSD_Puts(const char *tmpstr) { - static char tmpstr[8192]; - char *chp, p=osd->draw.textpal, s=osd->draw.textshade; - va_list va; + const char *chp; + char p=osd->draw.textpal, s=osd->draw.textshade; mutex_lock(&osd->mutex); - va_start(va, fmt); - Bvsnprintf(tmpstr, 8192, fmt, va); - va_end(va); - if (tmpstr[0]==0) { mutex_unlock(&osd->mutex); @@ -1565,7 +1580,7 @@ void OSD_Printf(const char *fmt, ...) if (tmpstr[0]=='^' && tmpstr[1]=='1' && tmpstr[2]=='0' && ++osd->log.errors > MAX_ERRORS) { if (osd->log.errors == MAX_ERRORS + 1) - Bstrcpy(tmpstr, OSD_ERROR "\nToo many errors. Logging errors stopped.\n"); + tmpstr = "\nToo many errors. Logging errors stopped.\n"; else { osd->log.errors = MAX_ERRORS + 2; @@ -1578,15 +1593,15 @@ void OSD_Printf(const char *fmt, ...) { if (osdlog && (!osd->log.cutoff || osd->log.lines < osd->log.cutoff)) { - chp = Xstrdup(tmpstr); - Bfputs(OSD_StripColors(chp, tmpstr), osdlog); - Bprintf("%s", chp); - Bfree(chp); + char *chp2 = Xstrdup(tmpstr); + Bfputs(OSD_StripColors(chp2, tmpstr), osdlog); + Bprintf("%s", chp2); + Bfree(chp2); } } else if (osd->log.lines == osd->log.cutoff) { - Bfputs("\nMaximal log size reached. Logging stopped.\nSet the \"osd->log.cutoff\" console variable to a higher value if you need a longer log.\n", osdlog); + Bfputs("\nMaximal log size reached. Logging stopped.\nSet the \"osdlogcutoff\" console variable to a higher value if you need a longer log.\n", osdlog); osd->log.lines = osd->log.cutoff + 1; } diff --git a/polymer/eduke32/build/src/sdlayer.c b/polymer/eduke32/build/src/sdlayer.c index 60ee521b0..505a35484 100644 --- a/polymer/eduke32/build/src/sdlayer.c +++ b/polymer/eduke32/build/src/sdlayer.c @@ -562,22 +562,32 @@ void system_getcvars(void) #endif // -// initprintf() -- prints a string to the intitialization window +// initprintf() -- prints a formatted string to the intitialization window // void initprintf(const char *f, ...) { va_list va; char buf[2048]; - static char dabuf[2048]; va_start(va, f); Bvsnprintf(buf, sizeof(buf), f, va); va_end(va); + initputs(buf); +} + + +// +// initputs() -- prints a string to the intitialization window +// +void initputs(const char *buf) +{ + static char dabuf[2048]; + #ifdef __ANDROID__ __android_log_print(ANDROID_LOG_INFO,"DUKE", "%s",buf); #endif - OSD_Printf("%s", buf); + OSD_Puts(buf); // Bprintf("%s", buf); mutex_lock(&m_initprintf); @@ -603,7 +613,7 @@ void initprintf(const char *f, ...) } // -// debugprintf() -- prints a debug string to stderr +// debugprintf() -- prints a formatted debug string to stderr // void debugprintf(const char *f, ...) { diff --git a/polymer/eduke32/build/src/winlayer.c b/polymer/eduke32/build/src/winlayer.c index 4e9d15e3f..741c90fe2 100644 --- a/polymer/eduke32/build/src/winlayer.c +++ b/polymer/eduke32/build/src/winlayer.c @@ -609,20 +609,29 @@ void system_getcvars(void) #endif } + // -// initprintf() -- prints a string to the intitialization window +// initprintf() -- prints a formatted string to the intitialization window // void initprintf(const char *f, ...) { va_list va; char buf[2048]; - static char dabuf[2048]; va_start(va, f); Bvsnprintf(buf, sizeof(buf), f, va); va_end(va); - OSD_Printf("%s",buf); + initputs(buf); +} + + +// +// initputs() -- prints a string to the intitialization window +// +void initputs(const char *buf) +{ + OSD_Puts(buf); mutex_lock(&m_initprintf); if ((Bstrlen(dabuf) + Bstrlen(buf) + 2) > sizeof(dabuf)) @@ -644,7 +653,7 @@ void initprintf(const char *f, ...) // -// debugprintf() -- sends a debug string to the debugger +// debugprintf() -- sends a formatted debug string to the debugger // void debugprintf(const char *f, ...) { diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index 19148d66c..d85ae6c0c 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -729,16 +729,12 @@ void ExtLoadMap(const char *mapname) #if M32_UNDO map_undoredo_free(); #endif - - VM_OnEvent(EVENT_LOADMAP, -1); } void ExtSaveMap(const char *mapname) { UNREFERENCED_PARAMETER(mapname); saveboard("backup.map", &pos, ang, cursectnum); - - VM_OnEvent(EVENT_SAVEMAP, -1); } @@ -8456,8 +8452,6 @@ int32_t ExtPreSaveMap(void) { int32_t numfixedsprites; - VM_OnEvent(EVENT_PRESAVEMAP, -1); - numfixedsprites = fixspritesectors(); //Do this before saving! updatesectorz(startpos.x,startpos.y,startpos.z,&startsectnum); if (startsectnum < 0) @@ -10345,7 +10339,6 @@ static int32_t loadconsounds(const char *fn) void ExtPreLoadMap(void) { - VM_OnEvent(EVENT_PRELOADMAP, -1); } /// ^^^ @@ -11125,8 +11118,6 @@ void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr break; } } - - VM_OnEvent(EVENT_ANALYZESPRITES, -1); } #define MESSAGEX 3 // (xdimgame>>1) diff --git a/polymer/eduke32/source/common_game.h b/polymer/eduke32/source/common_game.h index c884d3155..95ab61976 100644 --- a/polymer/eduke32/source/common_game.h +++ b/polymer/eduke32/source/common_game.h @@ -69,8 +69,6 @@ extern void G_SetupGlobalPsky(void); ////////// -extern void G_ExtPreInit(void); - extern void G_AddSearchPaths(void); extern void G_CleanupSearchPaths(void); diff --git a/polymer/eduke32/source/global.h b/polymer/eduke32/source/global.h index 0c98d201b..30b3a1266 100644 --- a/polymer/eduke32/source/global.h +++ b/polymer/eduke32/source/global.h @@ -129,10 +129,7 @@ G_EXTERN int32_t g_screenCapture; G_EXTERN int32_t g_noEnemies; #ifndef __global_c__ -G_EXTERN const char *s_buildRev; G_EXTERN const char *s_buildDate; -G_EXTERN const char *s_buildTimestamp; -G_EXTERN const char *s_buildInfo; G_EXTERN int32_t g_spriteGravity; G_EXTERN int16_t g_spriteDeleteQueueSize; G_EXTERN char EpisodeNames[MAXVOLUMES][33]; diff --git a/polymer/eduke32/source/misc/buildres.rc b/polymer/eduke32/source/misc/buildres.rc index ae0d1d02b..2fb8640cc 100644 --- a/polymer/eduke32/source/misc/buildres.rc +++ b/polymer/eduke32/source/misc/buildres.rc @@ -2,8 +2,8 @@ #include #include "startwin.editor.h" -RSRC_ICON ICON "rsrc/build_icon.ico" -RSRC_BMP BITMAP "rsrc/build.bmp" +RSRC_ICON ICON "build_icon.ico" +RSRC_BMP BITMAP "build.bmp" WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200 STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU @@ -70,7 +70,7 @@ BEGIN END #if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) -1 24 "rsrc/64/manifest.build.xml" +1 24 "64/manifest.build.xml" #else -1 24 "rsrc/32/manifest.build.xml" +1 24 "32/manifest.build.xml" #endif diff --git a/polymer/eduke32/source/misc/gameres.rc b/polymer/eduke32/source/misc/gameres.rc index 7b2cd5dc0..f9f3bc7c1 100644 --- a/polymer/eduke32/source/misc/gameres.rc +++ b/polymer/eduke32/source/misc/gameres.rc @@ -2,8 +2,8 @@ #include #include "startwin.game.h" -RSRC_ICON ICON "rsrc/game_icon.ico" -RSRC_BMP BITMAP "rsrc/game.bmp" +RSRC_ICON ICON "game_icon.ico" +RSRC_BMP BITMAP "game.bmp" WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200 STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU @@ -78,7 +78,7 @@ BEGIN END #if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) -1 24 "rsrc/64/manifest.game.xml" +1 24 "64/manifest.game.xml" #else -1 24 "rsrc/32/manifest.game.xml" +1 24 "32/manifest.game.xml" #endif diff --git a/polymer/eduke32/source/testgame/rsrc/32/manifest.build.xml b/polymer/eduke32/source/testgame/rsrc/32/manifest.build.xml new file mode 100644 index 000000000..917810e46 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/32/manifest.build.xml @@ -0,0 +1,39 @@ + + + + + true + + + + BUILD by Ken Silverman + + + + + + + + + + + + + + + + + + diff --git a/polymer/eduke32/source/testgame/rsrc/32/manifest.game.xml b/polymer/eduke32/source/testgame/rsrc/32/manifest.game.xml new file mode 100644 index 000000000..ee2f4f87a --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/32/manifest.game.xml @@ -0,0 +1,39 @@ + + + + + true + + + + KenBuild + + + + + + + + + + + + + + + + + + diff --git a/polymer/eduke32/source/testgame/rsrc/64/manifest.build.xml b/polymer/eduke32/source/testgame/rsrc/64/manifest.build.xml new file mode 100644 index 000000000..65e30c215 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/64/manifest.build.xml @@ -0,0 +1,39 @@ + + + + + true + + + + BUILD by Ken Silverman + + + + + + + + + + + + + + + + + + diff --git a/polymer/eduke32/source/testgame/rsrc/64/manifest.game.xml b/polymer/eduke32/source/testgame/rsrc/64/manifest.game.xml new file mode 100644 index 000000000..31a556a19 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/64/manifest.game.xml @@ -0,0 +1,39 @@ + + + + + true + + + + KenBuild + + + + + + + + + + + + + + + + + + diff --git a/polymer/eduke32/source/testgame/rsrc/build.bmp b/polymer/eduke32/source/testgame/rsrc/build.bmp new file mode 100644 index 000000000..6800c5365 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build.bmp differ diff --git a/polymer/eduke32/source/testgame/rsrc/build.xcf b/polymer/eduke32/source/testgame/rsrc/build.xcf new file mode 100644 index 000000000..a1ddd6d4e Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build.xcf differ diff --git a/polymer/eduke32/source/testgame/rsrc/build_icon.c b/polymer/eduke32/source/testgame/rsrc/build_icon.c new file mode 100644 index 000000000..dea3aa2bc --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/build_icon.c @@ -0,0 +1,2350 @@ +/* GIMP RGBA C-Source image dump (build_icon.c) */ + +#include "compat.h" +#include "sdlappicon.h" + +static uint8_t sdlappicon_pixels[] = { + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0hgg\7\230\227\2274\316\316\316v\335\335\335" + "\267\327\327\327\321~\177\203\235\200\201\206+\217\217\221\3\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0baa\10\231\231\2310\314" + "\314\314p\335\334\334\261\344\343\343\353\361\360\360\377\354\352\352\377" + "\347\345\345\377\347\345\345\377\204\205\211\364\204\205\212\371\217\220" + "\223\304\220\220\222f\220\220\222\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CCC\7\233\233\233,\313" + "\312\312l\334\334\334\255\345\344\344\345\360\356\356\376\354\353\353\377" + "\350\346\346\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\341\337\337\375~\177\203\360\244\245\251\377\302\303\305\374\221" + "\221\223\377\220\220\222\222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0,,,\5\233\233\233)\310\310\310g\333\333\333\250\346\345\345\341" + "\356\355\355\375\355\353\353\377\350\346\346\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\335\333\333\372z{\200\366ifh\377iee\374" + "\220\220\222\377\220\220\222\313\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\7\7\2\221\221" + "\221%\306\306\306b\333\333\333\243\345\344\344\337\356\355\355\374\356\354" + "\354\377\351\347\347\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\327\325\325\370yz\177\364vtu\377urr\376\220\220\222\377\220\220\222\271" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1" + "~}}\40\305\305\305]\334\334\334\236\343\343\343\335\356\355\355\373\356\355" + "\355\377\351\347\347\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\311\307" + "\310\364|}\202\371\260\261\263\377\263\264\266\372\220\220\222\377\220\220" + "\222\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a``\31\302\302\302X\334\333" + "\333\231\342\342\342\332\360\357\357\373\356\355\355\377\351\347\347\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\300\277\300\357~\177\204\377_[[\377rpp\376" + "\220\220\222\377\220\220\222\216\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0???\2rrr\27\276\276\276S\332\332\332\224" + "\342\341\341\325\360\357\357\375\357\356\356\377\351\350\350\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\345\343\343\377\326\324" + "\324\377\322\321\321\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\270\266\267\353~\177\204\377roo\377}{|\373\220\220\222\377" + "\220\220\222x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\30\30\30\1\205\204\204" + "\25\273\273\273O\331\331\331\220\343\342\342\317\355\354\354\373\360\357" + "\357\377\352\350\350\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\340\336\336\377\276\274\274\377\221\220\220\377YXX\377///\377\24" + "\24\24\377\240\237\237\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\253\252\254\355\202\203\210\377\302\304\306\377\250\250" + "\252\376\220\220\222\377\220\220\222c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\6\6\1\207\207\207\24\271\271" + "\271J\331\330\330\213\343\343\343\312\353\352\352\370\361\357\357\377\353" + "\351\351\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\346\344\344\377\331" + "\327\327\377\256\255\255\377{zz\377KKK\377***\377\17\17\17\377\31\31\31\377" + "\14\14\14\377\14\14\14\377\4\4\4\377\234\232\232\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\244\243\245\355zz\177\377ZU" + "T\377\177}\177\374\220\220\222\377\220\220\222M\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0vuu\22\270\270\270E\330\330\330\206\343\342" + "\342\306\353\353\353\364\361\360\360\377\353\352\352\377\350\346\346\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\345\343\343\377\317\315\315\377\240\237\237\377" + "kjj\377@@@\377\"\"\"\377\17\17\17\377\30\30\30\377\12\12\12\377\16\16\16" + "\377\0\0\0\377\14\14\14\377\0\0\0\377\12\12\12\377\3\3\3\377\272\271\271" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\231" + "\231\233\352|}\201\377kgg\377\205\204\206\376\220\220\222\377\220\220\222" + "7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\\\\\\\16\266\266\266A\327\327\327\201\342\342\342" + "\302\355\354\354\361\361\360\360\377\354\352\352\377\350\346\346\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\343\341\341\377\304\302\302\377\226\250\225\377hhg\377" + ";;;\377\26\26\26\377\24\24\24\377\21\21\21\377\12\12\12\377\11\11\11\377" + "\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\4\4\4\377\25\25\25\377\16" + "\16\16\377\31\31\31\377\16\16\16\377\324\322\322\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\215\215\220\355\217\220\224" + "\377\305\306\310\374\231\232\234\375\220\220\222\377\220\220\222\"\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""888\11\261\261" + "\261<\326\326\326|\342\342\342\275\354\354\354\360\361\360\360\376\354\353" + "\353\377\350\346\346\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\337\335\335\377\267\265" + "\265\377\205\204\204\377MMM\377000\377\22\22\22\377\32A\32\377')'\377&&&" + "\377\3\3\3\377\12\12\12\377\2\2\2\377\5\5\5\377\7\7\7\377\10\10\10\377\26" + "\26\26\377\17\17\17\377\31\31\31\377\13\13\13\377\17\17\17\377\0\0\0\377" + "\14\14\14\377\0\0\0\377\324\322\322\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\346\344\344\377\207\207\213\353rqt\377]XW\376\214\213\215\376" + "\220\220\222\376\220\220\222\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\32\32\32\5" + "\246\245\2457\324\324\324w\342\342\342\270\353\352\352\360\361\360\360\376" + "\355\353\353\377\350\346\346\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\332\330\330\377" + "\250\247\247\377vuu\377@@@\377\37\37\37\377\17\17\17\377\27\27\27\377\11" + "\11\11\377\15\15\15\377\0\0\0\377\13\13\13\377\0\0\0\377\22\22\22\377\37" + "\37\37\377---\377\26\26\26\377\25\25\25\377\21\21\21\377\14\14\14\377\11" + "\11\11\377\2\2\2\377\12\12\12\377\0\0\0\377\14\15\14\377\1\1\1\377\33\33" + "\33\377888\377\340\336\336\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\343\341\341\376\177\177\203\351|{~\377spo\376\216\216\217\377\220\220" + "\222\360\220\220\222\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0rrr\5\240\237\2372\324\323\323s\342\342\342\263\351" + "\350\350\360\363\362\362\377\355\354\354\377\350\346\346\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\344" + "\342\342\377\320\316\316\377\231\230\230\377fff\377433\377\27\27\27\377\17" + "\17\17\377\26\26\26\377\6\6\6\377\13\13\13\377\0\0\0\377\13\13\13\377\0\0" + "\0\377\14\14\14\377\6\6\6\377\27\27\27\377\16\16\16\377\27\27\27\377\15\15" + "\15\377\20\20\20\377\26\26\26\377&&&\377\22\22\22\377\7\12\7\377\5\6\5\377" + "\6\6\6\377\14\14\14\377\16)\16\377-R-\377---\377&&&\377+++\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\340\336\336\373yz~\361" + "\233\234\237\377\275\276\300\372\222\222\224\377\220\220\222\335\220\220" + "\222\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0qqq\7\241\241\241-\322\322" + "\322m\342\342\342\256\350\350\350\352\363\362\362\377\356\355\355\377\351" + "\347\347\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\336\334\334\377\272\270\270\377\214\212\212\377YXX\377" + "+**\377\25\25\25\377\16\16\16\377\24\24\24\377\4\4\4\377\12\12\12\377\0\0" + "\0\377\12\12\12\377\0\0\0\377\15\15\15\377\11\11\11\377\27\27\27\377\16\16" + "\16\377\26\26\26\377\11\11\11\377\14\14\14\377\0\0\0\377\13\13\13\377\0\0" + "\0\377\13\13\13\377\0\0\0\377\16\16\16\377\32\32\32\3771_1\377\17\34\17\377" + "\26\26\26\377\14\14\14\377\16\20\16\377\30\31\30\377\0\0\0\377\15\15\15\377" + "'''\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\332" + "\330\330\371xy~\357hfg\377b^]\377\220\220\222\377\220\220\222\312\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0RRR\6\244\244\244*\321\320\320i\341\341\341\252\351\351\351\344\362" + "\362\362\376\357\355\355\377\351\347\347\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\346\344\344\377\327\325\325\377\253" + "\250\250\377\207||\377_OG\377/E\40\377\20\20\20\377\22\22\22\377\20\20\20" + "\377\4\4\4\377\12\12\12\377\0\0\0\377\12\12\12\377\1\1\1\377\17\17\17\377" + "\14\14\14\377\27\27\27\377\16\16\16\377\24\24\24\377\5\5\5\377\13\13\13\377" + "\0\0\0\377\13\13\13\377\0\0\0\377\13\13\13\377\2\2\2\377\22\22\22\377\15" + "\15\15\377\30\30\30\377\16\16\16\377\33\33\33\377\37\37\37\377\17\22\17\377" + "\1\1\1\377\13\13\13\377\1\1\1\377\26\26\26\377\17\17\17\377\4\4\4\377\25" + "\25\25\377baa\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\314\312\313\363|}\202\363zyz\377wtt\373\220\220\222\377\220\220" + "\222\264\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0///\4\245" + "\244\244&\316\316\316d\341\341\341\245\352\351\351\340\361\360\360\375\357" + "\356\356\377\352\350\350\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\344\342\342\377\314\314\312\377\241\240\231\377~oo\377" + "V==\3779\36\36\377'\15\15\377%\23\23\377\13\11\7\377\11\20\11\377\5\5\5\377" + "\4\4\4\377\11\11\11\377\4\4\4\377\22\22\22\377\15\15\15\377\26\26\26\377" + "\15\15\15\377\22\22\22\377\2\2\2\377\13\13\13\377\0\0\0\377\13\13\13\377" + "\0\0\0\377\13\13\13\377\5\5\5\377\25\25\25\377\17\17\17\377\30\30\30\377" + "\14\14\14\377\21\21\21\377\1\1\1\377\13\13\13\377\14\14\14\377!!!\377\1\1" + "\1\377\14\14\14\377\3\3\3\377\23\23\23\377\16\16\16\377***\377\24\24\24\377" + "\14\14\14\377\17\17\17\377]\\\\\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\304\303\303\355~\177\204\376\256\257\262\377\264" + "\265\266\374\220\220\222\377\220\220\222\237\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\21\21" + "\21\2\236\235\235#\315\315\315_\341\341\341\240\351\351\351\335\360\360\360" + "\374\360\357\357\377\352\350\350\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\341\337\337\377\300\276\276\377\217\216\216" + "\377XWW\377766\377\25#\23\377$&\15\377\36\21\21\377\10\5\5\377\12\12\12\377" + "\0\0\0\377\12\12\12\377\2\2\2\377\16\16\16\377\22\22\22\377\20\20\20\377" + "\26\26\26\377\13\13\13\377\16\16\16\377\0\0\0\377\12\12\12\377\0\0\0\377" + "\13\13\13\377\0\0\0\377\15\15\15\377\12\12\12\377\26\26\26\377\16\16\16\377" + "\27\27\27\377\12\12\12\377\14\14\14\377\2\2\2\377\11\11\11\377\0\0\0\377" + "\13\13\13\377\0\0\0\377\40\40\40\377\30\30\30\377\27\27\27\377\16\16\16\377" + "\30\30\30\377\14\14\14\377\21\21\21\377\1\1\1\377###\377\2\2\2\377\3\3\3" + "\377\12\12\12\377onn\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\274\272\273\346~\177\204\377`\\\\\377pmm\374\220\220\222" + "\377\220\220\222\211\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\214\214\214\36\314\313\313Z\341\340\340\233\350\350" + "\350\333\361\360\360\372\360\357\357\377\353\351\351\377\347\346\346\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\335\333\333\377\264\262" + "\262\377|{{\377POO\377)))\377\22\22\22\377\24\24\24\377\10\10\10\377\13\13" + "\13\377\5\5\5\377\5\5\5\377\11\11\11\377\2\2\2\377\21\21\21\377\15\15\15" + "\377\25\25\25\377\17\17\17\377\16\16\16\377\13\13\13\377\1\1\1\377\12\12" + "\12\377\0\0\0\377\12\12\12\377\1\1\1\377\21\21\21\377\14\14\14\377\26\26" + "\26\377\17\17\17\377\22\22\22\377\11\11\12\377\12\12\12\377\1\1\1\377\12" + "\12\12\377\2\2\2\377\11\11\11\377\5\5\5\377\15\15\15\377\16\16\16\377\31" + "\31\31\377%%%\377\35\35\35\377\7\7\7\377\15\15\15\377\0\0\0\377\14\14\14" + "\377\0\0\0\377\14\14\14\377\0\0\0\377%%%\377\5\5\5\377\21\21\21\377\25\25" + "\25\377\230\227\227\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\257\256\260\347\177\200\204\377\207\205\206\377\207\206\207" + "\377\220\220\222\377\220\220\222t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "tss\30\312\311\311V\340\340\340\226\350\347\347\327\362\362\362\372\361\360" + "\360\377\353\351\351\377\347\346\346\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\327\325\325\377\244\242\242\377qpp\377???\377\36\36\36\377" + "\25\25\25\377\14\14\14\377\15\15\15\377\10\10\10\377\2\2\2\377\11\11\11\377" + "\0\0\0\377\15\15\15\377\21\21\21\377\17\17\17\377\25\25\25\377\13\13\13\377" + "\15\15\15\377\1\1\1\377\12\12\12\377\5\5\5\377\5\5\5\377\16\12\12\377\30" + "\5\4\377\35""3\16\377\15\15\15\377\26\26\26\377\15\15\15\377\21\21\22\377" + "\25\25\33\377;;L\377WWr\377ww\232\377ss\226\37799J\377\10\10\11\377\23\23" + "\23\377\21\21\21\377\24\24\24\377\24\24\24\377\14\14\14\377\14\14\14\377" + "\40\40\40\377\4\4\4\377\13\13\13\377\0\0\0\377\13\13\13\377\0\0\0\377\20" + "\20\20\377\15\15\15\377\30\30\30\377\17\17\17\377///\377\12\12\12\377\11" + "\11\11\377\5\5\5\377\225\223\223\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\247\247\250\352\200\201\205\377\247\247\251" + "\377\241\241\243\374\220\220\222\377\220\220\222^\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\27\27\27" + "\2\314\314\314\210\345\345\345\330\363\362\362\374\362\360\360\377\354\352" + "\352\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\344\342\342\377" + "\313\312\312\377\231\224\224\377p^^\377Q77\377*:\22\377\15\17\14\377\22\22" + "\22\377\10\10\10\377\4\4\4\377\11\11\11\377\2\2\2\377\10\10\10\377\17\17" + "\17\377\15\15\15\377\25\25\25\377\16\16\16\377\20\20\20\377\12\12\12\377" + "\0\0\0\377\11\11\11\377\0\2\0\377\12\21\10\377\21\3\3\377*\17\17\377.\22" + "\22\377*\17\17\377+\24\24\377\32\13\11\377!\26\12\377\0\0\0\377\30\30\35" + "\377SSo\377qq\224\377\206\206\260\377\214\214\267\377\213\213\265\377\213" + "\213\266\377\216\216\270\377\217\217\272\377DDT\377\5\5\5\377\6\6\6\377\5" + "\5\5\377\11\11\11\377\20\20\20\377\35\35\35\377\4\4\4\377\7\7\7\377\24\24" + "\24\377\20\20\20\377\27\27\27\377\17\17\17\377\24\24\24\377\2\2\2\377\14" + "\14\14\377\0\0\0\377&&&\377\0\0\0\377\12\12\12\377\3\3\3\377\256\254\254" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\234" + "\234\236\344{{\200\377ZUT\377|{|\377\220\220\222\377\220\220\222H\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0rqq3\353\352\352\377\350\346\346\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\346\344\344" + "\377\335\334\333\377\275\273\273\377\207\206\206\377djQ\377=$$\377*\21\21" + "\377(\22\22\377\23\13\13\377\7\7\7\377\10\10\10\377\0\0\0\377\11\11\11\377" + "\12\12\12\377\14\14\14\377\24\24\24\377\20\20\20\377\20\20\20\377\15\15\15" + "\377\0\0\0\377\11\11\11\377\2\2\2\377\7\7\7\377\12\12\12\377\6\6\6\377\24" + "\24\24\377\21\33\13\3774#\15\377\37\21\22\377\21\21\23\377))3\377\17\17\23" + "\377\16\12\12\377\16\0\0\377\36\12\12\377\2\2\2\377,,6\377dd\206\377xx\237" + "\377\216\216\272\377\217\217\275\377\213\213\267\377\227\227\307\377\233" + "\233\314\377\234\234\314\377\203\203\252\377\4\4\5\377\12\12\12\377\7\7\7" + "\377\31E\31\377,1,\377\30\30\30\377\17\17\17\377\21\21\21\377\6\6\6\377\3" + "\3\3\377\11\11\11\377\0\0\0\377\14\14\14\377\0\0\0\377\16\16\16\377\7\7\7" + "\377...\377\17\17\17\377\31\31\31\377\17\17\17\377\316\314\314\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\221\221\224\347" + "\203\203\210\377\220\217\217\377\215\214\216\377\220\220\222\377\220\220" + "\2223\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\234\232\232S\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\345\343\343\377\323\322\322\377\256\255\255\377xww\377M" + "LL\3770Q/\377\20\20\20\377\16\16\16\377\14\32\13\377\3\3\3\377\5\5\5\377" + "\10\10\10\377\6\6\6\377\13\13\13\377\23\23\23\377\15\15\15\377\23\23\23\377" + "\21\21\21\377\2\2\2\377\11\11\11\377\6\6\6\377\3\3\3\377\11\11\11\377\4\4" + "\4\377\22\22\22\377\21\21\21\377\21\21\21\377\24\24\24\377\15\15\17\377#" + "#,\377\34\20\24\377'\27\34\377]\\{\377~~\245\377\216\216\273\377%$-\377\"" + "\22\22\377\22\15\15\377$\24\24\377\14\14\14\377//;\377ii\213\377\224\224" + "\302\377oo\221\37744D\377\"\"+\377==P\377\210\210\262\377\235\235\316\377" + "\240\240\321\377\31\31\35\377\26\26\26\377\12\12\12\377\14\30\14\377\13\13" + "\13\377&&&\377\27\27\27\377\15\15\15\377\1\1\1\377\7\7\7\377\17\17\17\377" + "\17\17\17\377\27\27\27\377\17\17\17\377\27\27\27\377\10\10\10\377%%%\377" + "\0\0\0\377\15\15\15\377\0\0\0\377\315\313\313\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\346\344\344\377\212\212\215\347\204\205\211\377" + "\245\245\246\375\226\226\230\375\220\220\222\377\220\220\222\35\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\253\251\251i\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\343\341\341\377\310\307\307\377\230\227\227\377nmm\377999\377\32" + "\32\32\377\22\22\22\377\17\17\17\377\33\33\33\377\12\14\12\377\6\6\6\377" + "\2\2\2\377\14\14\14\377\16\16\16\377\16\16\16\377\23\23\23\377\20\20\20\377" + "\10\10\10\377\11\11\11\377\2\2\2\377\6\6\6\377\10\24\10\377\2\2\2\377\20" + "\20\20\377\22\22\22\377\16\16\16\377\24\24\24\377\14\14\15\377\37\37%\377" + "\34\34!\377\10\10\12\377VVq\377vv\233\377\217\217\273\377<,7\377-)2\377d" + "d\206\377\201\201\252\377\214\214\270\377&\30\36\377\16\12\12\377\13\2\2" + "\377\24\11\11\377\4\4\4\377\14\14\16\377dd\203\377\230\230\306\377@@O\377" + "\17\17\17\377\27\27\27\377\15\15\15\377WWq\377\234\234\315\377\224\224\301" + "\377\12\12\15\377\13\13\13\377\0\0\0\377\14\14\14\377\4\4\4\377\23\23\23" + "\377\25\25\25\377///\377(((\377\30\30\30\377\12\12\12\377\5\5\5\377\10\10" + "\10\377\2\2\2\377\12\12\12\377\1\1\1\377$$$\377\0\0\0\377\16\16\16\377\35" + "\35\35\377\341\337\337\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\345\343\343\376\177\200\203\342sru\377YTS\377\211\211\212\377\220\220\222" + "\371\220\220\222\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\265\264\264\200\347\345\345\377\347\345" + "\345\377\306\304\304\377a``\377100\377\22\22\22\377\22\22\22\377\17\17\17" + "\377\4\4\4\377\6\6\6\377\15\15\15\377\30\30\30\377\13\13\13\377\22\22\22" + "\377\22\22\22\377\14\14\14\377\17\17\17\377\12\12\12\377\0\0\0\377\10\10" + "\10\377\10\7\7\377\11\2\2\377\40\15\15\377(\17\17\377*\17\17\377*+\14\377" + "\14\14\15\377\25\25\27\377\12\12\12\377\0\0\0\377CCW\377jj\215\377\216\216" + "\273\377II\\\377\27\27\34\377dd\205\377}}\245\377\216\216\273\3775#*\377" + "$#-\377jj\214\377\227\227\306\377XRh\377\16\5\6\377\12\12\12\377\26\10\10" + "\377\30\21\21\377\24\24\24\377\20\20\20\377uu\230\377\224\224\302\377//:" + "\377\0\0\0\377\13\13\13\377\0\0\0\37777D\377\233\233\313\377\253\253\340" + "\37755D\377\27\27\27\377\16\16\16\377\27\27\27\377\13\13\13\377\20\20\20" + "\377\1\1\1\377\13\13\13\377\5\5\5\377$$$\377\37\37\37\377\15\33\15\377\5" + "\14\5\377\11\11\11\377\21\21\21\377\21\21\21\377---\377\17\17\17\377\27\27" + "\27\377$$$\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\343\341\341\375xy}\351\210\210\213\377\214\212\212\377\217\217\220\377" + "\220\220\222\351\220\220\222\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\277\275\275\236\347\345\345" + "\377\347\345\345\377nmm\377\14\14\14\377\10\10\10\377\1\1\1\377\7\7\7\377" + "\13\13\13\377\16\16\16\377\26\26\26\377\40\40\40\377\21\21\21\377\6\6\6\377" + "\11\11\11\377\10\10\10\377\0\0\0\377\10\10\10\377\13\13\13\377\12\22\10\377" + "&'\14\377+\22\22\377\35\14\14\377\24\16\16\377\12\12\12\377#\24\32\377VN" + "f\377vv\233\377hh\210\377\15\15\16\377\13\13\13\377WWs\377ss\231\377\222" + "\222\300\377;;K\377\24\24\33\377ff\207\377\225\225\303\377SSl\377!\15\17" + "\377\4\4\4\377kk\214\377\226\226\303\3776B.\377\17\17\17\377\23\23\23\377" + "\36\15\15\377\12\6\6\377\11\11\11\377\2\2\2\377||\244\377\215\215\272\377" + "\"\"*\377\6\6\6\377\25\25\25\377\16\16\16\377KK]\377\226\226\304\377\245" + "\245\331\377\35\35&\377\13\13\13\377\0\0\0\377\13\13\13\377\0\0\0\377\13" + "\13\13\377\0\0\0\377\14\14\14\377\7\7\7\377\27\27\27\377\27\27\27\3770S0" + "\377\20\33\20\377\22\22\22\377\7\7\7\377\14\14\14\377\32\32\32\377\0\0\0" + "\377\15\15\15\377&&&\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\335\333\333\373wx|\350\215\215\220\377\246\246\247\370\222" + "\222\224\376\220\220\222\331\220\220\222\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\303\301\301\260" + "\347\345\345\377\347\345\345\377NNN\377\15\15\15\377\21\21\21\377\15\15\15" + "\377\21\21\21\377\17\17\17\377\22\22\22\377\20\20\20\377\10\10\10\377\10" + "\10\10\377\1\1\1\377\16\16\16\377\23\23\23\377\15\15\15\377\22\22\22\377" + "\23\23\23\377\35\33\40\377Q=L\377WWp\37788I\377\25\25\32\377\22\11\11\377" + "5/=\377ff\211\377\211\211\264\377``~\377\21\21\21\377\5\5\5\377QQk\377\215" + "\215\271\377kk\215\377\24\24\30\377\2\2\3\377aa}\377\227\227\305\377--8\377" + "'\23\23\377\15\15\16\377yy\236\377\217\217\272\377$\33\36\377\20\4\4\377" + "\6\6\6\377\33\10\10\377\4\3\3\377\20\20\20\377\21\21\22\377\210\210\263\377" + "\212\212\264\377\"\"'\377\7\7\7\377\14\14\14\377\0\0\0\377SSj\377\232\232" + "\311\377\213\213\270\377\12\12\15\377\13\13\13\377\2\2\2\377\24\24\24\377" + "\16\16\16\377\30\30\30\377\17\17\17\377\27\27\27\377\7\7\7\377\32\32\32\377" + "\27\27\27\377\13\13\13\377\1\1\1\377\12\12\12\377\2\2\2\377\25\25\25\377" + "\17\17\17\377\3\3\3\377\26\26\26\377[ZZ\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\317\315\315\363|}\202\354jgi\377`\\[\377" + "\220\220\222\377\220\220\222\306\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\307\307\317" + "\347\345\345\377\346\344\344\377HGG\377\14\14\14\377\10\10\10\377\4\4\4\377" + "\4\5\4\377\22\34\22\377\30\30\30\377\13\13\13\377\22\22\22\377\23\23\23\377" + "\15\15\15\377\12\12\12\377\11\11\11\37766F\377WWr\377||\243\377\216\216\271" + "\377\214\214\267\377\213\213\266\377\221\221\275\377qn\220\377\36\22\22\377" + "..=\377wv\234\377\221\221\276\377((5\377\11\11\11\377\3\3\3\37799H\377\230" + "\230\307\377II]\377\25\25\25\377\17\17\17\377pp\221\377\223\223\300\377\27" + "\27\36\377\35\12\12\377\3\3\3\377\202\202\253\377\206\206\260\377\31\31\33" + "\377$\21\21\377\25\20\20\377(\24\24\377\15\15\15\377\17\17\17\377\13\13\17" + "\377\216\216\273\377\202\202\253\377\22\22\24\377\0\0\0\377\12\12\12\377" + "\1\1\1\377ff\203\377\244\244\326\377]]x\377\16\16\16\377\30\30\30\377\15" + "\15\15\377\15\15\15\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\25" + "\25\25\377\31\31\31\377\0\0\0\377\15\15\15\377\10\10\10\377\30\30\30\377" + "\17\17\17\377+++\377\24\24\24\377\15\15\15\377\17\17\17\377VUU\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\310\306\306\352" + "~\177\204\373\213\212\214\377\212\211\212\371\220\220\222\377\220\220\222" + "\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\314\312\312\346\347\345\345\377\343\341\341" + "\377\"!!\377\24\25\24\377\26.\26\377\21\21\21\377\15\24\15\377%5%\377\36" + "\36\36\377\3\3\3\377\6\6\6\377\10\10\10\377\4\4\4\377\5\5\5\377\21\21\22" + "\377]]{\377ss\230\377\210\210\262\377\211\211\263\377\204\204\255\377\231" + "\231\310\377\231\231\311\377\235\233\314\377\27\27\33\377\11\6\10\377\220" + "\207\260\377||\240\377\16\16\16\377\24\24\24\377\21\21\21\377KK`\377\231" + "\231\312\37733C\377\11\11\11\377\5\5\6\377ww\233\377\211\211\263\377\26\26" + "\32\377'\24\24\377\32\25\27\377\215\213\267\377~~\245\377\17\17\17\377\12" + "\11\11\377\26\1\1\377\40\12\12\377\0\0\0\377\12\12\12\377\25\25\34\377\222" + "\222\277\377zz\240\377\31\31\32\377\17\17\17\377\26\26\26\377\40\40'\377" + "\223\223\277\377\250\250\335\377@@T\377\1\1\1\377\12\12\12\377\3\3\3\377" + "\11\11\11\377\0\0\0\377\14\14\14\377\10\10\10\377---\377\24\24\24\377\31" + "\31\31\377\16\16\16\377\30\30\30\377\7\7\7\377\15\15\15\377\0\0\0\377$$$" + "\377\2\2\2\377\2\2\2\377\12\12\12\377ccc\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\300\277\277\341~\177\204\377\230\230" + "\232\377\246\246\247\373\220\220\222\377\220\220\222\232\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\32\31\31\13\326\325\325\365\347\345\345\377\340\336\336\377322\377\30\31" + "\30\377\27!\27\377\7\7\7\377\2\2\2\377\6\6\6\377\23\23\23\377!!!\377\24\24" + "\24\377\23\23\23\377\21\21\21\377\15\15\15\377\25\25\30\377aa\201\377\216" + "\216\272\377NNe\3777*6\377\24\24\32\377TTk\377\235\235\316\377\233\233\314" + "\377\34\34\37\377\32\22\25\377\227\222\300\377ll\213\377\1\1\1\377\10\10" + "\10\377\7\7\7\377TTn\377\230\230\310\377..9\377\25\25\25\377\26\26\27\377" + "\202\202\251\377\201\201\251\377\12\12\14\377\37\12\12\377!\21\27\377\220" + "\220\274\377ss\227\377\11\7\7\377\24\12\12\377\35\6\5\377*8\16\377\16\16" + "\16\377\26\26\26\377--9\377\222\222\300\377kk\215\377\13\13\13\377\3\3\3" + "\377$$-\377vv\233\377\234\234\315\377\223\223\301\377\20\20\23\377\6\6\6" + "\377\22\22\22\377\21\21\21\377\24\24\24\377\20\20\20\377!!!\377\40\40\40" + "\377\16\16\16\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377" + "\14\14\14\377\0\0\0\377&&&\377\6\6\6\377\17\17\17\377\26\26\26\377\221\220" + "\220\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\264\263\264\340~\177\204\377a]]\377mjj\377\220\220\222\377\220\220\222\205" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0MLL!\342\340\340\374\347\345\345\377\315\313\313\377\5\5" + "\5\377\4\4\4\377\31\31\31\377\20\20\20\377\17\17\17\377\17\17\17\377\21\21" + "\21\377\16\16\16\377\25\25\25\377\35\35\35\377\11\14\11\377\1\1\1\377\11" + "\11\12\377PPg\377\206\206\260\377\35\35\40\377#\22\22\377\17\17\17\377RR" + "h\377\243\243\325\377\\Up\377\11\11\11\377\36\22\27\377\230\227\306\377`" + "`z\377\15\15\15\377\23\23\23\377\24\24\24\377gg\206\377\226\226\304\377\32" + "\32!\377\11\11\11\377\21\21\23\377\210\210\262\377vv\233\377\4\10\4\377." + "\34\12\3778#-\377\222\222\277\377rj\211\377)\17\17\377&\24\24\3771+5\377" + "KXa\377\27\27\37\377\13\13\13\37722B\377\221\221\275\377ss\227\377YYt\377" + "ss\227\377\215\215\267\377\226\226\304\377\240\240\323\377MMa\377\22\22\22" + "\377\16\16\16\377\13\13\13\377\7\7\7\377\5\5\5\377\30\30\30\377\24\24\24" + "\377\1\1\1\377\13\13\13\377\0\0\0\377\15\15\15\377\6\6\6\377\25\25\25\377" + "\17\17\17\377\30\30\30\377\17\17\17\377...\377\11\11\11\377\12\12\12\377" + "\6\6\6\377\216\215\215\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\253\252\254\345\177\200\205\377\225\224\225\377\217\216" + "\217\377\220\220\222\377\220\220\222o\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0zyy3\344\342\342\376" + "\347\345\345\377\303\301\301\377\21\21\21\377\20\20\20\377\30\30\30\377\12" + "\12\12\377\6\6\6\377\1\1\1\377\10\10\10\377\11\11\11\377\6\6\6\377\30\30" + "\30\377$E$\377\16\20\16\377\20\20\20\377\\\\w\377{{\241\377&&0\377I>P\377" + "\\\\x\377\224\224\301\377ss\224\377\36\30\34\377\"\23\23\3776*3\377\230\230" + "\310\377OOd\377\5\5\5\377\5\5\5\377\11\11\11\377pp\224\377\224\224\303\377" + "\20\20\24\377\14\14\14\377!!&\377\217\217\273\377ll\216\377\15\27\15\377" + "\30\40\16\37741?\377\222\222\277\377ZZt\377\5\5\7\377\33\33!\377ww\234\377" + "\216\216\273\377\36\36'\377++4\377\201\201\252\377\221\221\276\377\235\235" + "\320\377\247\247\333\377\245\245\331\377\243\243\325\377\241\241\324\377" + "``~\377\14\14\15\377\2\2\2\377\7\7\7\377\4\4\4\377\14\34\11\377\34\37\34" + "\377\25\25\25\377\16\16\16\377\21\21\21\377\25\25\25\377\20\20\20\377\26" + "\26\26\377\11\11\11\377\17\17\17\377\0\0\0\377\14\14\14\377\0\0\0\377%%%" + "\377\0\0\0\377\12\12\12\377\3\3\3\377\254\252\252\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\240\237\241\336\177\177\204" + "\377\232\231\233\377\233\233\234\372\220\220\222\377\220\220\222Y\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\234\233\233R\346\344\344\377\347\345\345\377\245\244\244\377\10" + "\10\10\377\12\12\12\377\16\16\16\377\15\15\15\377\21\21\21\377\14\14\14\377" + "\23\23\23\377\22\22\22\377\14\14\14\377\32\32\32\377\11\12\11\377\5\5\5\377" + "\3\3\3\377cc\203\377\211\211\265\377\226\226\304\377\227\227\304\377\225" + "\225\302\377\227\227\305\377ss\224\377\20\20\24\377\26\10\10\377B0?\377\225" + "\225\303\377==N\377\7\7\7\377\13\13\13\377\30\30\32\377\206\206\256\377\224" + "\224\301\377\27\27\31\377\14\14\14\377''/\377\221\221\277\377]]{\377\4\4" + "\5\377\16\16\21\377PPi\377\220\220\275\377\212\212\265\377\223\223\302\377" + "\243\243\326\377\235\235\316\377\234\234\315\377!!(\377;;I\377\212\212\264" + "\377\236\236\317\377\245\245\327\377\240\240\321\377\226\226\304\377\200" + "\202\252\377OOf\377\20\13\15\377\32\22\22\377\14\14\14\377\26\26\26\377\26" + "\20\20\377I2\31\377(,(\377###\377\5\5\5\377\11\11\11\377\3\3\3\377\2\2\2" + "\377\11\11\11\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\3\3\3\377" + ",,,\377\15\15\15\377\31\31\31\377\17\17\17\377\307\305\305\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\225\224\227\340|}\201" + "\377ZUT\377{yz\377\220\220\222\377\220\220\222D\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\251\250\250" + "g\347\345\345\377\347\345\345\377\217\216\216\377\22\22\22\377\31\31\31\377" + "\22\22\22\377\15\15\15\377\11\11\11\377\1\1\1\377\7\7\7\377\17\17\17\377" + "\30\30\30\377\17\17\17\377\23\23\23\377\22\22\22\377\16\16\17\377tt\227\377" + "\226\226\305\377\225\225\303\377\216\214\266\377\215\215\270\377\236\236" + "\317\377\242\242\324\377H>P\377(\16\16\377[\\X\377\226\226\303\377TTk\377" + "\22\22\22\377\6\6\6\37777F\377\235\235\316\377\205\205\257\377\12\12\13\377" + "\5\5\7\377XXq\377\220\220\275\377\232\232\312\37788F\37733>\377\213\213\265" + "\377\230\230\310\377\242\242\325\377\245\245\331\377\246\246\332\377\251" + "\251\336\377\237\237\317\377\21\21\26\377/0=\377UVq\377QPh\377LBR\377K2;" + "\377[/3\377k++\377\21055\377\252AA\377g..\377\3\3\3\377\14\14\14\377>\11" + "\11\377\23\15\15\377\0\0\0\377\27\27\27\377\37\37\37\377\35\35\35\377\1\1" + "\1\377\11\11\11\377\22\22\22\377\20\20\20\377\27\27\27\377\17\17\17\377\30" + "\30\30\377\14\14\14\377)))\377\1\1\1\377\15\15\15\377\0\0\0\377\306\304\304" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\215" + "\215\220\342\202\203\210\377\224\222\223\377\216\216\217\375\220\220\222" + "\377\220\220\222.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\267\265\265\204\347\345\345\377\347\345" + "\345\377vuu\377\7\7\7\377\24\24\24\377\4\4\4\377\14\14\14\377\21\21\21\377" + "\17\17\17\377\32\32\32\377\36\36\36\377\16\16\16\377\4\4\4\377\10\10\10\377" + "\7\7\7\377\5\5\7\377\202\202\252\377tt\225\377$)-\37764\33\377=%,\377yt\230" + "\377\246\246\331\377ca}\377\6\5\5\377JLa\377\224\224\303\377vv\233\377,," + "8\377CCY\377\206\206\260\377\244\244\327\377MMc\377\25\25\25\377\35\35\"" + "\377\216\216\273\377\235\235\316\377\256\256\344\377((3\37700?\377\202\202" + "\253\377\223\223\301\377\210\212\263\377op\222\377ZZt\377CCV\37722=\377I" + "!\"\377j**\3771\35\35\377[('\377\17700\377\21755\377\234::\377\246==\377" + "\265CC\377\307KK\377Q$$\377\0\0\0\3776\14\14\377\30\4\4\377\20\20\20\377" + "\15\15\15\377\30\30\30\377\17\17\17\377###\377***\377###\377\6\6\6\377\4" + "\4\4\377\10\10\10\377\2\2\2\377\12\12\12\377\0\0\0\377%%%\377\0\0\0\377\15" + "\15\15\377\26\26\26\377\342\340\340\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\177\200\203\333\202\203\207\377\237\236\240" + "\373\226\226\230\373\220\220\222\376\220\220\222\32\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\277\275" + "\275\236\347\345\345\377\347\345\345\377]\\\\\377\22\22\22\377\40\40\40\377" + "\14\14\14\377\15\15\15\377\11\11\11\377\23\23\23\377\15\15\15\377\10\10\10" + "\377\10\10\10\377\3\3\3\377\20\20\20\377\23\23\23\377\30\30\34\377\214\214" + "\267\377SSj\377\7\11\7\377\10\17\10\377%%.\377\207\207\261\377\245\245\330" + "\377::J\377\2\2\2\377<>\377b&&\377,\20\20\377" + "\20511\377\246??\377*\21\21\377\7\7\7\377\7\4\4\377\20000\377\240;;\377$" + "\30\30\377k**\377\23299\377\\$$\3774\34\34\377\33\15\15\377\25\20\20\377" + "\3\1\1\377\25\14\14\377;\11\11\377\13\13\13\377\0\0\0\377\13\13\13\377\0" + "\0\0\377\15\15\15\377\5\5\5\377\25\25\25\377\17\17\17\377\30\30\30\377\17" + "\17\17\377(E(\377\16\27\16\377\17\17\17\377\5\5\5\377\13\13\13\377\33\33" + "\33\377\0\0\0\377\15\15\15\377\33\32\32\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\337\335\335\376vw{\340\210\210\214\377\221" + "\217\220\372\217\217\221\376\220\220\222\345\220\220\222\7\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\311\307\307\324\347\345\345\377\345\343\343\377+++\377\21\21\21\377\40" + "\40\40\377\20\20\20\377\14\17\14\377\31$\31\377\40\40\40\377\3\3\3\377\7" + "\7\7\377\10\10\10\377\3\3\3\377\10\10\10\377\20\20\21\377qq\225\377\222\222" + "\277\377\241\241\325\377\247\247\333\377\245\245\331\377\243\243\326\377" + "\227\227\306\37711@\377\10\10\10\377\0\0\0\377\11\11\11\377#\37&\377VNc\377" + ":9G\377%$,\377G')\377\20122\377\22388\377\246??\377\235<<\377%\21\21\377" + "\12\11\11\377v--\377\21644\377\272EE\377M\35\35\377;\27\27\377\23188\377" + "\334SS\377\227;;\377\26\25\25\377\27\21\21\377\22377\377\242<<\377\31\22" + "\22\377y..\377\244==\377!\14\14\377\13\13\13\377\2\1\1\377\14\13\13\377\0" + "\11\0\377:(\20\377\14\11\11\377\26\26\26\377\16\16\16\377\30\30\30\377\16" + "\16\16\377\26\26\26\377\11\11\11\377\17\17\17\377\0\0\0\377\14\14\14\377" + "\0\0\0\377###\377\1\1\1\377\12\12\12\377\2\2\2\377\25\25\25\377\20\20\20" + "\377\3\3\3\377\23\23\23\377QPP\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\321\317\317\365|}\202\343\213\213\216\377\245\245" + "\246\372\222\222\224\376\220\220\222\326\220\220\222\1\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\316" + "\314\314\345\347\345\345\377\344\342\342\377!!!\377\6\6\6\377\27\27\27\377" + "\6\6\6\377\2\2\2\377\10\10\10\377\17\17\17\377\"\"\"\377\35\35\35\377\23" + "\23\23\377\20\20\20\377\15\15\15\377\24\24\27\377\200\200\247\377\233\233" + "\314\377\235\235\315\377\217\220\274\377xy\236\377``}\377+\40&\377-\24\25" + "\377\30\25\25\377\15\15\15\377\26\25\25\377\21155\377x-,\377\15\14\14\377" + "1\23\23\377\23399\377\246>>\377\265DD\377\276FF\377\331QQ\377\20211\377\24" + "\21\21\377j**\377\257AA\377\22499\377!\26\26\377R##\377\252@@\377\351XX\377" + "\322OO\3770\30\30\377\22\7\7\377\236::\377\232:9\377\20\37\14\377\20422\377" + "\241==\377c%%\377r--\377\22266\377F!!\377\26\"\26\377%0\35\377\6\6\6\377" + "\14\14\14\377\1\1\1\377\12\12\12\377\0\0\0\377\13\13\13\377\0\0\0\377\14" + "\14\14\377\0\0\0\377\14\14\14\377\3\3\3\377)))\377\14\14\14\377\27\27\27" + "\377\20\20\20\377)))\377\25\25\25\377\15\15\15\377\23\23\23\377RQQ\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\313\312\312" + "\351~\177\204\366kik\377_ZZ\377\220\220\222\377\220\220\222\301\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0""222\22\332\330\330\365\347\345\345\377\327\325\325\377\12\12\12\377" + "\15\15\15\377\37\37\37\377\22\22\22\377\16\16\16\377\17\17\17\377\16\16\16" + "\377\10\10\10\377\16\16\16\377\40\40\40\377\13\16\13\377\2\2\2\377\20\17" + "\21\377F=M\377O9E\377^4;\377m02\377\21366\377;\34\34\377m++\377\22788\377" + ";\33\33\377\2\2\2\377\15\11\11\377\21233\377m))\377\15\12\12\377\21022\377" + "\253@@\377\231<<\377d))\377v11\377\353YY\377\261CC\377\22\20\20\3778\25\25" + "\377\266DD\377^\"\"\377\12\12\12\377\\!!\377\266EE\377\344VV\377\350WW\377" + "n00\377)\25\25\377\247>>\377\224?:\377/G)\377\21666\377\253@@\377\272EE\377" + "\273FF\377\305II\3772\22\22\377\25\25\25\377!!!\377\1\1\1\377\13\13\13\377" + "\3\3\3\377\13\13\13\377\10\10\10\377\25\25\25\377\16\16\16\377\30\30\30\377" + "\17\17\17\377\31\31\31\377\14\14\14\377)))\377\3\3\3\377\15\15\15\377\0\0" + "\0\377###\377\3\3\3\377\1\1\1\377\13\13\13\377baa\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\305\303\303\333~\177\204\377" + "\222\222\225\377\224\223\224\377\220\220\222\377\220\220\222\253\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0^]]\"\340\336\336\373\347\345\345\377\312\310\310\377\16\16\16\377" + "\7\7\7\377\24\24\24\377\10\10\10\377\5\5\5\377\3\3\3\377\10\10\10\377\13" + "\13\13\377\12\12\12\377\27\27\27\3777B!\377\30\21\16\3770\34\34\377\2011" + "1\377\22176\377\243<<\377\261AA\377\300HH\377)\20\20\377m))\377\266DD\377" + "\235<<\377\21\20\20\377\37\24\24\377\237<<\377n,,\377G$$\377\241<<\377\220" + "55\377\33\17\17\377\0\0\0\377\17\13\13\377\21255\3774\23\23\377\12\12\12" + "\377D\31\31\377\270EE\377W%%\377\24\24\24\377q,,\377\271EE\377\232;;\377" + "\340SS\377\302II\377:\26\26\377\270EE\377\21599\3772''\377\22488\377\274" + "FF\377\275GG\377\267DD\377\236::\377(\30\30\377\33\33\33\377&&&\377\25\25" + "\25\377\26\26\26\377\22\22\22\377\22\22\22\377\12\12\12\377\13\13\13\377" + "\1\1\1\377\13\13\13\377\0\0\0\377\14\14\14\377\0\0\0\377%%%\377\0\0\0\377" + "\14\14\14\377\0\0\0\377%%%\377\6\6\6\377\15\15\15\377\27\27\27\377\212\211" + "\211\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\271\267\270\331~\177\204\377\216\215\217\377\233\232\234\370\220\220\222" + "\377\220\220\222\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\210\207\2079\343\341\341\376\347\345" + "\345\377\264\262\262\377\10\10\10\377\11\11\11\377\31\31\31\377\22\22\22" + "\377\21\21\21\377\15\15\15\377\23\23\23\377\17\17\17\377\10\10\10\377\32" + "\32\32\377\16\12\12\377?\13\13\3770\25\25\377\20200\377\240<<\377\240==\377" + "\223;;\377r..\377\34\23\23\377\20644\377\326QQ\377\321OO\377&\24\24\377!" + "\15\15\377\251??\377Z\"\"\377O\40\40\377\252??\377G\33\33\377\16\16\16\377" + "5\26\26\377K\37\37\377&\33\33\377\15\15\15\377\25\25\25\377Z%%\377\272FF" + "\377B\33\33\377\6\6\6\377{--\377\261BB\3778\32\32\377\274EE\377\301HH\377" + "\21544\377\315LL\377y//\3775\"\"\377\241<<\377\237<<\377:\37\37\377&\30\30" + "\377\33\24\24\377\37\37\37\377\11\11\11\377\5\5\5\377\33\33\33\377\6\6\6" + "\377\7\7\7\377\4\4\4\377\7\7\7\377888\377@@@\377kkk\377\"\"\"\377\22\22\22" + "\377\15\15\15\377...\377\17\17\17\377\31\31\31\377\17\17\17\377///\377\13" + "\13\13\377\12\12\12\377\7\7\7\377\207\206\206\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\260\257\260\337~\177\204\377b^_" + "\377lhh\377\220\220\222\377\220\220\222\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\236\234\234U\347" + "\345\345\377\347\345\345\377\226\225\225\377\22\22\22\377\24\24\24\377\15" + "\15\15\377\7\7\7\377\7\7\7\377\1\1\1\377\7\7\7\377\21\21\21\377\25\25\25" + "\377\15\15\15\377\22\22\22\377-\22\22\377e##\377\233::\3775\31\31\377\17" + "\11\11\377\13\11\11\377\4\4\4\377\15\7\7\377\22777\377\334SS\377\354YY\377" + "h,,\3776\27\27\377\260AA\377R&&\377c**\377\253@@\377*\25\25\377\34\24\24" + "\377\22066\377\22366\377\230;;\377\13\4\4\377\12\12\12\377c$$\377\272FF\377" + "4\27\27\377\6\5\5\377\21233\377\255@@\377%\33\33\377q//\377\271DD\377\310" + "JJ\377\343UU\377i))\3777\33\33\377\242<<\377y--\377\10\10\10\377\4\3\3\377" + "\21\16\16\377!\27\27\377\34\20\20\377\2\2\2\377!!!\377\6\6\6\377\21\21\21" + "\377\17\17\17\377\36\36\36\377ttt\377iii\377fff\377$$$\377\22\22\22\377\4" + "\4\4\377!!!\377\0\0\0\377\14\14\14\377\0\0\0\377%%%\377\0\0\0\377\11\11\11" + "\377\3\3\3\377\252\250\250\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\244\243\245\327~\177\204\377\227\226\230\377\222\221" + "\222\373\220\220\222\377\220\220\222j\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\253\251\251i\347\345" + "\345\377\347\345\345\377\215\214\214\377\7\7\7\377\23\23\23\377\11\11\11" + "\377\17\17\17\377\22\22\22\377\16\16\16\377\36\36\36\377\35\35\35\377\15" + "\15\15\377\11\11\11\377\11\11\11\377\7\7\7\377e\"\"\377\234;;\377!\20\20" + "\377\35\13\13\377&\24\24\377\20\20\20\377\37\23\23\377\245==\377\251??\377" + "\333RR\377\276II\377M\36\36\377\273FF\377>\33\33\377k''\377\254??\377\25" + "\10\10\377\26\15\15\377\20300\377\250??\377\321NN\377;\32\32\377\25\25\25" + "\377x//\377\270EE\377/\34\34\377\22\16\16\377\233::\377\251??\377\22\15\15" + "\377+\20\20\377\254@@\377\324OO\377\350XX\377V##\377C\34\34\377\241;;\377" + "\21766\377t..\377\20100\377\227::\377\264CC\377w55\377\17\17\17\377%%%\377" + "\17\17\17\377\20\20\20\377\1\1\1\377\13\13\13\377\11\11\11\377\11\11\11\377" + "\3\3\3\377\2\2\2\377\12\12\12\377\6\6\6\377\36\36\36\377\0\0\0\377\15\15" + "\15\377\4\4\4\377,,,\377\15\15\15\377\31\31\31\377\17\17\17\377\301\277\277" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\231" + "\230\233\331~\177\204\377\224\223\224\376\231\231\232\370\220\220\222\377" + "\220\220\222U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\271\267\267\212\347\345\345\377\347\345\345" + "\377edd\377\22\22\22\377\37\37\37\377\11\11\11\377\13\13\13\377\10\10\10" + "\377\25\25\25\377\14\14\14\377\10\10\10\377\10\10\10\377\6\6\6\377\20\20" + "\20\377\22\22\22\377a((\377\243==\377\251@@\377\267DD\377`%%\377\12\12\12" + "\377#\17\17\377\255@@\377Z$$\377\247??\377\277GG\377\21444\377\313KK\377" + "5\34\34\377|..\377\251??\377\37\24\24\377\23\23\23\377#\30\30\377\250@@\377" + "\343UU\377O\36\36\377\12\11\11\377\21022\377\264CC\377\36\20\20\377\16\5" + "\5\377\250>>\377\236;;\377\15\13\13\377\7\6\6\377\227==\377\323OO\377\346" + "WW\377N&&\377X''\377\250>>\377\303II\377\274GG\377\273FF\377\302II\377\320" + "MM\377`))\377\0\0\0\377\17\17\17\377\24\24\24\377\13\13\13\377\0\0\0\377" + "\13\13\13\377\1\1\1\377\15\15\15\377\11\11\11\377\20\20\20\377\24\24\24\377" + "\31\31\31\377%%%\377\17\17\17\377\30\30\30\377\13\13\13\377+++\377\3\3\3" + "\377\15\15\15\377\0\0\0\377\277\275\275\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\220\220\222\334}~\202\377ZUT\377ywx\377" + "\220\220\222\377\220\220\222?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\277\275\275\236\347\345\345" + "\377\347\345\345\377XXX\377\7\7\7\377\27\27\27\377\5\5\5\377\15\16\15\377" + "\35""9\35\377\27\27\27\377\15\15\15\377\23\23\23\377\22\22\22\377\10\10\10" + "\377\13\13\13\377\11\11\11\377j((\377\264CC\377\304JJ\377\310JJ\377B\30\30" + "\377\13\13\13\377B$$\377\257AA\377M$$\377[((\377\271EE\377\314LL\377\327" + "QQ\377*\30\30\377\21655\377\304JJ\377H\35\35\377\6\5\5\377;\31\31\377\274" + "FF\377\325PP\377#\16\16\377B\35\35\377\241<<\377\320NN\377\20555\377(\26" + "\26\377\270EE\377\22599\377\25\25\25\377\15\15\15\377D\36\36\377\336TT\377" + "\345WW\3775\31\31\377d&&\377\256@@\377\302HH\377\265CC\377\245??\377\226" + "88\377|--\377/\31\31\377\10\10\10\377\24\24\24\377###\377\27\27\27\377\16" + "\16\16\377\30\30\30\377\16\16\16\377\25\25\25\377\10\10\10\377\14\14\14\377" + "\3\3\3\377\22\22\22\377\22\22\22\377\2\2\2\377\12\12\12\377\0\0\0\377%%%" + "\377\0\0\0\377\14\14\14\377\15\15\15\377\335\333\333\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\202\202\206\324\202\203" + "\207\377\231\230\231\375\220\217\221\373\220\220\222\377\220\220\222)\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\305\304\304\273\347\345\345\377\347\345\345\377888\377\22\22" + "\22\377\40\40\40\377\14\14\14\377\10\11\10\377\27\34\27\377\7\7\7\377\0\0" + "\0\377\10\10\10\377\10\10\10\377\1\1\1\377\10\10\10\377\17\17\17\377\204" + "44\377\242??\377R''\3778\33\33\377\30\23\23\377\27\27\27\377N&&\377\266D" + "D\3779\33\33\377\33\12\12\377\251??\377\332RR\377\317ON\377\31\32\16\377" + "\21444\377\316MM\377\276HH\377\22266\377\266DD\377\336SS\377\21766\377\23" + "\22\22\377\21088\377\300GG\377\354YY\377{//\3770\21\21\377\306II\377x--\377" + "\10\10\10\377\6\6\6\377\37\22\22\377\242>?\377{--\377\33\21\21\3775\30\30" + "\377D##\377D**\377/\37\37\377*\"\"\377\34\31\31\377\17\16\16\377\25\25\25" + "\377\7\7\7\377\16\16\16\377\26\26\26\377\16\16\16\377\0\0\0\377\13\13\13" + "\377\0\0\0\377\13\13\13\377\0\0\0\377\15\15\15\377\10\10\10\377#9#\377\16" + "\33\16\377\17\17\17\377\24\24\24\377\22\22\22\377---\377\17\17\17\377\31" + "\31\31\377\35\35\35\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377yz~\331\201\202\206\377\236\236\237\374\226\226" + "\230\373\220\220\222\372\220\220\222\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\311\307\307\324\347" + "\345\345\377\347\345\345\377!!!\377\7\7\7\377\27\27\27\377\5\5\5\377\7\7" + "\7\377\32\32\32\377\21\21\21\377\14\14\14\377\22\22\22\377\23\23\23\377\17" + "\17\17\377\17\17\17\377\35\32\32\377\22399\377z55\377\15\15\15\377\5\4\4" + "\377\16\10\10\377\37\32\32\377S\37\37\377\270EE\377;''\377\12\11\11\377\216" + "::\377\333RR\377\304NL\377%@!\377x00\377\341TT\377\332QQ\377\316MM\377\334" + "RR\377\265DD\377$\20\20\377\11\10\10\377\20423\377\252??\377\246=>\377@\31" + "\31\377$\17\17\377d1/\377I1+\377A5'\377XF2\377x`E\377\210iI\377oW=\377\25" + "\24\24\377\7\7\7\377\15\15\15\377\25\25\25\377\35\35\35\377\5\5\5\377\13" + "\13\13\377\0\0\0\377\13\13\13\377\0\0\0\377\13\13\13\377\6\16\6\377)@)\377" + "$$$\377222\377,,,\377444\377---\377333\377%%%\377\33""4\33\377\12\22\12\377" + "\13\13\13\377\6\6\6\377\13\13\13\377\33\33\33\377\0\0\0\377\15\15\15\377" + "\31\31\31\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\337\335\335\377xy}\331uux\377YTS\377\206\205\207\377\220\220\222\357" + "\220\220\222\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\15\15\15\6\321\317\317\346\347\345\345\377\336\335" + "\335\377!!!\377\20\20\20\377\40\40\40\377\22\22\22\377\24\24\24\377\23\23" + "\23\377\11\11\11\377\5\5\5\377\11\11\11\377\10\10\10\377\5\5\5\377\3\3\3" + "\377\"\33\33\377\23088\377\22599\377\20466\377\21655\377\255@@\377R$$\377" + "p--\377\276GG\3772&&\377\4\4\4\377F\37\37\377\346WW\377\251@@\377\33\33\33" + "\377\33\13\13\377\235<<\377\255@A\377\21534\377q++\377@.+\377F@9\377>2&\377" + "`D2\377vY@\377\203eE\377\225tP\377\241|T\377\247\201W\377\243}R\377\247\200" + "S\377\232uM\377\224pI\377\217mG\377rW9\377\13\13\13\377\0\0\0\377\13\13\13" + "\377\7\21\7\377'<'\377\12\12\12\377\27\27\27\377\16\16\16\377\27\27\27\377" + "\16\16\16\377\30\30\30\377\15\27\15\377\26*\26\377\10\10\10\377\16\16\16" + "\377\1\1\1\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\13\13\13\377" + "\1\1\1\377\11\11\11\377\3\3\3\377\24\24\24\377\22\22\22\377\0\0\0\377\16" + "\16\16\377EEE\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\323\321\321\366|}\202\333\213\214\220\377\235\234\235\377\220\220" + "\222\377\220\220\222\343\220\220\222\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0GFF\26\334\332\332\365\347" + "\345\345\377\320\317\317\377\6\6\6\377\3\3\3\377\26\26\26\377\7\7\7\377\16" + "\16\16\377\12\12\12\377;;;\377bbb\377[[[\377\23\23\23\377\22\22\22\377\24" + "\24\24\3771\"\"\377\251>>\377\307KK\377\301II\377\304JJ\377\314LL\3776\24" + "\24\377}..\377\22566\377\35\30\30\377\12\12\12\377\30\16\15\377|86\377K)" + "#\377I>2\377RA.\377nT;\377\203eG\377\217pL\377\236|T\377\251\203X\377\245" + "~T\377\233vM\377\233vM\377\250\200T\377\242{Q\377\256\205W\377\255\204W\377" + "\262\210Y\377\270\215\\\377\271\215\\\377\272\216]\377\315\234f\377\236y" + "O\377lT9\377\27\27\27\377\16\16\16\377\27\27\27\377\15\26\15\377\17!\17\377" + "\5\5\5\377\12\12\12\377\0\0\0\377\13\13\13\377\0\0\0\377\13\13\13\377\1\1" + "\1\377\12\12\12\377\0\0\0\377\13\13\13\377\0\0\0\377\14\14\14\377\1\1\1\377" + "\16\16\16\377\6\6\6\377\25\25\25\377\16\16\16\377\30\30\30\377\20\20\20\377" + "(((\377\30\30\30\377\17\17\17\377\30\30\30\377ONN\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\317\315\315\353}~\203\355\204" + "\204\207\377\226\225\226\370\221\221\223\376\220\220\222\322\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0poo#\336\334\334\373\347\345\345\377\303\302\302\377\20\20\20\377\17" + "\17\17\377\35\35\35\377\23\23\23\377\35\35\35\377\20\20\20\377///\377333" + "\377\32\32\32\377\10\10\10\377\10\10\10\377\21\21\21\377*\23\23\377\2237" + "7\377\22677\377\20366\377k,,\377Z++\377\33\24\24\377W=/\377nQ:\377\200dF" + "\377\223sO\377\234xQ\377\244\200V\377\245~S\377\250\200T\377\242|Q\377\231" + "tL\377\203dA\377\230tK\377\240zO\377\257\205W\377\225rJ\377\236yO\377\261" + "\207X\377\260\206W\377\261\207Y\377\275\217^\377\270\214\\\377\264\211Z\377" + "\300\223`\377\273\217]\377\276\221_\377\265\212Z\377\231tL\377U@*\377\12" + "\12\12\377\0\0\0\377\13\13\13\377\2\2\2\377\11\11\11\377\3\3\3\377\10\10" + "\10\377\2\2\2\377\12\12\12\377\3\3\3\377\21\21\21\377\14\14\14\377\26\26" + "\26\377\20\20\20\377\27\27\27\377\17\17\17\377\30\30\30\377\16\16\16\377" + "\26\26\26\377\11\11\11\377\17\17\17\377\1\1\1\377\14\14\14\377\0\0\0\377" + "!!!\377\5\5\5\377\0\0\0\377\14\14\14\377`__\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\311\307\307\331}~\203\372ljl\377]XX" + "\377\220\220\222\377\220\220\222\274\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\216\214\214?\344\342" + "\342\377\347\345\345\377\235\234\234\377\12\12\12\377\10\10\10\377\17\17" + "\17\377\7\7\7\377\26\26\26\377\1\1\1\377\10\10\10\377\11\11\11\377\5\5\5" + "\377\17\17\17\377\24\24\24\377\34\34\34\377\24\22\22\377\34\26\26\377\22" + "\20\20\377\33\32\32\377\36\35\35\377\15\15\15\377\14\13\11\377\221nH\377" + "\256\205V\377\233vM\377\237yO\377\230tL\377\244}R\377\261\206X\377\263\210" + "Y\377\255\203V\377\315\234f\377\201c@\377\242{P\377\255\203V\377\267\213" + "[\377\206fB\377\276\220^\377\227sK\377\265\211Z\377\251\201U\377\245~R\377" + "\244}R\377\203dA\377\243}Q\377\213jE\377\235xN\377\225qJ\377\242{P\377D4" + "\"\377\16\16\16\377\7\7\7\377\25\24\24\377\24\22\21\377\37\31\30\377%\35" + "\32\377\35\26\26\377\22\22\22\377\22\22\22\377\15\15\15\377\20\20\20\377" + "\11\11\11\377\7\7\7\377\3\3\3\377\10\10\10\377\0\0\0\377\13\13\13\377\0\0" + "\0\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\15\15\15\377\5\5\5\377" + "!>!\377\5\11\5\377\7\7\7\377\23\23\23\377\202\201\201\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\275\274\274\325~\177\204" + "\374\223\223\226\377\231\230\231\371\220\220\222\377\220\220\222\246\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\234\233\233U\347\345\345\377\347\345\345\377\230\227\227\377" + "\13\13\13\377\26\26\26\377\22\22\22\377\23\23\23\377!!!\377\15\15\15\377" + "\22\22\22\377\21\21\21\377\12\12\12\377\12\12\12\377\26\26\26\377\10\10\10" + "\377\3\3\3\377\10\10\10\377\5\5\5\377\4\4\4\377$4$\377\11\11\11\377\27\24" + "\21\377\222oI\377\302\224`\377\233vM\377\300\222`\377~`>\377\271\215]\377" + "\255\204V\377\266\212Z\377\250\200T\377\262\210Y\377z]=\377\233vM\377\250" + "\200S\377\244|Q\377\236xN\377\230tK\377\220nH\377\251\201T\377\242|Q\377" + "\242}S\377\245\201W\377\233xQ\377\222rO\377\207gH\377\201`E\377wT=\377yQ" + "=\377L($\377tSP\377\207E6\377\231L=\377\242M>\377\260QB\377\242TB\377/\21" + "\21\377\7\7\7\377\3\3\3\377\6\6\6\377\5\5\5\377\10\10\10\377\3\3\3\377\10" + "\10\10\377\20\20\20\377\25\25\25\377$$$\377$$$\377222\377---\377555\377." + "..\377555\377)))\377!D!\377\14\17\14\377\16\16\16\377\15\15\15\377\202\201" + "\201\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\264\263\264\331~\177\204\376\211\210\212\377\231\230\231\370\220\220\222" + "\377\220\220\222\221\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\256\255\255o\347\345\345\377\347\345" + "\345\377poo\377\16\16\16\377\31\31\31\377\3\3\3\377\7\7\7\377\27\30\27\377" + "\3\3\3\377\5\5\5\377\15\15\15\377\24\24\24\377\34\36\34\377\35""6\35\377" + "\21\21\21\377\15\15\15\377\23\23\23\377\22\22\22\377\15\16\15\377\22*\22" + "\377\17\17\17\377\36\30\21\377\227tK\377\300\222_\377\210hD\377\231uM\377" + "w[;\377\226rK\377\236yO\377\252\201T\377\241zP\377\240zP\377\240{R\377\241" + "}T\377\231wQ\377\220pM\377\200cE\377\201jQ\377xaF\377lJ7\377^7.\377K'#\377" + ":!\36\377+\24\22\377\252bI\377\246K=\377\254L@\377\247G=\377\243C;\377{," + "+\377\310\177u\377\22153\377\22144\377\22144\377\22034\377u-+\377\"\34\34" + "\377)))\377***\377111\377---\377433\3772..\377///\377&&&\377\37\37\37\377" + "\26\26\26\377\11\11\11\377\17\17\17\377\1\1\1\377\14\14\14\377\0\0\0\377" + "\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\11\11\11\377\3\3\3\377\236" + "\234\234\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\250\247\251\321~\177\204\377c``\377jff\377\220\220\222\377\220\220\222" + "{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\272\270\270\214\347\345\345\377\347\345\345\377___\377\12" + "\12\12\377\35\35\35\377\13\13\13\377\21\22\21\377!B!\377)))\377&&&\377%%" + "%\377\34\34\34\377\14\15\14\377\12\24\12\377\11\11\11\377\0\0\0\377\10\10" + "\10\377\10\10\10\377\0\0\0\377\10\10\10\377\10\10\10\377(\36\24\377\250\200" + "T\377\247\200U\377\237|S\377\231xR\377\214nK\377\177cE\377w`G\377raN\377" + "\200iO\377{_B\377k91\377S$\"\3770\25\22\377\17\17\16\377xwv\377\273\236\223" + "\377\230ZM\377\21083\377\177//\377z--\377X\"\37\377T#\36\377\251OB\377\204" + "//\377\21212\377\21311\377\21422\377~-.\377\270hO\377\21523\377\22044\377" + "\21533\377\21322\377_%#\377\23\21\21\377\23\23\23\377\4\4\4\377\14\14\14" + "\377\1\1\1\377.\20\20\377k''\377\12\12\12\377\1\1\1\377\10\10\10\377\4\4" + "\4\377\2\2\2\377\12\12\12\377\0\0\0\377\13\13\13\377\0\0\0\377\14\14\14\377" + "\2\2\2\377\22\22\22\377\12\12\12\377\27\27\27\377\17\17\17\377\271\270\270" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\235" + "\234\237\322~\177\204\377\252\253\255\377\241\241\242\377\220\220\222\377" + "\220\220\222f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\277\276\276\240\347\345\345\377\347\345\345" + "\377EEE\377\20\20\20\377\33\33\33\377\4\4\4\377\6\6\6\377\10\10\10\377\7" + "\7\7\377\1\1\1\377\10\10\10\377\10\10\10\377\1\1\1\377\10\10\10\377\13\13" + "\13\377\12\12\12\377\22\21\21\377\27\24\25\377\24\16\17\377\24\24\24\377" + "\26\25\25\377K,&\377u@:\377{C@\377\202LK\377\205VV\377G!$\377\12\10\10\377" + "fff\377\315\302\272\377\234[K\377\210=6\377\1770/\377y,,\377Y\37\37\377y" + "aX\377\270\232\232\377u,+\377z,,\377y,,\377}-.\377\200..\377g%%\377\241Q" + "L\377\227PJ\377\202//\377\205//\377z--\377q*)\377\21533\377\256[H\377\220" + "44\377\21744\377e$$\3770\21\21\377\34\20\17\377\0\0\0\377\13\13\13\377\0" + "\0\0\377\13\13\13\377\0\0\0\377j&&\377r++\377\16\16\16\377\11\11\11\377\25" + "\25\25\377\21\21\21\377\24\24\24\377\24\24\24\377\20\20\20\377\30\30\30\377" + "\17\17\17\377\30\30\30\377\16\16\16\377\24\24\24\377\5\5\5\377\16\16\16\377" + "\1\1\1\377\270\267\267\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\224\223\226\326~\177\204\377}{|\377\213\212\213\366\220" + "\220\222\377\220\220\222P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\306\304\304\301\347\345\345\377" + "\347\345\345\377(((\377\10\10\10\377\30\30\30\377\7\7\7\377\13\13\13\377" + "\22\22\22\377\22\22\22\377\14\14\14\377\23\23\23\377\23\23\23\377\15\15\15" + "\377\22\22\22\377$\36\32\377\217QE\377\250[I\377\274kU\377\213WL\377\7\7" + "\7\377I$!\377\316\231\211\377\265\216\216\377\251\201\201\377\223kk\377\204" + "SS\377j))\3777$\40\377\312\270\265\377\177=7\377w++\377y,,\377y,,\377y,," + "\377`\"\"\377\254iN\377\203=7\377{--\377p))\377\2015/\377\201//\377\202/" + "/\377g&&\377\300ZK\377\21574\377\21633\377y++\3774\23\23\377\22\14\7\377" + "\234N@\377\246D?\377\22455\377\22255\377L\37\35\377\14\13\13\377\27\27\27" + "\377\17\17\17\377\27\27\27\377\16\16\16\377\30\30\30\377\20\17\17\377\233" + "<<\377N!\40\377\25\25\25\377\6\6\6\377\14\14\14\377\1\1\1\377\12\12\12\377" + "\2\2\2\377\2\2\2\377\12\12\12\377\2\2\2\377\12\12\12\377\0\0\0\377\14\14" + "\14\377\0\0\0\377\14\14\14\377\10\7\7\377\336\335\335\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\205\206\211\315~\177\204" + "\377[VU\377wuv\377\220\220\222\377\220\220\222:\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\312\310\310" + "\324\347\345\345\377\341\337\337\377)((\377\21\21\21\377\40\40\40\377\16" + "\16\16\377\7\7\7\377\10\10\10\377\10\10\10\377\2\2\2\377\5\5\5\377\10\10" + "\10\377\3\3\3\377\6\6\6\377b3,\377\266|n\377\213G:\377\200;4\377[10\377(" + "((\377\205JG\377\217E8\377w**\377w**\377y,,\377w++\377k''\377}<2\377\230" + "SB\377x,,\377n))\377{0-\377\20120\377y,,\377Y\37\37\377\301{v\377\202--\377" + "\200..\377g&%\377\254OA\377\21111\377\21211\377m('\377\277kS\377\21522\377" + "\22044\377l''\377\40\27\27\377\24\20\20\377\262ti\377\230;:\377\22777\377" + "\21755\377D\33\33\3777\26\25\377\30\17\17\377\0\0\0\377\13\13\13\377\0\0" + "\0\377\13\13\13\377\25\10\10\377\274FF\377\32\12\11\377\13\13\13\377\0\0" + "\0\377\13\13\13\377\0\0\0\377\16\16\16\377\7\7\7\377\22\22\22\377\34\34\34" + "\377'''\377666\377777\377EEE\377???\377FFF\377EEE\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377|}\201\322\202" + "\203\210\377\273\274\275\377\235\235\237\376\220\220\222\376\220\220\222" + "&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0+**\12\324\322\322\351\347\345\345\377\324\322\322\377\11\11\11\377" + "\3\4\3\377\27\36\27\377\16\16\16\377\17\17\17\377\32\32\32\377###\377&&&" + "\377'''\377+++\377***\377(''\377\252XL\377\224<7\377\203//\377|--\377A\35" + "\35\377\5\4\4\377\255VI\377\205:3\377x,,\377k('\377\207B6\377x,,\377b$$\377" + "\254NB\377\206;4\377y,,\377c#$\377\271aL\377\20341\377\202//\377c\"\"\377" + "\274o^\377\21211\377\21111\377t.+\377\256PC\377\22144\377\21522\377x++\377" + "\275PG\377\22355\377\22355\377n+'\377S&\36\377[!\37\377\312tk\377\240<<\377" + "\247??\377\243JA\377\310^M\377\230>8\377\35\22\22\377\5\5\5\377\26\26\26" + "\377\25\25\25\377(((\377G\40\40\377\304MM\377>99\377BBB\377===\377EEE\377" + "<<<\377BBB\377777\377777\377(((\377\40\40\40\377\23\23\23\377\7\7\7\377\16" + "\16\16\377\0\0\0\377\15\15\15\377\27\27\27\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\340\336\336\376z{\177\322||\200\377" + "vrs\373\214\213\214\371\220\220\222\366\220\220\222\30\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0XWW\26\332" + "\330\330\366\347\345\345\377\314\313\313\377\25\25\25\377\14\22\14\377!7" + "!\377$$$\377\33\33\33\377\23\23\23\377\17\17\17\377\11\11\11\377\1\1\1\377" + "\10\10\10\377\10\10\10\377\25\10\10\377\310hS\377\21543\377\21122\377\201" + "//\3773\30\30\377\13\5\5\377\266SF\377\20220\377|--\377~76\377\235]W\377" + "{--\377a\"#\377\272eO\377\200..\377\204//\377f$$\377\266od\377\21422\377" + "\20500\377\20541\377\252NA\377\22044\377\20611\377\20430\377\21171\377m(" + "(\377b##\377\22064\377\257E@\377\22566\377\23188\377\263LB\377\302XI\377" + "\235@:\377\274OE\377\256CC\377\260DD\377\263EE\377\267EE\377k)*\377A<<\377" + "555\377777\377'''\377%%%\377\20322\377\262DD\377\6\4\4\377\14\14\14\377\0" + "\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\13\13\13\377\0\0\0" + "\377\11\11\11\377\3\3\3\377\3\3\3\377\12\12\12\377\0\0\0\377\15\15\15\377" + ";::\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\325" + "\323\323\367|}\202\323vvz\377YTS\377\205\203\205\377\220\220\222\356\220" + "\220\222\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0yxx&\337\335\335\375\347\345\345\377\245\243\243\377\7" + "\7\7\377\1\1\1\377\7\7\7\377\7\7\7\377\6\6\6\377\2\2\2\377\10\10\10\377\12" + "\12\12\377\7\7\7\377\20\20\20\377\22\22\22\377S'#\377\265]K\377\21243\377" + "\232G<\377\21111\3770\33\33\377/\31\27\377\301`W\377\21322\377\202..\377" + "\230D?\377\227KE\377\21322\377j%%\377\265_K\377\21733\377\20600\377z,,\377" + "\264OD\377\22144\377{,,\377\231@8\377\236=:\377\22455\377\200..\377A\33\33" + "\377\30\20\20\377\31\24\24\377#\32\32\377\247]J\377\240=<\377\241<<\377\243" + "==\377\246>>\377\22177\377\246E>\377\275RI\377\260DD\377\260DD\377\255BB" + "\377\253AA\377P\36\35\377\14\12\12\377\1\1\1\377\12\12\12\377\0\0\0\377\23" + "\16\16\377\306KK\377\21133\377\1\0\0\377\13\13\13\377\0\0\0\377\15\15\15" + "\377\5\5\5\377\22\22\22\377\13\13\13\377\27\27\27\377\15\15\15\377\30\30" + "\30\377\20\20\20\377\24\24\24\377\25\25\25\377\17\17\17\377\32\32\32\377" + "LKK\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\322" + "\320\320\355|}\202\344\222\223\227\377\272\273\275\372\224\225\226\375\220" + "\220\222\342\220\220\222\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\214\213\213C\346\344\344\377\347\345\345" + "\377\240\237\237\377\22\22\22\377\15\15\15\377\21\21\21\377\23\23\23\377" + "\22\22\22\377\15\15\15\377\22\22\22\377\20\20\20\377\7\7\7\377\12\12\12\377" + "\13\12\12\377\211I@\377\242GA\377\215<6\377\242MA\377\21122\377\34\17\17" + "\377U%*\377\262ng\377\22144\377y++\377\255WF\377\21633\377\21222\377y,-\377" + "\254I@\377\22456\377\202//\377\21554\377\243><\377\22666\377n''\377\253e" + "^\377\232><\377\22666\377v**\377d%$\377r**\377\2020/\377k'&\377\310ul\377" + "\244>>\377\256CC\377\247??\377\232::\377w++\377\272YK\377\271TK\377\260D" + "D\377\254BB\377d%%\377K\37\37\377*\25\23\377\23\22\23\377\17\17\17\377\25" + "\25\25\377\17\17\17\377B\"\"\377\355YY\377w00\377\20\20\20\377\30\30\30\377" + "\16\16\16\377\26\26\26\377\13\13\13\377\22\22\22\377\5\5\5\377\16\16\16\377" + "\1\1\1\377\14\14\14\377\0\0\0\377\10\10\10\377\4\4\4\377\0\0\0\377\14\14" + "\14\377]\\\\\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\314\313\313\332}~\203\362zy|\377~{{\373\220\220\222\376\220\220" + "\222\315\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\235\234\234V\347\345\345\377\347\345\345\377|{{" + "\377\10\10\10\377\5\5\5\377\3\3\3\377\7\7\7\377\10\10\10\377\2\2\2\377\6" + "\6\6\377\10\10\10\377\6\6\6\377\16\16\16\377(\34\33\377\310`T\377\241>>\377" + "\235H>\377\240H?\377\20722\3773,,\377\221H?\377\243D=\377\22355\377w++\377" + "\273VH\377\22355\377~--\377\236TM\377\241GC\377\22677\377q((\377\257_R\377" + "\237><\377\23288\377h&&\377\302`_\377\245??\377\244==\377x3.\377\306VN\377" + "\276GG\377\273HG\377\2012.\377\311UK\377\253AA\377\257CC\377r((\3775\26\26" + "\377?\37\35\377\320]O\377\264FE\377\261DD\377\23199\377.\24\24\377\17\16" + "\16\377\13\12\12\377\11\11\11\377\7\7\7\377\6\6\6\377\4\3\3\377~53\377\372" + "f_\377d$$\377\3\3\3\377\10\10\10\377\1\1\1\377\13\13\13\377\0\0\0\377\14" + "\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\12\12" + "\12\377\2\2\2\377\1\1\1\377\14\14\14\377vuu\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\301\277\300\323~\177\204\366mkn\377" + "[WV\377\220\217\221\377\220\220\222\267\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\261\260\260v\347\345" + "\345\377\347\345\345\377rqq\377%%%\377(((\377%%%\377***\377***\377(((\377" + "(((\377+++\377(((\377\35\35\35\377f82\377\316iU\377\251@@\377\250QD\377\237" + "B=\377\201//\377\21\13\13\377\247G>\377\23299\377\22666\377z,,\377\271[J" + "\377\22667\377v**\377\266a]\377\236??\377\237;;\377n''\377\275j[\377\241" + "=<\377\244>>\377y.,\377\277eQ\377\254AA\377\247??\377\216F9\377\253AA\377" + "\257DD\377\235;;\377\21474\377\276PI\377\260DD\377\255BB\377c##\377\23\6" + "\6\3770\30\30\377\303nU\377\260CC\377\262DD\377\21333\377\30\16\16\377\3" + "\3\3\377\10\10\10\377\3\3\3\377\7\7\7\377\3\3\3\377\24\10\10\377\315_S\377" + "\365{a\377W!!\377\10\10\10\377\13\13\13\377\13\13\13\377\23\23\23\377\16" + "\16\16\377\31\31\31\377\17\17\17\377\31\31\31\377\17\17\17\377\31\31\31\377" + "\17\17\17\377\31\31\31\377\20\20\20\377\24\24\24\377\25\25\25\377\200\177" + "\177\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\270\267\270\325~\177\204\373\240\241\244\377\260\260\261\376\220\220\222" + "\377\220\220\222\242\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\272\270\270\214\347\345\345\377\347" + "\345\345\377RRR\377\14\14\14\377\11\11\11\377\1\1\1\377\6\6\6\377\10\10\10" + "\377\6\6\6\377\2\2\2\377\10\10\10\377\10\10\10\377\1\1\1\377\216H>\377\266" + "TJ\377\241==\377\257SD\377\237=;\377\20000\377.\37\34\377\310o`\377\247>" + ">\377\236;;\377\223B<\377\264VK\377\240<<\377u**\377\302QG\377\251@@\377" + "\244>>\377u-+\377\273^L\377\260DD\377\237<<\377\21374\377\276[M\377\260D" + "D\377\241==\377~9/\377\255CB\377\260DD\377\21666\377\240MA\377\273XM\377" + "\260DD\377\246??\377c\"\"\377]!!\377g,*\377\312eS\377\266EE\377\271EE\377" + "v,,\377\36\27\27\377\17\17\17\377\27\27\27\377\20\20\20\377\26\26\26\377" + "\21\21\21\377X##\377\364\207k\377\365ua\377T##\377\23\23\23\377\14\14\14" + "\377\14\14\14\377\11\11\11\377\1\1\1\377\14\14\14\377\0\0\0\377\14\14\14" + "\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\0\0\0\377\11\11\11\377" + "\3\3\3\377\233\232\232\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\255\254\255\312~\177\204\377yxz\377\202\200\201\365\220" + "\220\222\377\220\220\222\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\301\277\277\247\347\345\345" + "\377\347\345\345\377322\377\15\15\15\377\17\17\17\377\14\14\14\377\20\20" + "\20\377\23\23\23\377\22\22\22\377\15\15\15\377\23\23\23\377\23\23\23\377" + "\34\23\22\377\313^Q\377\262FE\377\22699\377\301WJ\377\253AA\377p++\377=\35" + "\34\377\316hZ\377\257CC\377\232::\377\252_]\377\251LK\377\252AA\377u+*\377" + "\300RH\377\257CC\377\244>>\377\2002/\377\271TH\377\260DD\377\21133\377\230" + "97\377\270IF\377\260DD\377\21344\377\253j`\377\261GF\377\260DD\377~0/\377" + "\301[L\377\266NH\377\260DD\377\234;;\377]!!\377\30\22\22\377\212D8\377\320" + "UN\377\276GG\377\273FF\377d$$\377#\24\23\377\12\4\3\377\13\13\13\377\0\0" + "\0\377\13\13\13\377\12\4\4\377\264BB\377\362\276\240\377\363{i\377Y\37\37" + "\377\13\13\13\377\1\1\1\377\7\7\7\377\4\4\4\377\3\3\3\377\11\11\11\377\0" + "\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\1\1\1\377\17\17\17\377\4\4\4" + "\377\20\20\20\377\11\11\11\377\261\260\260\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\242\241\243\313~\177\204\377ebc\377" + "hed\377\220\220\222\377\220\220\222v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\306\305\305\303\347" + "\345\345\377\344\342\342\377211\377\14\14\14\377\13\13\13\377\7\7\7\377\3" + "\3\3\377\7\7\7\377\10\10\10\377\1\1\1\377\6\6\6\377\10\10\10\377G\34\32\377" + "\317nh\377\257CC\377\21565\377\303eR\377\260DD\377c''\377e/,\377\273\\M\377" + "\260DD\377\260HC\377\305RK\377\260DD\377\240==\377\20141\377\310eT\377\260" + "DD\377\230::\377\216>6\377\273SJ\377\260DD\377m((\377\312]O\377\264EE\377" + "\260DD\377x,,\377\307^P\377\257DD\377\256CC\377s**\377\320nX\377\261CD\377" + "\263DD\377\21443\377\20230\377f''\377\303ZL\377\304II\377\300GG\377\300L" + "H\377\277kS\377\274jP\377-\21\17\377\13\13\13\377\1\1\1\377\15\14\14\377" + "M\35\35\377\357`\\\377\364\324\273\377\372\206k\377y/0\377\26\26\26\377\16" + "\16\16\377\27\27\27\377\21\21\21\377\24\24\24\377\24\24\24\377\17\17\17\377" + "\31\31\31\377\20\20\20\377\30\30\30\377\16\16\16\377\30\30\30\377\14\14\14" + "\377\24\24\24\377\11\11\11\377\270\266\266\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\227\227\231\316~\177\204\377\263\264" + "\266\377\254\255\256\375\220\220\222\377\220\220\222a\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\5\5\2\314" + "\312\312\325\347\345\345\377\330\326\326\377\15\15\15\377\5\5\5\377\11\11" + "\11\377\13\13\13\377\10\10\10\377\16\16\16\377\21\21\21\377\16\16\16\377" + "\17\17\17\377\23\23\23\377\224FA\377\274RO\377\256BB\377\221=<\377\271e_" + "\377\260DD\377U&&\377\243LC\377\265RH\377\260DD\377\260DD\377\260DD\377\257" + "CC\377t+,\377\247JB\377\272OH\377\260DD\377x,,\377\274PF\377\265GE\377\260" + "CC\377m%&\377\321\177s\377\260CC\377\262DD\377\21484\377\302\\N\377\260D" + "D\377\253AA\377x,+\377\316jV\377\265CC\377\271EE\377\303NJ\377\321\\O\377" + "\21052\377\334\207{\377\275FF\377\304II\377\314NL\377\323[R\377\224>9\377" + "\35\16\16\377\27\27\27\377\16\16\16\377,\35\35\377\303JK\377\372\224}\377" + "\361\346\331\377\374\204e\377\256AA\377\27\20\20\377\1\1\1\377\13\13\13\377" + "\1\1\1\377\11\11\11\377\2\2\2\377\2\2\2\377\12\12\12\377\2\2\2\377\12\12" + "\12\377\0\0\0\377\14\14\14\377\0\0\0\377\14\14\14\377\2\2\2\377\334\332\332" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\211" + "\211\214\307~\177\204\377pmn\377\202\201\201\366\220\220\222\377\220\220" + "\222K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0@??\14\324\323\323\354\347\345\345\377\324\322\322\377\31\31" + "\31\377\15\15\15\377\21\21\21\377\17\17\17\377\10\10\10\377\10\10\10\377" + "\12\12\12\377\7\7\7\377\3\3\3\377\23\15\14\377\305c`\377\263HG\377\237;;" + "\377\242UP\377\265dd\377\257DD\377I\36\36\377\275GG\377\263EE\377\260DD\377" + "\250@@\377\232::\377o*.\377&\20\21\377\267fQ\377\257CC\377\262DD\377n'(\377" + "\313xm\377\261BB\377\252@@\377\2030/\377\320]Q\377\267FF\377\272FF\377\310" + "RK\377\273LG\377\266DD\377\250??\377\21132\377\314UL\377\276GG\377\277GG" + "\377\277GG\377\267DD\377\234=:\377\333gY\377\317LM\377\321NN\377\321MM\377" + "\331QQ\377o*'\377\6\2\2\377\13\13\13\377\15\4\4\377\241=<\377\367\203m\377" + "\363\344\331\377\362\357\353\377\372\230y\377\354ZY\377P\"\"\377\0\0\0\377" + "\14\14\14\377\0\0\0\377\13\13\13\377\1\1\1\377\6\6\6\377\7\7\7\377\5\5\5" + "\377\14\14\14\377\6\6\6\377\23\23\23\377\13\13\13\377\27\27\27\377\17\17" + "\17\377\346\344\344\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\200\200\204\313~\177\204\377[WV\377ust\377\220\220\222\377\220" + "\220\2226\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0fee\24\330\326\326\367\347\345\345\377\257\255\255\377\7" + "\7\7\377\1\1\1\377\10\10\10\377\10\10\10\377\5\5\5\377\3\3\3\377\11\11\11" + "\377\12\12\12\377\7\7\7\377F#\"\377\322^U\377\261CC\377\261_Z\377\325xa\377" + "\260KK\377\255BB\377a&'\377\326aU\377\261DD\377\252AA\377C\30\30\377\"\20" + "\20\377\25\16\24\377%\30\27\377\306WM\377\267DD\377\267EE\377\232;9\377\315" + "`T\377\271DE\377\240<<\377\217;4\377\273JF\377\274GG\377\274GG\377\272EE" + "\377\275GG\377\277HH\377\22577\377\257KB\377\314PM\377\277HH\377\272EE\377" + "\264CC\377\23399\377\245A=\377\256C@\377\244<<\377\23599\377\22677\377\222" + "66\377J\32\32\377\23\6\6\377:\32\32\377\247=>\377\370xd\377\364\332\306\377" + "\371\371\371\377\367\367\367\377\367\301\235\377\371v^\377\317MM\377P!!\377" + "\37\32\32\377\20\20\20\377\30\30\30\377\20\20\20\377\27\27\27\377\20\20\20" + "\377\23\23\23\377\20\20\20\377\12\12\12\377\21\21\21\377\4\4\4\377\17\17" + "\17\377\26\26\26\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\341\337\337\376|}\201\313\201\202\207\377\301\302\304\375\241" + "\242\243\371\220\220\222\373\220\220\222#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xww+\341\337\337\376\347" + "\345\345\377\247\246\246\377\22\22\22\377\15\15\15\377\22\22\22\377\22\22" + "\22\377\22\22\22\377\15\15\15\377\21\21\21\377\20\20\20\377\7\7\7\377\220" + "JG\377\302ff\377\265DD\377\262DD\377\260CC\377\262DD\377\252AA\377}--\377" + "\317yn\377\263CC\377\233::\377\23\6\6\377\11\11\11\377\5\5\5\377D\35\33\377" + "\313UL\377\275FF\377\300HH\377\312LL\377\302II\377\276GG\377r**\377t.+\377" + "\261FB\377\301HH\377\303II\377\277GG\377\21133\377|..\377d##\377\232E<\377" + "w,+\377t**\377m&&\377m&&\377v++\377\22577\377\203//\377\21122\377\22034\377" + "\23176\377\246><\377\267HC\377\304VL\377\344oh\377\370\234\205\377\363\337" + "\324\377\367\367\367\377\374\374\374\377\370\370\370\377\363\336\306\377" + "\373\253w\377\373\214k\377\353h[\377\245B?\377W\37\37\377L22\377:::\377A" + "AA\377BBB\377HHH\377III\377NNN\377RRR\377VVV\377[[[\377\202\201\201\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\330\326\326" + "\370|}\201\313||\201\377urr\375\212\211\213\372\220\220\222\366\220\220\222" + "\23\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\211\210\210C\347\345\345\377\347\345\345\377\214\212\212\377\7" + "\7\7\377\4\4\4\377\4\4\4\377\10\10\10\377\10\10\10\377\1\1\1\377\7\7\7\377" + "\10\10\10\377\13\6\5\377\277WK\377\273GG\377\274GG\377\270EE\377\270DE\377" + "\272FF\377\251??\377\223;6\377\307VK\377\271EE\377\21232\377\25\20\17\377" + "\24\24\24\377\23\23\23\377H!\37\377\303YK\377\304II\377\302II\377\303II\377" + "\303II\377\243<<\377/\23\23\377%\22\22\377_!!\377y,,\377z,,\377m''\377u*" + "*\377\21433\377\245<=\377\275FE\377\313NL\377\324RP\377\334VR\377\351]X\377" + "\357m`\377\362rb\377\366xe\377\366}h\377\367\207t\377\365\252\236\377\365" + "\264\245\377\362\300\257\377\360\330\277\377\364\354\343\377\367\371\371" + "\377\372\372\372\377\374\374\374\377\374\374\374\377\374\374\374\377\365" + "\365\364\377\361\354\346\377\370\312\232\377\373\240q\377\365i]\377\353\\" + "[\377\266MK\377ZTO\377[TM\377]TK\377`TG\377cTD\377fTA\377kT=\377nT:\377^" + "TI\377\215\215\215\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\325\323\323\357{|\200\333xx|\377ZUT\377\203\202\203\377\220" + "\220\222\357\220\220\222\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\241\240\240[\347\345\345\377\347\345\345" + "\377srr\377\22\22\22\377\22\22\22\377\15\15\15\377\23\23\23\377\23\23\23" + "\377\17\17\17\377\20\20\20\377\23\23\23\3778\34\33\377\331fZ\377\304II\377" + "\253@A\377n+,\377\274JE\377\275FF\377\241;;\377\243C<\377\277IH\377\277G" + "G\377l//\377'''\377///\377333\377D14\377\207;5\377\273FF\377\307KK\377\304" + "HH\377\23389\377h*(\377\204DC\377\226@@\377\260BB\377\270DD\377\300FG\377" + "\325SP\377\346_V\377\367h]\377\363}f\377\372\224m\377\373\235n\377\373\241" + "p\377\374\245r\377\374\252t\377\371\310\221\377\364\335\301\377\360\345\325" + "\377\360\350\332\377\360\354\343\377\365\367\367\377\364\365\365\377\362" + "\345\332\377\365\362\362\377\365\363\360\377\367\370\370\377\373\373\373" + "\377\374\374\374\377\374\374\374\377\372\372\372\377\362\357\352\377\355" + "\275\252\377\357|h\377\313TG\377\247F'\377\224D\21\377\246S\7\377\244T\4" + "\377\246T\2\377\247T\1\377\250T\0\377\250T\0\377\250T\0\377\250T\0\377\250" + "T\0\377mT:\377\225\225\225\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\317\315\315\335|}\202\350\220\221\225\377\274\275\276" + "\375\225\226\227\375\220\220\222\336\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\263\261\261z\347\345" + "\345\377\347\345\345\377wvv\377...\377222\377222\377999\377===\377???\377" + "CCC\377HHH\377\225NK\377\321c_\377\305JJ\377\217>>\377vRT\377\326TP\377\303" + "II\377\237;;\377\264^K\377\304LJ\377\301HH\377e:8\377[UN\377]TK\377\\RH\377" + "`QD\377R-&\377c$$\377t,)\377\203E5\377\236ZD\377\326gU\377\342YU\377\344" + "VU\377\350ZW\377\363i\\\377\366{a\377\354\236n\377\363\254s\377\365\257u" + "\377\372\252t\377\372\247s\377\371\243q\377\372\241p\377\367\234n\377\361" + "\210j\377\354\201g\377\347~k\377\337\203\203\377\334}}\377\325tt\377\322" + "nn\377\314gg\377\321`\\\377\364xm\377\372\230{\377\364\320\275\377\364\363" + "\362\377\372\372\372\377\371\372\372\377\360\342\325\377\356\222~\377\343" + "[V\377\220B;\377}K%\377\206T!\377\202T&\377\177T)\377|T+\377xT/\377uT3\377" + "sT5\377oT9\377kT<\377iT?\377fTB\377XTP\377\250\250\250\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\304\303\303\324~\177\204" + "\357yx{\377vss\367\220\220\221\376\220\220\222\310\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\272\270" + "\270\215\347\345\345\377\347\345\345\377trr\377hSS\377gRR\377dRR\377iSS\377" + "cSS\377\\SS\377]TT\377}NL\377\306fX\377\320NN\377\311LL\377\214GF\377\230" + "QP\377\330VQ\377\306JJ\377\22677\377\305`P\377\307KK\377\270DD\377W+\27\377" + "h6\4\377h4\4\377|;\15\377\223K'\377\300YC\377\324gU\377\325v[\377\315WP\377" + "\344_X\377\340^T\377\353jX\377\366m]\377\371{^\377\371}`\377\367\204c\377" + "\366\212f\377\366|e\377\353k^\377\341[U\377\306OK\377\261HD\377\247TQ\377" + "\221NL\377qAA\377f?@\377c@@\377_AA\377\\BA\377ZCC\377XEE\377UEE\377\\II\377" + "\201BB\377\344VV\377\366qd\377\361\306\240\377\356\355\354\377\356\347\340" + "\377\363\224v\377\335TR\377sBB\377TSS\377UUU\377VVV\377WWW\377YYY\377ZZZ" + "\377[[[\377]]]\377___\377___\377___\377aaa\377bbb\377aaa\377\266\265\265" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\275" + "\273\274\321~\177\204\367onp\377ZUT\377\217\217\221\377\220\220\222\263\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\303\301\301\255\347\345\345\377\345\343\343\377unn\377\277" + "<<\377\240@@\377\224CC\377\222CC\377\202II\377\244??\377fPP\377\255DD\377" + "\332lZ\377\322NN\377\311KJ\377pCA\377\236SP\377\330VQ\377\314LL\377\2177" + "6\377\313nc\377\307JJ\377\22066\377^=9\377zN;\377\265ZC\377\316hQ\377\323" + "pY\377\320\\Q\377\331OP\377\333QQ\377\346WV\377\343cU\377\351nW\377\360l" + "Z\377\361`[\377\347_V\377\344VV\377\326PP\377\274NN\377\220AA\377qEE\377" + "oTT\377^QQ\377WQQ\377_^^\377```\377```\377aaa\377aaa\377bbb\377bbb\377bb" + "b\377bbb\377bbb\377ccc\377caa\377\211EE\377\361ZZ\377\370\237w\377\366\326" + "\263\377\366\253\212\377\347[V\377\206DD\377a__\377bbb\377ccc\377aaa\377" + "___\377___\377^^^\377[[[\377ZZZ\377ZZZ\377YYY\377WWW\377WWW\377VVV\377VV" + "V\377\274\273\273\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\262\260\261\304~\177\204\376\243\245\250\377\277\300\302\374" + "\220\220\222\377\220\220\222\235\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\307\305\305\302\347\345" + "\345\377\334\332\332\377a``\377XQQ\377VRR\377VSS\377UTT\377UTT\377XTT\377" + "WWW\377\226VT\377\332gX\377\325OO\377\256GG\377_[[\377\244h]\377\325XQ\377" + "\317MM\377\21374\377\250QF\377r)*\377\22798\377\273aO\377\313cR\377\305a" + "P\377\263DB\377\310JJ\377\326OO\377\336SS\377\344VV\377\346YW\377\343aU\377" + "\343^U\377\343UU\377\313LL\377\235<<\377wAA\377V<<\377[WW\377][[\377[[[\377" + "ZZZ\377YYY\377XXX\377WWW\377VVV\377VVV\377UUU\377UUU\377UUU\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377S;;\377\333QR\377\373\203g\377\366\273\222" + "\377\360d[\377\264HH\377VPP\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377UUU\377\317\315\315" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\247" + "\246\247\304~\177\204\377qoq\377vss\367\220\220\222\377\220\220\222\207\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0!\40\40\4\316\314\314\332\347\345\345\377\327\326\326\377ddd\377``" + "`\377```\377```\377```\377___\377^^^\377`]]\377\305m\\\377\326SQ\377\325" + "OO\377\215BC\377VVV\377\260sh\377\322SP\377\250>>\377m''\377\230:8\377\314" + "gS\377\272XH\377\241M@\377\236;;\377\260CC\377\301HH\377\314LL\377\320MM" + "\377\327PP\377\336SS\377\334QR\377\333QQ\377\271DE\377z55\377X==\377SNN\377" + "SRR\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377NFF\377" + "\301JK\377\374\204g\377\372\234r\377\343UT\377lAA\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377YYY\377\322\321\321\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\234\233\235\306~\177\204\377gde\377gdc\376\220\220" + "\222\377\220\220\222r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0QQQ\12\323\321\321\357\347\345\345\377\311\310" + "\310\377XXX\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377fYT\377\333i_\377" + "\330PP\377\327OO\377gEG\377UTT\377\265vp\377{..\377\21654\377\314ZO\377\266" + "dL\377\212=5\377\20400\377\22144\377\241<<\377\254BB\377\261CC\377\275GG" + "\377\306II\377\315LL\377\313KK\377\277GG\377{22\377O<<\377OLL\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "SNN\377\274JJ\377\374\213i\377\371qb\377\256EE\377RKK\377TTT\377TTT\377T" + "TT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377```\377\331\327\327\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\215\215\217\277~\177\204\377\264\265\270" + "\377\261\262\264\371\220\220\222\377\220\220\222\\\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0baa\25\331\327" + "\327\372\347\345\345\377\271\270\270\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377\220]V\377\334nb\377\330PP\377\304IJ\377RFH\377USS\377\242" + "L\\\377\266NF\377\272aM\377\212C8\377{.-\377|..\377\20300\377\21633\377\224" + "66\377\234::\377\243==\377\255BB\377\261CC\377\265CC\377\21566\377Z::\377" + "MHH\377SSS\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377NKK\377\265GG\377\374|a\377\361][\377l>>\377" + "TSS\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377fff\377\344\343\343\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\204\204\207\304~\177" + "\204\377qnn\377\200~~\365\220\220\222\377\220\220\222F\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0qpp0\344\342" + "\342\377\347\345\345\377\262\261\261\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377VTS\377\276lY\377\330XS\377\327PP\377\237BB\377WLM\377\220SO\377\306" + "dQ\377\235M>\377{/.\377x+,\377y,,\377z--\377\177//\377\20511\377\21633\377" + "\22355\377\23188\377\234::\377\234::\377_.(\377A=7\377SSS\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377USS\377\302UT\377\374m`\377\305LL\377TJJ\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377lll\377\346\344\344\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\341\337\337\376~\177\203\303~\177\204\377]YY\377" + "tqr\377\220\220\222\376\220\220\2222\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\211\210\210C\347\345\345\377" + "\347\345\345\377\231\230\230\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "aSQ\377\333zl\377\330PP\377\256??\377p))\377\265PJ\377\260dL\377\17751\377" + "y,,\377y,,\377r**\377t++\377z--\377}..\377\20100\377\21011\377\22044\377" + "\22044\377\21222\377T0*\377GGD\377SSS\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377WSS\377\306QQ\377\373_`\377\214FE\377SSS\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377|{{\377\346\344\344\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\333\331\331\371{|\200\303\201\202\207\377\300\301\303\376\244" + "\244\246\372\220\220\222\373\220\220\222\37\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\246\245\245b\347\345\345" + "\377\347\345\345\377\223\222\222\377TTT\377TTT\377TTT\377TTT\377TTT\377T" + "TT\377\204XT\377\335c\\\377\244<<\377\2030/\377\304bQ\377\224O>\377t,+\377" + "u++\377x,,\377u++\377s**\377t**\377x,,\377}..\377\200//\377\20511\377\210" + "22\377~0.\377?3'\377NPN\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377WQQ\377\307NN\377\350XX\377]DB\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377\211\211\211\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\330\326\326\362zz\177\321||\201\377okk\373\210\207\210" + "\372\220\220\222\370\220\220\222\14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\263\261\261z\347\345\345\377\347" + "\345\345\377zzz\377TTT\377TTT\377TTT\377TTT\377TTT\377UTT\377\265g]\377\231" + "GD\377\233?:\377\303eP\377z:1\377m()\377o))\377t**\377r**\377u**\377p))\377" + "s**\377v++\377y,,\377~//\377~//\377}/.\377F5+\377PQP\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377^QQ\377\334UU\377\256CC\377SNN\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377\220\217\217\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\321\317\317\342{|\201" + "\333xx}\377YTT\377\201\200\201\377\220\220\222\357\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\274\272" + "\272\222\347\345\345\377\346\344\344\377rrr\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377_UR\377\217B8\377\243D?\377\253WF\377m+)\377g((\377i((\377j((\377" + "j((\377q**\377m((\377o))\377r**\377s**\377w,,\377t++\377y,,\377H*#\377LN" + "L\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377kRR\377" + "\347WW\377\201DD\377RRR\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "\244\243\243\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\307\305\305\325~\177\204\347\220\221\226\377\312\314\316\374\232" + "\232\234\376\220\220\222\331\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\303\301\301\261\347\345\345" + "\377\337\335\335\377hgg\377TTT\377TTT\377TTT\377TTT\377TTT\377iMK\377\262" + "ND\377\230WB\377c&%\377h((\377h((\377h((\377h((\377h((\377m))\377k((\377" + "n))\377n))\377r**\377r**\377x,,\377Z)$\377DHB\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377uRR\377\332SS\377T>>\377T" + "TT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377\256\255\255\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\300\277\277" + "\320~\177\204\361vux\377iee\372\215\215\217\376\220\220\222\304\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1" + "\1\1\1\307\306\306\304\347\345\345\377\333\331\331\377[ZZ\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377\233_Q\377\201H9\377U\40!\377T\36\37\377Z!#\377[\"%" + "\377[#&\377]#&\377]''\377_))\377]((\377`))\377d**\377c))\377h++\377c))\377" + "G=9\377SSS\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TSS\377\204GG\377\254GG\377UQQ\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377\267\266\266\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\266\265\266\277~\177\204\373rqt\377]XW\375\216\216" + "\220\377\220\220\222\256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""988\3\315\314\314\341\347\345\345\377\320" + "\316\316\377ZZZ\377TTT\377TTT\377TTT\377TTT\377TTT\377c]S\377CDC\377L?E\377" + "JJ\377K=J\377QKO\377TQQ\377TQQ\377TQQ\377TQQ\377TQ" + "Q\377TQQ\377TQQ\377SSS\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TRR\377\233AA\377{66\377SSS\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377UUU\377\312\311\311\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\254\253\254\275~\177\204\377\241" + "\243\246\377\301\302\304\373\221\221\223\377\220\220\222\230\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0YXX\7" + "\321\317\317\363\347\345\345\377\276\275\275\377UUU\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377WRR\377\260" + "FF\377fEE\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377YYY\377" + "\317\316\316\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\240\240\241\276~\177\204\377qpr\377qnn\364\220\220\222\377\220\220" + "\222\203\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0ONN\30\334\332\332\375\347\345\345\377\272\271\271\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377[RR\377\212@@\377]MM\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377___\377\325\323\323\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\221\221\223\270~\177\204\377rpr\377njj\377\220\220" + "\222\377\220\220\222m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0dcc/\346\344\344\377\347\345\345\377\240\237" + "\237\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377T" + "TT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT" + "\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377ddd\377\342\340\340\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\210\210\213\275~\177\204\377\262\264" + "\267\377\273\274\276\376\220\220\222\377\220\220\222W\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~}}<\347\345" + "\345\377\347\345\345\377\236\235\235\377```\377```\377aaa\377```\377```\377" + "aaa\377```\377```\377aaa\377```\377aaa\377aaa\377aaa\377aaa\377aaa\377aa" + "a\377aaa\377aaa\377```\377```\377___\377^^^\377^^^\377]]]\377\\\\\\\377[" + "[[\377ZZZ\377YYY\377XXX\377WWW\377VVV\377VVV\377UUU\377UUU\377UUU\377UUU" + "\377UUU\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377" + "TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377TTT\377iii\377\343\341\341" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\342\340\340\376\200" + "\201\204\273~\177\204\377b^^\377olm\372\220\220\222\377\220\220\222B\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\232\231\231S\347\345\345\377\347\345\345\377\203\202\202\377eWE\377" + "c_P\377]e[\377\\e]\377[aY\377^XM\377^TJ\377[WP\377XZV\377XXT\377WXU\377W" + "VS\377WTQ\377VTR\377VTR\377UTS\377UUU\377TUU\377UUU\377UUU\377VVU\377WWV" + "\377WWW\377XXX\377YYY\377ccc\377[[[\377\\\\\\\377]]]\377^^^\377___\377``" + "`\377```\377aaa\377aaa\377aaa\377aaa\377aaa\377bbb\377bbb\377bbb\377bbb\377" + "bbb\377bbb\377bbb\377bbb\377bbb\377ccc\377ccc\377bbb\377ccc\377ccc\377cc" + "c\377ddd\377ccc\377bbb\377bbb\377ccc\377ddd\377ddd\377ccc\377bbb\377bbb\377" + "bbb\377ccc\377ccc\377aaa\377```\377___\377___\377^^^\377]]]\377\\\\\\\377" + "ZZZ\377YYY\377{{{\377\345\343\343\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\335\333\333\372{{\177\273~\177\204\377tqr\377{yy\377\220\220" + "\222\377\220\220\222,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\253\252\252j\347\345\345\377\347\345\345\377" + "xwv\377\177\204X\377\212\200J\377\205\215Z\377\210\211T\377\201\231k\377" + "\233g\40\377\211\213U\377\216\200E\377\200\235p\377\210\214W\377\210\211" + "T\377\222s4\377\220u8\377\205\207U\377\206\203P\377\213u=\377\177\211]\377" + "|\213b\377{\210_\377\224U\24\377\222T\25\377\220T\27\377\216T\31\377\214" + "T\34\377fTA\377^^]\377\217t9\377\227|9\377\214k2\377\220w:\377\222\177A\377" + "\211r<\377\201g9\377yZ4\377w[7\377tY9\377u`>\377mT;\377kT=\377pcG\377pfJ" + "\377ldK\377eYH\377gbN\377bZL\377b]O\377_[P\377[TM\377YTN\377XTO\377YVQ\377" + "XVR\377VTR\377UTS\377UTS\377UUT\377UTT\377TTT\377TTT\377TTT\377TTT\377TT" + "T\377TTT\377UUU\377UUU\377VVV\377VVV\377WWW\377XXX\377YYY\377[[[\377[[[\377" + "\\\\\\\377\\\\\\\377^^^\377\214\213\213\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\333\331\331\364xy}\307\177\200\205\377\276" + "\300\302\376\252\253\255\375\220\220\222\376\220\220\222\27\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\262\260" + "\260v\347\345\345\377\342\340\340\377tss\377[YW\377ZXT\377[WR\377[VP\377" + "\\WO\377]UL\377[]V\377`WK\377aXK\377`^Q\377c^N\377g[H\377h^J\377gdQ\377e" + "m[\377mcI\377ljQ\377njO\377plP\377\177T)\377\202T&\377\204T#\377\207T\40" + "\377\212T\36\377dUE\377_^[\377\241~0\377\247z'\377\241i\34\377\265\215+\377" + "\275\231/\377\266\206#\377\256t\31\377\266\177\35\377\301\223%\377\300\216" + "!\377\274\203\33\377\254b\11\377\246T\2\377\312\233$\377\307\224\40\377\316" + "\242'\377\273{\23\377\317\244)\377\301\211\33\377\310\230#\377\305\224\"" + "\377\247Y\6\377\300\216!\377\277\216\"\377\272\206\40\377\265\177\35\377" + "\255s\31\377\243c\23\377\243f\26\377\267\220,\377\252z$\377\246y%\377\263" + "\2267\377\266\237<\377\261\231;\377\242\2012\377\213X\40\377\214^%\377\217" + "g+\377\215g-\377\211f/\377\207f2\377}T+\377{T-\377xT/\377uT2\377sT4\377r" + "T6\377]TJ\377\213\212\212\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\322\320\320\347z{\200\316{|\200\377[VU\376|z{\373\220" + "\220\222\374\220\220\222\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\271\270\270\213\347\345\345\377\345\343" + "\343\377\311\307\307\377\302\300\300\377\305\303\303\377\305\304\304\377" + "\301\300\300\377\272\271\271\377\264\263\263\377\253\252\252\377\243\242" + "\242\377\246\245\245\377\244\243\243\377\237\237\237\377\230\230\230\377" + "\222\221\221\377\210\210\210\377\201\200\200\377\203\203\203\377\200\200" + "\200\377}}}\377xxx\377sss\377lkk\377fff\377fff\377ccc\377ccc\377eee\377^" + "^^\377\\\\[\377ZYY\377XXW\377XWU\377WVT\377WUS\377XUQ\377YUP\377ZUN\377[" + "UM\377]UK\377^TI\377bWI\377eYH\377hZF\377hVA\377n]B\377sbB\377s]=\377{h@" + "\377tU4\377\202k<\377\206n;\377\210m8\377\211j5\377\214k2\377\211_(\377\221" + "i,\377\233z2\377\236z/\377\224`\37\377\250\204.\377\264\2276\377\251}&\377" + "\263\211)\377\237^\23\377\253s\33\377\272\214%\377\302\227)\377\300\221$" + "\377\275\211\37\377\255e\14\377\246T\2\377\246T\1\377\247T\1\377\250T\0\377" + "\250T\0\377jT>\377\237\236\236\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\311\307\310\331~\177\204\334}~\202\377okk\376\204" + "\203\204\376\220\220\222\352\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\300\277\277\243\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\346\344\344\377\345\343\343\377\343\341\341\377\341" + "\337\337\377\340\336\336\377\341\337\337\377\340\337\337\377\337\336\336" + "\377\332\331\331\377\324\323\323\377\316\314\314\377\314\312\312\377\313" + "\311\311\377\311\310\310\377\310\306\306\377\302\301\301\377\273\272\272" + "\377\262\261\261\377\256\255\255\377\253\252\252\377\250\247\247\377\246" + "\245\245\377\241\240\240\377\231\230\230\377\220\217\217\377\212\212\212" + "\377\207\207\207\377\205\204\204\377\203\202\202\377\177~~\377www\377ooo" + "\377jjj\377ggg\377eee\377ddd\377bbb\377___\377\\\\\\\377ZZZ\377XXX\377VV" + "V\377VVV\377UUU\377UTT\377UTS\377UTS\377WVS\377XVR\377XTP\377YUO\377[TM\377" + "\\TL\377]TK\377_TI\377bTF\377dTC\377XTP\377\253\252\252\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\303\302\302\320~\177\204" + "\351\212\213\217\377\304\305\307\370\235\235\237\374\220\220\222\324\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\303\302\302\262\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\346\344\344\377\345\343\343\377\344\342\342\377\343" + "\341\341\377\343\341\341\377\343\341\341\377\343\341\341\377\341\337\337" + "\377\333\331\331\377\322\321\321\377\320\317\317\377\317\316\316\377\316" + "\315\315\377\315\314\314\377\313\311\311\377\302\301\301\377\265\264\264" + "\377\262\262\262\377\260\257\257\377\255\254\254\377\254\253\253\377\251" + "\250\250\377\233\233\233\377\221\221\221\377\217\216\216\377\214\214\214" + "\377\211\211\211\377\210\207\207\377\205\205\205\377\306\304\304\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\273\271\272" + "\274~\177\204\366tsw\377[VU\375\211\210\212\376\220\220\222\277\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\306\305\305\303\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\262\260\261\266~\177" + "\204\377zz}\377jff\366\215\215\217\376\220\220\222\251\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\312" + "\311\311\335\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\245\244\246\266~\177\204\377" + "\235\236\241\377\307\311\313\375\222\222\224\377\220\220\222\223\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\314\312\312\355\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\226\225\227\260" + "~\177\204\377kij\377`\\[\371\217\217\221\377\220\220\222~\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\274\273\273\276\345\343\343\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\214\214\216\266~\177\204" + "\377{z|\377vss\377\220\220\222\377\220\220\222h\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0LLL\13\231" + "\231\232Z\255\255\260\263\265\265\270\357\272\271\274\366\274\273\276\370" + "\300\277\301\375\304\303\304\374\307\305\306\372\314\313\313\375\322\320" + "\321\377\325\324\324\375\327\325\325\374\333\331\331\375\341\337\337\377" + "\346\344\344\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\344\342\342\376\202\203\206\263~\177\204\377\250\251\254\377\265" + "\266\270\371\220\220\222\377\220\220\222S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\275\276\303\1\275\276\303\33\275\276\3036\275\276\303D\275\276\303Q\275" + "\276\303^\274\275\302l\267\270\275y\263\264\271\206\261\262\266\223\263\264" + "\270\237\261\261\266\255\256\256\262\273\253\253\257\306\254\254\260\317" + "\257\257\262\331\263\263\266\347\266\266\271\360\271\270\273\365\272\272" + "\274\367\274\274\276\372\300\277\301\373\302\302\303\366\304\303\304\365" + "\306\305\306\370\312\311\311\372\317\316\316\367\322\320\321\366\323\321" + "\321\371\330\326\326\375\340\336\336\377\346\344\344\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345" + "\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377" + "\347\345\345\377\347\345\345\377\347\345\345\377\340\336\336\373zz~\262~" + "\177\204\377b^_\377mij\373\220\220\222\377\220\220\222=\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\275\276\303\1\275" + "\276\303\5\275\276\303\10\275\276\303\13\275\276\303\17\275\276\303\32\275" + "\276\303'\275\276\3034\275\276\303B\275\276\303O\274\275\302\\\270\271\276" + "h\265\266\273t\265\266\272\201\265\266\273\220\260\261\265\232\244\244\250" + "\335\240\241\245\371\243\243\247\371\246\247\252\373\253\253\256\374\260" + "\260\263\371\264\264\266\371\266\266\270\373\270\267\271\374\273\273\274" + "\371\276\275\277\371\277\276\277\374\300\277\300\374\304\303\304\372\310" + "\306\307\372\312\311\311\374\315\314\314\375\326\325\325\375\340\336\336" + "\377\346\344\344\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\336\334\334\367wx|\306~\177\204\377xuv\376|z{\372\220\220\222" + "\377\220\220\222!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\224\225\232L\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\225\226\233\377\225\226\233\377\226\227\234\377\230\231\236\377\232" + "\233\240\377\234\235\242\377\236\237\244\377\240\241\246\377\241\242\247" + "\377\243\244\251\376\244\245\252\377\244\245\251\377\236\237\244\373\232" + "\233\237\372\231\231\235\375\233\233\237\374\235\236\242\371\242\243\246" + "\372\250\250\253\376\254\254\257\374\257\256\261\371\260\260\262\371\264" + "\263\265\375\270\267\271\370\271\270\271\364\271\267\271\366\273\272\273" + "\375\303\302\302\372\307\305\305\375\314\313\313\367\325\323\323\373\336" + "\334\334\377\345\343\343\377\346\344\344\377\346\344\344\377\346\344\344" + "\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347" + "\345\345\377\347\345\345\377\347\345\345\377\347\345\345\377\347\345\345" + "\377\347\345\345\377\312\310\310\332}~\203\333\177\200\205\377\277\301\303" + "\371\246\247\251\372\220\220\222\331\220\220\222\3\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\225\232\1\224\225\232\306\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\226\227\234\377\245\245\250\371\235\236\242\372\234\235" + "\242\377\236\237\244\377\240\241\246\377\237\240\245\377\225\226\232\363" + "\240\241\246\227\227\230\235}\221\222\226}\216\216\222\210\217\217\223\234" + "\224\224\227\254\234\234\237\261\243\243\246\274\244\243\246\321\245\244" + "\247\340\253\252\255\337\260\257\261\342\261\260\261\352\260\260\261\356" + "\266\265\266\352\276\274\275\350\275\273\274\325\211\211\214\263~\177\204" + "\376~\177\204\377\206\206\212\337\220\220\222\327\220\220\222;\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\225\232" + "D\224\225\232\376\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\226\227\233\377\244\244\247\370" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\215\216" + "\222\366\214\214\221\250\225\226\233\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\275\276\303\4\275\276\303\16\266\267\274\34" + "\264\265\272(\257\260\265-\244\245\252:\233\234\241P\227\230\235a\234\235" + "\242l\216\217\223`\220\220\2220\220\220\222\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\225\232\2\224\225" + "\232\306\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\241\241\244\375\231\232" + "\236\371\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\207\207\213\353\225\226\233=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\225\232" + "V\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\225\226\233\377\245\245\250\367" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\215\216" + "\222\367\214\215\221\260\225\226\233\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\225\232" + "\11\224\225\232\343\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\243\244\246\374" + "\230\230\235\371\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\206\207\213\353\225\226\2337\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224" + "\225\232\210\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\227\230\235\377\244" + "\245\247\366\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\212\213\220\365\216\217\224\245\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224" + "\225\2321\224\225\232\375\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\247\247" + "\251\371\225\226\233\374\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\376\206\207\213\351\225\226\233'\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224" + "\225\232\4\224\225\232\326\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\236\236" + "\242\375\237\237\243\366\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\207\210\214\356\222\223\230\211\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\224\225\232\224\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\225\226" + "\233\377\250\250\252\366\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\222\223\227\374\207\210\214\327\225\226\233\17\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\324\324\326\6\316\316\320\21\307\310\312\34\301\301" + "\304/\272\273\276F\263\264\267\\\255\256\261r\247\250\253e\230\231\236v\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\247\247\251\372\227" + "\227\234\370\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\205\206\212\353\225\226\233a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\11\376\376\376" + "\26\376\376\376%\377\377\3779\377\377\377P\375\375\375f\367\367\367|\360" + "\360\361\222\351\352\353\251\343\343\344\277\334\334\336\325\325\326\330" + "\345\317\317\321\361\310\311\313\375\301\302\304\377\267\270\273\374\255" + "\255\261\373\242\243\246\376\227\227\233\370\215\216\222\375\222\223\230" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\235\235\241\374\241\241\244" + "\366\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\215" + "\216\222\365\213\214\220\267\225\226\233\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\377\377\377\14\377\377\377\35\377" + "\377\377.\377\377\377C\377\377\377Z\377\377\377p\377\377\377\206\377\377" + "\377\234\377\377\377\263\377\377\377\311\377\377\377\337\377\377\377\354" + "\377\377\377\365\377\377\377\375\377\377\377\377\377\377\377\377\371\371" + "\371\367\350\350\351\364\331\331\332\372\306\306\310\362\266\266\271\370" + "\247\247\252\367\230\231\234\364\215\216\222\374\200\201\206\365yz~\373t" + "uz\375qrw\374pqv\377pqv\377pqv\377\211\212\217\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\225\226\233\376\251\251\253\363\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\206\206\212\350" + "\225\226\233'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\374\374\374\2\377\377\377\222" + "\377\377\377\323\377\377\377\351\377\377\377\363\377\377\377\371\377\377" + "\377\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\371\362\362" + "\363\327\316\317\320\327\257\260\262\341\215\215\221\335|}\201\362vw|\374" + "rsw\373pqv\376pqv\377pqv\377pqv\377pqv\377pqv\377pqv\377pqv\377pqv\377pq" + "v\377pqv\377pqv\377pqv\376\200\201\206\375\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377" + "\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225" + "\232\377\224\225\232\377\250\250\252\365\225\226\233\372\224\225\232\377" + "\224\225\232\377\223\224\231\363\222\223\230\363\207\207\214\351\213\214" + "\221\240\205\206\213[\205\206\213F\205\206\2132\205\206\213\40\205\206\213" + "\17\205\206\213\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\313\313\313\5\310\310\310\316\316\316\316\353\324\324\324\352\333\333\333" + "\352\341\341\341\357\353\352\352\352\357\357\357\362\370\370\370\355\376" + "\376\376\362\377\377\377\376\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\376\376\374\374" + "\374\374\374\367\367\367\357\346\346\347\353\322\322\323\362\274\275\277" + "\354\253\254\257\365\231\231\235\356\214\215\221\366}~\202\362qrv\365bcg" + "\367TUX\365MNQ\331FGJ\272==@\232./1z\26\26\27\\335sFFH\226SSV\266]]`\324" + "cdh\364ffj\376mnr\377\200\201\205\377\220\221\226\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224" + "\225\232\377\224\225\232\377\224\225\232\377\224\225\232\377\224\225\232" + "\373\222\223\230\354\220\221\226\362\216\217\224\353\222\223\227\354\214" + "\215\222\351\210\211\216\357\206\207\214\356\205\206\213\374\205\206\213" + "\375\205\206\213\377\205\206\213\377\205\206\213\377\205\206\213\377\205" + "\206\213\376\205\206\213\374\205\206\213\371\205\206\213\361\207\210\215" + "\320\222\222\226\277\237\237\242<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\262\262\262\272\262\262\262\376\262\262\262\376\262\262\262\376\262\262" + "\262\376\275\275\275\377\262\262\262\376\262\262\262\376\262\262\262\375" + "\264\264\264\361\274\274\274\356\303\303\303\366\314\314\314\356\323\323" + "\323\367\335\335\335\362\345\345\345\364\355\355\355\367\370\370\370\362" + "\374\374\374\375\375\375\375\375\371\371\371\376\362\363\363\377\354\354" + "\355\377\345\345\346\377\337\337\340\377\330\330\332\377\321\322\324\377" + "\306\307\311\370\302\302\305\333\275\276\301\276\267\270\273\243\260\261" + "\264\210\252\253\256m\243\244\250S\235\235\2418\226\227\233\35\217\220\225" + "\11\211\212\217\4\214\215\222\1\224\225\232\24nnr4CCER557sCCF\220QRU\261" + "[[_\317ccg\357ffj\371uuy\376\213\214\221\377\223\224\231\370\221\222\227" + "\362\217\220\225\364\215\216\223\363\213\214\221\361\211\212\217\363\206" + "\207\214\357\205\206\213\367\205\206\213\377\205\206\213\377\205\206\213" + "\377\205\206\213\377\205\206\213\377\205\206\213\377\205\206\213\377\205" + "\206\213\376\206\207\213\376\207\210\214\371\213\214\220\365\221\221\225" + "\366\226\227\231\365\234\234\237\364\242\242\244\364\250\251\251\362\257" + "\257\257\364\262\262\262\376\262\262\262\376\261\261\261\251\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\247\247\247\40\246\246\246f\244\244\244\252" + "\243\243\243\332\242\242\242\357\266\265\265\371\242\242\242\376\242\242" + "\242\376\242\242\242\376\242\242\242\376\242\242\242\376\242\242\242\376" + "\242\242\242\376\242\242\242\376\242\242\242\376\242\242\242\376\242\242" + "\242\376\242\242\242\376\243\243\243\374\252\252\252\364\261\261\261\372" + "\270\270\270\366\276\276\276\367\302\302\302\373\306\306\307\365\307\307" + "\310\375\310\311\312\367\307\310\311\374\303\303\306\376\275\276\301\375" + "\267\270\273\377\261\261\264\377\252\253\256\377\243\244\250\377\235\235" + "\241\377\226\227\233\377\217\220\225\370\211\212\217\342\205\206\213\313" + "\205\206\213\261\205\206\213\227\205\206\213|\205\206\213a\205\206\213G\205" + "\206\213K\205\206\213k\205\206\213\215\205\206\213\302z{\200\367z{\200\376" + "\205\206\212\377\205\206\213\377\205\206\213\377\205\206\213\377\205\206" + "\213\377\205\206\213\377\205\206\213\377\205\206\213\377\205\206\213\375" + "\206\207\214\376\210\211\215\367\214\214\220\374\217\217\222\366\223\223" + "\225\373\226\227\230\366\233\233\234\372\236\236\237\366\241\241\241\376" + "\242\242\242\376\242\242\242\376\242\242\242\376\242\242\242\376\242\242" + "\242\376\242\242\242\376\242\242\242\376\242\242\242\376\242\242\242\376" + "\242\242\242\357\236\236\236\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\230\230\230\11\235\235\235\36\230\230\2305\227\227" + "\227S\226\226\226q\225\225\225\216\224\224\224\254\223\223\223\312\222\222" + "\222\344\222\222\222\362\222\222\222\375\222\222\222\376\222\222\222\376" + "\222\222\222\376\222\222\222\376\222\222\222\376\222\222\222\376\222\222" + "\222\376\222\222\222\376\222\222\222\376\222\222\222\376\222\222\222\376" + "\222\222\222\376\222\222\222\376\224\224\224\373\226\227\227\372\230\231" + "\231\375\232\232\233\370\232\232\234\376\231\232\234\372\227\227\232\374" + "\224\224\227\375\217\220\224\373\211\212\217\377\205\206\213\375\205\206" + "\213\377\205\206\213\377\205\206\213\377\205\206\213\377\205\206\213\377" + "\205\206\213\377\205\206\213\377\205\206\213\377\205\206\213\377\205\206" + "\213\377\205\206\213\377\205\206\213\376\205\206\213\377\206\206\213\373" + "\207\207\213\376\210\210\213\372\211\212\214\376\213\213\215\371\215\215" + "\217\375\217\217\220\371\221\221\221\376\222\222\222\376\222\222\222\376" + "\222\222\222\376\222\222\222\376\222\222\222\376\222\222\222\376\222\222" + "\222\376\222\222\222\376\222\222\222\376\222\222\222\375\222\222\222\360" + "\222\222\222\336\224\224\224\275\225\225\225\233\226\226\226y\226\226\226" + "W\230\230\2306\230\230\230\32\231\231\231\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\210\210\210\3\210\210\210\23\210\210\210&\207" + "\207\207B\206\206\206`\205\205\205~\204\204\204\233\203\203\203\271\202\202" + "\202\326\202\202\202\351\201\201\201\372\201\201\201\376\201\201\201\376" + "\201\201\201\376\201\201\201\376\201\201\201\376\201\201\201\376\201\201" + "\201\376\201\201\201\376\201\201\201\376\201\201\201\376\201\201\201\376" + "\201\201\201\376\201\201\201\376\201\201\201\376\222\222\222\376\207\207" + "\210\374\200\201\201\376\200\201\202\375\200\201\203\375\201\201\204\376" + "\201\202\205\375\202\203\206\377\202\203\207\377\201\202\205\376\201\201" + "\204\376\200\201\202\375\200\201\202\375\200\201\201\375\201\201\201\376" + "\201\201\201\376\201\201\201\376\201\201\201\376\201\201\201\376\201\201" + "\201\376\201\201\201\376\201\201\201\376\201\201\201\376\201\201\201\376" + "\201\201\201\376\201\201\201\375{{{\365rrs\361lmm\320mnn\250ttty~~~K\210" + "\210\210'\210\210\210\21\210\210\210\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0yy" + "y\1yyy\13yyy\30www2vvvOuuumttt\213sss\250rrr\306qqq\337qqq\364ppp\376ppp" + "\376ppp\376ppp\376ppp\376ppp\376\222\221\221\376\200\200\200\376ppp\376p" + "pp\376ppp\376ppp\376ppp\376ppp\376ppp\376ppp\376ppp\376ppp\376ppp\376ppp" + "\376ppp\376ppp\376ppp\376ppp\376ppp\376kkk\366aab\364STU\352FGH\346<<>\306" + "124\236\"#&o\25\26\31B\5\6\12\32\3\4\10\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0iii\5iii\15ggg!fff?eee\\" + "dddzccc\230bbb\265yyy\321ffg\347ZZZ\373\\\\\\\376```\376```\376```\376``" + "`\376```\376```\376```\376___\376XXX\372OOP\370CDE\357;<=\341346\273()+\242" + "\25\26\31\205\13\14\17q\4\5\11X\3\4\10""3\3\4\10\22\3\4\10\4\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0ZZZ\1YYY\5::;\12\34\35\40""0\35\36\40U,-/|11" + "3\221013\257/01\301**,\257\34\35\40\240\14\15\21\200\7\10\13`\4\5\11>\3\4" + "\10\33\3\4\10\6\3\4\10\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" + "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", +}; + +struct sdlappicon sdlappicon = { + 128, 128, + sdlappicon_pixels +}; diff --git a/polymer/eduke32/source/testgame/rsrc/build_icon.icns b/polymer/eduke32/source/testgame/rsrc/build_icon.icns new file mode 100644 index 000000000..9240c31d5 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build_icon.icns differ diff --git a/polymer/eduke32/source/testgame/rsrc/build_icon.ico b/polymer/eduke32/source/testgame/rsrc/build_icon.ico new file mode 100644 index 000000000..63ae6a308 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build_icon.ico differ diff --git a/polymer/eduke32/source/testgame/rsrc/build_icon.png b/polymer/eduke32/source/testgame/rsrc/build_icon.png new file mode 100644 index 000000000..c9a043e28 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build_icon.png differ diff --git a/polymer/eduke32/source/testgame/rsrc/build_icon.xcf b/polymer/eduke32/source/testgame/rsrc/build_icon.xcf new file mode 100644 index 000000000..5f807a76e Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/build_icon.xcf differ diff --git a/polymer/eduke32/source/testgame/rsrc/buildres.rc b/polymer/eduke32/source/testgame/rsrc/buildres.rc new file mode 100644 index 000000000..a98043227 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/buildres.rc @@ -0,0 +1,38 @@ +#include +#include +#include "startwin.editor.h" + +RSRC_ICON ICON "build_icon.ico" +RSRC_BMP BITMAP "build.bmp" + +WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200 +STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU +CAPTION "Startup" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", WIN_STARTWIN_BITMAP, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 32, 32 + CONTROL "", WIN_STARTWIN_TABCTL, WC_TABCONTROL, WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 5, 250, 170 + CONTROL "&Start", WIN_STARTWIN_START, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 154, 180, 48, 14 + CONTROL "&Cancel", WIN_STARTWIN_CANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 207, 180, 48, 14 + + CONTROL "", WIN_STARTWIN_MESSAGES, "EDIT", ES_MULTILINE | ES_READONLY | WS_CHILD | WS_VSCROLL, 0, 0, 32, 32 +END + +WIN_STARTWINPAGE_CONFIG DIALOGEX DISCARDABLE 20, 40, 279, 168 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD +CAPTION "Dialog" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&2D Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 8, 50, 8 + CONTROL "", IDC2DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 6, 80, 56 + CONTROL "&Fullscreen", IDCFULLSCREEN, "BUTTON", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 148, 8, 49, 10 + CONTROL "&3D Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 24, 50, 8 + CONTROL "", IDC3DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 22, 80, 56 + CONTROL "&Always show configuration on start", IDCALWAYSSHOW, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 118, 116, 140, 8 +END + +#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) +1 24 "64/manifest.build.xml" +#else +1 24 "32/manifest.build.xml" +#endif diff --git a/polymer/eduke32/source/testgame/rsrc/editor_banner.c b/polymer/eduke32/source/testgame/rsrc/editor_banner.c new file mode 100644 index 000000000..eecb4c98c --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/editor_banner.c @@ -0,0 +1,2267 @@ +#include + + + + + + + +/* GdkPixbuf RGB C-Source image dump */ + +const GdkPixdata startbanner_pixdata = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 76160, /* header length + pixel_data length */ + 0x1010001, /* pixdata_type */ + 272, /* rowstride */ + 90, /* width */ + 280, /* height */ + /* pixel_data: */ + "\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2" + "\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\0\"M" + "\4\37M\4\37M\0\"M\0\"M\4\37M\0\"M\0#O\0#O\0$P\0#O\0$P\0$P\14#Q\0%Q\0" + "$P\0$P\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T" + "\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X" + "\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\0\0\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\15@s\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\24" + "Cw\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\32" + "G{\32G{\34H|\32G{\32G{\35I}\35I}\35I}\35I}\34H|\20L\177\20L\177\20L\177" + "\35I}\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P" + "\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\0\0\2\36E\2\36E\2\36E\2\36E" + "\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5" + "\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\0" + "#O\0\"M\14#Q\0$P\0$P\0$P\0#O\14#Q\0%Q\0$P\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14" + "#Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2" + "'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12" + "+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17At\15@s\17" + "At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30" + "Ey\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\34H|\34H|\34H|\32G{\35I}\35I}\35" + "I}\20L\177\35I}\35I}\20L\177\20L\177\20L\177\22M\200\22M\200\22M\200" + "\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\27P" + "\203\27P\203\27P\203\27P\203\35I}\27P\203\27P\203\27P\203\27P\203\33" + "Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205" + "\33Q\205\33Q\205\0\0\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H" + "\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\0\"M\4\37" + "M\4\37M\4\37M\0\"M\4\37M\4\37M\0\"M\0#O\0\"M\0#O\0#O\0#O\0$P\0$P\0$P" + "\0%Q\14#Q\0$P\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14" + "#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X" + "\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,ZK\312\363K\312\363\13,Z\13,Z\13,Z\0\0" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23" + "Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\24Cw\30Ey\30" + "Ey\30Ey\32G{\32G{\32G{\34H|\34H|\34H|\35I}\35I}\35I}\35I}\34H|\20L\177" + "\20L\177\35I}\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P" + "\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33" + "Q\205\0\0\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40" + "H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\4\37M\4\37M\4\37M\0" + "\"M\0\"M\4\37M\0\"M\14#Q\0\"M\0$P\0$P\0$P\0$P\0$P\14#Q\0$P\14#Q\0$P\0" + "%Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2" + "'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X" + "\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,ZK\312\363K\312\363\13,Z\13,Z\13,Z\0\0\11>q\11>" + "q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15" + "@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23" + "Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\34" + "H|\32G{\20L\177\34H|\32G{\35I}\35I}\35I}\34H|\20L\177\20L\177\20L\177" + "\35I}\22M\200\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P" + "\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33" + "Q\205\0\0\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40" + "H\5\40H\5\40H\4\37M\4\37M\0\"M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\4\37" + "M\0\"M\0\"M\0#O\0\"M\0$P\0$P\0#O\0$P\0%Q\0$P\14#Q\0$P\14#Q\0%Q\0%Q\14" + "#Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2" + "'T\2'T\10*X\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12" + "+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,ZK\312\363K\312\363\13,Z\13,Z\13,Z\0\0\11>q\11>q\11>" + "q\11>q\11>q\11>q\11>q\11>q\15@s\11>q\11>q\15@s\15@s\15@s\15@s\15@s\17" + "At\15@s\15@s\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\34H|\32" + "G{\34H|\20L\177\35I}\35I}\34H|\35I}\20L\177\20L\177\35I}\20L\177\22M" + "\200\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P" + "\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33" + "Q\205\0\0\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37" + "M\0\"M\4\37M\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\4\37M\0\"M\0\"M" + "\0\"M\14#Q\0#O\0$P\0$P\0#O\0$P\0$P\0%Q\14#Q\0$P\0%Q\0%Q\14#Q\0%Q\14#" + "Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12" + "+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,ZK\312\363K\312\363\13,Z\13,Z\13,Z\0\0\11>q\11>q\11>q\11>" + "q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\17" + "At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24" + "Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\34H|\32G{\34H|\35" + "I}\35I}\34H|\35I}\35I}\20L\177\35I}\20L\177\20L\177\22M\200\22M\200\24" + "N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0" + "\0\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\4\37M\4\37M\4" + "\37M\0\"M\4\37M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\0\"M\0\"M\0#O\0$P\0" + "$P\0$P\0$P\0$P\0$P\0%Q\0$P\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\14#Q" + "\14#Q\0%Q\14#Q\0%Q\14#Q\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12" + "+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15" + "-[\15-[K\312\363K\312\363\15-[\15-[\15-[\0\0\11>q\11>q\11>q\11>q\15@" + "s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\17At\23" + "Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\24" + "Cw\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\34H|\34H|\34H|\32G{\34H|\35I}\35I}\35" + "I}\35I}\35I}\20L\177\35I}\35I}\22M\200\22M\200\22M\200\24N\201\24N\201" + "\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P" + "\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0\0\5" + "\40H\5\40H\5\40H\5\40H\4\37M\4\37M\4\37M\4\37M\0\"M\4\37M\4\37M\4\37" + "M\5\40H\4\37M\0\"M\0\"M\4\37M\0\"M\0#O\0\"M\0#O\0#O\0$P\0#O\0$P\0$P\14" + "#Q\0%Q\0%Q\14#Q\0$P\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\14#Q\0%Q\14#" + "Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\2'T\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[K" + "\312\363K\312\363\15-[\15-[\15-[\0\0\15@s\15@s\15@s\15@s\15@s\15@s\15" + "@s\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23" + "Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30" + "Ey\30Ey\32G{\30Ey\34H|\34H|\34H|\34H|\35I}\35I}\35I}\35I}\35I}\35I}\20" + "L\177\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\35I}\26O\202\26" + "O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0\0\0\"M\4" + "\37M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\4\37M\4\37M\4\37M\0\"M\4\37M\0" + "\"M\4\37M\0\"M\0\"M\0\"M\0#O\0\"M\14#Q\0#O\0$P\0$P\14#Q\0$P\0%Q\14#Q" + "\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\2'" + "T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[K\312\363" + "K\312\363\15-[\15-[\15-[\0\0\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s" + "\15@s\15@s\15@s\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23" + "Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32" + "G{\30Ey\34H|\32G{\34H|\34H|\35I}\35I}\34H|\35I}\20L\177\20L\177\35I}" + "\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O" + "\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0" + "\0\0\"M\4\37M\5\40H\4\37M\4\37M\0\"M\4\37M\0\"M\4\37M\0\"M\0\"M\0\"M" + "\4\37M\0\"M\0#O\0\"M\0\"M\0#O\0$P\0#O\0$P\0#O\14#Q\14#Q\0$P\0%Q\0$P\0" + "%Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2" + "'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12" + "+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[K\312\363" + "K\312\363\15-[\15-[\15-[\0\0\15@s\15@s\15@s\15@s\15@s\15@s\15@s\15@s" + "\23Bv\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24" + "Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\34" + "H|\34H|\34H|\34H|\20L\177\35I}\35I}\35I}\34H|\20L\177\20L\177\20L\177" + "\20L\177\22M\200\22M\200\22M\200\24N\201\26O\202\26O\202\26O\202\26O" + "\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33" + "Q\205\0\0\4\37M\4\37M\0\"M\4\37M\0\"M\4\37M\0\"M\0\"M\0\"M\4\37M\0\"" + "M\0#O\0#O\0\"M\0\"M\0\"M\0$P\0#O\0$P\0$P\0$P\14#Q\0%Q\14#Q\0%Q\0%Q\14" + "#Q\0%Q\0%Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2" + "'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12" + "+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[K" + "\312\363K\312\363\15-[\15-[\15-[\0\0\15@s\15@s\15@s\15@s\15@s\17At\17" + "At\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34" + "H|\34H|\34H|\34H|\35I}\34H|\35I}\35I}\35I}\20L\177\20L\177\35I}\22M\200" + "\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O" + "\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33" + "Q\205\0\0\4\37M\4\37M\0\"M\4\37M\4\37M\4\37M\0\"M\0\"M\0#O\14#Q\0\"M" + "\0\"M\0\"M\0\"M\0\"M\0$P\0$P\0$P\0#O\0$P\0$P\0%Q\14#Q\0%Q\0%Q\0%Q\0%" + "Q\0%Q\0%Q\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\2'T\14#Q\2'T\14#Q\2'T\2" + "'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+" + "Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[K\312\363K\312\363\15-[\15-[\15-[\0\0\15@s\17At\17At\17At\17At\17A" + "t\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\34" + "H|\34H|\20L\177\34H|\34H|\35I}\35I}\35I}\20L\177\20L\177\20L\177\35I" + "}\22M\200\35I}\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R" + "\206\34R\206\34R\206\34R\206\34R\206\34R\206K\312\363K\312\363\33Q\205" + "\33Q\205\33Q\205\0\0\0\"M\0\"M\4\37M\0\"M\4\37M\0\"M\0\"M\0\"M\14#Q\0" + "\"M\0$P\0#O\0$P\0#O\0$P\0$P\0$P\14#Q\0$P\0%Q\0$P\0%Q\14#Q\0%Q\14#Q\0" + "%Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T" + "\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y" + "\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\15-[\15-[\15-[" + "\15-[\15-[K\312\363K\312\363\15-[\15-[\15-[\0\0\17At\17At\17At\23Bv\23" + "Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\20L\177" + "\34H|\34H|\34H|\34H|\20L\177\35I}\35I}\35I}\35I}\20L\177\20L\177\35I" + "}\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\35I}\26O\202" + "\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R" + "\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206K\312\363K\312\363" + "\33Q\205\33Q\205\33Q\205\0\0\4\37M\0\"M\14#Q\0\"M\14#Q\0\"M\0\"M\0\"" + "M\0#O\0$P\0#O\0$P\0#O\0#O\0$P\14#Q\14#Q\14#Q\0$P\14#Q\0$P\0%Q\0%Q\0%" + "Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'" + "T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12" + "+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17" + ".\\\15-[\15-[\15-[K\312\363K\312\363\15-[\15-[\15-[\0\0\23Bv\23Bv\23" + "Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\23Bv\23Bv\24Cw\23Bv\24Cw\24Cw\24" + "Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\34" + "H|\34H|\34H|\34H|\34H|\35I}\20L\177\35I}\35I}\20L\177\35I}\20L\177\20" + "L\177\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R\206\34R\206\34R\206\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206" + "K\312\363K\312\363\34R\206\33Q\205\33Q\205\0\0\0\"M\0\"M\0#O\0\"M\0\"" + "M\0$P\0#O\0$P\0#O\0$P\0#O\0#O\0#O\14#Q\0$P\14#Q\0$P\14#Q\0$P\0%Q\14#" + "Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\2'T\2'T\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12" + "+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[K\312\363K\312\363\15-[\15-[\15" + "-[\0\0\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24" + "Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32" + "G{\30Ey\34H|\34H|\34H|\32G{\34H|\35I}\20L\177\35I}\20L\177\35I}\20L\177" + "\35I}\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202" + "\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R\206\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\34R\206\34R\206\34R\206K\312\363K\312\363\34R\206\33Q\205\33Q\205\0" + "\0\0\"M\0\"M\0\"M\0\"M\0$P\0$P\0$P\0$P\0$P\0#O\0$P\0%Q\14#Q\0$P\14#Q" + "\0$P\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%" + "Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[K" + "\312\363K\312\363\15-[\15-[\15-[\0\0\23Bv\23Bv\24Cw\23Bv\23Bv\23Bv\23" + "Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30" + "Ey\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\34H|\34H|\34H|\35I}\34H|\35I}\34" + "H|\35I}\20L\177\20L\177\20L\177\20L\177\22M\200\35I}\24N\201\24N\201" + "\24N\201\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P" + "\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206K\312\363K\312" + "\363\34R\206\33Q\205\33Q\205\0\0\0$P\0#O\0#O\0$P\0$P\0#O\0$P\0$P\0$P" + "\0$P\14#Q\0%Q\14#Q\0%Q\14#Q\0$P\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0" + "%Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\K\312\363K\312\363\15-[\15-[\15-[\0\0\23" + "Bv\23Bv\24Cw\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24" + "Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\34H|\32G{\34" + "H|\32G{\35I}\35I}\35I}\35I}\20L\177\20L\177\35I}\20L\177\35I}\22M\200" + "\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P" + "\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R" + "\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207K\312\363K\312\363\34R\206\33Q\205\33Q\205\0\0\0" + "$P\0#O\0$P\0#O\5\40H\0$P\0%Q\14#Q\0$P\0%Q\14#Q\0%Q\0$P\14#Q\0%Q\0%Q\0" + "%Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\2'T" + "\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15" + "-[K\312\363K\312\363\15-[\15-[\15-[\0\0\23Bv\23Bv\23Bv\23Bv\23Bv\24C" + "w\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\24Cw\30Ey\30Ey\30Ey\30" + "Ey\30Ey\30Ey\32G{\30Ey\34H|\20L\177\34H|\34H|\34H|\35I}\35I}\35I}\34" + "H|\20L\177\20L\177\35I}\20L\177\22M\200\22M\200\24N\201\24N\201\24N\201" + "\26O\202\26O\202\26O\202\35I}\27P\203\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206" + "K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0\0\0$P\0$P\0$P\0#O\14#Q\0" + "%Q\14#Q\0%Q\14#Q\0$P\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\14" + "#Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T" + "\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13," + "Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[K\312\363K\312\363" + "\15-[\15-[\15-[\0\0\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24C" + "w\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\32" + "G{\34H|\32G{\34H|\35I}\35I}\35I}\20L\177\35I}\20L\177\20L\177\20L\177" + "\22M\200\35I}\22M\200\22M\200\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206K\312\363K\312" + "\363\33Q\205\33Q\205\33Q\205\0\0\14#Q\14#Q\0$P\14#Q\14#Q\0$P\14#Q\0$" + "P\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q" + "\14#Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*" + "X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17." + "\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[K\312\363K\312\363\15-" + "[\15-[\15-[\0\0\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24" + "Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\34H|\32G{\34H|\32" + "G{\20L\177\35I}\20L\177\35I}\35I}\35I}\20L\177\20L\177\20L\177\20L\177" + "\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O" + "\202\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R" + "\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206\33Q\205K\312\363" + "K\312\363\33Q\205\33Q\205\33Q\205\0\0\0$P\14#Q\0%Q\0$P\14#Q\0$P\14#Q" + "\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0" + "%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[K\312\363K\312\363\15-" + "[\15-[\13,Z\0\0\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\24" + "Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\34H|\32G{\34H|\32" + "G{\35I}\35I}\20L\177\35I}\20L\177\20L\177\20L\177\20L\177\35I}\22M\200" + "\35I}\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R\206\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\34R\206\33Q\205\33Q\205\33Q\205K\312\363K\312" + "\363\33Q\205\33Q\205\33Q\205\0\0\14#Q\14#Q\0$P\0%Q\0$P\0$P\14#Q\0%Q\0" + "%Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\2'" + "T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*" + "X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[K\312\363K\312\363\15-[\13," + "Z\13,Z\0\0\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\24Cw\30Ey\30" + "Ey\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\20L\177\34H|\32G{\20L\177\32G{" + "\20L\177\35I}\34H|\35I}\20L\177\20L\177\20L\177\20L\177\22M\200\22M\200" + "\22M\200\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P" + "\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\34R\206\34R\206\34R\206\33Q\205\33Q\205" + "K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0\0\14#Q\14#Q\0$P\14#Q\0%" + "Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#" + "Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13" + ",Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-[K\312\363" + "K\312\363\13,Z\13,Z\13,Z\0\0\24Cw\24Cw\24Cw\30Ey\24Cw\24Cw\30Ey\24Cw" + "\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\32G{\34H|\34H|\34H|\20" + "L\177\35I}\35I}\35I}\20L\177\35I}\20L\177\20L\177\20L\177\35I}\22M\200" + "\35I}\22M\200\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206\33Q\205\33Q\205\33Q" + "\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0\0\14#Q\0%Q\0" + "%Q\14#Q\0%Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\14#Q\0" + "%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[K\312\363K\312\363\13,Z\13,Z\13,Z\0\0\30Ey\24Cw\24Cw\30Ey\30Ey\30E" + "y\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\34H|\32G{\34" + "H|\20L\177\35I}\35I}\35I}\35I}\35I}\35I}\20L\177\20L\177\35I}\35I}\22" + "M\200\22M\200\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\34R\206\34R\206\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\27P\203\0\0\0" + "%Q\14#Q\0%Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\14#Q\14#Q\0%Q\14#Q\0" + "%Q\0%Q\14#Q\0%Q\14#Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\13,ZK\312\363K\312\363\13,Z\12+Y\12+Y\0\0\30Ey\30Ey\24Cw\30E" + "y\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\32G{\32G{\34H|\34H|\34" + "H|\34H|\34H|\35I}\34H|\35I}\35I}\35I}\35I}\20L\177\20L\177\22M\200\35" + "I}\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\27P\203\27" + "P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\34R\206\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\27P\203\27" + "P\203\0\0\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\14#Q\14#Q\0%Q\14#Q\14" + "#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X" + "\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\13,Z\13,Z\13,ZK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\30E" + "y\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\32G{\34H|\20" + "L\177\32G{\32G{\34H|\34H|\35I}\20L\177\35I}\35I}\35I}\20L\177\20L\177" + "\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O" + "\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206\34R\206" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205K\312" + "\363K\312\363\27P\203\27P\203\26O\202\0\0\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\14" + "#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2" + "'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y" + "\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,ZK\312\363K\312" + "\363\12+Y\12+Y\10*X\0\0\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{" + "\30Ey\32G{\32G{\34H|\32G{\34H|\32G{\34H|\35I}\35I}\35I}\35I}\35I}\20" + "L\177\20L\177\20L\177\20L\177\22M\200\22M\200\22M\200\35I}\24N\201\26" + "O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\34R\206\34R\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205K\312\363K\312\363\27P\203\26O\202\26O\202\0\0\14" + "#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q" + "\0%Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13" + ",Z\13,Z\12+YK\312\363K\312\363\10*X\10*X\10*X\0\0\30Ey\30Ey\30Ey\30E" + "y\30Ey\30Ey\30Ey\32G{\30Ey\32G{\34H|\34H|\32G{\20L\177\34H|\34H|\20L" + "\177\35I}\34H|\35I}\35I}\20L\177\20L\177\20L\177\20L\177\22M\200\22M" + "\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\27P\203\33Q\205\27P\203\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R\206" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\34R\206\34R\206\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203K\312\363" + "K\312\363\26O\202\26O\202\26O\202\0\0\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#" + "Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'" + "T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+" + "Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-" + "[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+YK\312\363K\312" + "\363\10*X\10*X\10*X\0\0\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\30Ey" + "\34H|\34H|\34H|\32G{\32G{\34H|\34H|\35I}\34H|\35I}\20L\177\20L\177\20" + "L\177\35I}\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26" + "O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R\206\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\27P\203\27P\203\27P\203K\312\363K\312\363\26O\202\24N\201\24N\201" + "\0\0\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0" + "%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X" + "\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13" + ",Z\12+Y\12+Y\12+Y\10*XK\312\363K\312\363\10*X\10*X\10*X\0\0\30Ey\30E" + "y\30Ey\30Ey\30Ey\32G{\30Ey\30Ey\32G{\34H|\32G{\20L\177\34H|\34H|\34H" + "|\35I}\35I}\20L\177\35I}\20L\177\35I}\20L\177\20L\177\22M\200\35I}\22" + "M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\34R\206\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\34R\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P\203\26O\202\26O\202" + "K\312\363K\312\363\24N\201\22M\200\22M\200\0\0\14#Q\0%Q\14#Q\14#Q\0%" + "Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2" + "'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12" + "+Y\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15" + "-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10*X\10*XK\312\363K\312" + "\363\2'T\10*X\2'T\0\0\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\32G{\34H|\34" + "H|\32G{\34H|\34H|\20L\177\35I}\20L\177\35I}\35I}\20L\177\20L\177\20L" + "\177\35I}\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26" + "O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205" + "\33Q\205\33Q\205\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R" + "\206\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\34R\206\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P" + "\203\27P\203\26O\202\26O\202\26O\202K\312\363K\312\363\22M\200\20L\177" + "\35I}\0\0\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*" + "X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15" + "-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12" + "+Y\10*X\10*X\10*X\10*XK\312\363K\312\363\2'T\2'T\2'T\0\0\30Ey\30Ey\32" + "G{\30Ey\32G{\32G{\34H|\32G{\34H|\34H|\34H|\32G{\35I}\35I}\34H|\35I}\35" + "I}\35I}\35I}\20L\177\20L\177\22M\200\35I}\22M\200\24N\201\24N\201\26" + "O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\34R\206\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P" + "\203\27P\203\27P\203\26O\202\26O\202\26O\202\24N\201\24N\201K\312\363" + "K\312\363\35I}\20L\177\35I}\0\0\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0" + "%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\" + "\17.\\\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12" + "+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*XK\312\363K\312\363\2'T\2'T" + "\2'T\0\0\30Ey\32G{\32G{\32G{\32G{\32G{\34H|\20L\177\32G{\34H|\34H|\35" + "I}\20L\177\35I}\35I}\35I}\20L\177\20L\177\20L\177\20L\177\35I}\22M\200" + "\22M\200\24N\201\35I}\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202\26O\202" + "\24N\201\22M\200\22M\200K\312\363K\312\363\35I}\35I}\35I}\0\0\0%Q\0%" + "Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\14#Q\2'T\2'T\2'" + "T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+" + "Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13" + ",Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2" + "'TK\312\363K\312\363\14#Q\2'T\0%Q\0\0\30Ey\30Ey\32G{\32G{\34H|\34H|\34" + "H|\32G{\34H|\34H|\20L\177\35I}\35I}\35I}\35I}\20L\177\35I}\20L\177\20" + "L\177\35I}\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26" + "O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R" + "\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P\203\26O\202\26O\202\26O" + "\202\26O\202\24N\201\22M\200\35I}\20L\177\20L\177K\312\363K\312\363\35" + "I}\34H|\20L\177\0\0\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\17" + ".\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15-" + "[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12+Y\10*X\10*X\10*X\14" + "#Q\10*X\10*X\2'T\2'T\2'TK\312\363K\312\363\0%Q\14#Q\0%Q\0\0\30Ey\32G" + "{\32G{\32G{\34H|\34H|\32G{\20L\177\34H|\34H|\35I}\35I}\35I}\35I}\35I" + "}\35I}\20L\177\35I}\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26" + "O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206\34R\206\36S\207\36S\207" + "\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\36S" + "\207\34R\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P\203\26O" + "\202\26O\202\26O\202\24N\201\22M\200\22M\200\35I}\20L\177\20L\177\35" + "I}K\312\363K\312\363\32G{\34H|\32G{\0\0\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%" + "Q\0%Q\0%Q\2'T\2'T\14#Q\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\17.\\\17.\\" + "\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[" + "\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10" + "*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'TK\312\363K\312\363\14#Q\0%" + "Q\0%Q\0\0\30Ey\32G{\20L\177\34H|\34H|\20L\177\34H|\34H|\32G{\34H|\35" + "I}\35I}\34H|\35I}\20L\177\20L\177\20L\177\35I}\22M\200\35I}\22M\200\24" + "N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203" + "\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\34R\206" + "\34R\206\34R\206\36S\207\36S\207\36S\207\36S\207\36S\207\36S\207\34R" + "\206\34R\206\34R\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P" + "\203\26O\202\26O\202\26O\202\26O\202\24N\201\22M\200\22M\200\35I}\20" + "L\177\20L\177\35I}\35I}K\312\363K\312\363\32G{\30Ey\30Ey\0\0\0%Q\14#" + "Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\17.\\\17.\\\17.\\\17.\\\17.\\\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10" + "*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\2'T\0%QK\312\363K\312\363" + "\14#Q\0%Q\0%Q\0\0\32G{\30Ey\34H|\32G{\34H|\20L\177\34H|\34H|\34H|\35" + "I}\35I}\35I}\35I}\20L\177\35I}\20L\177\20L\177\20L\177\35I}\22M\200\24" + "N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203" + "\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R" + "\206\34R\206\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\35I}\26O\202" + "\26O\202\26O\202\26O\202\24N\201\22M\200\22M\200\20L\177\20L\177\35I" + "}\35I}\35I}\32G{\34H|K\312\363K\312\363\30Ey\30Ey\30Ey\0\0\14#Q\0%Q\0" + "%Q\0%Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\10*X\10*" + "X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\14#Q\0%Q\14#QK\312\363K\312\363\0%Q" + "\0%Q\14#Q\0\0\32G{\34H|\32G{\34H|\32G{\34H|\20L\177\35I}\20L\177\35I" + "}\35I}\35I}\35I}\20L\177\35I}\20L\177\20L\177\22M\200\22M\200\22M\200" + "\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P" + "\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206\34R\206" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\27P\203\33Q\205\33Q\205\27P\203\27P\203\27P\203\26O\202\26O\202" + "\26O\202\26O\202\24N\201\22M\200\35I}\20L\177\20L\177\20L\177\35I}\20" + "L\177\34H|\34H|\32G{\32G{K\312\363K\312\363\30Ey\24Cw\24Cw\0\0\14#Q\0" + "%Q\14#Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'" + "T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10" + "*X\10*X\2'T\2'T\2'T\2'T\2'T\0%Q\0%Q\0%Q\0%Q\0%QK\312\363K\312\363\14" + "#Q\14#Q\0#O\0\0\32G{\34H|\34H|\34H|\34H|\34H|\34H|\35I}\34H|\35I}\35" + "I}\35I}\20L\177\35I}\20L\177\20L\177\22M\200\22M\200\22M\200\24N\201" + "\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P" + "\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202" + "\24N\201\24N\201\22M\200\22M\200\35I}\20L\177\35I}\35I}\35I}\32G{\34" + "H|\30Ey\30Ey\30EyK\312\363K\312\363\24Cw\24Cw\24Cw\0\0\0%Q\0%Q\0%Q\14" + "#Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\2'T\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2" + "'T\2'T\2'T\2'T\14#Q\0%Q\14#Q\14#Q\14#Q\0%QK\312\363K\312\363\0%Q\0$P" + "\0$P\0\0\34H|\34H|\20L\177\34H|\34H|\34H|\34H|\35I}\20L\177\35I}\35I" + "}\34H|\20L\177\20L\177\35I}\20L\177\22M\200\22M\200\24N\201\24N\201\26" + "O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203" + "\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202\24N\201\24N\201\22M" + "\200\22M\200\35I}\35I}\35I}\35I}\35I}\32G{\34H|\32G{\32G{\30Ey\24Cw\24" + "CwK\312\363K\312\363\23Bv\23Bv\23Bv\0\0\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\2'" + "T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\14#Q\10*X\10*X\10*X" + "\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12" + "+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\14#Q\0%Q\0" + "%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0$PK\312\363K\312\363\0$P\0\"M\4\37M\0\0\34H" + "|\20L\177\34H|\32G{\34H|\20L\177\35I}\35I}\34H|\35I}\35I}\20L\177\20" + "L\177\20L\177\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\35I}\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P\203" + "\27P\203\26O\202\26O\202\35I}\24N\201\22M\200\22M\200\20L\177\20L\177" + "\35I}\35I}\34H|\34H|\32G{\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24CwK\312\363" + "K\312\363\23Bv\23Bv\17At\0\0\0%Q\0%Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T" + "\14#Q\2'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12" + "+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12+Y\10*X\10*X\10" + "*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\2'T\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0" + "%Q\0%Q\14#QK\312\363K\312\363\0#O\0\"M\4\37M\0\0\32G{\34H|\34H|\20L\177" + "\34H|\20L\177\35I}\35I}\34H|\35I}\35I}\35I}\20L\177\20L\177\22M\200\22" + "M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202" + "\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\27P\203\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202\24N" + "\201\22M\200\22M\200\20L\177\20L\177\20L\177\35I}\35I}\32G{\34H|\34H" + "|\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23BvK\312\363K\312\363\17At\15@" + "s\15@s\0\0\0%Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2" + "'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12" + "+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\12+Y\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2'T\2'" + "T\2'T\2'T\2'T\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0$P\14#Q\0#O\0\"MK\312\363" + "K\312\363\0\"M\4\37M\5\40H\0\0\34H|\32G{\34H|\32G{\32G{\35I}\34H|\35" + "I}\35I}\35I}\20L\177\20L\177\20L\177\20L\177\22M\200\22M\200\24N\201" + "\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P" + "\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P" + "\203\27P\203\26O\202\26O\202\26O\202\24N\201\24N\201\22M\200\22M\200" + "\35I}\20L\177\35I}\35I}\35I}\32G{\34H|\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw" + "\24Cw\23Bv\23Bv\23BvK\312\363K\312\363\15@s\11>q\11>q\0\0\0%Q\14#Q\0" + "%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\14#Q\10*X\10" + "*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\15" + "-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12+Y\10" + "*X\10*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\14#Q\2'T\14#Q\0%Q\0%Q\14" + "#Q\14#Q\0%Q\0%Q\14#Q\0$P\0#O\0#O\0\"M\0\"MK\312\363K\312\363\4\37M\5" + "\40H\0\"M\0\0\34H|\34H|\32G{\32G{\35I}\20L\177\35I}\20L\177\35I}\20L" + "\177\20L\177\20L\177\35I}\20L\177\22M\200\22M\200\24N\201\24N\201\26" + "O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\35I}\27P\203\27" + "P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\27P\203\27P\203\27P\203\27P\203\26O\202\26O\202\26O" + "\202\35I}\24N\201\35I}\22M\200\20L\177\20L\177\35I}\35I}\35I}\34H|\34" + "H|\34H|\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@sK\312\363" + "K\312\363\11>q\11>q\11>q\0\0\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'" + "T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12" + "+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\15-[\15" + "-[\15-[\15-[\15-[\15-[\15-[\15-[\15-[\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\12+Y\12+Y\12+Y\12+Y\10*X\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2" + "'T\14#Q\2'T\2'T\0%Q\0%Q\14#Q\14#Q\14#Q\14#Q\0%Q\0$P\0%Q\14#Q\0#O\0\"" + "M\0\"M\0\"M\4\37MK\312\363K\312\363\5\40H\2\36E\5\40H\0\0\32G{\34H|\34" + "H|\20L\177\35I}\35I}\35I}\34H|\35I}\20L\177\20L\177\20L\177\20L\177\22" + "M\200\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P\203\27P\203" + "\27P\203\26O\202\26O\202\26O\202\26O\202\24N\201\22M\200\22M\200\20L" + "\177\20L\177\20L\177\35I}\35I}\34H|\32G{\34H|\32G{\30Ey\30Ey\24Cw\24" + "Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\17At\15@sK\312\363K\312\363\11>q\11" + ">q\6=p\0\0\0%Q\0%Q\0%Q\0%Q\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10" + "*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+Y\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\12+Y\12+Y\12+Y\12+Y\10" + "*X\10*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\2'T\0%Q\0%Q\0%Q\0%Q\0" + "%Q\14#Q\0%Q\0$P\0%Q\0$P\0#O\0$P\0\"M\4\37M\4\37M\4\37M\5\40HK\312\363" + "K\312\363\5\40H\2\36E\2\36E\0\0\32G{\34H|\32G{\34H|\35I}\35I}\35I}\34" + "H|\34H|\20L\177\35I}\20L\177\20L\177\22M\200\22M\200\24N\201\24N\201" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P" + "\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\27P\203\27P\203\27P\203\27P\203\26O\202\26O\202\35I}\26O\202\24N\201" + "\24N\201\22M\200\22M\200\20L\177\20L\177\35I}\35I}\35I}\20L\177\34H|" + "\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\11" + ">q\11>qK\312\363K\312\363\6=p\4q\11>q\11>qK\312\363K\312\363\4q\11>q\11>q\11>q\6=pK\312" + "\363K\312\363\2" + "\0\0\34H|\32G{\35I}\35I}\35I}\35I}\20L\177\20L\177\35I}\20L\177\20L\177" + "\22M\200\22M\200\22M\200\35I}\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203\27P" + "\203\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202\26O\202\26O\202" + "\24N\201\35I}\22M\200\20L\177\35I}\20L\177\34H|\35I}\35I}\32G{\34H|\30" + "Ey\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\17At\15@s\15@s\11>q\11" + ">q\11>q\11>q\11>q\6=p\6=pK\312\363K\312\363\0:l\2\10\32=\11\33>\0\0\32G{\34H|\35I}\35I}\35I}\35I}\20L" + "\177\20L\177\35I}\20L\177\20L\177\22M\200\22M\200\35I}\24N\201\24N\201" + "\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P" + "\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\27P\203\27P\203\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202" + "\35I}\26O\202\24N\201\24N\201\22M\200\22M\200\20L\177\20L\177\35I}\20" + "L\177\35I}\32G{\32G{\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23" + "Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\6=p\6=p\4K\312\363K\312\363\11\33>\10\32=\0" + "\34C\0\0\34H|\34H|\34H|\34H|\35I}\35I}\35I}\35I}\20L\177\20L\177\22M" + "\200\35I}\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26" + "O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201\24N\201\22M\200\22M" + "\200\20L\177\20L\177\35I}\35I}\35I}\34H|\32G{\32G{\30Ey\30Ey\30Ey\24" + "Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\6" + "=p\6=p\2q\11>q\11>q\11>q\6=p\4\0\34C\10\32=\11\33>K\312\363K\312\363\10\32=\0\32:\0\32:\0\0" + "\34H|\34H|\20L\177\35I}\35I}\35I}\20L\177\20L\177\35I}\20L\177\22M\200" + "\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P" + "\203\27P\203\27P\203\27P\203\27P\203\26O\202\26O\202\26O\202\26O\202" + "\26O\202\24N\201\24N\201\22M\200\22M\200\22M\200\35I}\20L\177\35I}\34" + "H|\35I}\32G{\34H|\32G{\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23" + "Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\6=p\4\11\33>\10\32=K\312" + "\363K\312\363\0\32:\10\32=\5\30:\0\0\34H|\34H|\35I}\35I}\35I}\20L\177" + "\20L\177\20L\177\35I}\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P" + "\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\26O\202\26O" + "\202\26O\202\26O\202\26O\202\24N\201\24N\201\22M\200\22M\200\22M\200" + "\20L\177\20L\177\20L\177\20L\177\35I}\34H|\32G{\34H|\32G{\30Ey\30Ey\30" + "Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\6" + "=p\4\10\32=\11\33>\0\34C\10\32=\10\32=K\312\363K\312\363\0\32:\5" + "\30:\5\30:\0\0\34H|\35I}\35I}\35I}\35I}\20L\177\35I}\20L\177\35I}\22" + "M\200\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\27P\203\35I}\27P\203\27P\203\27P\203\27P\203" + "\27P\203\27P\203\35I}\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201\24N" + "\201\22M\200\22M\200\20L\177\20L\177\35I}\35I}\35I}\35I}\34H|\32G{\34" + "H|\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\11" + ">q\11>q\11>q\11>q\6=p\4\0\34C\11\33>\10\32=\0\32:\10\32=\10\32=\10\32=\0\32" + ":K\312\363K\312\363\5\30:\5\30:\0\32:\0\0\35I}\34H|\35I}\35I}\20L\177" + "\35I}\20L\177\35I}\22M\200\22M\200\35I}\24N\201\24N\201\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P" + "\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\27P\203\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\35I}\24N\201\22M\200\35I}\22M\200\20L\177\35I}\35I}\20L\177\35I" + "}\34H|\34H|\34H|\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17" + "At\15@s\15@s\11>q\376\377\374\376\377\374\376\377\374^\203\243\6=p\6" + "=p\2\0\34C\0\32:\10\32=\11\33>\10\32=\10\32=\10\32=\0\32:\0\32:K" + "\312\363K\312\363\5\31""6\0\32:\0\32:\0\0\35I}\20L\177\35I}\35I}\20L" + "\177\35I}\20L\177\20L\177\22M\200\35I}\22M\200\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N" + "\201\24N\201\22M\200\22M\200\22M\200\20L\177\35I}\20L\177\20L\177\35" + "I}\34H|\34H|\32G{\32G{\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\23Bv\23Bv\23Bv\23" + "Bv\17At\15@s\15@s\11>q\11>q\326\336\347\376\377\374\376\377\3745_\211" + "\2\0\34C\0\34C\0\32:\0\32:\10\32=\10\32=\10\32=\0\32:" + "\0\32:\5\30:\5\30:K\312\363K\312\363\0\32:\0\32:\5\31""6\0\0\34H|\35" + "I}\34H|\35I}\35I}\20L\177\35I}\20L\177\22M\200\22M\200\22M\200\24N\201" + "\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\35I}\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26" + "O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201" + "\24N\201\22M\200\22M\200\35I}\20L\177\20L\177\35I}\35I}\35I}\34H|\34" + "H|\20L\177\34H|\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17" + "At\15@s\15@s\11>q\11>q\11>q\11>q\36Ky\331\342\352\376\377\374\363\370" + "\373`|\235\0:l\0:l\0:l\21""9f\17""8e\17""8e\17""8e\17""8e\13""6c\10""4" + "a\10""4a\10""4aK\312\363K\312\363\10""4a\6""3`\4""3_\0\0\2'T\2'T\2'T" + "\2'T\2'T\2'T\2'T\10*X\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*" + "X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\14" + "#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0#O\0$P\0\"M\0\"M\0\"M" + "\4\37M\0\"M\5\40H\5\40H\2\36E\2\36E\213\232\255\235\251\266\367\375\377" + "\376\377\374\376\377\374\325\332\334\235\251\266\216\232\247\215\230" + "\245\215\230\245\210\227\252\215\230\245\215\230\245\215\230\245\5\30" + ":\5\30:\5\30:K\312\363K\312\363\0\32:\5\31""6\5\31""6\0\0\35I}\20L\177" + "\35I}\20L\177\20L\177\20L\177\35I}\22M\200\22M\200\22M\200\24N\201\24" + "N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201\24N\201" + "\22M\200\22M\200\22M\200\35I}\20L\177\20L\177\35I}\34H|\35I}\34H|\32" + "G{\34H|\30Ey\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15" + "@s\15@s\11>q\11>q\11>q\11>q\6=p\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\10""4a\10" + "4a\10""4aK\312\363K\312\363\11""6]\6""3`\6""3`\0\0\2'T\2'T\2'T\2'T\2" + "'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X" + "\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\2'T\10*X\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\14#Q\0%" + "Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\0$P\14#Q\0$P\0#O\0\"M\4\37M\4\37M\4\37M" + "\5\40H\0\"M\2\36E\5\40H\2\36E\2\36E\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\5\30" + ":\0\32:\0\32:K\312\363K\312\363\5\31""6\0\32:\5\31""6\0\0\34H|\35I}\35" + "I}\20L\177\20L\177\35I}\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201" + "\26O\202\26O\202\26O\202\26O\202\35I}\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\24N\201\24N\201\24N\201\22M\200\22M\200" + "\20L\177\35I}\35I}\35I}\35I}\35I}\34H|\32G{\34H|\34H|\32G{\30Ey\30Ey" + "\30Ey\30Ey\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11" + ">q\11>q\6=p\4q\11>q\11>q\11>q\6=" + "p\6=p\4\10\32=\0\32:\10\32=\10\32=\0\32:\0\32:\10" + "\32=\5\30:\5\30:\5\30:\0\32:\0\32:\0\32:\5\31""6K\312\363K\312\363\5" + "\31""6\5\31""6\4\30""5\0\0\34H|\20L\177\20L\177\20L\177\20L\177\20L\177" + "\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201\24N\201\24N" + "\201\22M\200\22M\200\22M\200\35I}\20L\177\35I}\35I}\20L\177\35I}\35I" + "}\34H|\20L\177\34H|\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23B" + "v\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\6=p\6=p\2\0\34" + "C\0\32:\11\33>6Kk\235\251\266\333\340\343\362\367\371\362\367\371\326" + "\336\347\235\251\2669Id\0\32:\0\32:\0\32:\5\31""6\5\31""6\5\31""6K\312" + "\363K\312\363\5\31""6\4\30""5\4\30""5\0\0\35I}\20L\177\35I}\20L\177\20" + "L\177\22M\200\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201\24N\201\24N\201" + "\24N\201\22M\200\22M\200\20L\177\20L\177\20L\177\20L\177\34H|\35I}\35" + "I}\34H|\32G{\34H|\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23" + "Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\4\10\32=\205\224" + "\247\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\210\224\241" + "\0\32:\5\31""6\5\31""6\5\31""6K\312\363K\312\363\4\30""5\4\30""5\4\30" + "5\0\0\35I}\20L\177\20L\177\20L\177\22M\200\22M\200\22M\200\35I}\24N\201" + "\24N\201\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N\201" + "\24N\201\24N\201\24N\201\22M\200\22M\200\20L\177\35I}\20L\177\20L\177" + "\34H|\35I}\35I}\34H|\34H|\32G{\32G{\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24" + "Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\6=p\4q\11>q\11>q\11>q\6=p\4\0\34C\0\34C\0\32:\10\32=\10\32=\353\360" + "\363\376\377\374\376\377\374M_u\0\32:\5\30:\5\30:\5\30:\0\32:\0\32:M" + "_u\376\377\374\376\377\374\354\362\364\5\31""6\5\31""6\5\31""6K\312\363" + "K\312\363\4\30""5\4\30""5\4\30""5\0\0\20L\177\35I}\20L\177\22M\200\22" + "M\200\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\24N" + "\201\35I}\24N\201\24N\201\22M\200\35I}\22M\200\22M\200\20L\177\35I}\20" + "L\177\35I}\20L\177\35I}\35I}\20L\177\34H|\34H|\32G{\30Ey\30Ey\30Ey\24" + "Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11" + ">q\6=p\6=p\2q\11>q\11>q\11>q\6=p\4\0\34C\0\32:\10\32=\10\32=\10\32=\10\32=\215\230" + "\245\376\377\374\376\377\374\376\377\374\370\372\367\267\277\307\222" + "\236\253\222\236\253\267\277\307\370\372\367\376\377\374\376\377\374" + "\376\377\374\215\230\245\5\31""6\0\32:\5\31""6K\312\363K\312\363\5\31" + "6\5\31""6\0\32:\0\0\20L\177\20L\177\35I}\22M\200\22M\200\24N\201\24N" + "\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201" + "\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200\35I" + "}\22M\200\20L\177\20L\177\20L\177\20L\177\35I}\35I}\35I}\35I}\32G{\34" + "H|\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\17" + "At\15@s\15@s\15@s\11>q\11>q\11>q\6=p\6=p\4\0\34C\10\32=\10\32" + "=\0\34C\10\32=\10\32=\0\32:\0\32:\201\220\242\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\206\222\237\5\31""6\5\31""6\5\31""6\5\31" + "6K\312\363K\312\363\5\31""6\5\31""6\5\31""6\0\0\20L\177\20L\177\22M\200" + "\22M\200\22M\200\24N\201\24N\201\24N\201\35I}\24N\201\24N\201\24N\201" + "\24N\201\24N\201\24N\201\24N\201\35I}\24N\201\24N\201\24N\201\22M\200" + "\22M\200\22M\200\22M\200\35I}\20L\177\20L\177\20L\177\35I}\20L\177\34" + "H|\35I}\34H|\32G{\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\24" + "Cw\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\6=p\6=p\4\11\33>\10\32=\10\32=\10\32=\0\32:\0\32:\10\32=\5\30:\0\32:9" + "Id\235\251\266\333\340\343\363\370\373\370\372\367\333\340\343\235\251" + "\2668K`\5\31""6\5\31""6\5\31""6\5\31""6\5\31""6\5\31""6K\312\363K\312" + "\363\5\31""6\5\31""6\5\31""6\0\0\22M\200\22M\200\22M\200\22M\200\35I" + "}\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24" + "N\201\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\35I}\22M\200\35" + "I}\20L\177\20L\177\20L\177\20L\177\20L\177\35I}\35I}\32G{\34H|\32G{\30" + "Ey\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\6=p\4\10\32=\11\33>\0\34C\10\32=\0\32:\0\32:\0\32:\10\32=\5" + "\30:\5\30:\5\30:\5\30:\0\32:\5\31""6\0\32:\0\32:\5\31""6\5\31""6\5\31" + "6\5\31""6\5\31""6\5\31""6\5\31""6\5\31""6\5\31""6K\312\363K\312\363\5" + "\31""6\5\31""6\5\31""6\0\0\22M\200\22M\200\22M\200\22M\200\24N\201\24" + "N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201" + "\24N\201\24N\201\22M\200\22M\200\22M\200\22M\200\35I}\20L\177\20L\177" + "\20L\177\20L\177\34H|\35I}\34H|\35I}\20L\177\34H|\34H|\32G{\30Ey\30E" + "y\24Cw\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\15" + "@s\11>q\11>q\11>q\4\10\32=\11\33>\0\32:\10\32=\0\34C\10\32=\10\32" + "=\0\32:\0\32:\5\30:\376\377\374\376\377\374\376\377\374%6P\0\32:\0\32" + ":\5\31""6\0\32:\5\31""6\5\31""6%6P\376\377\374\376\377\374\376\377\374" + "\5\31""6\5\31""6\5\31""6K\312\363K\312\363\5\31""6\0\32:\5\31""6\0\0" + "\22M\200\22M\200\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N" + "\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200" + "\35I}\22M\200\35I}\20L\177\20L\177\20L\177\20L\177\20L\177\35I}\20L\177" + "\34H|\32G{\34H|\32G{\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23" + "Bv\23Bv\17At\17At\15@s\15@s\11>q\11>q\11>q\11>q\6=p\6=p\4\10" + "\32=\11\33>\0\34C\10\32=\0\34C\0\32:\0\32:\0\32:\5\30:\5\30:\376\377" + "\374\376\377\374\376\377\374%6P\5\31""6\0\32:\0\32:\0\32:\0\32:\5\31" + "6;Nc\376\377\374\376\377\374\376\377\374\5\31""6\0\32:\0\32:K\312\363" + "K\312\363\0\32:\5\31""6\0\32:\0\0\22M\200\22M\200\24N\201\24N\201\24" + "N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201" + "\24N\201\22M\200\22M\200\35I}\22M\200\20L\177\20L\177\20L\177\20L\177" + "\20L\177\35I}\34H|\35I}\20L\177\34H|\32G{\34H|\32G{\30Ey\30Ey\30Ey\24" + "Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11" + ">q\6=p\6=p\4\0\34C\11\33>\0\32:\11\33>\0\34C\10\32=\10\32=\0\32:\0\32" + ":\215\230\245\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\343\350\353\0\32:\5\31""6\0\32:K\312\363K\312\363\5\30:\5\30:\5\30:" + "\0\0\22M\200\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201" + "\35I}\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\22M\200\22M\200" + "\20L\177\20L\177\20L\177\20L\177\35I}\35I}\35I}\20L\177\34H|\32G{\34" + "H|\20L\177\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17" + "At\15@s\15@s\17At\11>q\11>q\11>q\11>q\6=p\4\0\34C\11\33>\10" + "\32=\0\32:\11\33>\10\32=\0\34C\10\32=\0\32:\10\32=\0\32:\215\230\245" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\370\372\3675Mg\0\32:\5\31" + "6\0\32:K\312\363K\312\363\5\30:\5\30:\5\30:\0\0\24N\201\24N\201\24N\201" + "\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\22M" + "\200\22M\200\35I}\22M\200\22M\200\20L\177\20L\177\35I}\20L\177\34H|\35" + "I}\35I}\35I}\34H|\20L\177\34H|\32G{\32G{\30Ey\30Ey\30Ey\30Ey\24Cw\24" + "Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\6=p\6" + "=p\4" + "\11\33>\0\32:\11\33>\10\32=\10\32=\10\32=\0\32:\10\32=\0\32:\0\32:\5" + "\30:\5\30:\5\30:\5\30:\376\377\374\376\377\374\376\377\374%6P\0\32:\4" + "\30""5\0\32:\5\31""6\0\32:\0\32:\0\32:\5\31""6\0\32:\5\31""6\0\32:\5" + "\30:\0\32:K\312\363K\312\363\5\30:\0\32:\10\32=\0\0\24N\201\24N\201\24" + "N\201\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200" + "\35I}\22M\200\22M\200\22M\200\20L\177\20L\177\20L\177\20L\177\20L\177" + "\35I}\34H|\35I}\34H|\32G{\34H|\30Ey\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24" + "Cw\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\6" + "=p\4\10\32=\11\33>\10\32=\10\32=\10\32=\0\34C\0\32:\0\32:\0\32:\5" + "\30:\5\30:\5\30:\5\30:\5\30:\5\30:\5\30:\5\30:\0\32:\0\32:\0\32:\5\31" + "6\0\32:\5\31""6\0\32:\0\32:\0\32:\5\30:\5\30:\5\30:\5\30:\5\30:K\312" + "\363K\312\363\0\32:\10\32=\0\34C\0\0\24N\201\24N\201\24N\201\24N\201" + "\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\22M" + "\200\35I}\20L\177\20L\177\20L\177\20L\177\20L\177\35I}\35I}\35I}\20L" + "\177\34H|\34H|\30Ey\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23B" + "v\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\4\0\34C\10\32=\10\32=\0\32:\0\32:\10\32=\10\32=\214\227\244\214\227" + "\244\214\227\244\30'F\5\30:\214\227\244\214\227\244\214\227\244\214\227" + "\244\214\227\244\214\227\244\214\227\244\214\227\244\214\227\244\214" + "\227\244\214\227\244\214\227\244\214\227\244\214\227\244\5\30:\0\32:" + "\10\32=K\312\363K\312\363\10\32=\10\32=\0\34C\0\0\35I}\24N\201\24N\201" + "\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\22M" + "\200\35I}\20L\177\20L\177\20L\177\20L\177\35I}\35I}\35I}\35I}\34H|\20" + "L\177\34H|\30Ey\32G{\30Ey\30Ey\24Cw\30Ey\24Cw\24Cw\23Bv\23Bv\24Cw\23" + "Bv\17At\15@s\15@s\11>q\15@s\11>q\11>q\11>q\6=p\6=p\4\10" + "\32=\11\33>\10\32=\0\34C\10\32=\10\32=\10\32=\0\32:\0\32:\0\32:\10\32" + "=\376\377\374\376\377\374\376\377\374\37""6U\5\30:\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\0\32:\10\32=\10\32=K\312\363K\312\363\10\32=\0\32:\11\33" + ">\0\0\24N\201\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200" + "\22M\200\22M\200\35I}\20L\177\20L\177\20L\177\20L\177\35I}\35I}\35I}" + "\35I}\34H|\34H|\32G{\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\24" + "Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\4\11\33>\10\32=\10\32=\0\34C\10\32=\0\34C\10\32=\10\32=" + "\10\32=\0\32:\10\32=\0\32:\376\377\374\376\377\374\376\377\374\37""6" + "U\5\30:\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\0\32:\10\32=\0\34CK\312\363K\312" + "\363\0\32:\0\32:\0\34C\0\0\24N\201\24N\201\24N\201\24N\201\24N\201\24" + "N\201\22M\200\22M\200\35I}\22M\200\20L\177\20L\177\20L\177\35I}\20L\177" + "\35I}\20L\177\35I}\35I}\32G{\34H|\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\30Ey" + "\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11" + ">q\6=p\4\0\34C\0\34C\0\0\24N\201" + "\24N\201\24N\201\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\22M" + "\200\35I}\20L\177\35I}\20L\177\35I}\34H|\35I}\35I}\34H|\34H|\34H|\30" + "Ey\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\6=p\6=p\4\10\32=\10\32" + "=\10\32=\0\34C\10\32=\10\32=\10\32=\10\32=\0\32:\0\32:\10\32=\0\32:\0" + "\32:\5\30:\5\30:\5\30:\5\30:\5\30:\5\30:\0\32:\0\32:\10\32=\0\32:\10" + "\32=\10\32=\0\32:\10\32=\10\32=\10\32=\10\32=\0\32:\11\33>\0\32:K\312" + "\363K\312\363\0\34C\0\35D\0\35D\0\0\24N\201\24N\201\24N\201\24N\201\24" + "N\201\22M\200\22M\200\22M\200\22M\200\35I}\20L\177\20L\177\20L\177\35" + "I}\35I}\35I}\35I}\34H|\32G{\34H|\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24" + "Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6" + "=p\6=p\4\0\32:\10\32=\0\34C\10\32" + "=\0\34C\10\32=\10\32=\10\32=\0\32:\0\32:\10\32=\10\32=\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\10\32=\11\33>\0\34CK\312\363K\312\363\0\35D\2\36E\2\36E\0\0" + "\24N\201\24N\201\24N\201\22M\200\22M\200\22M\200\22M\200\22M\200\20L" + "\177\20L\177\35I}\20L\177\35I}\35I}\35I}\34H|\34H|\32G{\34H|\30Ey\30" + "Ey\30Ey\30Ey\24Cw\30Ey\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15" + "@s\11>q\15@s\11>q\11>q\11>q\6=p\6=p\4\0\32:\11" + "\33>\11\33>\10\32=\0\34C\10\32=\10\32=\10\32=\0\32:\10\32=\10\32=\0\32" + ":\10\32=\0\32:\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\0\34C\11\33>\0\35DK\312\363K\312" + "\363\2\36E\2\36E\5\40H\0\0\24N\201\24N\201\24N\201\22M\200\22M\200\22" + "M\200\22M\200\20L\177\20L\177\20L\177\20L\177\35I}\20L\177\35I}\35I}" + "\20L\177\34H|\20L\177\30Ey\30Ey\30Ey\30Ey\24Cw\30Ey\24Cw\24Cw\23Bv\23" + "Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\4q\11>q\0\0\10*X\10*X\10*X\10" + "*X\2'T\10*X\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\14" + "#Q\0%Q\0%Q\14#Q\0$P\0%Q\0$P\0#O\0\"M\0\"M\4\37M\4\37M\0\"M\4\37M\5\40" + "H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\11\33>\0\34C" + "\0\34C\11\33>\11\33>\11\33>\10\32=\10\32=\10\32=\0\34C\10\32=\10\32=" + "\10\32=\0\32:\10\32=\10\32=\0\32:\10\32=\0\32:\10\32=\0\32:\0\32:\0\32" + ":\0\32:\10\32=Pcy\370\372\367\367\375\377\200\217\241*\77_\5\40H\5!C" + "-Cb\201\220\242\370\372\367\367\375\377w\206\231\0\34C\0\35D\0\35D\0" + "\35DK\312\363K\312\363\5\40H\2\36E\2\36E\0\0\24N\201\24N\201\24N\201" + "\22M\200\22M\200\22M\200\20L\177\20L\177\20L\177\20L\177\34H|\35I}\35" + "I}\35I}\32G{\34H|\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23" + "Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=" + "p\2q\11>q\11>q\0\0\10*X\10*" + "X\10*X\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\2'T\2'T\0%Q\0%Q\14#Q\0%Q\0" + "%Q\14#Q\14#Q\14#Q\0%Q\0$P\0%Q\0$P\0$P\0\"M\0\"M\0\"M\4\37M\4\37M\0\"" + "M\4\37M\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0" + "\35D\0\34C\0\34C\0\34C\10\32=\0\32:\0\32:\11\33>\0\32:\10\32=\10\32=" + "\10\32=\10\32=\10\32=\0\34C\0\32:\10\32=\10\32=\0\32:\10\32=\10\32=\0" + "\32:\10\32=\10\32=\0\34C\247\262\300\376\377\374\376\377\374*\77_\10" + "\32=\11\33>\11\33>\10\32=\0\32:\0\34C*\77_\376\377\374\376\377\374\275" + "\305\315\0\35D\2\36E\2\36EK\312\363K\312\363\2\36E\5\40H\5\40H\0\0\24" + "N\201\24N\201\22M\200\22M\200\22M\200\20L\177\20L\177\35I}\20L\177\34" + "H|\35I}\35I}\35I}\20L\177\32G{\34H|\32G{\30Ey\30Ey\30Ey\30Ey\24Cw\24" + "Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11" + ">q\6=p\6=p\4q\11>q\15@s\0\0" + "\10*X\10*X\10*X\2'T\10*X\2'T\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\0%Q\0%Q\14" + "#Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\0$P\0%Q\0$P\0#O\0\"M\14#Q\0\"M\0\"M\4\37" + "M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0" + "\35D\0\34C\0\34C\0\34C\11\33>\10\32=\0\32:\10\32=\0\32:\10\32=\0\34C" + "\10\32=\10\32=\10\32=\10\32=\10\32=\10\32=\0\34C\10\32=\0\34C\10\32=" + "\10\32=\0\34C\10\32=\10\32=\10\32=\365\372\375\376\377\374\376\377\374" + "\307\317\330\30""0N\0\32:\11\33>\11\33>\0\34C\30""0N\307\317\330\376" + "\377\374\376\377\374\370\372\367\2\36E\2\36E\2\36EK\312\363K\312\363" + "\5\40H\0\"M\4\37M\0\0\24N\201\22M\200\22M\200\22M\200\22M\200\35I}\20" + "L\177\35I}\35I}\35I}\35I}\35I}\20L\177\34H|\32G{\32G{\32G{\30Ey\30Ey" + "\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\17At\17At\15@s\15@s\11>q\11" + ">q\11>q\11>q\11>q\11>q\6=p\4q\11>qK\312\363K\312\363\15@s\15" + "@s\15@s\0\0\10*X\10*X\10*X\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\14#Q\0" + "%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0$P\14#Q\0#O\0#O\0\"M\0#O\4\37M\4\37" + "M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\0" + "\35D\0\35D\0\35D\0\34C\11\33>\0\34C\11\33>\0\32:\11\33>\0\32:\10\32=" + "\0\32:\10\32=\10\32=\10\32=\10\32=\10\32=\10\32=\0\34C\10\32=\10\32=" + "\0\34C\10\32=\0\34C\0\34C\10\32=\10\32=\10\32=\205\224\247\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\210" + "\227\252\2\36E\2\36E\2\36EK\312\363K\312\363\4\37M\4\37M\4\37M\0\0\22" + "M\200\22M\200\22M\200\22M\200\20L\177\20L\177\20L\177\35I}\35I}\35I}" + "\35I}\34H|\34H|\32G{\32G{\30Ey\30Ey\30Ey\24Cw\30Ey\24Cw\24Cw\23Bv\23" + "Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6" + "=p\4q\11" + ">q\11>qK\312\363K\312\363\15@s\17At\23Bv\0\0\10*X\2'T\10*X\10*X\2'T\2" + "'T\2'T\2'T\14#Q\2'T\2'T\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\0$P\14" + "#Q\0$P\0$P\14#Q\0\"M\0\"M\0\"M\4\37M\4\37M\5\40H\5\40H\5\40H\5\40H\2" + "\36E\5\40H\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\11\33>\0\34C\0\34C\0\34" + "C\0\32:\11\33>\0\32:\10\32=\0\32:\11\33>\10\32=\0\34C\10\32=\10\32=\0" + "\34C\10\32=\0\34C\10\32=\10\32=\0\34C\10\32=\10\32=\10\32=\11\33>\0\32" + ":\10\32=\11\33>\34""4R\307\317\330\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\307\317" + "\330\33""9]\2\36E\2\36E\5\40H\5\40HK\312\363K\312\363\4\37M\0\"M\0\"" + "M\0\0\22M\200\22M\200\22M\200\20L\177\20L\177\35I}\20L\177\34H|\35I}" + "\35I}\32G{\34H|\34H|\32G{\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23" + "Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\6=p\6" + "=p\6=p\4q\11>q\11>q\11>q\15@sK\312\363K\312\363\23Bv\23Bv\23Bv\0\0\2" + "'T\10*X\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\14" + "#Q\0%Q\0%Q\14#Q\0$P\0$P\0$P\0$P\0\"M\4\37M\0\"M\0\"M\4\37M\5\40H\5\40" + "H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\11\33>" + "\0\34C\0\34C\0\34C\0\34C\0\32:\11\33>\11\33>\10\32=\0\32:\10\32=\11\33" + ">\0\32:\10\32=\10\32=\0\34C\0\34C\10\32=\10\32=\10\32=\0\32:\10\32=\10" + "\32=\10\32=\11\33>\0\32:\0\32:\10\32=\0\34C\0\34C\0\34C\0\34C\0\35D\0" + "\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\4\37MK\312" + "\363K\312\363\14#Q\0$P\0$P\0\0\22M\200\22M\200\22M\200\35I}\20L\177\20" + "L\177\35I}\20L\177\35I}\32G{\34H|\34H|\34H|\32G{\30Ey\30Ey\30Ey\30Ey" + "\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11" + ">q\11>q\11>q\11>q\6=p\6=p\4q\11>q\11>q\11>q\15@s\15@s\15@s" + "K\312\363K\312\363\23Bv\23Bv\24Cw\0\0\10*X\2'T\2'T\2'T\2'T\2'T\2'T\2" + "'T\2'T\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\0#O\0#O\0$P" + "\0\"M\0#O\4\37M\4\37M\0\"M\5\40H\5\40H\5\40H\2\36E\5\40H\2\36E\5\40H" + "\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\11\33>\0\34C\0\34C\11\33>\0\34C" + "\11\33>\10\32=\11\33>\10\32=\0\32:\11\33>\0\32:\10\32=\10\32=\11\33>" + "\11\33>\0\32:\10\32=\11\33>\10\32=\0\32:\10\32=\0\32:\10\32=\11\33>\0" + "\34C\11\33>\0\34C\11\33>\0\34C\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\2" + "\36E\2\36E\5\40H\5\40H\4\37M\4\37M\4\37M\0\"MK\312\363K\312\363\0$P\14" + "#Q\14#Q\0\0\22M\200\20L\177\35I}\20L\177\20L\177\35I}\35I}\20L\177\35" + "I}\32G{\34H|\32G{\32G{\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23" + "Bv\23Bv\17At\15@s\15@s\15@s\11>q\15@s\11>q\11>q\11>q\11>q\6=p\4q\6=p\11>q\11>q%P\177\313\327\345\320\331\341\313\327\345\15@s" + "\17At\23BvK\312\363K\312\363\23Bv\24Cw\24Cw\0\0\10*X\2'T\2'T\2'T\2'T" + "\14#Q\2'T\2'T\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0$P\14#Q\0" + "$P\0$P\0\"M\14#Q\0\"M\0\"M\4\37M\4\37M\5\40H\5\40H\2\36E\2\36E\5\40H" + "\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\11\33>\0\34C\0\34C\0\34C\0" + "\34C\11\33>\11\33>\10\32=\11\33>\10\32=\0\32:\11\33>\10\32=\11\33>\11" + "\33>\10\32=\0\32:\11\33>\10\32=\0\32:\11\33>\10\32=\0\32:\0\32:\376\377" + "\374\376\377\374\376\377\374\"9X\11\33>\0\35D\0\35D\376\377\374\376\377" + "\374\376\377\374\37<`\2\36E\2\36E\5\40H\37<`\376\377\374\376\377\374" + "\376\377\374\0\"M\14#Q\0#OK\312\363K\312\363\0$P\0%Q\14#Q\0\0\20L\177" + "\20L\177\20L\177\20L\177\34H|\35I}\35I}\35I}\32G{\34H|\34H|\30Ey\30E" + "y\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\4q\11>q\11>q\40W\204\376\377\374\376\377\374\376\377" + "\374\23Bv\23Bv\23BvK\312\363K\312\363\24Cw\24Cw\30Ey\0\0\2'T\2'T\2'T" + "\2'T\2'T\2'T\2'T\14#Q\0%Q\0%Q\14#Q\14#Q\14#Q\14#Q\14#Q\0%Q\0%Q\0$P\0" + "$P\0$P\0$P\0#O\0\"M\4\37M\0\"M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\34C\0\34C\0\34" + "C\0\34C\0\34C\0\34C\0\32:\10\32=\0\32:\10\32=\10\32=\0\32:\11\33>\10" + "\32=\0\32:\11\33>\10\32=\0\32:\11\33>\10\32=\11\33>\0\34C\0\34C\11\33" + ">\376\377\374\376\377\374\376\377\374\37""6U\0\35D\0\35D\2\36E\376\377" + "\374\376\377\374\376\377\374\37<`\2\36E\5\40H\5\40H(q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\4q\11>q\11>q\40W\204\376\377\374\376\377\374\376" + "\377\374\23Bv\23Bv\23BvK\312\363K\312\363\24Cw\30Ey\30Ey\0\0\2'T\2'T" + "\2'T\14#Q\2'T\2'T\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\0" + "$P\0$P\0$P\0\"M\0#O\0\"M\0\"M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\34C\0\34C\0" + "\34C\0\34C\0\34C\0\34C\11\33>\10\32=\11\33>\11\33>\0\32:\11\33>\0\32" + ":\0\32:\0\32:\11\33>\0\32:\10\32=\0\34C\0\34C\0\34C\0\34C\0\34C\11\33" + ">\376\377\374\376\377\374\376\377\374(q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\4q\376\377\374\376\377" + "\374\376\377\374\40W\204\11>q\15@s\15@s\40W\204\376\377\374\376\377\374" + "\376\377\374\23Bv\24Cw\24CwK\312\363K\312\363\24Cw\30Ey\32G{\0\0\2'T" + "\2'T\2'T\2'T\2'T\2'T\0%Q\0%Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\0%Q\0$P\14#Q" + "\0$P\0#O\14#Q\0\"M\0\"M\0\"M\4\37M\4\37M\4\37M\5\40H\5\40H\2\36E\5\40" + "H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\34C\0" + "\34C\0\34C\0\34C\11\33>\0\34C\0\34C\11\33>\10\32=\10\32=\0\32:\0\32:" + "\0\32:\10\32=\0\32:\0\34C\0\34C\0\34C\0\34C\0\34C\0\34C\0\34C\0\35D\0" + "\35D\376\377\374\376\377\374\376\377\374\"9X\2\36E\2\36E\2\36E\376\377" + "\374\376\377\374\376\377\374(q\11>q\11" + ">q\11>q\11>q\11>q\6=p\6=p\4\0\34C\0\34C\0\34" + "C\0\34C\0\34C\11\33>\0\34C\11\33>\0\34C\11\33>\0\34C\0\34C\11\33>\0\34" + "C\0\35D\0\35D\0\35D\0\35D\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\0$P\0%Q\14#QK\312\363K\312\363\0" + "%Q\0%Q\0%Q\0\0\20L\177\34H|\35I}\35I}\34H|\32G{\34H|\30Ey\32G{\30Ey\30" + "Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\4\0\34C\0\34C\0\34C\0\34C\0\34C\0\34C\11\33>\0\34C\0\34C\0\34C\11\33" + ">\0\34C\11\33>\0\35D\0\35D\0\35D\0\35D\2\36E\2\36E\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\0%Q\14#" + "Q\0%QK\312\363K\312\363\0%Q\0%Q\2'T\0\0\20L\177\35I}\35I}\32G{\34H|\32" + "G{\32G{\30Ey\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17" + "At\15@s\15@s\15@s\11>q\15@s\11>q\11>q\11>q\11>q\11>q\6=p\6=p\4\0\34C\0\34C\0\34C\0\34C\11\33>\0\34" + "C\11\33>\0\34C\0\34C\0\34C\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\2\36E" + "\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\4\37M\4\37M\4\37M\0" + "\"M\0\"M\0\"M\0#O\0#O\0$P\0$P\0$P\0%Q\0%Q\0%Q\0%QK\312\363K\312\363\14" + "#Q\2'T\2'T\0\0\34H|\35I}\34H|\34H|\34H|\34H|\32G{\30Ey\30Ey\30Ey\24C" + "w\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\17At\17At\15@s\15@s\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\15" + "@s\15@s\15@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\30" + "Ey\34H|K\312\363K\312\363\35I}\35I}\35I}\0\0\2'T\2'T\14#Q\0%Q\14#Q\14" + "#Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\0#O\0$P\0\"M\0#O\0\"M\4\37M\4\37" + "M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2" + "\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\35D\0\34C\0\34C\11\33>\0\34" + "C\0\34C\0\34C\11\33>\0\34C\0\34C\0\34C\0\34C\0\34C\0\34C\0\35D\0\35D" + "\0\35D\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2" + "\36E\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\0\"M\14#Q\0\"M\0$P\0$P\0%Q\0" + "$P\14#Q\0%Q\14#Q\14#Q\14#Q\0%QK\312\363K\312\363\2'T\2'T\2'T\0\0\20L" + "\177\35I}\34H|\32G{\34H|\32G{\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23B" + "v\23Bv\23Bv\23Bv\17At\17At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\17At\23Bv" + "\23Bv\24Cw\23Bv\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\32G{\34H|\32G{K\312\363" + "K\312\363\35I}\20L\177\20L\177\0\0\2'T\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\14#" + "Q\0%Q\0%Q\0%Q\14#Q\0$P\0$P\5\40H\0\"M\0\"M\0\"M\4\37M\4\37M\4\37M\5\40" + "H\5\40H\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\34C\0\34C\11\33>\11\33>\0" + "\34C\0\34C\0\34C\0\34C\0\34C\11\33>\0\35D\0\35D\0\35D\0\35D\0\35D\0\35" + "D\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\5\40H\0" + "\"M\4\37M\4\37M\4\37M\0\"M\0#O\0\"M\0$P\14#Q\0%Q\0$P\0%Q\0%Q\14#Q\0%" + "Q\0%Q\0%Q\14#QK\312\363K\312\363\2'T\2'T\2'T\0\0\35I}\34H|\20L\177\34" + "H|\32G{\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17" + "At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\4q\11>q\11>q\11>q" + "\11>q\11>q\11>q\15@s\15@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\30Ey\30Ey\30Ey\32G{\20L\177\34H|\35I}K\312\363K\312\363\20L\177\20" + "L\177\22M\200\0\0\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0$P" + "\0$P\0#O\0#O\0\"M\4\37M\4\37M\4\37M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36" + "E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0" + "\35D\0\35D\0\35D\0\35D\0\34C\11\33>\0\34C\11\33>\0\34C\0\34C\11\33>\0" + "\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36" + "E\5\40H\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\0\"M\0\"" + "M\0\"M\0$P\0#O\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\14#Q\2'TK\312\363" + "K\312\363\2'T\2'T\10*X\0\0\34H|\32G{\34H|\30Ey\30Ey\30Ey\30Ey\30Ey\24" + "Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\17At\23" + "Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\32G{\34H|\32G{\34H|\35" + "I}\35I}K\312\363K\312\363\20L\177\22M\200\22M\200\0\0\14#Q\0%Q\0%Q\0" + "%Q\14#Q\14#Q\14#Q\0%Q\0$P\0%Q\0$P\0#O\5\40H\0\"M\0\"M\0\"M\0\"M\4\37" + "M\4\37M\4\37M\5\40H\5\40H\0\"M\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35" + "D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0" + "\35D\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\5\40H\5\40H\5\40" + "H\0\"M\4\37M\0\"M\0\"M\0\"M\14#Q\0$P\0#O\0$P\0$P\14#Q\0%Q\0%Q\0%Q\14" + "#Q\14#Q\0%Q\0%Q\2'T\2'T\2'TK\312\363K\312\363\2'T\10*X\10*X\0\0\34H|" + "\34H|\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23" + "Bv\17At\15@s\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6" + "=p\4q\11>q\11>q\11>q" + "\11>q\11>q\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\24Cw\30Ey\30Ey\30Ey\32G{\20L\177\34H|\35I}\34H|\20L\177K\312\363K" + "\312\363\22M\200\22M\200\24N\201\0\0\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\14" + "#Q\0%Q\14#Q\0$P\0$P\14#Q\0\"M\0\"M\4\37M\4\37M\0\"M\4\37M\5\40H\5\40" + "H\5\40H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0" + "\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35" + "D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\0\"M" + "\14#Q\0\"M\0$P\0#O\14#Q\0%Q\0$P\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T" + "\2'T\2'TK\312\363K\312\363\2'T\10*X\10*X\0\0\32G{\32G{\30Ey\30Ey\30E" + "y\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15" + "@s\17At\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\32G{\32" + "G{\34H|\32G{\35I}\34H|\35I}\35I}K\312\363K\312\363\22M\200\24N\201\35" + "I}\0\0\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\0$P\0$P\0$P\0#O\0#O\0\"M\0" + "\"M\4\37M\4\37M\0\"M\5\40H\5\40H\5\40H\2\36E\2\36E\5\40H\2\36E\5\40H" + "\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0" + "\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5" + "\40H\5\40H\0\"M\4\37M\0\"M\0\"M\14#Q\0\"M\0$P\0$P\0$P\14#Q\0$P\0%Q\14" + "#Q\14#Q\0%Q\14#Q\0%Q\14#Q\2'T\14#Q\2'T\2'T\2'TK\312\363K\312\363\10*" + "X\10*X\10*X\0\0\32G{\30Ey\30Ey\30Ey\30Ey\24Cw\24Cw\24Cw\23Bv\23Bv\23" + "Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\6=p\6=p\6=p\4q\11>q\11>q\11" + ">q\11>q\11>q\11>q\15@s\15@s\220\253\302\220\253\302\220\253\302\220\253" + "\302\220\253\302\230\253\304\221\254\303\230\253\304\221\254\303\221" + "\254\303\222\255\304\222\255\304\222\255\304\222\255\304\230\253\304" + "\222\255\304\230\253\304\223\256\305\223\256\305\34H|\20L\177\35I}K\312" + "\363K\312\363\24N\201\26O\202\26O\202\0\0\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0" + "$P\0$P\0#O\0$P\0#O\0\"M\4\37M\4\37M\0\"M\4\37M\4\37M\5\40H\0\"M\5\40" + "H\5\40H\5\40H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0" + "\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35" + "D\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\2'T\2'T\10*XK\312\363K\312\363\10*X\10*X\10*X\0\0\30Ey\30Ey\30E" + "y\24Cw\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s" + "\15@s\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\20L\177\35I}\22M\200K\312\363K\312\363\26" + "O\202\26O\202\26O\202\0\0\14#Q\14#Q\0%Q\0%Q\0%Q\0$P\0%Q\0$P\0#O\0$P\14" + "#Q\0\"M\4\37M\4\37M\0\"M\4\37M\5\40H\5\40H\5\40H\5\40H\2\36E\2\36E\2" + "\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35" + "D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\0\35D\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\5\40" + "H\5\40H\5\40H\0\"M\4\37M\4\37M\0\"M\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\2'T\2'T\10*" + "XK\312\363K\312\363\10*X\10*X\10*X\0\0\30Ey\30Ey\24Cw\24Cw\24Cw\24Cw" + "\23Bv\23Bv\24Cw\23Bv\23Bv\17At\15@s\15@s\15@s\15@s\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\4q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\17At\17At\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\35I}\22M\200\22M\200K\312\363K\312\363\26O\202\26O\202\26O\202" + "\0\0\0%Q\0%Q\0%Q\0%Q\0$P\0$P\0#O\0$P\0#O\0\"M\4\37M\0\"M\0\"M\4\37M\0" + "\"M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0\35D\0" + "\35D\0\35D\0\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\4" + "\37M\0\"M\0\"M\0\"M\14#Q\0$P\0$P\0$P\0$POk\214\363\370\373\367\375\377" + "\204\230\257,Gl\10*X\12+Y,Gl\205\224\247\367\375\377\367\375\377x\213" + "\243\2'T\2'T\10*X\10*XK\312\363K\312\363\10*X\10*X\10*X\0\0\30Ey\24C" + "w\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15@s\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\17At\23" + "Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw3e\224\365\372\375\376\377\374y\231\265" + "\30Ey\30Ey\34H|\32G{\34H|\35I}r\227\267\376\377\374\376\377\374c\207" + "\250\22M\200\22M\200\24N\201K\312\363K\312\363\26O\202\26O\202\27P\203" + "\0\0\0%Q\14#Q\0$P\0%Q\0$P\0#O\0$P\0\"M\0\"M\0\"M\4\37M\4\37M\4\37M\4" + "\37M\5\40H\5\40H\0\"M\5\40H\5\40H\2\36E\2\36E\5\40H\5\40H\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\0\35D\0\35D\0\35D\0\35D\0" + "\35D\0\35D\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40" + "H\2\36E\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\4" + "\37M\0\"M\0#O\0\"M\0$P\0#O\14#Q\14#Q\14#Q\252\265\303\376\377\374\376" + "\377\374,Gl\14#Q\0%Q\0%Q\14#Q\2'T\2'T.In\376\377\374\376\377\374\274" + "\310\326\2'T\10*X\10*XK\312\363K\312\363\10*X\10*X\12+Y\0\0\24Cw\24C" + "w\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15@s\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\4q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17At\23Bv\23" + "Bv\24Cw\23Bv\23Bv\24Cw\24Cw\24Cw\354\362\364\376\377\374\376\377\374" + "Ks\237\32G{\34H|\32G{\34H|\20L\177\34H|Tv\234\376\377\374\376\377\374" + "\354\362\364\22M\200\24N\201\24N\201K\312\363K\312\363\26O\202\26O\202" + "\27P\203\0\0\0$P\14#Q\0$P\0%Q\0$P\0$P\0\"M\0\"M\4\37M\4\37M\4\37M\0\"" + "M\4\37M\5\40H\5\40H\5\40H\5\40H\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\5\40H\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37" + "M\4\37M\0\"M\0\"M\0$P\0#O\0#O\14#Q\0%Q\14#Q\14#Q\365\372\375\376\377" + "\374\376\377\374\312\322\333\34""8a\14#Q\0%Q\2'T\2'T\37:d\312\322\333" + "\376\377\374\376\377\374\365\372\375\10*X\10*X\10*XK\312\363K\312\363" + "\10*X\12+Y\12+Y\0\0\24Cw\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\15@" + "s\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=" + "p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15" + "@s\15@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\30Ey\333\344" + "\354\376\377\374\376\377\374\376\377\374\363\370\373\274\310\326\225" + "\260\307\225\260\307\274\310\326\364\371\374\376\377\374\376\377\374" + "\376\377\374\336\347\357\22M\200\35I}\26O\202K\312\363K\312\363\26O\202" + "\27P\203\27P\203\0\0\0%Q\14#Q\0#O\0#O\0$P\14#Q\0\"M\0\"M\4\37M\4\37M" + "\4\37M\0\"M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\4\37M\4\37M\4\37M\4" + "\37M\0\"M\0\"M\0\"M\0$P\0#O\0$P\0$P\14#Q\14#Q\0%Q\0%Q\210\227\252\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\213\232\255\10*X\10*X\10*XK\312\363K\312\363\10*X\12+Y\12+Y\0\0" + "\24Cw\24Cw\23Bv\23Bv\23Bv\23Bv\23Bv\17At\17At\15@s\15@s\15@s\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\4q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\23Bv\23Bv\23" + "Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\27P\203\333\344\354\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\336\347\357\"V\212\24N\201" + "\26O\202\26O\202K\312\363K\312\363\26O\202\27P\203\27P\203\0\0\0%Q\0" + "$P\0$P\0$P\0\"M\0#O\4\37M\4\37M\4\37M\4\37M\4\37M\5\40H\5\40H\5\40H\5" + "\40H\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40" + "H\5\40H\5\40H\5\40H\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\0#O\0\"M\0$P\0" + "#O\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\14#Q\37:d\303\314\324\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\307\317\330&@k\10*X\10*X\10*X\10*XK\312\363K\312\363\10*X\12" + "+Y\12+Y\0\0\23Bv\23Bv\24Cw\23Bv\23Bv\23Bv\17At\15@s\15@s\15@s\15@s\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6" + "=p\4q\11" + ">q\11>q\11>q\11>q\11>q\15@s\11>q\11>q\11>q\15@s\15@s\15@s\17At\17At\23" + "Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\35I}X" + "\203\250\263\303\326\341\352\362\365\372\375\365\372\375\343\350\353" + "\264\304\327o\206\243\24N\201\22M\200\24N\201\24N\201\26O\202\26O\202" + "K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\0$P\0$P\0\"M\0\"M\0\"" + "M\4\37M\0\"M\0\"M\4\37M\4\37M\5\40H\5\40H\5\40H\5\40H\5\40H\2\36E\2\36" + "E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\4" + "\37M\4\37M\0\"M\4\37M\4\37M\0\"M\0#O\0$P\0#O\0#O\14#Q\0%Q\0$P\0%Q\0%" + "Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10" + "*X\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\23Bv\23Bv\23B" + "v\23Bv\17At\17At\15@s\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\15@s\15@s\15@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\32G{\34H|\32G{\34H|\35I}\35I}\34H|\35" + "I}\20L\177\20L\177\22M\200\22M\200\22M\200\24N\201\26O\202\26O\202\26" + "O\202K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\0$P\0\"M\14#Q\0\"" + "M\0\"M\4\37M\0\"M\4\37M\4\37M\4\37M\5\40H\5\40H\5\40H\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\0" + "\"M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\0$P\0#O\0$P\0$P\14#Q\0$P\0%Q\14" + "#Q\0%Q\14#Q\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\10*X" + "\10*X\10*X\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\23Bv\23" + "Bv\23Bv\17At\15@s\15@s\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\230\253\304\222\255\304\222\255\304\222\255\304\230\253" + "\304\230\253\304\230\253\304\230\253\304\230\253\304\230\253\304\223" + "\256\305\223\256\305\224\257\306\224\257\306\224\257\306\224\257\306" + "\224\257\306\225\260\307\225\260\307\26O\202\26O\202\26O\202K\312\363" + "K\312\363\27P\203\27P\203\27P\203\0\0\0$P\14#Q\0\"M\0\"M\0\"M\4\37M\4" + "\37M\4\37M\5\40H\5\40H\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\5\40H\2\36" + "E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\0" + "\"M\0\"M\0#O\0\"M\0\"M\0$P\0$P\0$P\0$P\14#Q\0%Q\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\23Bv\23Bv\17At\17" + "At\15@s\15@s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@" + "s\15@s\17At\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24" + "Cw\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\26O\202\26O\202\26O\202K\312\363K\312\363\27" + "P\203\27P\203\27P\203\0\0\0\"M\4\37M\0\"M\4\37M\0\"M\4\37M\4\37M\5\40" + "H\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2" + "\36E\5\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\4\37M\0\"M\4\37M\14#Q\0" + "\"M\0$P\0#O\0$P\0$P\14#Q\0$P\0%Q\0%Q\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\10*X\10" + "*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\23Bv\17At\23Bv\15@s\15@" + "s\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=" + "p\6=p\6=p\6=p\6=p\6=p\4q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15" + "@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\26O\202\26O\202\26O\202K\312\363K\312\363\27P\203" + "\27P\203\27P\203\0\0\0\"M\4\37M\4\37M\4\37M\4\37M\0\"M\5\40H\5\40H\5" + "\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40" + "H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\4\37M\4\37M\0\"M\0\"M\0#O\0\"M\0" + "$P\0$P\0$P\14#Q\14#Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\2'T" + "\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*XK\312" + "\363K\312\363\12+Y\12+Y\12+Y\0\0\17At\15@s\15@s\15@s\15@s\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6" + "=p\6=p\4q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\17At\17At\23Bv\23" + "Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\34" + "H|\34H|\32G{\35I}\35I}\35I}\20L\177\20L\177\20L\177\20L\177\22M\200\35" + "I}\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202K\312\363K" + "\312\363\27P\203\27P\203\27P\203\0\0\0\"M\4\37M\4\37M\4\37M\4\37M\5\40" + "H\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5" + "\40H\5\40H\5\40H\5\40H\0\"M\4\37M\0\"M\0\"M\4\37M\4\37M\4\37M\0\"M\0" + "#O\0#O\0#O\0#O\14#Q\0%Q\0%Q\14#Q\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\15@s\15@s\15@s\15@s\11>" + "q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17" + "At\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30" + "Ey\32G{\20L\177\34H|\34H|\35I}\35I}\35I}\35I}\20L\177\20L\177\20L\177" + "\22M\200\22M\200\22M\200\24N\201\26O\202\26O\202\26O\202\26O\202\26O" + "\202\26O\202K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\0\"M\4\37" + "M\4\37M\5\40H\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2" + "\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\0\"M\4\37" + "M\0\"M\14#Q\0\"M\0#O\0$P\0$P\0$P\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\14#Q" + "\217\236\261\217\236\261\217\236\261\27""5]\0%Q\217\236\261\217\236\261" + "\217\236\261\217\236\261\217\236\261\217\236\261\217\236\261\217\236" + "\261\217\236\261\217\236\261\217\236\261\220\240\262\220\240\262\220" + "\240\262\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\15@s\15" + "@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6" + "=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15" + "@s\15@s\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30" + "Ey\30Ey\30Ey\376\377\374\376\377\374\376\377\374-`\217\35I}\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\26O\202\26O\202\26O\202K\312\363K\312\363\27P\203" + "\27P\203\27P\203\0\0\4\37M\4\37M\5\40H\5\40H\5\40H\0\"M\2\36E\2\36E\2" + "\36E\2\36E\5\40H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40" + "H\4\37M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\0\"M\14#Q\0#O\0#O\14#Q\0%Q" + "\0$P\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\376\377\374\376\377\374\376\377\374&@k" + "\2'T\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\10*X\10*X\10*XK\312\363K\312\363" + "\12+Y\12+Y\12+Y\0\0\15@s\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>" + "q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p" + "\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\376\377\374\376\377\374\376" + "\377\374-`\217\34H|\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\26O\202\26O\202\26O" + "\202K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\0\"M\5\40H\5\40H\5" + "\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40" + "H\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\4\37M\0\"M\0\"M\0#O\0\"M\0" + "#O\5\40H\0$P\14#Q\0$P\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\14#Q\0%Q\376\377\374" + "\376\377\374\376\377\374(q\11>q\11>q\11>q\11>" + "q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p" + "\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\17At\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23" + "Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\32G{\34H|\32" + "G{\34H|\20L\177\35I}\35I}\34H|\35I}\20L\177\20L\177\20L\177\22M\200\22" + "M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202" + "\26O\202\26O\202K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\5\40H" + "\5\40H\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2" + "\36E\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\4\37M\0\"M\0\"M\0\"M\0" + "\"M\0\"M\0#O\0#O\0$P\0$P\14#Q\0$P\0%Q\14#Q\14#Q\0%Q\14#Q\14#Q\0%Q\14" + "#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\12+YK\312\363K\312\363\12+Y\12+Y\12+Y\0\0" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>" + "q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17" + "At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30" + "Ey\30Ey\30Ey\32G{\34H|\32G{\34H|\35I}\20L\177\35I}\35I}\35I}\20L\177" + "\20L\177\20L\177\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O" + "\202\26O\202\26O\202\26O\202\26O\202\27P\203K\312\363K\312\363\27P\203" + "\27P\203\27P\203\0\0\5\40H\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H" + "\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\4" + "\37M\0\"M\0\"M\4\37M\0#O\0\"M\0\"M\0$P\0#O\14#Q\0%Q\14#Q\0%Q\0%Q\14#" + "Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\10" + "*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*XK\312\363" + "K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6" + "=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\34H|\32G{\34H|\35I}\35I}\34" + "H|\35I}\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\26O\202\26O\202\26O\202K\312\363" + "K\312\363\27P\203\27P\203\27P\203\0\0\5\40H\5\40H\2\36E\5\40H\2\36E\2" + "\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5" + "\40H\2\36E\2\36E\2\36E\2\36E\2\36E\0\"M\5\40H\5\40H\5\40H\5\40H\4\37" + "M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\14#Q\0#O\0#O\0$P\0$P\14#Q\0%Q\0%" + "Q\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\2'T\14#Q\2'T\2'T\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12" + "+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17At\17" + "At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30" + "Ey\32G{\30Ey\32G{\34H|\34H|\35I}\35I}\35I}\35I}\20L\177\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\26O\202\26O\202\26O\202K\312\363K\312\363\27P\203\27" + "P\203\27P\203\0\0\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\5\40H\2\36" + "E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\5\40H\2\36" + "E\2\36E\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\4\37M\4\37M\4\37M\0" + "\"M\0\"M\0\"M\5\40H\0$P\0$P\0%Q\0$P\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0" + "%Q\14#Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T\2'T\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\10*X\10*X\10*XK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23" + "Bv\23Bv\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\32G{\30Ey\34H|\32G{\34" + "H|\32G{\35I}\35I}\35I}\35I}\20L\177\224\257\306\224\257\306\224\257\306" + "\224\257\306\230\253\304\224\257\306\230\253\304\233\267\316\310\324" + "\342\367\375\377\376\377\374\376\377\374\246\276\317\225\260\307\26O" + "\202\26O\202\26O\202K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2" + "\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5" + "\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40" + "H\5\40H\4\37M\0\"M\4\37M\4\37M\4\37M\4\37M\0\"M\14#Q\0\"M\0\"M\0$P\0" + "$P\0$P\14#Q\0%Q\0$P\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X1Lq\337\344" + "\347\376\377\374\325\332\334\13""6c\10*X\10*X\10*XK\312\363K\312\363" + "\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\23" + "Bv\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30" + "Ey\30Ey\30Ey\32G{\34H|\32G{\34H|\20L\177\35I}\35I}\35I}\34H|\20L\177" + "\20L\177\20L\177\35I}\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201" + "\26O\202\26O\202_\200\247\376\377\374\376\377\374\215\250\277\26O\202" + "\26O\202\27P\203K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2\36E" + "\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40" + "H\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\4" + "\37M\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\14#Q\0\"M\0#O\0$P\0#O\0%Q\14" + "#Q\0$P\0$P\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\2'T\14#Q\2" + "'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X/Jo\376" + "\377\374\376\377\374\320\331\341\10*X\12+Y\12+YK\312\363K\312\363\12" + "+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6" + "=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\17At\17" + "At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30" + "Ey\30Ey\30Ey\34H|\32G{\34H|\32G{\35I}\35I}\35I}\35I}\35I}\20L\177\20" + "L\177\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201\26O\202" + "\26O\202\26O\202\202\231\266\376\377\374\376\377\374\363\370\373\26O" + "\202\27P\203\27P\203K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2" + "\36E\5\40H\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5" + "\40H\2\36E\2\36E\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\0\"" + "M\4\37M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\0#O\0$P\0#O\0$P\0$P\14#Q\0" + "%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\14#Q" + "\2'T\2'T\2'T\2'T\217\236\261\221\244\274\217\236\261\221\244\274\217" + "\236\261\217\236\261\217\236\261\222\242\264\232\251\274\303\314\324" + "\376\377\374\376\377\374\376\377\374\364\371\374\10*X\12+Y\12+YK\312" + "\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\6=p\6=p\6=" + "p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15" + "@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30" + "Ey\30Ey\30Ey\30Ey\32G{\34H|\32G{\34H|\34H|\34H|\34H|\35I}\35I}\35I}\35" + "I}\20L\177\20L\177\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\330\341\351\26O\202\27P\203\27P" + "\203K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2\36E\2\36E\2\36E" + "\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2" + "\36E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40" + "H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\0\"M\4\37" + "M\0\"M\4\37M\0\"M\0\"M\14#Q\0#O\0$P\14#Q\0%Q\0%Q\0$P\14#Q\0%Q\0%Q\14" + "#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374|\217\247\10*X\12+Y\12+YK\312\363K\312\363\12+Y\12+Y\12+" + "Y\0\0\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=" + "p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\24Cw\23" + "Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\20" + "L\177\34H|\34H|\34H|\35I}\35I}\35I}\35I}\35I}\20L\177\35I}\20L\177\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\303\317\335\36S\207\26O\202\27P\203\27P\203K\312\363K\312\363\27" + "P\203\27P\203\27P\203\0\0\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5" + "\40H\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\0\"M\0\"M\14#Q\0\"M\0#O\0$P\0" + "$P\0$P\14#Q\0$P\0$P\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q" + "\2'T\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\367" + "\375\377\353\360\363\275\305\315e|\231\13,Z\10*X\12+Y\12+Y\12+YK\312" + "\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p" + "\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\17At\15@s\15@s\15@s\17At\17" + "At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30" + "Ey\30Ey\32G{\30Ey\32G{\34H|\34H|\34H|\34H|\35I}\35I}\35I}\20L\177\35" + "I}\20L\177\20L\177\35I}\22M\200\22M\200\24N\201\24N\201\24N\201\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\27P" + "\203\27P\203\27P\203K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2" + "\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\4\37M\0\"M" + "\0\"M\0\"M\0\"M\14#Q\0#O\0$P\0#O\0$P\0%Q\0$P\14#Q\0$P\14#Q\0%Q\14#Q\14" + "#Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\10*X\2'" + "T\10*X\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\12+Y\12+Y\12+YK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>" + "q\11>q\11>q\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\6=p\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15" + "@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24" + "Cw\30Ey\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\20L\177\34H|\32G{\34H|\34H|\35" + "I}\20L\177\35I}\34H|\20L\177\20L\177\20L\177\20L\177\20L\177\22M\200" + "\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\35I}\26O\202\26O\202" + "\26O\202\26O\202\26O\202\26O\202\26O\202\27P\203\27P\203\27P\203K\312" + "\363K\312\363\27P\203\27P\203\27P\203\0\0\2\36E\2\36E\2\36E\2\36E\2\36" + "E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5" + "\40H\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40" + "H\5\40H\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\0#O\0$P\0#O\0$" + "P\0$P\14#Q\0$P\0$P\0$P\0%Q\14#Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%" + "Q\2'T\14#Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12+Y\12+YK\312\363" + "K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\6=p\6=p\6=p\6=p\6=p" + "\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23" + "Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30" + "Ey\32G{\32G{\32G{\34H|\34H|\32G{\35I}\35I}\35I}\34H|\20L\177\35I}\20" + "L\177\20L\177\22M\200\22M\200\22M\200\22M\200\24N\201\24N\201\26O\202" + "\26O\202\33Q\205\177\237\272\331\342\352\366\373\376\357\364\367\303" + "\317\335_\200\247\26O\202\27P\203\27P\203\27P\203\27P\203K\312\363K\312" + "\363\27P\203\27P\203\27P\203\0\0\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E" + "\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\2" + "\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\0\"M\4\37" + "M\4\37M\0\"M\4\37M\4\37M\0\"M\14#Q\0\"M\0\"M\0\"M\0$P\0#O\0#O\0$P\0$" + "P\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\2'T\14#Q\2" + "'T\2'T\2'T\2'T\2'T\2'T\2'T\27""5]\204\230\257\333\340\343\370\372\367" + "\353\360\363\242\261\305#=g\15-[\270\303\321\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374o\206\243\12+Y\12+Y\12" + "+Y\12+YK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>" + "q\6=p\6=p\6=p\6=p\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\17At\17" + "At\23Bv\23Bv\23Bv\24Cw\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30" + "Ey\30Ey\30Ey\32G{\32G{\34H|\34H|\34H|\32G{\35I}\35I}\35I}\34H|\20L\177" + "\20L\177\20L\177\20L\177\24N\201\276\312\330\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\333\344\354\202\242\276\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\366\373\3763e\224\27P\203\27P\203\27P\203K\312\363K\312\363" + "\27P\203\27P\203\27P\203\0\0\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36" + "E\5\40H\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2" + "\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\0\"M\0\"M\4\37M\4\37M" + "\4\37M\0\"M\4\37M\0\"M\14#Q\0\"M\0#O\0$P\0$P\0$P\0$P\14#Q\0%Q\14#Q\0" + "%Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'" + "T\2'T\2'T\2'TRj\205\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\367\375\377\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\204\230\257\12+Y\12+Y\12+YK\312\363K\312\363\12+Y\12+Y\12+Y\0\0" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15" + "@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24" + "Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\20L\177\34H|\34H|\20L\177" + "\34H|\34H|\35I}\35I}\35I}\35I}\20L\177\20L\177\35I}\35I}\246\276\317" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\300\314\332\231" + "\264\313\313\327\345\376\377\374\376\377\374\376\377\374\310\324\342" + "\27P\203\27P\203\27P\203K\312\363K\312\363\27P\203\27P\203\27P\203\0" + "\0\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H" + "\2\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5" + "\40H\0\"M\5\40H\0\"M\4\37M\4\37M\0\"M\4\37M\0\"M\4\37M\0\"M\0\"M\14#" + "Q\0#O\0$P\0#O\0$P\0$P\0$P\14#Q\0%Q\14#Q\0%Q\0%Q\14#Q\14#Q\0%Q\0%Q\0%" + "Q\0%Q\0%Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\320\331\341\376" + "\377\374\376\377\374\365\372\375\247\262\300\242\261\305\370\372\367" + "\376\377\374\376\377\374\376\377\374\204\230\257\10*X\10*X\12+Y\242\261" + "\305\376\377\374\376\377\374\350\355\360\12+Y\12+Y\12+YK\312\363K\312" + "\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23" + "Bv\23Bv\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34" + "H|\32G{\34H|\34H|\34H|\35I}\20L\177\35I}\35I}\35I}\20L\177\35I}\22M\200" + "\22M\200\357\364\367\376\377\374\376\377\374y\231\265\24N\201\26O\202" + "r\227\267\376\377\374\376\377\374\376\377\374-`\217\26O\202\27P\203\27" + "P\203Tv\234\376\377\374\376\377\374\366\373\376\27P\203\27P\203\27P\203" + "K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2\36E\2\36E\5\40H\2\36" + "E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2" + "\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\4\37" + "M\4\37M\4\37M\0\"M\0\"M\14#Q\0\"M\0\"M\0\"M\0$P\0#O\0%Q\14#Q\0$P\14#" + "Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\0%Q\14#Q\2'T\2'T\2'T" + "\2'T\2'T\2'T\2'T\2'T\2'T\10*X\372\374\371\376\377\374\376\377\374#Gp" + "\10*X\10*X/Jo\376\377\374\376\377\374\376\377\374\13,Z\10*X\12+Y\12+" + "Y,Ep\376\377\374\376\377\374\376\377\374\12+Y\12+Y\12+YK\312\363K\312" + "\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23" + "Bv\24Cw\24Cw\24Cw\24Cw\30Ey\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\32G{\34H|\32" + "G{\20L\177\34H|\35I}\35I}\34H|\35I}\20L\177\20L\177\20L\177\35I}\22M" + "\200\22M\200\22M\200\376\377\374\376\377\374\376\377\3743e\224\26O\202" + "\26O\2023e\224\376\377\374\376\377\374\376\377\374\26O\202\27P\203\27" + "P\203\27P\2033e\224\376\377\374\376\377\374\376\377\374\27P\203\27P\203" + "\27P\203K\312\363K\312\363\27P\203\27P\203\27P\203\0\0\2\36E\5\40H\2" + "\36E\2\36E\2\36E\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36" + "E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\0\"M\4\37M\4\37M\4" + "\37M\4\37M\4\37M\0\"M\4\37M\0\"M\0\"M\0$P\0#O\0$P\0#O\14#Q\0%Q\14#Q\14" + "#Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\14#Q\0%Q\0%Q\0%Q\0%Q\0%Q\2'T\14#Q\2'T\2" + "'T\2'T\2'T\2'T\2'T\2'T\10*X\2'T\10*X\376\377\374\376\377\374\376\377" + "\374,Ep\10*X\10*X\"Fo\376\377\374\376\377\374\376\377\374\12+Y\12+Y\12" + "+Y\12+Y,Ep\376\377\374\376\377\374\376\377\374\12+Y\12+Y\12+YK\312\363" + "K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q" + "\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15" + "@s\15@s\15@s\15@s\15@s\15@s\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24" + "Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\32G{\32G{\34H|\34" + "H|\32G{\34H|\35I}\35I}\35I}\34H|\20L\177\20L\177\35I}\20L\177\20L\177" + "\22M\200\22M\200\22M\200\376\377\374\376\377\374\376\377\374\242\271" + "\313\225\260\307\225\260\307\242\271\313\376\377\374\376\377\374\376" + "\377\374\225\260\307\225\260\307\225\260\307\235\261\311\242\271\313" + "\376\377\374\376\377\374\376\377\374\27P\203\27P\203\27P\203K\312\363" + "K\312\363\35I}\27P\203\27P\203\0\0\5\40H\2\36E\2\36E\2\36E\2\36E\5\40" + "H\2\36E\5\40H\2\36E\2\36E\2\36E\5\40H\2\36E\2\36E\5\40H\5\40H\5\40H\5" + "\40H\5\40H\5\40H\5\40H\4\37M\0\"M\4\37M\4\37M\4\37M\0\"M\4\37M\0\"M\14" + "#Q\0\"M\0#O\0$P\0$P\0#O\14#Q\0$P\0%Q\14#Q\0%Q\14#Q\14#Q\0%Q\14#Q\14#" + "Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T" + "\10*X\2'T\10*X\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\12+Y\12+Y\12+YK\312\363K\312\363\12+Y\12+Y\12" + "+Y\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\17At\17" + "At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30" + "Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\32G{\34H|\32G{\34H|\35I}\35I}\35I}\35" + "I}\20L\177\35I}\20L\177\35I}\22M\200\22M\200\22M\200\24N\201\24N\201" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\27P\203\27P\203\27P\203K\312\363K\312\363\27P\203\27P\203" + "\27P\203\0\0\5\40H\2\36E\5\40H\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\2" + "\36E\2\36E\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\0\"" + "M\4\37M\0\"M\4\37M\4\37M\0\"M\0\"M\0#O\0\"M\0\"M\5\40H\0$P\0#O\0$P\0" + "%Q\0$P\14#Q\0$P\0%Q\0%Q\0%Q\14#Q\14#Q\14#Q\14#Q\14#Q\0%Q\0%Q\14#Q\0%" + "Q\2'T\2'T\2'T\2'T\14#Q\2'T\2'T\2'T\10*X\2'T\10*X\10*X\10*X\10*X\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\12+Y\12+Y\12+YK\312\363K\312\363\12+Y\12+Y\12+Y\0\0\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\17At\17At\17At\23Bv\23Bv\23Bv\24" + "Cw\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32" + "G{\34H|\32G{\34H|\34H|\32G{\35I}\35I}\35I}\35I}\20L\177\20L\177\20L\177" + "\20L\177\22M\200\22M\200\22M\200\24N\201\24N\201\24N\201\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\33Q\205\33Q\205\33Q\205K\312\363K\312\363\33Q\205\33Q\205\33Q\205\0" + "\0\2\36E\2\36E\5\40H\2\36E\5\40H\2\36E\5\40H\2\36E\2\36E\5\40H\5\40H" + "\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\4\37M\4\37M\4\37M\4\37M\0\"M\4\37" + "M\0\"M\0\"M\0\"M\14#Q\0\"M\0#O\0$P\0#O\0$P\0$P\0$P\0%Q\14#Q\14#Q\14#" + "Q\0%Q\0%Q\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\0%Q\14#Q\0%Q\2'T\14#Q\2'T\2'T\2'" + "T\2'T\2'T\2'T\10*X\10*X\2'T\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10" + "*X\10*X\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\0\0\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\17At\15" + "@s\15@s\15@s\17At\17At\17At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24" + "Cw\24Cw\24Cw\30Ey\30Ey\30Ey\30Ey\30Ey\30Ey\32G{\30Ey\34H|\20L\177\34" + "H|\34H|\35I}\35I}\35I}\34H|\35I}\20L\177\20L\177\20L\177\20L\177\35I" + "}\22M\200\22M\200\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26" + "O\202\26O\202\26O\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\27P\203\27P\203\27P\203\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\0\0\2\36E\2\36E" + "\5\40H\2\36E\2\36E\5\40H\2\36E\5\40H\5\40H\5\40H\5\40H\5\40H\5\40H\5" + "\40H\5\40H\0\"M\4\37M\0\"M\4\37M\4\37M\4\37M\4\37M\4\37M\0\"M\0#O\0\"" + "M\0\"M\0$P\0$P\0#O\0#O\14#Q\0%Q\14#Q\0$P\14#Q\0%Q\0%Q\0%Q\14#Q\0%Q\14" + "#Q\14#Q\0%Q\0%Q\14#Q\0%Q\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\2'T\10*X\10" + "*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\10*X\12+Y\12+Y\12" + "+Y\12+Y\12+Y\12+Y\12+Y\12+Y\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13,Z\13" + ",Z\13,Z\13,Z\13,Z\13,Z\0\0\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11>q\11" + ">q\11>q\11>q\11>q\11>q\11>q\15@s\15@s\15@s\15@s\15@s\15@s\15@s\17At\17" + "At\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\23Bv\24Cw\24Cw\24Cw\24Cw\24Cw\24Cw\30" + "Ey\24Cw\30Ey\30Ey\30Ey\30Ey\32G{\34H|\32G{\34H|\20L\177\35I}\35I}\20" + "L\177\35I}\34H|\20L\177\20L\177\20L\177\35I}\22M\200\22M\200\22M\200" + "\24N\201\24N\201\26O\202\26O\202\26O\202\26O\202\26O\202\26O\202\26O" + "\202\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203\27P\203" + "\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q" + "\205\33Q\205\33Q\205\33Q\205\33Q\205\33Q\205\0\0", +}; + + diff --git a/polymer/eduke32/source/testgame/rsrc/game.bmp b/polymer/eduke32/source/testgame/rsrc/game.bmp new file mode 100644 index 000000000..1b00a3ad0 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/game.bmp differ diff --git a/polymer/eduke32/source/testgame/rsrc/game.xcf b/polymer/eduke32/source/testgame/rsrc/game.xcf new file mode 100644 index 000000000..fadc54b2d Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/game.xcf differ diff --git a/polymer/eduke32/source/testgame/rsrc/game32_icon.c b/polymer/eduke32/source/testgame/rsrc/game32_icon.c new file mode 100644 index 000000000..85583508a --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/game32_icon.c @@ -0,0 +1,167 @@ +/* GIMP RGBA C-Source image dump (game_icon.c) */ + +#include "compat.h" +#include "sdlappicon.h" + +static uint8_t sdlappicon_pixels[] = { + "z_A\377\\J6\377\\J6\377\206t`\377\214zf\377\214zf\377\214zf\377\214zf\377" + "\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214" + "zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf" + "\377\214zf\377\214zf\377\214zf\377\214zf\377\214zf\377\206t`\377\\J6\377" + "\\J6\377z_A\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377fM3\377fM3\377t" + "tt\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377ttt\377fM3\377fM3\377\\J6\377\\J6\377fM3\377" + "fM3\377ttt\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377ttt\377fM3\377fM3\377\\J6\377\\J6\377" + "\40\40\40\377\40\40\40\377\\\\\\\377@@@\377\200\200\200\377ddd\377hhh\377" + "hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh" + "h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377ddd\377|||\377@@@\377\\\\" + "\\\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377" + "lll\377hhh\377\200\200\200\377hhh\377\200\200\200\377\200\200\200\377\200" + "\200\200\377lll\377jjj\377rrr\377lll\377lll\377vvv\377bbb\377lll\377\200" + "\200\200\377lll\377hhh\377ttt\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ppp\377xxx\377hhh\377lll\377\40\40\40\377\40\40\40\377\\J6\377\\" + "J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377h" + "hh\377\200\200\200\377\200\200\200\377\200\200\200\377lll\377jjj\377rrr\377" + "jjj\377jjj\377\200\200\200\377lll\377lll\377\200\200\200\377lll\377|||\377" + "lll\377\200\200\200\377\200\200\200\377\200\200\200\377ppp\377xxx\377\200" + "\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377" + "\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377vvv\377lll\377|||\377ppp\377ppp\377vvv\377" + "lll\377vvv\377lll\377vvv\377lll\377~~~\377\200\200\200\377\200\200\200\377" + "\200\200\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40" + "\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377" + "\200\200\200\377ddd\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377" + "hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh" + "h\377ddd\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6" + "\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200" + "\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\" + "J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200" + "\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\" + "J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200" + "\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\" + "J6\377\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200" + "\377ddd\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377" + "hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377ddd\377xx" + "x\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40" + "\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377ppp\377" + "xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377" + "\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377hhh\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\" + "J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377h" + "hh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377ppp\377xxx\377\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377" + "\\J6\377\40\40\40\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377" + "lll\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh" + "h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377xxx\377" + "\200\200\200\377ttt\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40" + "\377\40\40\40\377ttt\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377ttt\377\40\40\40\377\40\40" + "\40\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377fff\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377fff\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40" + "\40\40\377<<<\377fff\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377" + "ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377ttt\377tt" + "t\377ttt\377ttt\377ttt\377ttt\377fff\377<<<\377\40\40\40\377\40\40\40\377" + "\\J6\377\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\\J6\377\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377$$0\377>>>\377HHH\377DDD\377DDD\377" + "FFF\377LLL\377HHH\377HHH\377JJJ\377LLL\377LLL\377LLL\377LLL\377JJJ\377@@" + "@\377444\377444\377444\377444\377,,,\377\40\40\40\377\40\40\40\377\\J6\377" + "\\J6\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377<<<\377rrr\377ppp\377VVV\377PPP\377RRR\377jjj\377" + "xxx\377vvv\377ttt\377zzz\377|||\377xxx\377xxx\377zzz\377rrr\377PPP\377HH" + "H\377HHH\377HHH\377FFF\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377DDD\377lll\377lll\377000\377\40\40\40\377\40\40\40\377TTT\377" + "xxx\377ttt\377ttt\377xxx\377|||\377\200\200\200\377\200\200\200\377zzz\377" + "ttt\377PPP\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\\J6" + "\377\\J6\377(((\377```\377hhh\377ttt\377NNN\377VVV\377\40\40\40\377DDD\377" + "hhh\377lll\377000\377\40\40\40\377\40\40\40\377TTT\377vvv\377vvv\377vvv\377" + "|||\377xxx\377|||\377|||\377~~~\377vvv\377PPP\377HHH\377HHH\377HHH\377HH" + "H\377\40\40\40\377\40\40\40\377\\J6\377\\J6\377```\377\250\250\250\377~~" + "~\377\250\250\250\377lll\377|||\377\40\40\40\377DDD\377jjj\377lll\377000" + "\377\40\40\40\377\40\40\40\377TTT\377ttt\377xxx\377xxx\377~~~\377|||\377" + "xxx\377xxx\377\202\202\202\377|||\377PPP\377HHH\377HHH\377HHH\377HHH\377" + "\40\40\40\377\40\40\40\377\\J6\377\\J6\377|||\377\200\200\200\377@@@\377" + "\250\250\250\377\240\240\240\377|||\377\40\40\40\377FFF\377vvv\377rrr\377" + "000\377\40\40\40\377\40\40\40\377TTT\377vvv\377zzz\377xxx\377~~~\377|||\377" + "xxx\377|||\377\214\214\214\377~~~\377PPP\377HHH\377HHH\377HHH\377HHH\377" + "\"\"\"\377:0%\377\\J6\377\\J6\377```\377\250\250\250\377~~~\377\250\250\250" + "\377lll\377|||\377\40\40\40\377HHH\377xxx\377rrr\377000\377\40\40\40\377" + "\40\40\40\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377\210" + "\210\210\377\206\206\206\377~~~\377zzz\377\204\204\204\377ttt\377PPP\377" + "HHH\377HHH\377HHH\377HHH\3770+%\377T@*\377hQ8\377tX:\3770,(\377```\377hh" + "h\377ttt\377NNN\377VVV\377\40\40\40\377HHH\377xxx\377ppp\377000\377\40\40" + "\40\377\40\40\40\377XXX\377|||\377zzz\377xxx\377\202\202\202\377\200\200" + "\200\377\200\200\200\377|||\377\202\202\202\377ttt\377PPP\377HHH\377HHH\377" + "HHH\377HHH\377$$$\377L9&\377\\J6\377\230tL\377fM3\377($\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377($\40\377`VL\377ttt\377ppp\377XXX" + "\377XXX\377\\\\\\\377ttt\377|||\377ppp\377xxx\377|||\377xxx\377|||\377\206" + "\206\206\377\202\202\202\377xxx\377PPP\377HHH\377HHH\377HHH\377FFF\377\40" + "\40\40\377\40\40\40\377\\J6\377\230tL\377\230tL\377tX:\377\\J6\377\\J6\377" + "\\J6\377\\J6\377tX:\377\216sU\377\200nZ\377\204r^\377\204r^\377\212xd\377" + "\216|h\377\222\200l\377\214zf\377\210vb\377\210vb\377\210vb\377\210vb\377" + "\212xd\377\220~j\377\214zf\377\210vb\377tbN\377p^J\377p^J\377p^J\377jXD\377" + "\\J6\377\\J6\377z_A\377", +}; + +struct sdlappicon sdlappicon = { + 32, 32, + sdlappicon_pixels +}; diff --git a/polymer/eduke32/source/testgame/rsrc/game_banner.c b/polymer/eduke32/source/testgame/rsrc/game_banner.c new file mode 100644 index 000000000..8ecff2fca --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/game_banner.c @@ -0,0 +1,2691 @@ +#include + + + + + + + +/* GdkPixbuf RGB C-Source image dump */ + +const GdkPixdata startbanner_pixdata = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 76160, /* header length + pixel_data length */ + 0x1010001, /* pixdata_type */ + 272, /* rowstride */ + 90, /* width */ + 280, /* height */ + /* pixel_data: */ + "\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25" + "0\10\30""1\1\25""0\10\30""1\1\30""1\1\23""3\3\27""1\12\23""3\3\23""3" + "\3\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3" + "\30""1\1\23""3\3\27""1\12\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\32" + "8\2\32""8\2\27""8\11\34:\5\34:\5\27""8\11\34:\5\27=\7\27=\7\27=\7\27" + "=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\36B\5\32\77\12\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\36B\5\33A\14\33A\14\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23""2" + "Z\15.W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0" + "Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""2Z\15-\\\16-\\\16""0Y\24-\\\16-\\\16""3[\16/^\20""3[\16/^\20/^" + "\20/^\20""3[\16""0_\21""3[\16""0_\21""0_\21""0_\21""2a\23""2a\23""2a" + "\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7" + "e\17""7e\17""7e\17""7e\17""9g\21""7f\30""4j\23""4j\23""9g\21""4j\23""5" + "k\24""4j\23""9g\21""5k\24""9g\21""5k\24""4j\23""5k\24""9g\21""4j\23""5" + "k\24""5k\24""5k\24""6l\25""9g\21""5k\24""5k\24""5k\24""5k\24""6l\25""9" + "g\21\0\0\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25" + "0\10\30""1\1\25""0\10\25""0\10\23""3\3\23""3\3\27""1\12\23""3\3\27""1" + "\12\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\30" + "1\1\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25" + "5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\32" + "8\2\32""8\2\27""8\11\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\27=\7" + "\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36" + "B\5\33A\14\36B\5\33A\14\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23." + "W\23""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""2" + "Z\15""2Z\15""3[\16-\\\16""3[\16""0Y\24/^\20/^\20""3[\16/^\20/^\20/^\20" + "3[\16""0_\21""0_\21""3[\16""0_\21""3[\16""2a\23""2a\23""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5d\26""5d\26""5d\26" + "7e\17""5d\26""9g\21""9g\21""9g\21""4j\23""4j\23""4j\23""9g\21""4j\23" + "9g\21""4j\23""9g\21""5k\24""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24" + "9g\21""6l\25""9g\21""5k\24""5k\24\202\320q\202\320q9g\21""6l\25""9g\21" + "\0\0\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0" + "\10\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3" + "\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\27" + "1\12\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\31""9\13\32" + "8\2\27""8\11\34:\5\31""9\13\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\35;\6" + "\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5" + "\202\320q\202\320q\33A\14\36B\5\33A\14\0\0.W\23.W\23.W\23""2Z\15.W\23" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24" + "2Z\15""2Z\15""2Z\15""0Y\24-\\\16-\\\16""0Y\24/^\20/^\20/^\20/^\20""3" + "[\16/^\20/^\20""3[\16""3[\16""0_\21""3[\16""0_\21""2a\23""2a\23""2a\23" + "2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17" + "5d\26""5d\26""7e\17""5d\26""9g\21""7f\30""4j\23""4j\23""4j\23""9g\21" + "4j\23""9g\21""9g\21""4j\23""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25" + "9g\21""5k\24""9g\21""5k\24""6l\25""9g\21""6l\25""5k\24\202\320q\202\320" + "q5k\24""6l\25""5k\24\0\0\30""1\1\25""0\10\30""1\1\23""3\3\27""1\12\23" + "3\3\23""3\3\27""1\12\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3" + "\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\30""1\1\23" + "3\3\30""1\1\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\32""8\2\32""8\2\31""9" + "\13\34:\5\27""8\11\31""9\13\34:\5\31""9\13\27=\7\27=\7\27=\7\30>\10\30" + ">\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36" + "B\5\33A\14\202\320q\202\320q\36B\5\33A\14\36B\5\0\0.W\23""0Y\24""2Z\15" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15" + "0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24-\\\16-\\\16""3[\16-\\\16""3[\16/^\20/^\20""3[\16" + "/^\20/^\20""3[\16""3[\16""0_\21""0_\21""3[\16""0_\21""0_\21""2a\23""2" + "a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5" + "d\26""7e\17""7e\17""7e\17""9g\21""7f\30""9g\21""4j\23""4j\23""4j\23""9" + "g\21""4j\23""9g\21""4j\23""4j\23""4j\23""9g\21""5k\24""9g\21""9g\21""5" + "k\24""9g\21""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25""5k\24""5" + "k\24\202\320q\202\320q9g\21""6l\25""6l\25\0\0\27""1\12\30""1\1\23""3" + "\3\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\27""1\12\23" + "3\3\23""3\3\30""1\1\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12" + "\23""3\3\27""1\12\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25" + "5\6\25""5\6\27""7\10\27""7\10\25""5\6\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32" + "8\2\32""8\2\32""8\2\34:\5\27""8\11\34:\5\34:\5\27=\7\27=\7\27=\7\27=" + "\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33" + "A\14\36B\5\33A\14\36B\5\202\320q\202\320q\33A\14\33A\14\36B\5\0\0""0" + "Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0" + "Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24-\\\16-\\\16-\\\16-\\\16""3[\16""3[\16" + "/^\20/^\20/^\20/^\20""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21" + "2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""7e\17""5d\26" + "5d\26""7e\17""5d\26""5d\26""7e\17""9g\21""9g\21""7f\30""5k\24""9g\21" + "9g\21""9g\21""4j\23""9g\21""4j\23""9g\21""4j\23""9g\21""5k\24""9g\21" + "4j\23""9g\21""6l\25""5k\24""6l\25""5k\24""6l\25""5k\24""9g\21""5k\24" + "9g\21""6l\25""5k\24\202\320q\202\320q5k\24""9g\21""5k\24\0\0\23""3\3" + "\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23" + "3\3\27""1\12\30""1\1\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\30""1\1" + "\23""3\3\27""1\12\23""3\3\24""4\5\24""4\5\30""1\1\25""5\6\25""5\6\25" + "5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32" + "8\2\31""9\13\32""8\2\31""9\13\34:\5\34:\5\34:\5\34:\5\27=\7\27=\7\27" + "=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\36" + "B\5\33A\14\33A\14\36B\5\33A\14\36B\5\202\320q\202\320q\36B\5\33A\14\36" + "B\5\0\0""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24""0Y\24""2Z\15""0Y\24-\\\16-\\\16-\\\16-\\\16""0Y\24/^\20""3[\16" + "/^\20/^\20""3[\16""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0" + "_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5" + "d\26""7e\17""5d\26""5d\26""5d\26""7e\17""7f\30""9g\21""7f\30""9g\21""5" + "k\24""9g\21""4j\23""9g\21""4j\23""4j\23""9g\21""4j\23""4j\23""5k\24""6" + "l\25""9g\21""5k\24""5k\24""9g\21""6l\25""5k\24""9g\21""9g\21""5k\24""9" + "g\21""6l\25""9g\21""5k\24""5k\24\202\320q\202\320q5k\24""9g\21""5k\24" + "\0\0\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3" + "\27""1\12\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\27" + "1\12\23""3\3\30""1\1\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6" + "\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9" + "\13\32""8\2\31""9\13\32""8\2\27""8\11\34:\5\27""8\11\34:\5\34:\5\27=" + "\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36" + "B\5\32\77\12\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33" + "A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\202\320q\202\320" + "q\36B\5\33A\14\36B\5\0\0""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2" + "Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0" + "Y\24""0Y\24""2Z\15""2Z\15""0Y\24""3[\16-\\\16-\\\16-\\\16""3[\16-\\\16" + "3[\16/^\20""3[\16/^\20/^\20/^\20""0_\21""0_\21""3[\16""0_\21""3[\16""0" + "_\21""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7" + "e\17""5d\26""7e\17""7e\17""7e\17""7e\17""7e\17""7f\30""9g\21""4j\23""9" + "g\21""5k\24""9g\21""5k\24""4j\23""9g\21""5k\24""4j\23""9g\21""4j\23""9" + "g\21""6l\25""9g\21""5k\24""9g\21""6l\25""5k\24""9g\21""5k\24""5k\24""5" + "k\24""9g\21""5k\24""6l\25""9g\21""5k\24""9g\21\202\320q\202\320q5k\24" + "5k\24""9g\21\0\0\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\23" + "3\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3" + "\23""3\3\27""1\12\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25" + "5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31" + "9\13\32""8\2\31""9\13\32""8\2\31""9\13\34:\5\27""8\11\34:\5\27=\7\27" + "=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5" + "\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14" + "\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\202\320q" + "\202\320q\33A\14\33A\14\36B\5\0\0""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24" + "2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15-\\\16-\\\16-\\\16""0Y\24/^\20" + "3[\16/^\20""3[\16/^\20""3[\16""3[\16""0_\21""0_\21""0_\21""0_\21""0_" + "\21""3[\16""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3" + "b\24""7e\17""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9g\21""9g\21""5" + "k\24""9g\21""9g\21""4j\23""5k\24""4j\23""5k\24""9g\21""9g\21""4j\23""9" + "g\21""6l\25""5k\24""6l\25""6l\25""9g\21""6l\25""9g\21""6l\25""9g\21""6" + "l\25""9g\21""5k\24""9g\21""5k\24""6l\25""5k\24""9g\21""5k\24\202\320" + "q\202\320q9g\21""5k\24""5k\24\0\0\27""1\12\30""1\1\23""3\3\23""3\3\23" + "3\3\27""1\12\23""3\3\27""1\12\30""1\1\23""3\3\23""3\3\27""1\12\23""3" + "\3\23""3\3\30""1\1\24""4\5\24""4\5\24""4\5\24""4\5\24""4\5\30""1\1\25" + "5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\31""9\13\32""8\2\31""9\13\32""8\2\27""8\11\34:\5\34:\5\27""8\11" + "\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A" + "\14\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33" + "A\14\33A\14\202\320q\202\320q\33A\14\36B\5\33A\14\0\0""0Y\24""0Y\24""0" + "Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0" + "Y\24""2Z\15""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15-\\\16-\\\16""3[\16-\\" + "\16/^\20""3[\16/^\20""3[\16/^\20""3[\16/^\20""0_\21""3[\16""0_\21""0" + "_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3" + "b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""9g\21""9" + "g\21""4j\23""5k\24""9g\21""5k\24""9g\21""4j\23""9g\21""9g\21""5k\24""9" + "g\21""5k\24""9g\21""5k\24""9g\21""6l\25""9g\21""6l\25""5k\24""6l\25""9" + "g\21""9g\21""9g\21""6l\25""9g\21""9g\21""9g\21""9g\21""5k\24""9g\21""5" + "k\24""9g\21\202\320q\202\320q9g\21""5k\24""9g\21\0\0\27""1\12\23""3\3" + "\27""1\12\23""3\3\30""1\1\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\23" + "3\3\23""3\3\27""1\12\24""4\5\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6" + "\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\31""9\13\32""8\2\31""9\13\32""8\2\31""9\13\34:\5\34:\5\34" + ":\5\31""9\13\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77" + "\12\36B\5\32\77\12\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33" + "A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33" + "A\14\33A\14\36B\5\33A\14\202\320q\202\320q\33A\14\36B\5\33A\14\0\0""0" + "Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2" + "Z\15""0Y\24""2Z\15""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15-\\\16""3[\16-\\" + "\16/^\20/^\20/^\20""3[\16/^\20""3[\16/^\20""3[\16""0_\21""0_\21""0_\21" + "0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24" + "3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""7e\17""9g\21" + "4j\23""4j\23""4j\23""9g\21""5k\24""9g\21""5k\24""4j\23""4j\23""5k\24" + "4j\23""5k\24""9g\21""5k\24""9g\21""5k\24""6l\25""9g\21""6l\25""9g\21" + "5k\24""9g\21""6l\25""9g\21""5k\24""5k\24""9g\21""5k\24""5k\24""9g\21" + "9g\21""5k\24""6l\25\202\320q\202\320q5k\24""6l\25""9g\21\0\0\23""3\3" + "\23""3\3\27""1\12\23""3\3\30""1\1\30""1\1\27""1\12\23""3\3\23""3\3\30" + "1\1\23""3\3\24""4\5\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32" + "8\2\31""9\13\31""9\13\31""9\13\32""8\2\34:\5\34:\5\31""9\13\34:\5\34" + ":\5\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5\32" + "\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\36" + "B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\33A\14\33A" + "\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14" + "\36B\5\33A\14\202\320q\202\320q\33A\14\36B\5\33A\14\0\0""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24" + "2Z\15""0Y\24""0Y\24-\\\16""3[\16-\\\16""0Y\24/^\20""3[\16/^\20/^\20/" + "^\20/^\20""3[\16/^\20/^\20""0_\21""0_\21""3[\16""0_\21""0_\21""0_\21" + "2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26" + "5d\26""7e\17""7e\17""7e\17""5d\26""9g\21""9g\21""9g\21""4j\23""5k\24" + "9g\21""5k\24""5k\24""9g\21""5k\24""9g\21""4j\23""6l\25""5k\24""9g\21" + "5k\24""9g\21""6l\25""5k\24""5k\24""9g\21""5k\24""9g\21""5k\24""6l\25" + "9g\21""6l\25""9g\21""6l\25""6l\25""9g\21""5k\24""6l\25""9g\21""6l\25" + "6l\25\202\320q\202\320q9g\21""6l\25""5k\24\0\0\23""3\3\30""1\1\27""1" + "\12\23""3\3\30""1\1\27""1\12\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5" + "\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31" + "9\13\31""9\13\34:\5\27""8\11\34:\5\27""8\11\34:\5\27=\7\27=\7\27=\7\27" + "=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5" + "\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36" + "B\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14" + "\36B\5\36B\5\202\320q\202\320q\33A\14\33A\14\36B\5\0\0""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""2Z\15""0Y\24" + "-\\\16""3[\16-\\\16-\\\16-\\\16-\\\16""3[\16""3[\16/^\20""3[\16/^\20" + "/^\20""3[\16/^\20""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""2" + "a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5" + "d\26""7e\17""7e\17""5d\26""7e\17""9g\21""7f\30""4j\23""9g\21""4j\23""4" + "j\23""5k\24""9g\21""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24""9g\21""5" + "k\24""6l\25""9g\21""6l\25""5k\24""9g\21""5k\24""5k\24""9g\21""6l\25""6" + "l\25""5k\24""5k\24""6l\25@m\30""6l\25""6l\25""6l\25""6l\25@m\30""6l\25" + "6l\25\202\320q\202\320q9g\21""9g\21""5k\24\0\0\23""3\3\23""3\3\27""1" + "\12\23""3\3\30""1\1\24""4\5\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25" + "5\6\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\31""9\13\31""9\13\32" + "8\2\34:\5\34:\5\31""9\13\34:\5\34:\5\27=\7\27=\7\27=\7\30>\10\30>\10" + "\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14\33A\14\33A\14" + "\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33" + "A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\33A\14\33A\14\36B\5\36B\5" + "\33A\14\202\320q\202\320q\33A\14\33A\14\36B\5\0\0""0Y\24""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15-\\\16-\\\16""3[\16""3[\16""3" + "[\16-\\\16-\\\16/^\20/^\20""3[\16/^\20""3[\16/^\20""3[\16/^\20/^\20/" + "^\20""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5d\26""7e\17""7e\17""7" + "e\17""9g\21""7f\30""4j\23""9g\21""4j\23""9g\21""9g\21""4j\23""4j\23""9" + "g\21""4j\23""9g\21""9g\21""6l\25""5k\24""5k\24""5k\24""9g\21""6l\25""9" + "g\21""5k\24""5k\24""5k\24""5k\24""5k\24""9g\21""6l\25""9g\21""6l\25""9" + "g\21""6l\25""6l\25@m\30""6l\25""6l\25""6l\25""6l\25@m\30""6l\25\202\320" + "q\202\320q9g\21""5k\24""5k\24\0\0\23""3\3\24""4\5\24""4\5\24""4\5\24" + "4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\32""8\2\31""9\13\31""9\13\32""8\2\31""9\13\34:\5\34:\5" + "\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\33" + "A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\36B\5" + "\33A\14\36B\5\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\202\320q" + "\202\320q\36B\5\33A\14\36B\5\0\0""0Y\24""2Z\15""2Z\15""0Y\24""2Z\15""2" + "Z\15""0Y\24""0Y\24-\\\16""3[\16-\\\16""3[\16""0Y\24-\\\16""3[\16/^\20" + "/^\20/^\20""3[\16/^\20/^\20/^\20""3[\16""0_\21""3[\16""0_\21""0_\21""0" + "_\21""3[\16""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3" + "b\24""3b\24""5d\26""7e\17""5d\26""5d\26""5d\26""7e\17""9g\21""9g\21""5" + "k\24""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24""9g\21""4j\23""9g\21""6" + "l\25""9g\21""5k\24""9g\21""5k\24""6l\25""6l\25""9g\21""9g\21""6l\25""9" + "g\21""5k\24""9g\21""5k\24""6l\25""6l\25""6l\25@m\30@m\30""6l\25@m\30" + "6l\25""6l\25""6l\25""6l\25""6l\25""6l\25""6l\25\202\320q\202\320q@m\30" + "6l\25""5k\24\0\0\24""4\5\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5" + "\6\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\31" + "9\13\32""8\2\31""9\13\32""8\2\34:\5\34:\5\34:\5\31""9\13\27=\7\27=\7" + "\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\33A\14\33A" + "\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14" + "\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14" + "\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\202\320q\202\320q\36B\5\36B" + "\5\33A\14\0\0""2Z\15""0Y\24""2Z\15""0Y\24-\\\16""3[\16-\\\16-\\\16""3" + "[\16-\\\16""0Y\24-\\\16/^\20/^\20/^\20""3[\16/^\20""3[\16/^\20""3[\16" + "/^\20""0_\21""0_\21""3[\16""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23" + "2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17" + "5d\26""5d\26""7e\17""7e\17""7f\30""9g\21""4j\23""9g\21""5k\24""9g\21" + "5k\24""4j\23""4j\23""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21""5k\24" + "9g\21""5k\24""6l\25""9g\21""6l\25""6l\25""9g\21""9g\21""6l\25@m\30""6" + "l\25""6l\25""6l\25@m\30""6l\25@m\30@m\30""6l\25""6l\25""6l\25""6l\25" + "6l\25@m\30""6l\25""6l\25\202\320q\202\320q6l\25""6l\25""9g\21\0\0\24" + "4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\32""8\2\31""9\13\31""9\13\31""9\13\32""8\2\34:\5\34:\5" + "\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32" + "\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33" + "A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\36B" + "\5\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\36" + "B\5\33A\14\202\320q\202\320q\33A\14\36B\5\33A\14\0\0""3[\16""0Y\24""3" + "[\16-\\\16-\\\16-\\\16-\\\16-\\\16""0Y\24-\\\16/^\20/^\20/^\20""3[\16" + "/^\20/^\20""3[\16/^\20/^\20""0_\21""0_\21""0_\21""0_\21""0_\21""3[\16" + "0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24" + "3b\24""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9g\21""7f\30" + "4j\23""5k\24""9g\21""4j\23""9g\21""5k\24""4j\23""9g\21""4j\23""9g\21" + "5k\24""6l\25""5k\24""9g\21""6l\25""9g\21""5k\24""6l\25""9g\21""5k\24" + "6l\25""9g\21@m\30@m\30""6l\25""6l\25""6l\25@m\30""6l\25""6l\25""6l\25" + "@m\30""6l\25""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25\202\320q\202" + "\320q6l\25""5k\24""9g\21\0\0\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6" + "\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31" + "9\13\32""8\2\31""9\13\34:\5\34:\5\27""8\11\34:\5\27=\7\27=\7\27=\7\27" + "=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\33A\14\33A" + "\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5" + "\36B\5\36B\5\36B\5\36B\5\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\36B" + "\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\202\320q\202\320" + "q\33A\14\33A\14\33A\14\0\0""0Y\24-\\\16""3[\16-\\\16-\\\16-\\\16-\\\16" + "/^\20""3[\16/^\20""3[\16/^\20""3[\16/^\20/^\20""0Y\24/^\20/^\20""0_\21" + "0_\21""0_\21""0_\21""3[\16""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26" + "7e\17""5d\26""9g\21""9g\21""9g\21""9g\21""5k\24""5k\24""9g\21""5k\24" + "9g\21""4j\23""9g\21""5k\24""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21" + "6l\25""9g\21""9g\21""6l\25""6l\25""9g\21""6l\25""6l\25@m\30""6l\25""6" + "l\25@m\30""6l\25@m\30""6l\25""6l\25""6l\25""6l\25""6l\25""6l\25@m\30" + "6l\25""6l\25""6l\25@m\30""6l\25\202\320q\202\320q6l\25""9g\21""5k\24" + "\0\0\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\31""9\13\32""8\2\32""8\2\31""9\13\32""8\2\27""8\11\34:" + "\5\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14" + "\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\33" + "A\14\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5" + "\36B\5\36B\5\33A\14\36B\5\33A\14\202\320q\202\320q\36B\5\33A\14\33A\14" + "\0\0-\\\16-\\\16""3[\16-\\\16""3[\16/^\20/^\20""3[\16/^\20""3[\16/^\20" + "/^\20""3[\16/^\20/^\20""3[\16""0_\21""0_\21""0_\21""0_\21""3[\16""0_" + "\21""0_\21""3[\16""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3" + "b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26""7e\17""7f\30""7f\30""9" + "g\21""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""4j\23""9g\21""9g\21""6" + "l\25""9g\21""9g\21""6l\25""5k\24""9g\21""9g\21""9g\21""5k\24""9g\21""5" + "k\24""6l\25@m\30""6l\25@m\30""6l\25""6l\25""6l\25""6l\25@m\30""6l\25" + "@m\30""6l\25@m\30""6l\25@m\30""6l\25""6l\25@m\30""6l\25@m\30""6l\25""6" + "l\25""6l\25\202\320q\202\320q5k\24""9g\21""5k\24\0\0\25""5\6\25""5\6" + "\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\32" + "8\2\31""9\13\27""8\11\31""9\13\34:\5\34:\5\31""9\13\34:\5\27=\7\27=\7" + "\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\36B\5\33" + "A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A" + "\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36" + "B\5\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36" + "B\5\202\320q\202\320q\36B\5\33A\14\33A\14\0\0""3[\16-\\\16-\\\16""3[" + "\16/^\20/^\20/^\20/^\20/^\20/^\20""3[\16/^\20""3[\16/^\20""0_\21""0_" + "\21""0_\21""0_\21""0_\21""3[\16""0_\21""0_\21""0_\21""2a\23""2a\23""2" + "a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7" + "e\17""5d\26""7e\17""7e\17""9g\21""4j\23""9g\21""4j\23""4j\23""5k\24""4" + "j\23""9g\21""5k\24""9g\21""4j\23""9g\21""6l\25""5k\24""5k\24""5k\24""6" + "l\25""9g\21""6l\25""9g\21""5k\24""9g\21""6l\25""6l\25""6l\25""6l\25@" + "m\30""6l\25@m\30""6l\25@m\30""6l\25""6l\25@m\30""6l\25""6l\25""6l\25" + "6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25""6l\25@m\30\202\320q\202" + "\320q5k\24""5k\24""5k\24\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\32""8\2\31""9\13\32""8\2\32""8\2\32""8\2\31""9\13\34:\5" + "\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32" + "\77\12\32\77\12\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14" + "\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\36" + "B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\202\320q\202\320q\36B\5" + "\33A\14\36B\5\0\0/^\20/^\20""3[\16/^\20/^\20""3[\16/^\20/^\20/^\20/^" + "\20/^\20/^\20""3[\16""0_\21""0_\21""3[\16""0_\21""3[\16""0_\21""3[\16" + "0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24" + "3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17""7f\30""9g\21""9g\21" + "9g\21""5k\24""9g\21""4j\23""4j\23""9g\21""9g\21""5k\24""9g\21""6l\25" + "9g\21""9g\21""5k\24""6l\25""9g\21""6l\25""9g\21""6l\25""9g\21@m\30""6" + "l\25@m\30""6l\25""6l\25""6l\25@m\30@m\30""6l\25""6l\25""6l\25@m\30""6" + "l\25@m\30""6l\25""6l\25@m\30""6l\25""6l\25""6l\25@m\30@m\30""6l\25@m" + "\30""6l\25""5k\24\202\320q\202\320q5k\24""9g\21""5k\24\0\0\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\31""9\13\32""8\2\34:" + "\5\31""9\13\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36" + "B\5\32\77\12\32\77\12\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5" + "\33A\14\33A\14\33A\14\36B\5\36B\5\36B\5\33A\14\36B\5\36B\5\33A\14\36" + "B\5\36B\5\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\36" + "B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\33A\14\36B\5\202\320" + "q\202\320q\36B\5\33A\14\33A\14\0\0/^\20/^\20""3[\16""3[\16/^\20""3[\16" + "/^\20/^\20/^\20/^\20""0Y\24/^\20""0_\21""0_\21""0_\21""0_\21""0_\21""3" + "[\16""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3" + "b\24""3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9" + "g\21""9g\21""9g\21""4j\23""4j\23""9g\21""4j\23""4j\23""9g\21""5k\24""5" + "k\24""9g\21""6l\25""9g\21""6l\25""9g\21""5k\24""9g\21""9g\21""5k\24""6" + "l\25""6l\25""6l\25@m\30""6l\25@m\30""6l\25@m\30@m\30""6l\25""6l\25@m" + "\30@m\30""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25""6l\25" + "@m\30""6l\25""5k\24""9g\21""5k\24\202\320q\202\320q5k\24""9g\21""5k\24" + "\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\32""8\2\32""8\2\32""8\2\32""8\2\32""8" + "\2\34:\5\31""9\13\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\30>\10\30>\10\30" + ">\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5" + "\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14" + "\36B\5\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14" + "\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\36B" + "\5\33A\14\202\320q\202\320q\33A\14\33A\14\33A\14\0\0/^\20/^\20""3[\16" + "/^\20""3[\16/^\20/^\20""3[\16/^\20""3[\16""0_\21""0_\21""0_\21""3[\16" + "0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17" + "5d\26""9g\21""9g\21""5k\24""4j\23""9g\21""5k\24""9g\21""5k\24""9g\21" + "4j\23""9g\21""6l\25""5k\24""5k\24""5k\24""6l\25""5k\24""5k\24""9g\21" + "9g\21""9g\21""9g\21""6l\25""6l\25@m\30@m\30""6l\25""6l\25@m\30""6l\25" + "6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25""6" + "l\25@m\30""6l\25@m\30@m\30""6l\25""6l\25""5k\24""9g\21\202\320q\202\320" + "q9g\21""5k\24""9g\21\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\31" + "9\13\32""8\2\32""8\2\34:\5\34:\5\34:\5\34:\5\27""8\11\27=\7\27=\7\27" + "=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\33A\14\36B\5\33A\14" + "\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36" + "B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\36" + "B\5\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36" + "B\5\33A\14\33A\14\36B\5\33A\14\202\320q\202\320q\33A\14\36B\5\33A\14" + "\0\0/^\20/^\20/^\20/^\20/^\20""3[\16/^\20""3[\16""0_\21""0_\21""0_\21" + "0_\21""3[\16""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7e\17" + "5d\26""5d\26""7e\17""9g\21""5k\24""4j\23""4j\23""5k\24""9g\21""4j\23" + "5k\24""9g\21""9g\21""6l\25""9g\21""6l\25""6l\25""9g\21""5k\24""9g\21" + "6l\25""5k\24""9g\21""5k\24@m\30""6l\25@m\30""6l\25""6l\25""6l\25""6l" + "\25@m\30""6l\25""6l\25""6l\25@m\30@m\30""6l\25""6l\25@m\30@m\30""6l\25" + "6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25@m\30""5k\24""9g\21""6l\25" + "5k\24\202\320q\202\320q6l\25""6l\25""9g\21\0\0\27""7\10\27""7\10\27""7" + "\10\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31" + "9\13\32""8\2\31""9\13\34:\5\27""8\11\34:\5\31""9\13\34:\5\27=\7\27=\7" + "\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14" + "\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\33" + "A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5" + "\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\36B" + "\5\36B\5\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\202\320q\202\320q\33" + "A\14\33A\14\36B\5\0\0/^\20/^\20""3[\16/^\20/^\20/^\20""0_\21""0_\21""0" + "_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2" + "a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5" + "d\26""7e\17""5d\26""7e\17""5d\26""9g\21""9g\21""5k\24""9g\21""5k\24""4" + "j\23""9g\21""4j\23""4j\23""5k\24""9g\21""5k\24""9g\21""5k\24""6l\25""6" + "l\25""5k\24""6l\25""5k\24""9g\21""5k\24@m\30""6l\25""6l\25""6l\25""6" + "l\25@m\30""6l\25""6l\25@m\30""6l\25""6l\25@m\30""6l\25@m\30""6l\25@m" + "\30""6l\25@m\30@m\30""6l\25""6l\25""6l\25""6l\25@m\30""6l\25""9g\21""6" + "l\25""9g\21""5k\24""9g\21""5k\24\202\320q\202\320q5k\24""9g\21""4j\23" + "\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32" + "8\2\31""9\13\31""9\13\32""8\2\31""9\13\34:\5\34:\5\31""9\13\31""9\13" + "\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36" + "B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5" + "\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B" + "\5\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A" + "\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14" + "\202\320q\202\320q\36B\5\32\77\12\32\77\12\0\0/^\20/^\20/^\20/^\20""0" + "_\21""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""2" + "a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3" + "b\24""7e\17""5d\26""5d\26""7e\17""5d\26""7e\17""7f\30""9g\21""4j\23""9" + "g\21""4j\23""4j\23""4j\23""9g\21""4j\23""5k\24""5k\24""5k\24""9g\21""9" + "g\21""5k\24""6l\25""9g\21""6l\25""9g\21""5k\24""9g\21@m\30""6l\25""6" + "l\25@m\30""6l\25""6l\25@m\30@m\30""6l\25""6l\25@m\30@m\30@m\30""6l\25" + "6l\25""6l\25@m\30@m\30""6l\25""6l\25@m\30""6l\25@m\30""6l\25""6l\25""6" + "l\25""9g\21""6l\25""9g\21""5k\24""9g\21""9g\21""9g\21\202\320q\202\320" + "q5k\24""9g\21""5k\24\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\32""8\2\32""8\2\32""8\2\32""8\2\31""9\13\31""9\13\31""9\13\34:\5" + "\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77" + "\12\36B\5\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14" + "\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\36B\5\36B\5\36B" + "\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14\33A\14\36B\5\36B\5\33A\14\36" + "B\5\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\33A\14\202\320q\202\320q\36B\5\32\77\12\32\77\12\0\0/" + "^\20/^\20""0_\21""3[\16""0_\21""0_\21""0_\21""3[\16""0_\21""3[\16""0" + "_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3" + "b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7e\17""7e\17""5d\26""9" + "g\21""7f\30""5k\24""9g\21""4j\23""9g\21""5k\24""4j\23""5k\24""5k\24""4" + "j\23""6l\25""9g\21""9g\21""6l\25""9g\21""6l\25""9g\21""5k\24""9g\21""5" + "k\24""9g\21""6l\25""6l\25@m\30@m\30""6l\25""6l\25""6l\25@m\30@m\30""6" + "l\25""6l\25""6l\25@m\30@m\30""6l\25""6l\25""6l\25@m\30""6l\25@m\30""6" + "l\25@m\30""6l\25@m\30""6l\25""6l\25""9g\21""5k\24""6l\25""5k\24""9g\21" + "5k\24""9g\21\202\320q\202\320q4j\23""4j\23""5k\24\0\0\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\32""8\2\32""8\2\31""9" + "\13\34:\5\31""9\13\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\30>\10\30>" + "\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\32\77\12\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33" + "A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\36B\5\36B\5" + "\33A\14\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14" + "\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14\33A\14\33A" + "\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\202\320q\202\320q\32\77\12" + "\36B\5\32\77\12\0\0""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21" + "3[\16""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""7e\17" + "5d\26""7e\17""7f\30""9g\21""9g\21""4j\23""4j\23""5k\24""9g\21""5k\24" + "9g\21""4j\23""4j\23""6l\25""5k\24""9g\21""5k\24""5k\24""6l\25""9g\21" + "9g\21""5k\24""9g\21""5k\24""6l\25@m\30""6l\25@m\30@m\30""6l\25""6l\25" + "@m\30""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25@m\30""6l\25""6l\25" + "6l\25""6l\25""6l\25@m\30@m\30""6l\25@m\30""5k\24""6l\25""9g\21""9g\21" + "6l\25""9g\21""6l\25""5k\24""5k\24\202\320q\202\320q5k\24""4j\23""4j\23" + "\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\32""8\2\31""9\13\32" + "8\2\32""8\2\31""9\13\34:\5\27""8\11\34:\5\27""8\11\27=\7\27=\7\27=\7" + "\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77" + "\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\33A\14\36B\5\33A\14\33A\14" + "\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\36B\5\36" + "B\5\36B\5\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\36" + "B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\36B\5\33A\14" + "\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\202" + "\320q\202\320q\32\77\12\32\77\12\36B\5\0\0""0_\21""0_\21""0_\21""0_\21" + "0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23" + "2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26" + "5d\26""7e\17""5d\26""9g\21""7f\30""4j\23""5k\24""9g\21""5k\24""4j\23" + "9g\21""4j\23""9g\21""4j\23""5k\24""5k\24""9g\21""5k\24""9g\21""5k\24" + "9g\21""5k\24""6l\25""9g\21""5k\24@m\30""6l\25@m\30""6l\25@m\30""6l\25" + "@m\30""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6" + "l\25""6l\25""6l\25""6l\25""6l\25@m\30""6l\25@m\30""5k\24""9g\21""9g\21" + "5k\24""6l\25""9g\21""5k\24""9g\21""5k\24""9g\21""4j\23\202\320q\202\320" + "q9g\21""9g\21""4j\23\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\31""9\13\32""8" + "\2\32""8\2\32""8\2\31""9\13\34:\5\34:\5\34:\5\34:\5\34:\5\27=\7\27=\7" + "\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36B\5\33A\14\33A\14" + "\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33" + "A\14\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\36" + "B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14" + "\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\32" + "\77\12\36B\5\202\320q\202\320q\32\77\12\32\77\12\32\77\12\0\0""3[\16" + "0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23" + "2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26" + "5d\26""7e\17""5d\26""7e\17""5d\26""7e\17""9g\21""9g\21""4j\23""9g\21" + "5k\24""9g\21""4j\23""9g\21""4j\23""5k\24""9g\21""6l\25""6l\25""9g\21" + "5k\24""9g\21""6l\25""9g\21""5k\24""5k\24""9g\21""5k\24@m\30""6l\25""6" + "l\25""6l\25""6l\25""6l\25@m\30""6l\25""6l\25@m\30""6l\25@m\30""6l\25" + "@m\30""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25""6l\25@m\30""6l\25" + "5k\24""9g\21""9g\21""6l\25""5k\24""5k\24""6l\25""5k\24""9g\21""4j\23" + "4j\23""5k\24\202\320q\202\320q9g\21""9g\21""7f\30\0\0\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31" + "9\13\32""8\2\32""8\2\32""8\2\31""9\13\32""8\2\34:\5\31""9\13\34:\5\31" + "9\13\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36" + "B\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14" + "\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33" + "A\14\36B\5\33A\14\32\77\12\32\77\12\32\77\12\32\77\12\202\320q\202\320" + "q\32\77\12\32\77\12\30>\10\0\0""0_\21""0_\21""3[\16""0_\21""0_\21""0" + "_\21""0_\21""3[\16""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3" + "b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""7" + "e\17""9g\21""9g\21""9g\21""4j\23""9g\21""4j\23""9g\21""9g\21""4j\23""9" + "g\21""4j\23""6l\25""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25""9" + "g\21""5k\24""6l\25@m\30""6l\25""6l\25""6l\25""6l\25""6l\25""6l\25""6" + "l\25""6l\25@m\30""6l\25@m\30""6l\25@m\30""6l\25""6l\25""6l\25""6l\25" + "@m\30""6l\25@m\30""6l\25""9g\21""5k\24""9g\21""9g\21""6l\25""5k\24""6" + "l\25""9g\21""6l\25""5k\24""9g\21""4j\23""9g\21""5k\24""4j\23\202\320" + "q\202\320q9g\21""5d\26""7e\17\0\0\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\32""8\2" + "\31""9\13\32""8\2\34:\5\34:\5\31""9\13\34:\5\34:\5\27=\7\27=\7\27=\7" + "\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77" + "\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\36B\5\33A\14\33" + "A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B" + "\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\36B\5\36B\5\33A\14" + "\36B\5\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14" + "\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\32\77\12" + "\36B\5\32\77\12\32\77\12\36B\5\202\320q\202\320q\35;\6\30>\10\27=\7\0" + "\0""3[\16""0_\21""0_\21""0_\21""3[\16""0_\21""0_\21""2a\23""2a\23""2" + "a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5" + "d\26""5d\26""7e\17""7e\17""7e\17""5d\26""9g\21""9g\21""9g\21""9g\21""4" + "j\23""4j\23""4j\23""5k\24""9g\21""9g\21""5k\24""9g\21""9g\21""5k\24""9" + "g\21""9g\21""5k\24""9g\21""9g\21""5k\24""5k\24@m\30""6l\25@m\30@m\30" + "6l\25""6l\25""6l\25""6l\25""6l\25""6l\25@m\30""6l\25""6l\25""6l\25@m" + "\30""6l\25@m\30""6l\25@m\30@m\30""6l\25""6l\25""9g\21""9g\21""5k\24""5" + "k\24""9g\21""5k\24""6l\25""9g\21""5k\24""9g\21""5k\24""4j\23""9g\21""5" + "k\24""9g\21""5k\24""4j\23\202\320q\202\320q7e\17""5d\26""7e\17\0\0\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31" + "9\13\32""8\2\31""9\13\32""8\2\31""9\13\34:\5\34:\5\34:\5\34:\5\27""8" + "\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\36B\5\33A\14\33" + "A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\36" + "B\5\36B\5\36B\5\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33" + "A\14\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\36B\5\33A\14\33" + "A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\202\320q\202\320" + "q\27=\7\27=\7\27=\7\0\0""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2" + "a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3" + "b\24""3b\24""7e\17""5d\26""5d\26""7e\17""5d\26""7e\17""7f\30""9g\21""5" + "k\24""4j\23""9g\21""5k\24""4j\23""9g\21""5k\24""5k\24""4j\23""9g\21""5" + "k\24""9g\21""6l\25""5k\24""9g\21""9g\21""5k\24""9g\21""6l\25""5k\24@" + "m\30@m\30""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25""6l\25""6l\25" + "6l\25""6l\25@m\30""6l\25""6l\25@m\30@m\30@m\30""6l\25""5k\24""9g\21""9" + "g\21""5k\24""5k\24""6l\25""9g\21""5k\24""5k\24""6l\25""4j\23""9g\21""4" + "j\23""9g\21""4j\23""9g\21""9g\21""9g\21""9g\21\202\320q\202\320q7e\17" + "5d\26""3b\24\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2" + "\31""9\13\32""8\2\32""8\2\31""9\13\31""9\13\32""8\2\34:\5\34:\5\31""9" + "\13\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32" + "\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5" + "\32\77\12\32\77\12\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33" + "A\14\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14\33A\14\36B\5" + "\36B\5\36B\5\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\36B\5\36B\5\36B" + "\5\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\36B\5" + "\33A\14\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\30>\10\202\320q\202\320q\27=\7\34:\5\31""9\13\0\0""3[\16" + "0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""5d\26" + "5d\26""7e\17""7f\30""7f\30""4j\23""4j\23""4j\23""9g\21""4j\23""5k\24" + "9g\21""5k\24""4j\23""6l\25""9g\21""6l\25""9g\21""6l\25""9g\21""5k\24" + "9g\21""5k\24""9g\21""5k\24""9g\21@m\30""6l\25@m\30""6l\25""6l\25""6l" + "\25@m\30@m\30""6l\25""6l\25""6l\25""6l\25@m\30@m\30""6l\25@m\30""6l\25" + "9g\21""6l\25""9g\21""9g\21""5k\24""9g\21""5k\24""6l\25""9g\21""5k\24" + "5k\24""9g\21""4j\23""9g\21""5k\24""5k\24""9g\21""9g\21""9g\21""9g\21" + "5d\26""7e\17\202\320q\202\320q3b\24""3b\24""3b\24\0\0\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\32""8\2\32""8" + "\2\31""9\13\34:\5\31""9\13\31""9\13\27""8\11\34:\5\27=\7\27=\7\27=\7" + "\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14\36B" + "\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5" + "\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\33A\14\36B" + "\5\36B\5\36B\5\33A\14\36B\5\36B\5\36B\5\33A\14\33A\14\33A\14\33A\14\33" + "A\14\36B\5\33A\14\33A\14\36B\5\33A\14\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27=\7\202\320q" + "\202\320q\27""8\11\34:\5\31""9\13\0\0""3[\16""0_\21""0_\21""0_\21""2" + "a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3" + "b\24""5d\26""7e\17""5d\26""5d\26""5d\26""7e\17""5d\26""7f\30""9g\21""9" + "g\21""9g\21""4j\23""9g\21""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""5" + "k\24""5k\24""6l\25""5k\24""9g\21""9g\21""6l\25""6l\25""9g\21""5k\24""6" + "l\25""5k\24@m\30""6l\25@m\30""6l\25""6l\25""6l\25@m\30""6l\25@m\30""6" + "l\25""6l\25@m\30""6l\25@m\30""6l\25""6l\25""9g\21""6l\25""9g\21""5k\24" + "9g\21""9g\21""5k\24""6l\25""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24" + "4j\23""4j\23""9g\21""5k\24""9g\21""7e\17""5d\26""5d\26""5d\26\202\320" + "q\202\320q3b\24""2a\23""2a\23\0\0\27""7\10\27""7\10\27""7\10\32""8\2" + "\31""9\13\31""9\13\32""8\2\32""8\2\31""9\13\31""9\13\34:\5\34:\5\27""8" + "\11\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\32\77\12\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\33" + "A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\36B\5\33A\14\36B\5\33" + "A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14" + "\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\30>\10" + "\30>\10\27=\7\27=\7\27=\7\202\320q\202\320q\32""8\2\31""9\13\31""9\13" + "\0\0""3[\16""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""7e\17""5d\26""5" + "d\26""5d\26""7e\17""7f\30""9g\21""4j\23""9g\21""5k\24""9g\21""5k\24""9" + "g\21""5k\24""9g\21""9g\21""5k\24""6l\25""5k\24""9g\21""5k\24""6l\25""9" + "g\21""5k\24""6l\25""5k\24""5k\24""9g\21""5k\24@m\30@m\30""6l\25""6l\25" + "@m\30""6l\25""6l\25""6l\25@m\30""6l\25@m\30""6l\25""6l\25@m\30""5k\24" + "6l\25""9g\21""9g\21""6l\25""9g\21""5k\24""9g\21""5k\24""5k\24""5k\24" + "9g\21""5k\24""4j\23""9g\21""4j\23""4j\23""9g\21""9g\21""7e\17""5d\26" + "7e\17""5d\26""5d\26""3b\24\202\320q\202\320q2a\23""2a\23""0_\21\0\0\27" + "7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\32""8\2\32""8\2\31""9" + "\13\34:\5\34:\5\27""8\11\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7" + "\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\36B\5\33A" + "\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14" + "\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B" + "\5\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14" + "\36B\5\33A\14\33A\14\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5" + "\32\77\12\32\77\12\32\77\12\30>\10\27=\7\27=\7\27=\7\34:\5\27""8\11\202" + "\320q\202\320q\31""9\13\27""7\10\27""7\10\0\0""0_\21""0_\21""2a\23""2" + "a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3" + "b\24""5d\26""5d\26""5d\26""7e\17""7e\17""5d\26""7e\17""7f\30""9g\21""9" + "g\21""5k\24""4j\23""5k\24""9g\21""4j\23""9g\21""5k\24""9g\21""6l\25""9" + "g\21""5k\24""5k\24""9g\21""5k\24""5k\24""9g\21""6l\25""9g\21""6l\25""5" + "k\24""6l\25""9g\21""6l\25""6l\25""6l\25""6l\25""6l\25""6l\25@m\30""6" + "l\25""6l\25@m\30""6l\25@m\30""5k\24""9g\21""5k\24""6l\25""9g\21""6l\25" + "9g\21""6l\25""6l\25""5k\24""9g\21""9g\21""4j\23""9g\21""5k\24""9g\21" + "4j\23""4j\23""9g\21""9g\21""7e\17""7e\17""7e\17""5d\26""3b\24""3b\24" + "3b\24\202\320q\202\320q0_\21""0_\21""0_\21\0\0\27""7\10\27""7\10\32""8" + "\2\32""8\2\31""9\13\32""8\2\31""9\13\31""9\13\34:\5\34:\5\27""8\11\34" + ":\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36" + "B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14" + "\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\36" + "B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\32\77\12\32" + "\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\30>\10\30>\10" + "\27=\7\27=\7\34:\5\34:\5\31""9\13\32""8\2\202\320q\202\320q\27""7\10" + "\27""7\10\27""7\10\0\0""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2a" + "\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5" + "d\26""5d\26""5d\26""5d\26""9g\21""7f\30""4j\23""9g\21""4j\23""4j\23""9" + "g\21""9g\21""4j\23""4j\23""5k\24""6l\25""9g\21""6l\25""6l\25""9g\21""5" + "k\24""6l\25""9g\21""6l\25""5k\24""6l\25""6l\25""5k\24""5k\24""5k\24""6" + "l\25""6l\25@m\30""6l\25""6l\25""6l\25""6l\25@m\30""6l\25@m\30""5k\24" + "6l\25""9g\21""5k\24""5k\24""6l\25""5k\24""6l\25""9g\21""5k\24""6l\25" + "5k\24""9g\21""4j\23""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21""5d\26" + "7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23\202\320q\202\320" + "q0_\21""0_\21/^\20\0\0\27""7\10\32""8\2\32""8\2\31""9\13\32""8\2\32""8" + "\2\32""8\2\31""9\13\34:\5\34:\5\31""9\13\34:\5\27""8\11\27=\7\27=\7\27" + "=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\36B\5" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\36B\5\33A\14\36B\5\33" + "A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\36B" + "\5\33A\14\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\36B\5\33" + "A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14" + "\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\30>\10\30>\10\27=\7\27=\7\27""8\11\34:\5\34:\5\31""9\13\32""8\2\31" + "9\13\202\320q\202\320q\27""7\10\27""7\10\27""7\10\0\0""0_\21""2a\23""2" + "a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""3" + "b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""7e\17""7f\30""9g\21""4" + "j\23""5k\24""4j\23""9g\21""4j\23""4j\23""5k\24""9g\21""4j\23""5k\24""6" + "l\25""9g\21""9g\21""6l\25""5k\24""6l\25""9g\21""5k\24""9g\21""5k\24""6" + "l\25""5k\24""9g\21""5k\24""6l\25@m\30@m\30""6l\25""6l\25@m\30@m\30""6" + "l\25""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25""9g\21""6l\25""5k\24""9" + "g\21""5k\24""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21""4j\23""4j\23""7" + "f\30""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""2a\23""2a\23""2" + "a\23""0_\21\202\320q\202\320q/^\20""3[\16/^\20\0\0\27""7\10\32""8\2\31" + "9\13\32""8\2\31""9\13\31""9\13\32""8\2\34:\5\34:\5\31""9\13\27""8\11" + "\34:\5\27=\7\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12" + "\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33" + "A\14\33A\14\36B\5\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A" + "\14\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36" + "B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\36B\5\32\77\12\32\77\12\30>\10\27=\7\27=\7\27=\7\34:\5\31" + "9\13\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\202\320q\202\320q\27" + "7\10\27""7\10\25""5\6\0\0""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""7" + "e\17""7e\17""7e\17""7f\30""9g\21""9g\21""5k\24""4j\23""4j\23""9g\21""5" + "k\24""5k\24""9g\21""4j\23""5k\24""9g\21""6l\25""5k\24""9g\21""9g\21""5" + "k\24""5k\24""6l\25""9g\21""5k\24""5k\24""9g\21""6l\25""9g\21""5k\24""9" + "g\21""5k\24""9g\21""6l\25""9g\21""6l\25""9g\21""6l\25""9g\21""6l\25""9" + "g\21""5k\24""5k\24""5k\24""5k\24""9g\21""5k\24""5k\24""5k\24""9g\21""5" + "k\24""4j\23""9g\21""5k\24""4j\23""9g\21""9g\21""5d\26""5d\26""7e\17""5" + "d\26""3b\24""3b\24""3b\24""2a\23""2a\23""0_\21""0_\21""3[\16\202\320" + "q\202\320q/^\20/^\20""0Y\24\0\0\32""8\2\31""9\13\32""8\2\31""9\13\32" + "8\2\31""9\13\32""8\2\31""9\13\34:\5\34:\5\27""8\11\34:\5\27=\7\27=\7" + "\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12" + "\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\33A" + "\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14" + "\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\36" + "B\5\33A\14\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\30>\10\30>\10\27=\7\27=\7\31""9\13\27""8\11\34:\5\31""9\13\32" + "8\2\27""7\10\27""7\10\27""7\10\27""7\10\202\320q\202\320q\27""7\10\25" + "5\6\25""5\6\0\0""2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b" + "\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26""7" + "e\17""9g\21""7f\30""9g\21""4j\23""9g\21""4j\23""4j\23""4j\23""4j\23""9" + "g\21""5k\24""9g\21""9g\21""9g\21""6l\25""9g\21""9g\21""6l\25""9g\21""6" + "l\25""9g\21""6l\25""5k\24""6l\25""9g\21""6l\25""9g\21""6l\25""6l\25""9" + "g\21""5k\24""9g\21""5k\24""9g\21""6l\25""5k\24""9g\21""9g\21""6l\25""9" + "g\21""6l\25""6l\25""9g\21""5k\24""5k\24""9g\21""5k\24""4j\23""4j\23""4" + "j\23""9g\21""9g\21""7f\30""7e\17""5d\26""7e\17""7e\17""3b\24""3b\24""3" + "b\24""2a\23""2a\23""2a\23""0_\21""0_\21/^\20""3[\16\202\320q\202\320" + "q3[\16-\\\16""2Z\15\0\0\31""9\13\31""9\13\32""8\2\31""9\13\32""8\2\31" + "9\13\34:\5\34:\5\34:\5\34:\5\31""9\13\27=\7\27=\7\27=\7\27=\7\30>\10" + "\30>\10\30>\10\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\33A\14\33A\14\33A\14" + "\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\33A\14\33A\14\36" + "B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A" + "\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\32\77\12\36" + "B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27=\7\27" + "=\7\34:\5\34:\5\27""8\11\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\202\320q\202\320q\25""5\6\24""4\5\27""1\12\0\0" + "2a\23""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24" + "3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9g\21" + "4j\23""5k\24""4j\23""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""5k\24" + "9g\21""9g\21""9g\21""9g\21""6l\25""6l\25""9g\21""5k\24""5k\24""5k\24" + "5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25""9g\21""6l\25""9g\21" + "6l\25""9g\21""5k\24""9g\21""9g\21""5k\24""6l\25""9g\21""6l\25""5k\24" + "9g\21""9g\21""5k\24""9g\21""5k\24""4j\23""4j\23""9g\21""9g\21""5d\26" + "7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""3[\16" + "0_\21""3[\16/^\20""3[\16/^\20\202\320q\202\320q2Z\15""0Y\24""0Y\24\0" + "\0\32""8\2\32""8\2\31""9\13\32""8\2\32""8\2\34:\5\34:\5\31""9\13\34:" + "\5\34:\5\27""8\11\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14" + "\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33" + "A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\36" + "B\5\33A\14\33A\14\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\27""8\11" + "\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\202\320q\202\320q\24""4\5\23""3\3\23""3\3\0\0""2a" + "\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""3" + "b\24""7e\17""5d\26""5d\26""7e\17""7e\17""5d\26""9g\21""9g\21""4j\23""9" + "g\21""4j\23""9g\21""4j\23""5k\24""9g\21""5k\24""4j\23""9g\21""5k\24""5" + "k\24""9g\21""5k\24""6l\25""9g\21""6l\25""9g\21""6l\25""9g\21""5k\24""9" + "g\21""5k\24""5k\24""9g\21""5k\24""6l\25""9g\21""6l\25""6l\25""9g\21""9" + "g\21""9g\21""6l\25""5k\24""9g\21""5k\24""6l\25""9g\21""5k\24""5k\24""4" + "j\23""9g\21""9g\21""5k\24""9g\21""4j\23""9g\21""5d\26""5d\26""5d\26""5" + "d\26""5d\26""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21/" + "^\20/^\20""3[\16/^\20-\\\16\202\320q\202\320q0Y\24""2Z\15""0Y\24\0\0" + "\32""8\2\32""8\2\31""9\13\32""8\2\32""8\2\34:\5\34:\5\31""9\13\34:\5" + "\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\36B\5\32\77\12\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14" + "\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33" + "A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A" + "\14\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\30>\10\27=\7\27=\7\27=\7\31""9\13\34:\5\27""8\11\32""8\2\31" + "9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\24""4\5\202\320q\202\320q\27""1\12\23""3\3\27""1\12\0\0""2a\23""2" + "a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5" + "d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9g\21""9g\21""4j\23""9g\21""4" + "j\23""5k\24""5k\24""9g\21""4j\23""4j\23""5k\24""9g\21""6l\25""9g\21""9" + "g\21""5k\24""9g\21""6l\25""5k\24""6l\25""9g\21""6l\25""6l\25""5k\24""9" + "g\21""6l\25""9g\21""5k\24""6l\25""9g\21""5k\24""5k\24""6l\25""9g\21""5" + "k\24""5k\24""9g\21""6l\25""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24""9" + "g\21""9g\21""4j\23""9g\21""9g\21""7e\17""7e\17""7e\17""5d\26""3b\24""3" + "b\24""3b\24""2a\23""2a\23""0_\21""0_\21""0_\21""3[\16/^\20/^\20/^\20" + "-\\\16""0Y\24""0Y\24\202\320q\202\320q0Y\24""0Y\24""0Y\24\0\0\32""8\2" + "\31""9\13\32""8\2\32""8\2\34:\5\34:\5\31""9\13\34:\5\34:\5\27=\7\27=" + "\7\27=\7\27=\7\27=\7\30>\10\30>\10\36B\5\32\77\12\36B\5\32\77\12\32\77" + "\12\36B\5\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\33A\14\36" + "B\5\33A\14\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\36B" + "\5\33A\14\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\30>\10\30>\10\27=\7\27" + "=\7\31""9\13\27""8\11\34:\5\27""8\11\32""8\2\32""8\2\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3" + "\202\320q\202\320q\30""1\1\23""3\3\27""1\12\0\0""2a\23""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7e\17" + "5d\26""7e\17""5d\26""9g\21""9g\21""5k\24""4j\23""4j\23""5k\24""4j\23" + "4j\23""4j\23""9g\21""5k\24""9g\21""5k\24""5k\24""9g\21""6l\25""9g\21" + "5k\24""9g\21""5k\24""9g\21""6l\25""6l\25""5k\24""5k\24""9g\21""6l\25" + "5k\24""9g\21""5k\24""9g\21""6l\25""5k\24""6l\25""9g\21""6l\25""9g\21" + "6l\25""9g\21""4j\23""4j\23""5k\24""9g\21""9g\21""9g\21""4j\23""9g\21" + "9g\21""5d\26""7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23" + "2a\23""0_\21""0_\21""3[\16""3[\16/^\20/^\20""3[\16""0Y\24""2Z\15""2Z" + "\15""0Y\24\202\320q\202\320q0Y\24""0Y\24.W\23\0\0\32""8\2\31""9\13\32" + "8\2\32""8\2\31""9\13\34:\5\34:\5\34:\5\31""9\13\27=\7\27=\7\27=\7\27" + "=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14\33" + "A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5" + "\33A\14\36B\5\36B\5\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\33A\14\33" + "A\14\33A\14\33A\14\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27=\7\27=\7\27""8\11\34:\5" + "\27""8\11\32""8\2\31""9\13\31""9\13\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3\23""3" + "\3\202\320q\202\320q\30""1\1\30""1\1\25""0\10\0\0""2a\23""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26" + "7e\17""5d\26""7e\17""9g\21""7f\30""4j\23""4j\23""9g\21""5k\24""9g\21" + "5k\24""4j\23""5k\24""9g\21""6l\25""6l\25""5k\24""9g\21""5k\24""9g\21" + "5k\24""5k\24""5k\24""5k\24""5k\24""6l\25""5k\24""9g\21""5k\24""5k\24" + "5k\24""9g\21""6l\25""9g\21""5k\24""6l\25""9g\21""5k\24""9g\21""6l\25" + "9g\21""9g\21""4j\23""9g\21""4j\23""9g\21""9g\21""4j\23""9g\21""7e\17" + "5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21" + "0_\21""0_\21""3[\16/^\20""3[\16""3[\16-\\\16-\\\16""0Y\24""0Y\24""2Z" + "\15""0Y\24\202\320q\202\320q.W\23.W\23-V\22\0\0\32""8\2\31""9\13\32""8" + "\2\32""8\2\34:\5\27""8\11\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30" + ">\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\33A\14\36B\5\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36" + "B\5\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\31""9\13\32""8\2\31" + "9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\25""5\6\24""4\5\30""1\1\23""3\3\23""3\3\23""3\3\202\320" + "q\202\320q\25""0\10\25""0\10\25""0\10\0\0""2a\23""2a\23""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""5d\26" + "7e\17""9g\21""7f\30""4j\23""5k\24""9g\21""4j\23""9g\21""4j\23""5k\24" + "9g\21""4j\23""9g\21""6l\25""5k\24""6l\25""6l\25""9g\21""5k\24""9g\21" + "5k\24""6l\25""9g\21""6l\25""9g\21""5k\24""5k\24""5k\24""5k\24""9g\21" + "5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25""9g\21""9g\21""4j\23" + "9g\21""9g\21""4j\23""9g\21""4j\23""7f\30""9g\21""5d\26""7e\17""5d\26" + "5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""3[\16""0_\21""0_\21""0_\21" + "/^\20""3[\16/^\20""0Y\24""3[\16""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""2" + "Z\15\202\320q\202\320q-V\22-V\22-V\22\0\0\32""8\2\31""9\13\32""8\2\27" + "8\11\34:\5\34:\5\27""8\11\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10" + "\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36" + "B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\33A\14\36B\5\36B\5\33A" + "\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14" + "\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\30>\10\30>\10\27=\7\27=\7\27""8\11\34:\5\27""8\11\32""8\2\32""8" + "\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\30""1\1\30""1\1\23""3\3\23""3\3\27""1\12\30""1\1" + "\202\320q\202\320q\25""0\10\25""0\10\25/\7\0\0""2a\23""2a\23""2a\23""3" + "b\24""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""5d\26""7" + "e\17""7e\17""7f\30""9g\21""5k\24""4j\23""9g\21""4j\23""9g\21""4j\23""5" + "k\24""9g\21""4j\23""9g\21""5k\24""9g\21""5k\24""6l\25""9g\21""6l\25""5" + "k\24""9g\21""5k\24""9g\21""6l\25""9g\21""9g\21""5k\24""6l\25""9g\21""5" + "k\24""9g\21""5k\24""9g\21""5k\24""9g\21""9g\21""5k\24""9g\21""9g\21""4" + "j\23""9g\21""4j\23""9g\21""9g\21""9g\21""5d\26""7e\17""7e\17""5d\26""3" + "b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16/^\20/^\20" + "3[\16-\\\16""3[\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15.W\23.W\23" + "\202\320q\202\320q-V\22""0R\16*T\16\0\0\31""9\13\31""9\13\32""8\2\34" + ":\5\34:\5\27""8\11\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>" + "\10\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\36B\5\32\77\12\32\77\12\36B\5\32\77\12\33A\14\36B\5\33A\14\33A\14\36" + "B\5\33A\14\33A\14\36B\5\33A\14\33A\14\33A\14\33A\14\33A\14\36B\5\33A" + "\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>" + "\10\27=\7\27=\7\34:\5\34:\5\31""9\13\32""8\2\31""9\13\32""8\2\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5" + "\24""4\5\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\30""1\1\30""1\1\202" + "\320q\202\320q\25/\7\25/\7\25/\7\0\0""2a\23""2a\23""2a\23""3b\24""3b" + "\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""9" + "g\21""9g\21""9g\21""9g\21""4j\23""4j\23""4j\23""4j\23""5k\24""4j\23""9" + "g\21""5k\24""9g\21""5k\24""6l\25""9g\21""5k\24""6l\25""9g\21""6l\25""9" + "g\21""5k\24""9g\21""5k\24""9g\21""6l\25""6l\25""9g\21""9g\21""5k\24""9" + "g\21""5k\24""9g\21""4j\23""9g\21""9g\21""5k\24""4j\23""9g\21""5k\24""4" + "j\23""9g\21""9g\21""7e\17""5d\26""5d\26""7e\17""3b\24""3b\24""3b\24""2" + "a\23""2a\23""2a\23""3[\16""0_\21""0_\21""3[\16/^\20/^\20/^\20""3[\16" + "-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23-V\22\202\320" + "q\202\320q*T\16""0R\16*T\16\0\0\31""9\13\32""8\2\27""8\11\34:\5\34:\5" + "\34:\5\31""9\13\27=\7\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\36B\5\36B\5\33A\14\33A\14\36B\5\33A\14\36B\5" + "\33A\14\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\33" + "A\14\33A\14\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77" + "\12\32\77\12\32\77\12\36B\5\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7" + "\27""8\11\34:\5\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\27""1\12\23""3" + "\3\27""1\12\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\202\320" + "q\202\320q\25/\7\25/\7\25/\7\0\0""2a\23""2a\23""3b\24""3b\24""3b\24""3" + "b\24""3b\24""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""7e\17""7f\30""9" + "g\21""4j\23""4j\23""5k\24""9g\21""4j\23""4j\23""5k\24""9g\21""4j\23""4" + "j\23""5k\24""5k\24""6l\25""9g\21""6l\25""9g\21""6l\25""5k\24""9g\21""5" + "k\24""5k\24""6l\25""9g\21""9g\21""5k\24""5k\24""9g\21""5k\24""9g\21""5" + "k\24""5k\24""9g\21""9g\21""5k\24""4j\23""5k\24""9g\21""9g\21""9g\21""5" + "d\26""5d\26""5d\26""7e\17""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""3" + "[\16""0_\21""0_\21/^\20/^\20/^\20/^\20""3[\16-\\\16""2Z\15""0Y\24""0" + "Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23.W\23-V\22-V\22\202\320q\202\320q" + "*T\16*T\16*T\16\0\0\32""8\2\31""9\13\34:\5\34:\5\27""8\11\34:\5\34:\5" + "\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32" + "\77\12\36B\5\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\33" + "A\14\33A\14\36B\5\33A\14\33A\14\33A\14\36B\5\33A\14\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\34:\5\34:\5\32""8\2\32" + "8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\25""0\10" + "\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\202\320q\202\320q\25/\7\24" + ".\5\24.\5\0\0""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""5d\26" + "7e\17""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""7f\30""4j\23""9g\21" + "5k\24""9g\21""5k\24""4j\23""4j\23""4j\23""9g\21""5k\24""4j\23""5k\24" + "5k\24""6l\25""9g\21""6l\25""9g\21""5k\24""9g\21""5k\24""9g\21""6l\25" + "6l\25""9g\21""5k\24""6l\25""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21" + "5k\24""9g\21""9g\21""5k\24""9g\21""9g\21""7e\17""7e\17""5d\26""5d\26" + "3b\24""3b\24""3b\24""2a\23""2a\23""0_\21""3[\16""0_\21/^\20""3[\16/^" + "\20""3[\16-\\\16-\\\16""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24.W\23" + ".W\23.W\23-V\22-V\22*T\16*T\16\202\320q\202\320q*T\16*T\16*T\16\0\0\32" + "8\2\31""9\13\34:\5\34:\5\27""8\11\34:\5\27=\7\27=\7\27=\7\27=\7\27=\7" + "\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5" + "\33A\14\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\33A\14\36B\5\33" + "A\14\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27" + "=\7\27=\7\27""8\11\34:\5\31""9\13\32""8\2\32""8\2\32""8\2\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24" + "4\5\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3\30""1\1\25""0\10\25""0\10" + "\25""0\10\25/\7\25/\7\25/\7\202\320q\202\320q\24.\5\24.\5\24.\5\0\0""2" + "a\23""2a\23""3b\24""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5d\26""7" + "e\17""5d\26""7e\17""7f\30""9g\21""9g\21""9g\21""9g\21""4j\23""5k\24""9" + "g\21""4j\23""4j\23""9g\21""5k\24""9g\21""4j\23""5k\24""6l\25""9g\21""6" + "l\25""5k\24""5k\24""9g\21""6l\25""6l\25""9g\21""5k\24""4j\23""9g\21""4" + "j\23""9g\21""4j\23""5k\24""4j\23""9g\21""4j\23""9g\21""5k\24""9g\21""9" + "g\21""9g\21""7e\17""7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2" + "a\23""2a\23""0_\21""3[\16""0_\21""3[\16/^\20/^\20""3[\16-\\\16""2Z\15" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24.W\23.W\23-V\22-V\22*T\16*T\16" + "*T\16*T\16\202\320q\202\320q*T\16*T\16*T\16\0\0\32""8\2\31""9\13\34:" + "\5\34:\5\34:\5\31""9\13\34:\5\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10" + "\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\33A\14\33" + "A\14\36B\5\33A\14\36B\5\33A\14\33A\14\33A\14\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36" + "B\5\32\77\12\32\77\12\30>\10\30>\10\27=\7\27=\7\31""9\13\34:\5\34:\5" + "\31""9\13\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3\30""1\1\23""3\3" + "\27""1\12\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/" + "\7\25/\7\25/\7\202\320q\202\320q\24.\5\24.\5\23,\3\0\0""2a\23""2a\23" + "3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26""7e\17" + "5d\26""9g\21""7f\30""4j\23""9g\21""4j\23""9g\21""5k\24""4j\23""9g\21" + "4j\23""4j\23""9g\21""4j\23""4j\23""5k\24""4j\23""9g\21""5k\24""6l\25" + "9g\21""6l\25""9g\21""5k\24""9g\21""9g\21""5k\24""9g\21""4j\23""5k\24" + "9g\21""4j\23""5k\24""4j\23""4j\23""4j\23""9g\21""9g\21""7e\17""5d\26" + "5d\26""5d\26""7e\17""3b\24""3b\24""3b\24""2a\23""2a\23""0_\21""3[\16" + "0_\21""0_\21/^\20""3[\16/^\20-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24""0Y\24""0Y\24.W\23.W\23-V\22-V\22*T\16*T\16*T\16""0R\16*T\16\202" + "\320q\202\320q*T\16*T\16*N\22\0\0\31""9\13\32""8\2\31""9\13\34:\5\34" + ":\5\31""9\13\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\34:\5\31""9\13\32""8" + "\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\25""5\6\25""5\6\24""4\5\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3" + "\27""1\12\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7" + "\24.\5\24.\5\202\320q\202\320q\24.\5\23,\3\23,\3\0\0""2a\23""2a\23""3" + "b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5d\26""7e\17""9" + "g\21""7f\30""9g\21""4j\23""9g\21""5k\24""9g\21""9g\21""5k\24""9g\21""5" + "k\24""9g\21""5k\24""4j\23""5k\24""9g\21""5k\24""4j\23""9g\21""4j\23""4" + "j\23""5k\24""9g\21""5k\24""4j\23""4j\23""9g\21""4j\23""4j\23""5k\24""9" + "g\21""4j\23""9g\21""4j\23""9g\21""9g\21""5d\26""7e\17""7e\17""7e\17""5" + "d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16/" + "^\20/^\20/^\20""3[\16-\\\16-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24.W\23.W\23-V\22-V\22*T\16""0R\16*T\16*T\16""0R\16*T\16*T\16\202" + "\320q\202\320q(R\14*N\22.P\14\0\0\31""9\13\34:\5\34:\5\31""9\13\34:\5" + "\27""8\11\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\36" + "B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\30>\10" + "\30>\10\30>\10\27=\7\27=\7\34:\5\31""9\13\34:\5\31""9\13\32""8\2\31""9" + "\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\27""1\12\27""1\12\23""3\3\23""3\3\27""1\12\30""1" + "\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\24.\5\24" + ".\5\24.\5\202\320q\202\320q\23,\3\17+\10\23,\3\0\0""2a\23""3b\24""3b" + "\24""3b\24""3b\24""5d\26""5d\26""5d\26""7e\17""7e\17""7e\17""5d\26""9" + "g\21""7f\30""9g\21""9g\21""4j\23""5k\24""4j\23""9g\21""4j\23""9g\21""9" + "g\21""4j\23""5k\24""9g\21""4j\23""9g\21""9g\21""4j\23""9g\21""4j\23""5" + "k\24""9g\21""9g\21""4j\23""9g\21""4j\23""4j\23""5k\24""9g\21""4j\23""5" + "k\24""9g\21""9g\21""7f\30""7e\17""5d\26""7e\17""5d\26""5d\26""5d\26""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21""3[\16""3" + "[\16/^\20-\\\16""3[\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15.W\23" + ".W\23-V\22-V\22-V\22""0R\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16\202" + "\320q\202\320q*N\22.P\14.P\14\0\0\32""8\2\31""9\13\27""8\11\34:\5\34" + ":\5\35;\6\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36" + "B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\30>\10\30>\10" + "\30>\10\27=\7\27=\7\27=\7\31""9\13\34:\5\34:\5\31""9\13\32""8\2\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25" + "5\6\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\25""0\10" + "\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5" + "\24.\5\24.\5\202\320q\202\320q\23,\3\23,\3\17+\10\0\0""2a\23""3b\24""3" + "b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""9g\21""9" + "g\21""9g\21""9g\21""9g\21""5k\24""4j\23""5k\24""9g\21""4j\23""5k\24""9" + "g\21""4j\23""4j\23""5k\24""9g\21""5k\24""9g\21""9g\21""4j\23""4j\23""9" + "g\21""5k\24""9g\21""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24""9g\21""4" + "j\23""9g\21""7f\30""7e\17""5d\26""5d\26""5d\26""7e\17""3b\24""3b\24""3" + "b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""3[\16/^\20/^\20""0Y\24" + "3[\16""2Z\15""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24.W\23.W\23-V\22" + "-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*N\22\202\320q\202" + "\320q.P\14*N\22.P\14\0\0\27""8\11\34:\5\27""8\11\34:\5\31""9\13\27=\7" + "\27=\7\27=\7\30>\10\30>\10\30>\10\30>\10\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5" + "\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\34" + ":\5\27""8\11\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3\30""1" + "\1\23""3\3\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\17+\10\23,\3\202\320" + "q\202\320q\23,\3\23,\3\23,\3\0\0""3b\24""3b\24""3b\24""3b\24""5d\26""7" + "e\17""5d\26""7e\17""7e\17""7e\17""5d\26""9g\21""7f\30""4j\23""4j\23""9" + "g\21""9g\21""5k\24""9g\21""4j\23""4j\23""5k\24""9g\21""4j\23""4j\23""4" + "j\23""9g\21""4j\23""9g\21""5k\24""4j\23""9g\21""4j\23""5k\24""9g\21""5" + "k\24""9g\21""5k\24""9g\21""4j\23""5k\24""7f\30""9g\21""5d\26""5d\26""7" + "e\17""5d\26""7e\17""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0" + "_\21""0_\21""3[\16/^\20/^\20""3[\16-\\\16-\\\16""0Y\24""0Y\24""2Z\15" + "0Y\24""0Y\24""2Z\15.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16(R\14.P\14*N\22\202\320q\202\320q.P\14*N\22.P\14\0\0\34" + ":\5\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\30>\10\30" + ">\10\30>\10\27=\7\27=\7\27=\7\34:\5\34:\5\32""8\2\31""9\13\32""8\2\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\27""7\10\25""5\6\25" + "5\6\24""4\5\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\30""1\1\25""0\10" + "\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5" + "\24.\5\24.\5\23,\3\23,\3\23,\3\202\320q\202\320q\17+\10\23,\3\23,\3\0" + "\0""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5" + "d\26""7e\17""9g\21""7f\30""4j\23""9g\21""4j\23""5k\24""9g\21""4j\23""9" + "g\21""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""5k\24""4j\23""4j\23""9" + "g\21""9g\21""9g\21""5k\24""9g\21""4j\23""9g\21""5k\24""9g\21""4j\23""9" + "g\21""9g\21""5d\26""7e\17""7e\17""5d\26""7e\17""5d\26""3b\24""3b\24""3" + "b\24""2a\23""2a\23""0_\21""0_\21""3[\16/^\20/^\20""3[\16/^\20-\\\16""0" + "Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23-V\22" + "-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14.P\14.P\14*N\22" + "\202\320q\202\320q.P\14.P\14.P\14\0\0\34:\5\31""9\13\34:\5\31""9\13\27" + "=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12" + "\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32" + "\77\12\32\77\12\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\31""9\13\34:\5" + "\34:\5\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3\23""3\3\27""1" + "\12\30""1\1\23""3\3\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25/\7" + "\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\17+\10\23" + ",\3\202\320q\202\320q\23,\3\23,\3\23,\3\0\0""3b\24""3b\24""3b\24""3b" + "\24""7e\17""5d\26""7e\17""5d\26""7e\17""7e\17""5d\26""9g\21""7f\30""4" + "j\23""4j\23""5k\24""9g\21""5k\24""9g\21""4j\23""5k\24""9g\21""4j\23""9" + "g\21""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""5k\24""9g\21""9g\21""5" + "k\24""4j\23""9g\21""4j\23""9g\21""9g\21""5d\26""7e\17""5d\26""5d\26""5" + "d\26""7e\17""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0" + "_\21""0_\21/^\20/^\20""3[\16-\\\16""3[\16""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24.W\23.W\23.W\23-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*N\22.P\14.P\14.P\14.P\14\202\320q\202\320q*N\22*N\22*" + "N\22\0\0\34:\5\34:\5\34:\5\31""9\13\27=\7\27=\7\27=\7\30>\10\30>\10\30" + ">\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\36B\5\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\27=\7\27=\7\27" + "=\7\34:\5\34:\5\27""8\11\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4" + "\5\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\30""1\1\30""1\1\25""0\10" + "\25""0\10\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3" + "\17+\10\23,\3\23,\3\17+\10\23,\3\202\320q\202\320q\23,\3\17+\10\23,\3" + "\0\0""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""7e\17""7e\17""7e\17""7" + "e\17""9g\21""7f\30""9g\21""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21""5" + "k\24""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""4j\23""4j\23""5k\24""9" + "g\21""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""9g\21""7e\17""5d\26""5" + "d\26""7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""3" + "[\16""0_\21""3[\16""0_\21""3[\16/^\20/^\20/^\20""3[\16-\\\16""2Z\15""0" + "Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23-V\22-V\22""0R\16*T\16*T\16" + "*T\16""0R\16*T\16*T\16*T\16*T\16(R\14.P\14.P\14*N\22.P\14.P\14*N\22\202" + "\320q\202\320q*N\22*N\22*N\22\0\0\34:\5\34:\5\31""9\13\27=\7\27=\7\27" + "=\7\27=\7\30>\10\30>\10\35;\6\32\77\12\32\77\12\32\77\12\32\77\12\36" + "B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12" + "\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\27=\7\27" + "=\7\27=\7\27""8\11\34:\5\34:\5\34:\5\27""8\11\32""8\2\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25" + "5\6\24""4\5\27""1\12\23""3\3\23""3\3\23""3\3\27""1\12\30""1\1\25""0\10" + "\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5" + "\24.\5\23,\3\17+\10\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\202\320q\202" + "\320q\17+\10\23,\3\17+\10\0\0""3b\24""3b\24""7e\17""5d\26""5d\26""7e" + "\17""5d\26""7e\17""5d\26""7e\17""9g\21""9g\21""5k\24""4j\23""5k\24""9" + "g\21""9g\21""5k\24""4j\23""5k\24""9g\21""9g\21""5k\24""4j\23""4j\23""9" + "g\21""4j\23""5k\24""4j\23""9g\21""4j\23""5k\24""4j\23""7f\30""9g\21""9" + "g\21""7e\17""7e\17""5d\26""7e\17""7e\17""3b\24""3b\24""3b\24""3b\24""2" + "a\23""2a\23""2a\23""0_\21""0_\21""0_\21""3[\16/^\20/^\20/^\20-\\\16-" + "\\\16""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24.W\23.W\23-V\22" + "-V\22*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*N\22.P\14*N\22." + "P\14.P\14*N\22.P\14*N\22\202\320q\202\320q*N\22*N\22*N\22\0\0\34:\5\27" + "8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30" + ">\10\30>\10\27=\7\27=\7\27=\7\34:\5\34:\5\27""8\11\32""8\2\32""8\2\31" + "9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\24""4\5\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\30" + "1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24" + ".\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\17+\10\23,\3\23" + ",\3\202\320q\202\320q\17+\10\23,\3\17+\10\0\0""3b\24""3b\24""5d\26""5" + "d\26""7e\17""5d\26""5d\26""7e\17""5d\26""9g\21""7f\30""9g\21""9g\21""4" + "j\23""9g\21""5k\24""4j\23""9g\21""5k\24""9g\21""9g\21""4j\23""4j\23""5" + "k\24""4j\23""9g\21""9g\21""4j\23""5k\24""9g\21""4j\23""9g\21""9g\21""7" + "f\30""7e\17""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24""2" + "a\23""2a\23""2a\23""0_\21""0_\21""0_\21/^\20""3[\16/^\20/^\20/^\20""3" + "[\16""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15.W\23.W\23-V\22" + "-V\22-V\22*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16(R\14*N\22.P\14*" + "N\22.P\14.P\14*N\22.P\14*N\22.P\14\202\320q\202\320q*N\22*N\22*N\22\0" + "\0\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12" + "\36B\5\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10" + "\30>\10\27=\7\27=\7\27=\7\34:\5\31""9\13\34:\5\31""9\13\32""8\2\32""8" + "\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\24""4\5\24""4\5\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3" + "\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7" + "\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23" + ",\3\23,\3\23,\3\23,\3\202\320q\202\320q\17+\10\17+\10\17+\10\0\0""3b" + "\24""5d\26""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""7" + "f\30""9g\21""9g\21""5k\24""4j\23""5k\24""9g\21""9g\21""4j\23""4j\23""4" + "j\23""4j\23""9g\21""4j\23""5k\24""9g\21""4j\23""9g\21""4j\23""9g\21""7" + "f\30""9g\21""7e\17""5d\26""7e\17""7e\17""5d\26""7e\17""3b\24""3b\24""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21/^\20/^\20""3[\16" + "3[\16-\\\16""3[\16""2Z\15""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24." + "W\23.W\23-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*N\22" + "(R\14.P\14.P\14*N\22*N\22.P\14*N\22.P\14*N\22*N\22\202\320q\202\320q" + "*N\22*N\22*N\22\0\0\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10" + "\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77" + "\12\32\77\12\32\77\12\36B\5\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>" + "\10\27=\7\27=\7\27=\7\34:\5\31""9\13\34:\5\27""8\11\32""8\2\31""9\13" + "\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\25""5\6\24""4\5\30""1\1\24""4\5\27""1\12\23""3\3\30""1\1\23""3\3" + "\27""1\12\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/" + "\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\17+\10\23,\3\23,\3" + "\23,\3\23,\3\23,\3\17+\10\17+\10\17+\10\202\320q\202\320q\17+\10\17+" + "\10\17+\10\0\0""3b\24""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""7e\17" + "5d\26""9g\21""9g\21""9g\21""9g\21""4j\23""9g\21""4j\23""4j\23""9g\21" + "5k\24""4j\23""5k\24""9g\21""4j\23""4j\23""9g\21""4j\23""5k\24""9g\21" + "9g\21""9g\21""9g\21""7e\17""5d\26""5d\26""5d\26""5d\26""5d\26""3b\24" + "3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21/^\20/^\20""3[" + "\16/^\20""3[\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24" + ".W\23.W\23.W\23-V\22-V\22*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*N\22.P\14*N\22.P\14.P\14*N\22.P\14*N\22*N\22*N\22*N\22*N\22\202" + "\320q\202\320q*N\22*N\22*N\22\0\0\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10" + "\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\30>\10\30>" + "\10\30>\10\30>\10\27=\7\27=\7\27=\7\27""8\11\34:\5\34:\5\31""9\13\32" + "8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\25""5\6\25""5\6\24""4\5\23""3\3\23""3\3\23""3\3\23""3\3" + "\23""3\3\27""1\12\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25" + "/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\23,\3\17+\10\23,\3\23,\3\17+\10\17+\10\17+\10\202\320q\202\320" + "q\17+\10\17+\10\17+\10\0\0""7e\17""5d\26""5d\26""5d\26""7e\17""7e\17" + "5d\26""5d\26""9g\21""7f\30""9g\21""9g\21""5k\24""9g\21""4j\23""5k\24" + "9g\21""4j\23""4j\23""5k\24""9g\21""5k\24""5k\24""9g\21""5k\24""9g\21" + "9g\21""9g\21""9g\21""7e\17""5d\26""5d\26""7e\17""5d\26""5d\26""3b\24" + "3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16""0_\21" + "0Y\24""3[\16/^\20-\\\16-\\\16""2Z\15""2Z\15""2Z\15""0Y\24""0Y\24""2Z" + "\15""0Y\24.W\23.W\23-V\22-V\22-V\22*T\16""0R\16*T\16*T\16*T\16*T\16*" + "T\16*T\16(R\14.P\14*N\22.P\14.P\14*N\22.P\14.P\14*N\22.P\14*N\22*N\22" + "*N\22*N\22\202\320q\202\320q*N\22*N\22*N\22\0\0\27=\7\27=\7\27=\7\27" + "=\7\30>\10\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\36" + "B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12" + "\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30" + ">\10\30>\10\27=\7\27=\7\27=\7\34:\5\31""9\13\34:\5\34:\5\32""8\2\27""8" + "\11\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\25""5\6\25""5\6\24""4\5\23""3\3\23""3\3\27""1\12\23""3" + "\3\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25" + "/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\23,\3\17+\10\23,\3\17+\10\17+\10\17+\10\23,\3\17+\10\202\320q" + "\202\320q\23,\3\17+\10\17+\10\0\0""5d\26""7e\17""5d\26""7e\17""7e\17" + "5d\26""7e\17""5d\26""9g\21""9g\21""9g\21""7f\30""4j\23""4j\23""4j\23" + "4j\23""9g\21""9g\21""5k\24""5k\24""9g\21""4j\23""9g\21""9g\21""7f\30" + "9g\21""9g\21""7e\17""5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""3b\24" + "3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""3[\16""3[\16" + "/^\20/^\20""3[\16-\\\16""3[\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2" + "Z\15""0Y\24.W\23.W\23-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T" + "\16*T\16*T\16*N\22.P\14*N\22.P\14.P\14.P\14*N\22.P\14.P\14*N\22*N\22" + "*N\22*N\22*N\22\202\320q\202\320q*N\22*N\22*N\22\0\0\27=\7\27=\7\27=" + "\7\30>\10\30>\10\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30" + ">\10\27=\7\27=\7\27=\7\27=\7\34:\5\31""9\13\34:\5\34:\5\32""8\2\31""9" + "\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\25""5\6\24""4\5\24""4\5\27""1\12\23""3\3\23""3\3\23""3\3" + "\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/" + "\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\23,\3\23,\3\23,\3\17+\10\17+\10\17+\10\17+\10\23,\3\17+\10\202" + "\320q\202\320q\17+\10\23,\3\17+\10\0\0""5d\26""7e\17""5d\26""7e\17""5" + "d\26""7e\17""7e\17""7e\17""9g\21""9g\21""9g\21""7f\30""4j\23""9g\21""4" + "j\23""5k\24""9g\21""4j\23""4j\23""5k\24""9g\21""9g\21""7f\30""9g\21""9" + "g\21""7e\17""5d\26""7e\17""7e\17""5d\26""7e\17""5d\26""3b\24""3b\24""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21""3[\16/" + "^\20""3[\16/^\20-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y" + "\24.W\23.W\23.W\23-V\22-V\22*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16(R\14.P\14.P\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22*N\22" + "*N\22*N\22*N\22\202\320q\202\320q*N\22*N\22*N\22\0\0\27=\7\27=\7\30>" + "\10\30>\10\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\27=" + "\7\27=\7\27=\7\34:\5\31""9\13\34:\5\34:\5\31""9\13\32""8\2\31""9\13\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\24""4\5\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\30""1\1" + "\25""0\10\30""1\1\25""0\10\30""1\1\25/\7\25/\7\25/\7\25/\7\25/\7\24." + "\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\23,\3\23,\3\17+\10\17+\10\17+\10\17+\10\17+\10\23,\3\202\320q" + "\202\320q\17+\10\17+\10\17+\10\0\0""5d\26""5d\26""7e\17""5d\26""7e\17" + "5d\26""7e\17""9g\21""9g\21""9g\21""7f\30""9g\21""4j\23""9g\21""9g\21" + "5k\24""4j\23""9g\21""9g\21""7f\30""9g\21""9g\21""9g\21""5d\26""7e\17" + "7e\17""7e\17""5d\26""7e\17""5d\26""3b\24""3b\24""3b\24""3b\24""2a\23" + "2a\23""2a\23""2a\23""0_\21""0_\21""3[\16/^\20""3[\16/^\20""0Y\24""3[" + "\16""2Z\15""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15.W\23.W\23" + "-V\22-V\22-V\22*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16.P\14*" + "N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22*N\22*N\22*N\22" + "*N\22*N\22\202\320q\202\320q*N\22*N\22*N\22\0\0\27=\7\27=\7\30>\10\30" + ">\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=" + "\7\27""8\11\34:\5\31""9\13\34:\5\31""9\13\32""8\2\32""8\2\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24" + "4\5\24""4\5\23""3\3\27""1\12\30""1\1\23""3\3\30""1\1\30""1\1\25""0\10" + "\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5" + "\24.\5\24.\5\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23" + ",\3\23,\3\17+\10\17+\10\17+\10\17+\10\17+\10\23,\3\17+\10\202\320q\202" + "\320q\23,\3\17+\10\23,\3\0\0""5d\26""5d\26""5d\26""7e\17""7e\17""7f\30" + "9g\21""9g\21""9g\21""7f\30""9g\21""9g\21""7f\30""9g\21""9g\21""9g\21" + "7f\30""9g\21""7f\30""9g\21""9g\21""7e\17""7e\17""5d\26""7e\17""5d\26" + "5d\26""5d\26""5d\26""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23" + "3[\16""0_\21""0_\21""0_\21""3[\16/^\20""3[\16/^\20""3[\16""0Y\24""2Z" + "\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23-V\22-V\22-V\22" + "*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14(R\14.P\14*N\22." + "P\14*N\22*N\22.P\14*N\22.P\14*N\22*N\22*N\22*N\22*N\22*N\22*N\22*N\22" + "\202\320q\202\320q*N\22*N\22*N\22\0\0\27=\7\27=\7\30>\10\30>\10\30>\10" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30" + ">\10\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\34:\5\34:\5" + "\34:\5\27""8\11\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5" + "\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10\25" + "0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\23" + ",\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\17+\10\17" + "+\10\23,\3\17+\10\17+\10\17+\10\23,\3\17+\10\23,\3\202\320q\202\320q" + "\17+\10\17+\10\23,\3\0\0""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""7" + "f\30""9g\21""7f\30""9g\21""9g\21""9g\21""7f\30""9g\21""9g\21""9g\21""7" + "f\30""9g\21""9g\21""9g\21""7e\17""5d\26""5d\26""7e\17""7e\17""5d\26""5" + "d\26""5d\26""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0" + "_\21""0_\21""0_\21/^\20/^\20""3[\16/^\20-\\\16""3[\16""2Z\15""2Z\15""0" + "Y\24""0Y\24""2Z\15""2Z\15""0Y\24.W\23.W\23-V\22-V\22*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14*N\22.P\14*N\22.P\14*N\22.P\14" + "*N\22.P\14.P\14.P\14*N\22*N\22*N\22*N\22*N\22*N\22*N\22*N\22\202\320" + "q\202\320q*N\22*N\22*N\22\0\0\27=\7\30>\10\30>\10\30>\10\30>\10\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30" + ">\10\30>\10\35;\6\27=\7\27=\7\27=\7\34:\5\31""9\13\34:\5\34:\5\31""9" + "\13\32""8\2\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\23""3\3\23""3\3" + "\23""3\3\23""3\3\23""3\3\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23" + ",\3\23,\3\23,\3\17+\10\23,\3\23,\3\17+\10\23,\3\23,\3\17+\10\17+\10\17" + "+\10\23,\3\17+\10\17+\10\23,\3\17+\10\17+\10\202\320q\202\320q\17+\10" + "\17+\10\23,\3\0\0""5d\26""7e\17""5d\26""7e\17""5d\26""9g\21""7f\30""9" + "g\21""9g\21""9g\21""7f\30""9g\21""9g\21""7f\30""7f\30""9g\21""9g\21""7" + "e\17""5d\26""7e\17""5d\26""7e\17""7e\17""5d\26""5d\26""5d\26""5d\26""3" + "b\24""3b\24""3b\24""2a\23""2a\23""2a\23""3[\16""0_\21""0_\21""0_\21""3" + "[\16/^\20/^\20""3[\16-\\\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15" + "0Y\24""2Z\15""0Y\24.W\23.W\23-V\22-V\22*T\16""0R\16*T\16""0R\16*T\16" + "*T\16*T\16*T\16*T\16*T\16(R\14*N\22.P\14.P\14.P\14.P\14*N\22.P\14.P\14" + "*N\22.P\14.P\14*N\22*N\22*N\22*N\22*N\22*N\22*N\22*N\22\202\320q\202" + "\320q*N\22*N\22*N\22\0\0\30>\10\30>\10\30>\10\30>\10\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\27=\7\27=" + "\7\27=\7\27=\7\27=\7\31""9\13\34:\5\34:\5\34:\5\32""8\2\31""9\13\32""8" + "\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\25""5\6\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\23""3" + "\3\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25" + "/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\17+\10\23," + "\3\17+\10\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\17+\10\17+\10\17" + "+\10\23,\3\17+\10\17+\10\23,\3\17+\10\202\320q\202\320q\17+\10\17+\10" + "\23,\3\0\0""5d\26""7e\17""7e\17""5d\26""7f\30""9g\21""7f\30""9g\21""9" + "g\21""9g\21""7f\30""9g\21""9g\21""9g\21""7f\30""9g\21""7e\17""7e\17""7" + "e\17""7e\17""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24""3" + "b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""3[\16/^\20""3[\16/^\20" + "/^\20-\\\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15.W" + "\23.W\23.W\23-V\22-V\22*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16(R\14(R\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14.P\14*N\22*N\22" + "*N\22*N\22*N\22*N\22*N\22*N\22*N\22*N\22\202\320q\202\320q*N\22*N\22" + "*N\22\0\0\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\30" + ">\10\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\31""9\13\34" + ":\5\34:\5\34:\5\32""8\2\31""9\13\32""8\2\32""8\2\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24" + "4\5\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\30""1\1\30""1\1" + "\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24" + ".\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\17+\10\23,\3\23,\3\17+\10\17+\10\17+\10\17+\10\23,\3\17+\10\17" + "+\10\17+\10\202\320q\202\320q\17+\10\23,\3\23,\3\0\0""7e\17""7e\17""9" + "g\21""7f\30""9g\21""7f\30""9g\21""9g\21""9g\21""9g\21""7f\30""9g\21""9" + "g\21""7f\30""9g\21""5d\26""7e\17""5d\26""7e\17""7e\17""5d\26""5d\26""5" + "d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""2a\23""0_\21""0" + "_\21""0_\21""0_\21/^\20/^\20""0Y\24/^\20-\\\16-\\\16""2Z\15""0Y\24""0" + "Y\24""0Y\24""0Y\24""0Y\24""2Z\15.W\23.W\23-V\22-V\22-V\22*T\16*T\16""0" + "R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16.P\14*N\22.P\14*N\22.P\14.P\14" + ".P\14.P\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22*N\22*N\22*N\22*N\22*N\22" + "*N\22*N\22\202\320q\202\320q*N\22.P\14.P\14\0\0\30>\10\30>\10\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\27" + "=\7\35;\6\27=\7\27=\7\34:\5\34:\5\34:\5\34:\5\31""9\13\32""8\2\31""9" + "\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\25""5\6\24""4\5\24""4\5\27""1\12\23""3\3\23""3\3\27""1\12" + "\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7" + "\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23" + ",\3\23,\3\17+\10\23,\3\17+\10\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\17" + "+\10\17+\10\17+\10\17+\10\23,\3\17+\10\23,\3\23,\3\202\320q\202\320q" + "\23,\3\23,\3\23,\3\0\0""7e\17""7e\17""9g\21""7f\30""9g\21""9g\21""9g" + "\21""9g\21""9g\21""7f\30""9g\21""9g\21""9g\21""7f\30""7e\17""5d\26""5" + "d\26""7e\17""5d\26""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24""2" + "a\23""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21""3[\16/^\20""3" + "[\16/^\20""3[\16-\\\16""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y" + "\24.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16" + "*T\16*T\16(R\14*N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14.P\14.P\14*N\22" + "*N\22*N\22.P\14*N\22*N\22*N\22*N\22.P\14*N\22.P\14*N\22\202\320q\202" + "\320q*N\22.P\14*N\22\0\0\30>\10\30>\10\36B\5\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>" + "\10\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\27""8\11\31""9" + "\13\34:\5\34:\5\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\24""4" + "\5\23""3\3\23""3\3\23""3\3\30""1\1\27""1\12\30""1\1\30""1\1\25""0\10" + "\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23" + ",\3\17+\10\23,\3\202\320q\202\320q\23,\3\17+\10\23,\3\0\0""7e\17""7f" + "\30""9g\21""9g\21""9g\21""9g\21""9g\21""9g\21""7f\30""9g\21""7f\30""9" + "g\21""7e\17""7e\17""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""5d\26""3" + "b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""2a\23""0_\21""0_\21""0" + "_\21/^\20/^\20""3[\16/^\20-\\\16-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""2Z\15""0Y\24""0Y\24.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16(R\14(R\14.P\14*N\22.P\14*N\22.P\14.P\14" + "*N\22.P\14*N\22.P\14*N\22.P\14*N\22.P\14.P\14*N\22.P\14.P\14*N\22*N\22" + ".P\14.P\14\202\320q\202\320q.P\14.P\14*N\22\0\0\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\30>\10\30>\10\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7" + "\27=\7\31""9\13\34:\5\31""9\13\34:\5\32""8\2\31""9\13\32""8\2\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5" + "\6\25""5\6\24""4\5\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12" + "\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7" + "\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23" + ",\3\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\17+" + "\10\23,\3\17+\10\23,\3\17+\10\23,\3\23,\3\17+\10\23,\3\202\320q\202\320" + "q\23,\3\23,\3\23,\3\0\0""7f\30""9g\21""9g\21""9g\21""9g\21""9g\21""9" + "g\21""7f\30""9g\21""9g\21""9g\21""5d\26""7e\17""5d\26""5d\26""7e\17""5" + "d\26""5d\26""7e\17""5d\26""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2" + "a\23""0_\21""0_\21""0_\21""3[\16""0_\21/^\20""3[\16/^\20-\\\16-\\\16" + "-\\\16""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23-V\22" + "-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14.P\14" + ".P\14*N\22.P\14*N\22.P\14.P\14.P\14*N\22.P\14*N\22.P\14.P\14*N\22.P\14" + "*N\22.P\14.P\14*N\22.P\14.P\14*N\22.P\14.P\14\202\320q\202\320q*N\22" + ".P\14.P\14\0\0\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\30>" + "\10\27=\7\27=\7\27=\7\27=\7\27=\7\34:\5\34:\5\27""8\11\34:\5\31""9\13" + "\32""8\2\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\27""1\12\23""3\3\27""1\12" + "\23""3\3\27""1\12\23""3\3\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23" + ",\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\23," + "\3\23,\3\17+\10\23,\3\17+\10\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23" + ",\3\23,\3\17+\10\202\320q\202\320q\23,\3\23,\3\23,\3\0\0""7f\30""9g\21" + "9g\21""9g\21""9g\21""9g\21""7f\30""9g\21""9g\21""5d\26""7e\17""5d\26" + "5d\26""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24" + "3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21""0_\21""3[\16" + "/^\20/^\20/^\20""0Y\24-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24.W\23.W\23-V\22-V\22-V\22""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*N\22.P\14*N\22.P\14.P\14*N\22.P\14.P\14*N\22.P\14" + ".P\14*N\22.P\14.P\14.P\14.P\14.P\14*N\22.P\14.P\14.P\14.P\14*N\22.P\14" + ".P\14\202\320q\202\320q*N\22*N\22.P\14\0\0\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10" + "\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\34:\5\34:\5\34:\5\34:\5" + "\31""9\13\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5\23""3\3" + "\27""1\12\23""3\3\23""3\3\23""3\3\30""1\1\30""1\1\25""0\10\30""1\1\25" + "0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\17+\10\23" + ",\3\17+\10\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\17" + "+\10\23,\3\17+\10\23,\3\23,\3\17+\10\202\320q\202\320q\23,\3\23,\3\24" + ".\5\0\0""9g\21""9g\21""9g\21""9g\21""9g\21""9g\21""7f\30""9g\21""9g\21" + "7e\17""7e\17""5d\26""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24" + "3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21" + "/^\20/^\20""3[\16/^\20-\\\16-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "2Z\15""0Y\24""0Y\24.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16""0R\16*T" + "\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14.P\14.P\14.P\14\242\261\230\236" + "\262\222\242\261\230\235\261\220\235\261\220\235\261\220\235\261\220" + "\235\261\220\242\261\230\236\262\222\242\261\230\236\262\222\242\261" + "\230\236\262\222\235\261\220\242\261\230\235\261\220\236\262\222\235" + "\261\220.P\14*N\22.P\14\202\320q\202\320q*N\22*T\16*T\16\0\0\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10" + "\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\34:\5\34:\5\27""8" + "\11\34:\5\31""9\13\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5" + "\23""3\3\23""3\3\30""1\1\30""1\1\23""3\3\23""3\3\25""0\10\30""1\1\25" + "0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24." + "\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\17+\10\23,\3\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\17+\10\23,\3\17+\10\202\320q\202\320q\24.\5\24.\5\24.\5\0\0""7f" + "\30""9g\21""9g\21""7f\30""9g\21""9g\21""9g\21""7f\30""7e\17""5d\26""7" + "e\17""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24""3" + "b\24""2a\23""2a\23""2a\23""3[\16""0_\21""0_\21""0_\21""3[\16/^\20/^\20" + "/^\20-\\\16-\\\16""3[\16""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0" + "Y\24.W\23.W\23-V\22-V\22-V\22*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16(R\14*N\22.P\14.P\14\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + ".P\14.P\14.P\14\202\320q\202\320q*T\16*T\16*T\16\0\0\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30" + ">\10\27=\7\27=\7\27=\7\27=\7\27=\7\34:\5\27""8\11\34:\5\34:\5\31""9\13" + "\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\23""3\3\23""3\3\30" + "1\1\23""3\3\23""3\3\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\23,\3\23,\3\23,\3\23,\3\17+\10\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\23,\3\23,\3" + "\17+\10\202\320q\202\320q\24.\5\24.\5\24.\5\0\0""9g\21""7f\30""9g\21" + "7f\30""9g\21""9g\21""7e\17""7e\17""5d\26""7e\17""5d\26""5d\26""5d\26" + "5d\26""5d\26""7e\17""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23" + "3[\16""0_\21""0_\21""0_\21""3[\16/^\20/^\20/^\20""3[\16-\\\16""0Y\24" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23-V\22-V\22-" + "V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*N\22" + "(R\14*N\22.P\14.P\14\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374*N\22(R\14*T\16\202\320q" + "\202\320q*T\16*T\16*T\16\0\0\32\77\12\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\30>\10\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27" + "=\7\34:\5\34:\5\34:\5\31""9\13\32""8\2\32""8\2\31""9\13\32""8\2\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\24""4\5\24""4\5\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12" + "\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3" + "\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3[mP\367\371\366\372" + "\374\371\214\227\2067M+\27""1\12\27""1\12""7M+\214\227\206\372\374\371" + "\373\375\372\177\216v\23,\3\23,\3\24.\5\24.\5\202\320q\202\320q\24.\5" + "\24.\5\25/\7\0\0""9g\21""7f\30""7f\30""9g\21""9g\21""9g\21""7e\17""7" + "e\17""5d\26""7e\17""5d\26""5d\26""5d\26""7e\17""5d\26""3b\24""3b\24""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16""0_\21/^\20/^\20" + "/^\20/^\20-\\\16""3[\16""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24.W\23.W\23-V\22-V\22-V\22*T\16*T\16""0R\16*T\16""0R\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*N\22(R\14*N\22.P\14.P\14*N\22.P\14" + ".P\14*N\22*N\22Po7\370\372\367\376\377\374\215\236y*N\22.P\14.P\14.P" + "\14*N\22.P\14\215\236y\376\377\374\376\377\374t\211^*T\16*T\16*T\16\202" + "\320q\202\320q*T\16*T\16""0R\16\0\0\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27" + "=\7\31""9\13\34:\5\31""9\13\34:\5\31""9\13\32""8\2\31""9\13\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\25""5\6\25""5\6\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3\23""3\3" + "\23""3\3\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25" + "/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\23,\3\253\271" + "\255\376\377\374\376\377\3747M+\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3" + "8N,\376\377\374\376\377\374\302\311\276\24.\5\24.\5\24.\5\202\320q\202" + "\320q\25/\7\25/\7\25/\7\0\0""7f\30""9g\21""7f\30""9g\21""9g\21""9g\21" + "7e\17""7e\17""5d\26""7e\17""7e\17""5d\26""7e\17""5d\26""3b\24""3b\24" + "3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21/^\20/^" + "\20""3[\16/^\20""3[\16-\\\16""3[\16""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15" + "0Y\24""2Z\15.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16""0R\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*N\22(R\14*N\22*N\22.P\14.P\14" + "*N\22.P\14.P\14*N\22\360\362\357\376\377\374\376\377\374b|K*N\22.P\14" + ".P\14.P\14.P\14(R\14b|K\376\377\374\376\377\374\361\363\360*T\16*T\16" + "*T\16\202\320q\202\320q*T\16*T\16*T\16\0\0\32\77\12\32\77\12\32\77\12" + "\32\77\12\36B\5\32\77\12\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7" + "\27""8\11\34:\5\34:\5\31""9\13\31""9\13\32""8\2\31""9\13\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3" + "\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/" + "\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\17+\10\23,\3\370\372" + "\367\376\377\374\376\377\374\315\324\311(>\35\23,\3\23,\3\17+\10\23," + "\3(>\35\321\327\314\376\377\374\376\377\374\370\372\367\24.\5\24.\5\24" + ".\5\202\320q\202\320q\25/\7\25/\7\25/\7\0\0""9g\21""9g\21""7f\30""9g" + "\21""9g\21""7e\17""7e\17""5d\26""7e\17""7e\17""5d\26""5d\26""5d\26""3" + "b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""3[\16""0_\21""0_\21""3" + "[\16/^\20""3[\16/^\20/^\20-\\\16-\\\16""2Z\15""2Z\15""2Z\15""0Y\24""0" + "Y\24""2Z\15""0Y\24""2Z\15.W\23.W\23.W\23-V\22-V\22-V\22*T\16""0R\16*" + "T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16.P\14*N\22(R" + "\14*N\22.P\14.P\14*N\22.P\14*N\22.P\14.P\14\341\347\334\376\377\374\376" + "\377\374\376\377\374\366\370\364\277\313\270\245\264\233\245\264\233" + "\277\313\270\367\371\366\376\377\374\376\377\374\376\377\374\341\347" + "\334*T\16*T\16*T\16\202\320q\202\320q*T\16""0R\16-V\22\0\0\32\77\12\32" + "\77\12\32\77\12\32\77\12\30>\10\30>\10\30>\10\30>\10\30>\10\27=\7\27" + "=\7\27=\7\34:\5\27""8\11\34:\5\34:\5\31""9\13\32""8\2\31""9\13\32""8" + "\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\24""4\5\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3" + "\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\23" + ",\3\221\234\213\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\221\234\213\24.\5\25/\7\25/\7\202\320q\202\320q" + "\25/\7\25""0\10\25""0\10\0\0""9g\21""9g\21""9g\21""5d\26""7e\17""7e\17" + "5d\26""7e\17""5d\26""5d\26""7e\17""5d\26""3b\24""3b\24""3b\24""3b\24" + "2a\23""2a\23""2a\23""3[\16""0_\21""0_\21""0_\21""3[\16/^\20""3[\16/^" + "\20-\\\16-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z" + "\15.W\23.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16""0R\16*T\16""0R\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14*N\22(R\14*N\22.P\14.P\14" + ".P\14.P\14*N\22.P\14*N\22""6Y\35\341\347\334\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\341\347\3349\\\37*T\16*T\16*T\16\202\320" + "q\202\320q*T\16-V\22-V\22\0\0\32\77\12\32\77\12\32\77\12\30>\10\30>\10" + "\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\27=\7\34:\5\27""8\11\34:\5\32" + "8\2\32""8\2\32""8\2\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\23""3\3\30""1" + "\1\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\30""1\1\25""0\10\25""0\10" + "\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\23,\3\23,\3\23,\3\23,\3\23,\3" + "\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\17+\10+A\40\307\316\303\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\313\321\3061E\36\25/\7\25/\7\25/\7\25/\7\202\320" + "q\202\320q\25""0\10\25""0\10\25""0\10\0\0""9g\21""9g\21""7f\30""7e\17" + "7e\17""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3b\24" + "3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21""3[\16/^\20/^" + "\20""3[\16-\\\16""0Y\24-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y" + "\24""2Z\15.W\23.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16(R\14.P\14*N\22.P\14*N\22" + ".P\14.P\14.P\14*N\22*N\22.P\14(R\14(R\14*N\22m\212^\270\303\261\344\353" + "\340\370\372\367\370\372\367\345\354\341\267\307\255m\212^0R\16""0R\16" + "*T\16*T\16*T\16*T\16\202\320q\202\320q-V\22.W\23.W\23\0\0\32\77\12\32" + "\77\12\32\77\12\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\27=\7\31" + "9\13\34:\5\34:\5\31""9\13\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5" + "\6\24""4\5\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3" + "\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\17+\10\23,\3\23,\3\23,\3\23,\3\23" + ",\3\23,\3\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\202\320q\202\320q\25""0\10\30""1\1\30" + "1\1\0\0""9g\21""9g\21""7f\30""5d\26""7e\17""5d\26""5d\26""5d\26""5d\26" + "5d\26""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""3[\16""0_\21" + "0_\21""3[\16/^\20/^\20/^\20""3[\16-\\\16-\\\16""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22*T\16*" + "T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0" + "R\16*T\16*T\16(R\14(R\14.P\14(R\14*N\22(R\14(R\14.P\14(R\14(R\14.P\14" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*" + "T\16*T\16-V\22\202\320q\202\320q.W\23.W\23""0Y\24\0\0\32\77\12\32\77" + "\12\32\77\12\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\34:\5\34:\5" + "\27""8\11\32""8\2\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\24""4\5\24""4\5" + "\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\30""1\1\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\23,\3\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25""0\10\25""0\10\202\320q\202\320q\30""1\1\23""3\3\23" + "3\3\0\0""9g\21""9g\21""5d\26""7e\17""5d\26""5d\26""5d\26""7e\17""5d\26" + "3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21" + "3[\16""0_\21""3[\16""3[\16""3[\16""0Y\24-\\\16""3[\16""2Z\15""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15.W\23.W\23-V\22-V\22-V\22*T\16" + "*T\16*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16(R\14(R\14(R\14\236\262\222\236\262\222" + "\236\262\222\242\261\230\236\262\222\242\261\230\236\262\222\242\261" + "\230\236\262\222\242\261\230\236\262\222\236\262\222\236\262\222\237" + "\263\223\237\263\223\237\263\223\237\263\223\237\263\223\237\263\223" + "-V\22-V\22-V\22\202\320q\202\320q2Z\15""0Y\24""2Z\15\0\0\32\77\12\30" + ">\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\27=\7\34:\5\27""8\11\34:" + "\5\34:\5\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\30""1\1" + "\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\25""0\10\25""0\10\30" + "1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\24.\5\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\25""0\10\25""0\10" + "\30""1\1\202\320q\202\320q\23""3\3\27""1\12\23""3\3\0\0""9g\21""7e\17" + "7e\17""7e\17""5d\26""7e\17""5d\26""7e\17""3b\24""3b\24""3b\24""3b\24" + "2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21""0_\21/^\20""3[\16/^" + "\20""3[\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2" + "Z\15""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22*T\16*T\16""0R\16*T\16*T\16" + "0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374-V\22.W\23.W\23\202\320q" + "\202\320q0Y\24""0Y\24""0Y\24\0\0\32\77\12\30>\10\30>\10\35;\6\27=\7\27" + "=\7\27=\7\27=\7\27""8\11\34:\5\27""8\11\34:\5\31""9\13\32""8\2\31""9" + "\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\24""4\5\24""4\5\24""4\5\23""3\3\23""3\3\23""3\3\23""3\3" + "\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10" + "\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\24.\5\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\30""1\1\25""0\10\25""0\10\202\320q\202" + "\320q\23""3\3\23""3\3\30""1\1\0\0""7e\17""7e\17""5d\26""7e\17""5d\26" + "5d\26""5d\26""3b\24""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21" + "0_\21""0_\21""0_\21""3[\16/^\20""3[\16/^\20-\\\16-\\\16""2Z\15""2Z\15" + "0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24.W\23.W\23.W\23-V\22-" + "V\22-V\22""0R\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374.W\23.W\23""0Y\24\202\320q\202\320q0Y\24""2Z\15""2" + "Z\15\0\0\30>\10\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\34:\5\27""8\11" + "\31""9\13\34:\5\32""8\2\27""8\11\32""8\2\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4" + "\5\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\25""0\10\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10" + "\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\23""3\3\23""3\3\202\320q" + "\202\320q\30""1\1\24""4\5\24""4\5\0\0""7e\17""7e\17""7e\17""5d\26""5" + "d\26""7e\17""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""3" + "[\16""0_\21""0_\21""0_\21/^\20/^\20/^\20""0Y\24-\\\16-\\\16""2Z\15""0" + "Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15.W\23.W\23.W\23-V\22-V" + "\22-V\22-V\22*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T\16" + "*T\16-V\22-V\22.W\23.W\23.W\23""0Y\24""0Y\24""2Z\15\202\320q\202\320" + "q2Z\15""0Y\24-\\\16\0\0\30>\10\30>\10\30>\10\27=\7\27=\7\27=\7\31""9" + "\13\34:\5\34:\5\34:\5\31""9\13\31""9\13\31""9\13\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25" + "5\6\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3\23""3\3\30""1\1\23""3\3" + "\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\24.\5\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\23""3\3\23""3" + "\3\23""3\3\202\320q\202\320q\24""4\5\25""5\6\25""5\6\0\0""7e\17""5d\26" + "7e\17""7e\17""5d\26""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23" + "2a\23""0_\21""3[\16""0_\21""0_\21/^\20/^\20/^\20""3[\16""3[\16-\\\16" + "2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23" + ".W\23-V\22-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T\16""0R" + "\16*T\16-V\22-V\22-V\22""2Z\15.W\23""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15" + "\202\320q\202\320q-\\\16-\\\16/^\20\0\0\30>\10\30>\10\27=\7\27=\7\27" + "=\7\27""8\11\34:\5\34:\5\31""9\13\32""8\2\32""8\2\31""9\13\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25" + "5\6\25""5\6\24""4\5\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3" + "\23""3\3\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\226\240\217\226\240\217\226\240\217#>\27\25/\7\226\240\217" + "\226\240\217\226\240\217\226\240\217\226\240\217\226\240\217\227\241" + "\220\227\241\220\227\241\220\227\241\220\227\241\220\230\242\221\225" + "\245\214\230\242\221\23""3\3\30""1\1\23""3\3\202\320q\202\320q\25""5" + "\6\27""7\10\27""7\10\0\0""5d\26""5d\26""7e\17""5d\26""5d\26""3b\24""3" + "b\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""3[\16/" + "^\20/^\20""3[\16/^\20-\\\16""3[\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "2Z\15""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22*T\16*T\16*T" + "\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16\376\377\374\376\377" + "\374\376\377\374Po7*T\16\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\3740Y\24""0Y\24" + "2Z\15\202\320q\202\320q-\\\16/^\20/^\20\0\0\30>\10\27=\7\27=\7\27=\7" + "\27=\7\27""8\11\34:\5\34:\5\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5" + "\6\25""5\6\24""4\5\24""4\5\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\30" + "1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25/" + "\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5" + "\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\376\377\374\376\377\374\376\377\3744H\"\25/\7\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\23""3\3\24""4\5\24""4\5\202\320q\202\320q\27" + "7\10\27""7\10\25""5\6\0\0""5d\26""5d\26""5d\26""5d\26""3b\24""3b\24""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16""0_\21/^\20""3" + "[\16/^\20""3[\16-\\\16-\\\16""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22-V\22*T\16*T\16*T\16" + "0R\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16\376\377\374\376\377" + "\374\376\377\374Fj,*T\16\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\3742Z\15""0Y\24" + "-\\\16\202\320q\202\320q3[\16""3[\16""0_\21\0\0\27=\7\27=\7\27=\7\27" + "=\7\34:\5\31""9\13\34:\5\31""9\13\32""8\2\31""9\13\31""9\13\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5" + "\6\25""5\6\24""4\5\24""4\5\30""1\1\27""1\12\23""3\3\23""3\3\27""1\12" + "\23""3\3\27""1\12\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5" + "\24.\5\24.\5\25/\7\25/\7\376\377\374\376\377\374\376\377\3744H\"\25/" + "\7\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\24""4\5\25""5\6\25""5\6\202\320q\202" + "\320q\27""7\10\27""7\10\27""7\10\0\0""7e\17""5d\26""5d\26""3b\24""3b" + "\24""3b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21/^\20/^\20" + "0Y\24/^\20""3[\16/^\20""0Y\24-\\\16""2Z\15""2Z\15""0Y\24""0Y\24""2Z\15" + "0Y\24""0Y\24""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22-V\22*T\16""0R\16*T" + "\16*T\16""0R\16*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16""0R\16-V\22-V\22-V\22.W\23.W\23.W\23""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15-\\\16-\\\16\202\320q\202\320" + "q3[\16""0_\21""0_\21\0\0\27=\7\27=\7\27=\7\27""8\11\34:\5\27""8\11\31" + "9\13\32""8\2\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\23""3" + "\3\27""1\12\23""3\3\23""3\3\30""1\1\27""1\12\23""3\3\25""0\10\30""1\1" + "\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24" + ".\5\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\30""1\1\30" + "1\1\25""0\10\30""1\1\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\24""4" + "\5\24""4\5\24""4\5\25""5\6\27""7\10\202\320q\202\320q\27""7\10\27""7" + "\10\27""7\10\0\0""5d\26""5d\26""7e\17""3b\24""3b\24""3b\24""2a\23""2" + "a\23""2a\23""0_\21""0_\21""3[\16/^\20/^\20""3[\16/^\20/^\20""3[\16-\\" + "\16-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24.W\23.W\23.W\23-V\22-V\22-V\22-V\22*T\16*T\16*T\16""0R\16*T\16*T" + "\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16-V\22" + "-V\22-V\22.W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0" + "Y\24""0Y\24""2Z\15""3[\16/^\20/^\20\202\320q\202\320q3[\16""3[\16""0" + "_\21\0\0\27=\7\27=\7\34:\5\34:\5\34:\5\31""9\13\32""8\2\32""8\2\32""8" + "\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\25""5\6\25""5\6\24""4\5\24""4\5\23""3\3\27""1\12\23""3\3\23""3\3" + "\23""3\3\27""1\12\23""3\3\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\24.\5\24.\5\24.\5\24.\5\24.\5\24.\5\24" + ".\5\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\30""1\1\23""3\3" + "\30""1\1\23""3\3\27""1\12\23""3\3\23""3\3\24""4\5\25""5\6\25""5\6\27" + "7\10\27""7\10\27""7\10\202\320q\202\320q\27""7\10\27""7\10\32""8\2\0" + "\0""7e\17""5d\26""3b\24""3b\24""3b\24""2a\23""2a\23""2a\23""2a\23""0" + "_\21""3[\16""0_\21/^\20""3[\16""3[\16""3[\16/^\20-\\\16""0Y\24""2Z\15" + "2Z\15""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15.W\23.W\23.W\23" + "-V\22-V\22-V\22-V\22*T\16""0R\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T" + "\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16""0" + "R\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16""0R\16-V\22-V\22-V\22\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374/^\20/^\20/^\20\202\320q\202\320q0_\21""2a\23" + "2a\23\0\0\27=\7\34:\5\27""8\11\34:\5\34:\5\32""8\2\31""9\13\32""8\2\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25" + "5\6\25""5\6\24""4\5\24""4\5\23""3\3\30""1\1\23""3\3\30""1\1\23""3\3\23" + "3\3\27""1\12\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\30""1\1\25""0" + "\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25" + "0\10\25""0\10\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\27""7\10\27""7\10\27""7" + "\10\202\320q\202\320q\27""7\10\31""9\13\32""8\2\0\0""5d\26""3b\24""3" + "b\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21""3[\16/" + "^\20/^\20""3[\16/^\20-\\\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15" + "0Y\24""2Z\15""0Y\24""0Y\24.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22""0" + "R\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16""0R\16*T\16*T\16*T\16""0R\16" + "*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16" + "*T\16""0R\16-V\22-V\22-V\22-V\22.W\23\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "3[\16/^\20""0_\21\202\320q\202\320q2a\23""2a\23""3b\24\0\0\27=\7\34:" + "\5\27""8\11\34:\5\31""9\13\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6" + "\24""4\5\24""4\5\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\27""1" + "\12\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\25""0\10\30""1" + "\1\30""1\1\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\27""7\10\27""7\10\27""7\10\202" + "\320q\202\320q\32""8\2\32""8\2\31""9\13\0\0""3b\24""3b\24""3b\24""2a" + "\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21""0_\21/^\20""3[\16/^\20" + "/^\20-\\\16""3[\16""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""2Z\15""2" + "Z\15""0Y\24.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22*T\16*T\16*T\16*T" + "\16*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T" + "\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16-V\22-V\22" + "-V\22-V\22.W\23.W\23.W\23\240\264\224\240\264\224\240\264\224\240\264" + "\224\240\264\224\240\264\224\240\264\224\247\273\233\313\326\304\373" + "\375\372\376\377\374\376\377\374\263\303\251\242\266\226/^\20""0_\21" + "0_\21\202\320q\202\320q2a\23""3b\24""3b\24\0\0\34:\5\34:\5\31""9\13\32" + "8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\24""4\5\23""3" + "\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\25""0\10\30""1\1\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\23""3" + "\3\30""1\1\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\24""4\5\24""4\5:U" + ",\341\344\340\376\377\374\327\336\323&\77\23\27""7\10\27""7\10\27""7" + "\10\202\320q\202\320q\31""9\13\34:\5\34:\5\0\0""3b\24""3b\24""2a\23""2" + "a\23""2a\23""2a\23""0_\21""0_\21""0_\21""0_\21""3[\16/^\20/^\20/^\20" + "-\\\16""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24" + "2Z\15""0Y\24.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22*T\16*T\16*T\16*" + "T\16*T\16""0R\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16" + "*T\16*T\16""0R\16*T\16*T\16*T\16*T\16""0R\16*T\16-V\22-V\22-V\22-V\22" + ".W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24" + "0Y\24""2Z\15-\\\16-\\\16m\217[\376\377\374\376\377\374\236\257\2123[" + "\16""0_\21""2a\23\202\320q\202\320q3b\24""3b\24""7e\17\0\0\34:\5\34:" + "\5\31""9\13\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\24""4" + "\5\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\30""1\1\30" + "1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1" + "\1\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\24""4\5\24" + "4\5\25""5\6\25""5\6\27""7\10:U,\376\377\374\376\377\374\324\332\317\27" + "7\10\27""7\10\32""8\2\202\320q\202\320q\34:\5\31""9\13\27=\7\0\0""3b" + "\24""3b\24""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16""0_\21/^\20""3[" + "\16/^\20/^\20""3[\16-\\\16""0Y\24""2Z\15""2Z\15""0Y\24""2Z\15""2Z\15" + "0Y\24""2Z\15""0Y\24.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22" + "*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16" + "0R\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16-V\22-V\22-V\22-" + "V\22-V\22.W\23.W\23.W\23""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2" + "Z\15""2Z\15""2Z\15""3[\16-\\\16/^\20""3[\16\222\253\204\376\377\374\376" + "\377\374\366\370\3640_\21""2a\23""2a\23\202\320q\202\320q3b\24""5d\26" + "5d\26\0\0\34:\5\31""9\13\32""8\2\31""9\13\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5" + "\6\24""4\5\24""4\5\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\30" + "1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10" + "\30""1\1\30""1\1\30""1\1\30""1\1\23""3\3\27""1\12\230\242\221\230\242" + "\221\225\245\214\230\242\221\230\242\221\230\242\221\225\245\214\230" + "\242\221\243\256\234\310\317\304\376\377\374\376\377\374\376\377\374" + "\367\371\366\31""9\13\32""8\2\31""9\13\202\320q\202\320q\27""8\11\27" + "=\7\27=\7\0\0""3b\24""2a\23""2a\23""2a\23""0_\21""3[\16""0_\21""0_\21" + "3[\16""3[\16/^\20/^\20""3[\16-\\\16-\\\16""0Y\24""2Z\15""2Z\15""0Y\24" + "2Z\15""0Y\24""2Z\15""0Y\24""2Z\15.W\23.W\23.W\23.W\23-V\22-V\22-V\22" + "-V\22-V\22*T\16*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16-V\22-V\22-V" + "\22-V\22-V\22.W\23.W\23.W\23.W\23""2Z\15""0Y\24""0Y\24""0Y\24\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\336\344\3312a\23""2a\23""3b\24\202\320q\202\320q5d\26""5" + "d\26""7e\17\0\0\32""8\2\31""9\13\32""8\2\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6\24""4" + "\5\24""4\5\27""1\12\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\23" + "3\3\30""1\1\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0" + "\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1" + "\1\25""0\10\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\207\226~\32""8\2\31""9\13\34:\5\202\320q\202\320q\27=\7\30>\10\30" + ">\10\0\0""2a\23""2a\23""2a\23""0_\21""0_\21""3[\16""0_\21/^\20""3[\16" + "/^\20/^\20-\\\16""3[\16-\\\16""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y" + "\24""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22" + "-V\22*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16-V\22-V\22-V\22-V\22.W" + "\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\311\324\3025d\26""2a\23""3b\24""3b\24\202\320q\202\320q5d\26""7e\17" + "7e\17\0\0\27""8\11\32""8\2\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6\24""4\5\24""4" + "\5\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\30" + "1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\30""1\1\23""3" + "\3\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\373\375\372\355\357\353\302\311\276q\204f\35;\6\32""8\2" + "\27""8\11\34:\5\31""9\13\202\320q\202\320q\30>\10\30>\10\32\77\12\0\0" + "2a\23""2a\23""0_\21""0_\21""3[\16""0_\21""3[\16/^\20""3[\16/^\20-\\\16" + "3[\16-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0" + "Y\24""0Y\24.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22*T\16""0" + "R\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16" + "*T\16*T\16*T\16*T\16-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""3[\16" + "-\\\16/^\20""3[\16/^\20""3[\16/^\20""0_\21""0_\21""0_\21""2a\23""2a\23" + "3b\24""3b\24""5d\26\202\320q\202\320q7e\17""5d\26""9g\21\0\0\31""9\13" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\23""3\3\27""1\12\30""1\1" + "\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\25""0\10\25""0\10\30""1\1\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\23""3\3\23""3\3\30""1" + "\1\23""3\3\23""3\3\30""1\1\23""3\3\24""4\5\24""4\5\25""5\6\25""5\6\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31" + "9\13\32""8\2\31""9\13\34:\5\34:\5\27=\7\202\320q\202\320q\30>\10\32\77" + "\12\32\77\12\0\0""2a\23""0_\21""0_\21""0_\21""0_\21/^\20/^\20/^\20""3" + "[\16-\\\16-\\\16-\\\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y" + "\24""2Z\15""0Y\24""2Z\15.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22" + "-V\22*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16" + "*T\16*T\16""0R\16*T\16""0R\16-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23" + ".W\23.W\23""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2" + "Z\15""0Y\24-\\\16-\\\16/^\20/^\20""3[\16""3[\16""3[\16""0_\21""0_\21" + "0_\21""2a\23""2a\23""3b\24""3b\24""3b\24""7e\17\202\320q\202\320q7e\17" + "9g\21""9g\21\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6\24""4\5\23""3\3\23" + "3\3\23""3\3\23""3\3\27""1\12\30""1\1\23""3\3\23""3\3\25""0\10\30""1\1" + "\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\30""1\1\27""1\12" + "\23""3\3\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\24""4\5\24""4\5\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\32""8\2\31""9\13\34:\5\27""8\11\34:\5\27=\7\27=\7\202\320" + "q\202\320q\32\77\12\32\77\12\32\77\12\0\0""0_\21""0_\21""3[\16""0_\21" + "/^\20/^\20""3[\16/^\20""0Y\24-\\\16-\\\16""0Y\24""2Z\15""0Y\24""2Z\15" + "0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23.W\23.W\23-V\22" + "-V\22-V\22-V\22-V\22*T\16*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16""0R\16*T\16*T\16-V\22-V\22-V\22-V\22-V\22-V\22-V" + "\22.W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""2Z\15""0Y\24""2Z\15""3[\16/^\20""3[\16/^\20""3[\16""4c\25\221\252" + "\202\336\344\331\371\373\370\361\363\360\316\327\277p\217V3b\24""3b\24" + "3b\24""5d\26""7e\17\202\320q\202\320q9g\21""5k\24""4j\23\0\0\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5" + "\6\25""5\6\24""4\5\24""4\5\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3" + "\23""3\3\27""1\12\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10\30""1\1\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25/\7\25/\7\25/\7\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1" + "\1\30""1\1\30""1\1\25""0\10\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3" + "\27""1\12\23""3\3\30""1\1\33;\15\216\235\205\331\343\336\371\373\370" + "\356\360\355\252\265\2434H\"\31""9\13\270\306\271\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374|\217p\34:\5\27=" + "\7\27=\7\30>\10\202\320q\202\320q\32\77\12\32\77\12\36B\5\0\0""0_\21" + "3[\16""0_\21""3[\16/^\20""3[\16/^\20-\\\16""3[\16""3[\16""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24.W\23.W\23.W\23" + ".W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22""0R\16*T\16*T\16*T\16*T\16*" + "T\16*T\16*T\16*T\16*T\16""0R\16*T\16""0R\16*T\16-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""2Z\15" + "0Y\24""0Y\24""0Y\24""3[\16\305\320\276\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\341\347\334\221\252\202\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\371\373\370Nw15d\26""7e\17""7e\17\202\320q\202\320q4j\23""9g\21""4j" + "\23\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10" + "\25""5\6\25""5\6\25""5\6\24""4\5\23""3\3\30""1\1\23""3\3\27""1\12\23" + "3\3\27""1\12\23""3\3\23""3\3\27""1\12\30""1\1\25""0\10\30""1\1\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7" + "\25/\7\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10" + "\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\27""1\12\23""3\3\23""3\3\27" + "1\12\23""3\3\23""3\3\23""3\3\24""4\5]pS\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\373\375\372\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\212\240\206\27=\7\27=\7\30>\10\202\320q\202" + "\320q\32\77\12\32\77\12\32\77\12\0\0""3[\16/^\20/^\20""3[\16/^\20""3" + "[\16-\\\16-\\\16""0Y\24""2Z\15""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22*T\16*T\16*T\16*T\16*T\16*T\16""0R\16*T\16*T\16*" + "T\16-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""2Z\15\263\303" + "\251\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\311\321\271" + "\247\273\233\321\334\312\376\377\374\376\377\374\376\377\374\316\331" + "\3077e\17""7e\17""7e\17\202\320q\202\320q5k\24""9g\21""5k\24\0\0\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6\25""5" + "\6\24""4\5\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3" + "\27""1\12\27""1\12\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25/\7" + "\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\30" + "1\1\25""0\10\30""1\1\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12" + "\23""3\3\23""3\3\24""4\5\24""4\5\341\344\340\376\377\374\376\377\374" + "\371\373\370\252\265\243\252\265\243\370\372\367\376\377\374\376\377" + "\374\376\377\374\216\235\205\31""9\13\32""8\2\31""9\13\252\265\243\376" + "\377\374\376\377\374\352\354\351\30>\10\30>\10\30>\10\202\320q\202\320" + "q\36B\5\32\77\12\36B\5\0\0""0_\21""3[\16/^\20""3[\16""3[\16-\\\16""3" + "[\16""3[\16""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22*T\16""0R\16*T\16*T\16*T\16*T\16*T\16*T\16-V\22-V\22-" + "V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23""2Z\15""0Y\24" + "2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15\361\363" + "\360\376\377\374\376\377\374\213\241u3[\16/^\20\203\240s\376\377\374" + "\376\377\374\376\377\374Jt.2a\23""2a\23""3b\24b\207G\376\377\374\376" + "\377\374\371\373\3707e\17""5d\26""7f\30\202\320q\202\320q5k\24""9g\21" + "5k\24\0\0\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\25""5\6\25""5" + "\6\24""4\5\24""4\5\24""4\5\27""1\12\23""3\3\23""3\3\23""3\3\30""1\1\23" + "3\3\27""1\12\23""3\3\25""0\10\25""0\10\30""1\1\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25/\7\25/\7\25/\7\25/\7\25/\7\25/\7\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25" + "0\10\30""1\1\25""0\10\23""3\3\30""1\1\23""3\3\30""1\1\23""3\3\30""1\1" + "\23""3\3\23""3\3\23""3\3\24""4\5\24""4\5\25""5\6\373\375\372\376\377" + "\374\376\377\374:U,\27""7\10\27""7\10:U,\376\377\374\376\377\374\376" + "\377\374\35;\6\31""9\13\34:\5\34:\5""8S*\376\377\374\376\377\374\376" + "\377\374\30>\10\30>\10\32\77\12\202\320q\202\320q\32\77\12\32\77\12\36" + "B\5\0\0/^\20/^\20/^\20""3[\16-\\\16""0Y\24-\\\16""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23.W\23" + ".W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22""0R\16*T\16*" + "T\16*T\16*T\16-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23" + ".W\23.W\23.W\23.W\23""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24" + "2Z\15""0Y\24""2Z\15""0Y\24-\\\16\376\377\374\376\377\374\376\377\374" + "Mq23[\16""0_\21Jt.\376\377\374\376\377\374\376\377\3742a\23""2a\23""3" + "b\24""3b\24Nw1\376\377\374\376\377\374\376\377\3747e\17""7f\30""9g\21" + "\202\320q\202\320q5k\24""9g\21""5k\24\0\0\27""7\10\27""7\10\27""7\10" + "\27""7\10\25""5\6\25""5\6\24""4\5\24""4\5\30""1\1\27""1\12\23""3\3\27" + "1\12\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\30""1\1\25""0\10\25""0" + "\10\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\30""1\1\25""0\10\25""0\10\30""1\1\30""1\1\23""3" + "\3\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3\24" + "4\5\25""5\6\25""5\6\25""5\6\376\377\374\376\377\374\376\377\3744O'\27" + "7\10\27""7\10""5P(\376\377\374\376\377\374\376\377\374\32""8\2\34:\5" + "\34:\5\34:\5""5U%\376\377\374\376\377\374\376\377\374\30>\10\32\77\12" + "\32\77\12\202\320q\202\320q\36B\5\32\77\12\36B\5\0\0""3[\16/^\20/^\20" + "0Y\24-\\\16-\\\16""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23""2Z\15""0Y\24" + "2Z\15""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""3[\16-\\\16""3" + "[\16\376\377\374\376\377\374\376\377\374\261\276\237\242\266\226\242" + "\266\226\261\276\237\376\377\374\376\377\374\376\377\374\244\270\230" + "\247\271\223\244\270\230\247\271\223\255\302\241\376\377\374\376\377" + "\374\376\377\3745d\26""7f\30""5k\24\202\320q\202\320q4j\23""4j\23""5" + "k\24\0\0\27""7\10\27""7\10\25""5\6\25""5\6\25""5\6\24""4\5\24""4\5\23" + "3\3\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12" + "\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\30" + "1\1\25""0\10\30""1\1\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3" + "\23""3\3\23""3\3\23""3\3\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\32\77\12\32\77\12\32\77\12\202\320q\202\320q\36B\5\32\77\12" + "\36B\5\0\0""0Y\24/^\20""3[\16-\\\16""3[\16""2Z\15""2Z\15""2Z\15""2Z\15" + "0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23.W\23.W\23." + "W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + ".W\23""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15" + "2Z\15""0Y\24-\\\16""3[\16-\\\16/^\20\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\3747f\30""5k\24""9g\21\202" + "\320q\202\320q5k\24""4j\23""9g\21\0\0\27""7\10\25""5\6\25""5\6\25""5" + "\6\24""4\5\24""4\5\30""1\1\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\30" + "1\1\23""3\3\27""1\12\23""3\3\30""1\1\25""0\10\25""0\10\30""1\1\30""1" + "\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30" + "1\1\25""0\10\30""1\1\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3" + "\23""3\3\23""3\3\23""3\3\30""1\1\24""4\5\24""4\5\24""4\5\25""5\6\25""5" + "\6\27""7\10\27""7\10\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\32\77\12\36B\5\32\77\12\202\320q\202" + "\320q\36B\5\32\77\12\32\77\12\0\0-\\\16-\\\16""3[\16""2Z\15""0Y\24""2" + "Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24." + "W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23" + ".W\23.W\23.W\23.W\23.W\23""2Z\15""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2" + "Z\15""0Y\24""2Z\15""2Z\15""2Z\15""0Y\24-\\\16""3[\16/^\20""3[\16\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\3747f\30""4j\23""9g\21\202\320q\202\320q9g\21""9g\21""9g\21\0\0" + "\25""5\6\25""5\6\24""4\5\24""4\5\24""4\5\27""1\12\23""3\3\27""1\12\30" + "1\1\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\25""0\10\30""1\1\25""0\10" + "\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\23""3\3" + "\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\24""4\5\24" + "4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\32""8\2\31""9\13\34:" + "\5\34:\5\27""8\11\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\32\77\12\202\320q\202\320q\32\77\12\32\77\12\32\77\12\0\0-\\\16" + "2Z\15""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24.W\23.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-" + "V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22.W\23""2Z\15.W\23.W\23.W\23""2Z\15""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15-\\\16""0Y\24-\\\16""3" + "[\16/^\20/^\20""3[\16/^\20""3[\16""0_\21""3[\16""0_\21""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""7e\17""5d\26" + "9g\21""4j\23""5k\24""9g\21\202\320q\202\320q4j\23""9g\21""5k\24\0\0\25" + "5\6\24""4\5\24""4\5\24""4\5\23""3\3\23""3\3\27""1\12\30""1\1\23""3\3" + "\23""3\3\27""1\12\23""3\3\23""3\3\25""0\10\30""1\1\30""1\1\30""1\1\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30" + "1\1\30""1\1\30""1\1\30""1\1\30""1\1\30""1\1\23""3\3\23""3\3\23""3\3\27" + "1\12\30""1\1\23""3\3\23""3\3\27""1\12\24""4\5\24""4\5\25""5\6\25""5\6" + "\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\31""9\13\31""9\13\32""8\2\27""8\11\34:\5\31""9" + "\13\27=\7\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5" + "\32\77\12\202\320q\202\320q\32\77\12\32\77\12\36B\5\0\0-\\\16""0Y\24" + "2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24" + "2Z\15.W\23""2Z\15.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-" + "V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + ".W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0" + "Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24-\\\16""3[\16/^\20""3[" + "\16/^\20""3[\16""3[\16""0_\21""3[\16""0_\21""0_\21""2a\23""2a\23""2a" + "\23""2a\23""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""7e\17""7e\17""7" + "f\30""9g\21""9g\21""5k\24""9g\21\202\320q\202\320q4j\23""9g\21""5k\24" + "\0\0\25""5\6\24""4\5\24""4\5\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3" + "\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\25""0\10\30""1\1\30""1\1\25" + "0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\25" + "0\10\25""0\10\30""1\1\25""0\10\25""0\10\23""3\3\30""1\1\23""3\3\23""3" + "\3\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\27""8\11q\204f\304\313\300\356\360\355" + "\373\375\372\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\32\77\12\32\77\12\36B\5\202" + "\320q\202\320q\36B\5\32\77\12\32\77\12\0\0""0Y\24""2Z\15""0Y\24""0Y\24" + "0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15.W\23.W\23.W\23" + ".W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23" + ".W\23""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24" + "0Y\24""2Z\15""2Z\15""3[\16-\\\16/^\20""3[\16/^\20""0Y\24""3[\16""0_\21" + "3[\16""0_\21""0_\21""2a\23""5d\26\311\321\271\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\3749g\21""5k\24""4j" + "\23\202\320q\202\320q4j\23""9g\21""4j\23\0\0\24""4\5\27""1\12\23""3\3" + "\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\23""3\3\30" + "1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\27""1" + "\12\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3" + "\27""1\12\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\210" + "\227\177\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\32\77\12\32\77\12\36B\5\202\320q\202\320" + "q\32\77\12\32\77\12\36B\5\0\0""2Z\15""0Y\24""2Z\15""2Z\15""0Y\24""0Y" + "\24""0Y\24""2Z\15""0Y\24""0Y\24.W\23.W\23.W\23.W\23.W\23.W\23.W\23-V" + "\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0" + "Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""3" + "[\16-\\\16-\\\16/^\20/^\20/^\20/^\20""3[\16""0_\21""3[\16""0_\21""3[" + "\16""2a\23""2a\23\336\344\331\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\3744j\23""9g\21""4j\23\202" + "\320q\202\320q9g\21""4j\23""4j\23\0\0\23""3\3\30""1\1\23""3\3\23""3\3" + "\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\25""0\10\30""1\1\25" + "0\10\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30" + "1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\27""1\12\23""3\3\30""1" + "\1\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\24""4\5" + "\24""4\5\24""4\5\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\367\371" + "\366\376\377\374\376\377\374\376\377\374\306\315\302\236\261\235\236" + "\261\235\230\247\216\231\250\217\231\250\217\231\250\217\231\250\217" + "\232\251\220\231\250\217\32\77\12\32\77\12\32\77\12\202\320q\202\320" + "q\32\77\12\32\77\12\32\77\12\0\0""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24.W\23.W\23""2Z\15.W\23.W\23.W\23-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""2Z\15""0Y" + "\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2" + "Z\15""0Y\24-\\\16/^\20""3[\16/^\20/^\20/^\20""3[\16""0_\21""0_\21""0" + "_\21""0_\21""2a\23""2a\23\366\370\364\376\377\374\376\377\374\222\253" + "\2045d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""7f\30""4j\23""9" + "g\21""5k\24""9g\21""4j\23\202\320q\202\320q9g\21""4j\23""9g\21\0\0\27" + "1\12\23""3\3\30""1\1\23""3\3\23""3\3\27""1\12\27""1\12\23""3\3\23""3" + "\3\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\30""1\1\25""0\10\25""0\10\30""1\1\30""1\1\30""1\1\25""0" + "\10\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\27""1\12\27""1\12\23""3" + "\3\30""1\1\30""1\1\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32" + "8\2\32""8\2\31""9\13\321\327\314\376\377\374\376\377\374\10\30>\10\32\77\12\32\77\12\32\77\12\36B\5\32\77" + "\12\32\77\12\32\77\12\202\320q\202\320q\32\77\12\32\77\12\32\77\12\0" + "\0""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y" + "\24""0Y\24""2Z\15""0Y\24-\\\16-\\\16""0Y\24/^\20""3[\16/^\20""3[\16/" + "^\20""0_\21""3[\16""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23\227\260" + "\210\376\377\374\376\377\374r\224`5d\26""5d\26""5d\26""5d\26""7e\17""5" + "d\26""9g\21""9g\21""4j\23""4j\23""9g\21""5k\24""9g\21\202\320q\202\320" + "q5k\24""9g\21""5k\24\0\0\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\27" + "1\12\23""3\3\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\25""0" + "\10\30""1\1\25""0\10\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3\23""3\3" + "\27""1\12\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25" + "5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\32""8\2\32""8\2\31""9\13\31""9\13\"B\24\327\336\323\376" + "\377\374\345\347\344@[2\27=\7\27=\7\30>\10\30>\10\32\77\12\32\77\12\32" + "\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\202\320q\202\320" + "q\32\77\12\36B\5\32\77\12\0\0""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y" + "\24""0Y\24.W\23.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + ".W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24-\\\16/^" + "\20""3[\16/^\20/^\20""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23" + "2a\23""2a\23""3b\24\244\270\230\266\304\244\376\377\374\376\377\374\373" + "\375\372\316\331\307\254\300\237\244\270\230\242\273\223\247\271\223" + "\247\271\223\243\274\224\247\271\223\243\274\2244j\23""9g\21""9g\21\202" + "\320q\202\320q9g\21""4j\23""4j\23\0\0\23""3\3\30""1\1\27""1\12\23""3" + "\3\23""3\3\27""1\12\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\30""1\1" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\30""1\1\30""1" + "\1\30""1\1\30""1\1\27""1\12\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3" + "\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\24""4\5\24""4\5\24""4\5\25" + "5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\34:\5\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\36B\5\32\77\12\32\77\12\202\320q\202\320q\32" + "\77\12\32\77\12\36B\5\0\0""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24." + "W\23.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23" + ".W\23.W\23.W\23""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z" + "\15""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""3[\16/^\20/^\20" + "/^\20""3[\16/^\20""0_\21""3[\16""0_\21""0_\21""3[\16""2a\23""2a\23""2" + "a\23""2a\23""3b\24\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\3744j\23""5k\24""9g\21\202" + "\320q\202\320q5k\24""9g\21""4j\23\0\0\27""1\12\23""3\3\30""1\1\23""3" + "\3\27""1\12\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10" + "\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1" + "\1\30""1\1\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3" + "\23""3\3\30""1\1\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5" + "\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\31""9\13\34:\5\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\32\77\12\36B\5\32\77\12\202\320q\202\320q\32" + "\77\12\32\77\12\32\77\12\0\0""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z" + "\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""3[\16-\\\16/^\20/^\20""3[\16" + "/^\20/^\20""3[\16""0_\21""0_\21""3[\16""0_\21""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\3744j\23""5k\24""9g\21\202" + "\320q\202\320q4j\23""9g\21""5k\24\0\0\23""3\3\23""3\3\23""3\3\27""1\12" + "\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\25""0" + "\10\23""3\3\23""3\3\30""1\1\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\27" + "1\12\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\31""9\13\32""8\2\32""8\2\34:\5\34:\5\31""9\13\34:\5\27=" + "\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\202\320q\202\320" + "q\36B\5\32\77\12\32\77\12\0\0""0Y\24""2Z\15""0Y\24.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24" + "2Z\15""2Z\15""0Y\24""0Y\24""3[\16-\\\16/^\20/^\20/^\20""3[\16/^\20/^" + "\20""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""3b\24""3" + "b\24""3b\24""3b\24""7e\17""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21""9" + "g\21""4j\23""9g\21""9g\21""5k\24""5k\24""9g\21""4j\23""9g\21\202\320" + "q\202\320q4j\23""5k\24""4j\23\0\0\23""3\3\30""1\1\30""1\1\25""0\10\30" + "1\1\25""0\10\30""1\1\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25" + "0\10\30""1\1\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\23""3\3\27""1\12" + "\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\30""1\1\27""1\12\23""3\3\23" + "3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31""9" + "\13\32""8\2\32""8\2\31""9\13\31""9\13\34:\5\34:\5\27""8\11\27=\7\27=" + "\7\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\32\77\12\36B\5\32\77\12\36B\5\32\77\12\202\320q\202\320q\32\77\12" + "\32\77\12\36B\5\0\0""2Z\15""0Y\24.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + ".W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24" + "0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15" + "2Z\15""0Y\24-\\\16""0Y\24/^\20/^\20""3[\16/^\20""3[\16/^\20/^\20""0_" + "\21""0_\21""0_\21""3[\16""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3" + "b\24""5d\26""5d\26""7e\17""5d\26W\201:\210\245w\231\262\213\247\271\223" + "Cr$5k\24""4j\23""4j\23""9g\21""5k\24""5k\24""4j\23""4j\23\202\320q\202" + "\320q9g\21""4j\23""5k\24\0\0\23""3\3\23""3\3\30""1\1\25""0\10\30""1\1" + "\30""1\1\30""1\1\25""0\10\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25" + "0\10\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\27""1\12\23""3\3\23""3" + "\3\30""1\1\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\30""1\1\24""4\5\24" + "4\5\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\31" + "9\13\32""8\2\31""9\13\34:\5\27""8\11\34:\5\34:\5\27=\7\27=\7C^5\313\321" + "\306\376\377\374\376\377\374\376\377\374\376\377\3747W(r\212e\376\377" + "\374\376\377\374\341\347\334\33A\14\32\77\12\36B\5\32\77\12\202\320q" + "\202\320q\32\77\12\32\77\12\36B\5\0\0""0Y\24.W\23.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23""2" + "Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24-\\\16""3[\16-\\\16""3[\16/^\20""3[\16/^\20""3[\16" + "/^\20""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""3b\24" + "3b\24""3b\24""3b\24""3b\24""5d\26c\210H\366\370\364\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374Nw1Cr$\364\367\363\376\377\374" + "\376\377\374h\214L4j\23""5k\24""9g\21\202\320q\202\320q9g\21""4j\23""9" + "g\21\0\0\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25" + "0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1" + "\1\25""0\10\23""3\3\23""3\3\27""1\12\30""1\1\27""1\12\23""3\3\23""3\3" + "\23""3\3\23""3\3\27""1\12\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25" + "5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\32""8\2\27""8\11\34" + ":\5\27""8\11\34:\5\34:\5'E\20\350\352\347\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\3747W(\32\77\12\262\275\253" + "\376\377\374\376\377\374\217\245\213\36B\5\32\77\12\32\77\12\202\320" + "q\202\320q\32\77\12\36B\5\32\77\12\0\0.W\23.W\23.W\23.W\23.W\23.W\23" + ".W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""2" + "Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""2" + "Z\15""0Y\24""0Y\24-\\\16-\\\16-\\\16""3[\16/^\20""3[\16/^\20/^\20/^\20" + "0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24" + "3b\24""3b\24""5d\26\221\247{\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374N}/9g\21\210\243p\376\377" + "\374\376\377\374\316\327\2779g\21""4j\23""9g\21\202\320q\202\320q5k\24" + "5k\24""4j\23\0\0\30""1\1\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\30" + "1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\30""1\1\25""0" + "\10\25""0\10\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3\27""1\12\30""1" + "\1\23""3\3\23""3\3\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25" + "5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\32""8\2\32""8\2\34:" + "\5\27""8\11\34:\5\34:\5\27=\7\310\317\304\376\377\374\376\377\374\324" + "\332\3173S$\376\377\374\376\377\374\376\377\3747W(\36B\5Ok@\376\377\374" + "\376\377\374\347\351\346\36B\5\32\77\12\32\77\12\202\320q\202\320q\32" + "\77\12\36B\5\32\77\12\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23""2Z\15.W\23""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15" + "3[\16-\\\16-\\\16""3[\16/^\20""3[\16/^\20/^\20/^\20""0_\21""0_\21""0" + "_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5" + "d\26""5d\26\360\362\357\376\377\374\376\377\374s\222Y7e\17\376\377\374" + "\376\377\374\376\377\374V\17794j\23V\1779\376\377\374\376\377\374\370" + "\372\3675k\24""9g\21""5k\24\202\320q\202\320q9g\21""5k\24""9g\21\0\0" + "\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\25" + "0\10\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\23""3\3\23""3\3\23""3\3" + "\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\24""4" + "\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\31""9\13\32""8\2\32""8\2\31""9\13\34:\5\27""8\11\34:\5\34:\5\27=" + "\7\27=\7\372\374\371\376\377\374\376\377\3749Y)\32\77\12\376\377\374" + "\376\377\374\376\377\3747W(\32\77\12\77_/\376\377\374\376\377\374\371" + "\373\370\32\77\12\32\77\12\36B\5\202\320q\202\320q\32\77\12\32\77\12" + "\32\77\12\0\0.W\23.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15" + "0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""2Z\15""0Y\24-\\\16-\\\16""3" + "[\16/^\20/^\20/^\20""3[\16""3[\16""0_\21""0_\21""0_\21""0_\21""3[\16" + "2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26" + "5d\26\361\363\360\376\377\374\376\377\374d\211I9g\21\376\377\374\376" + "\377\374\376\377\374N}/4j\23|\234b\376\377\374\376\377\374\355\357\353" + "5k\24""9g\21""4j\23\202\320q\202\320q5k\24""9g\21""5k\24\0\0\30""1\1" + "\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1" + "\1\30""1\1\25""0\10\30""1\1\25""0\10\27""1\12\23""3\3\27""1\12\23""3" + "\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\30""1\1\24" + "4\5\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\31" + "9\13\32""8\2\27""8\11\32""8\2\34:\5\31""9\13\27""8\11\34:\5\27=\7\27" + "=\7\27=\7\321\327\314\376\377\374\376\377\374\236\261\235\32\77\12\376" + "\377\374\376\377\374\376\377\3747V\40\40E\20\324\332\317\376\377\374" + "\376\377\374\313\321\306\36B\5\32\77\12\32\77\12\202\320q\202\320q\32" + "\77\12\32\77\12\32\77\12\0\0.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""3[\16" + "0Y\24-\\\16/^\20/^\20""3[\16/^\20""3[\16/^\20""0_\21""0_\21""0_\21""0" + "_\21""2a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7" + "e\17""5d\26""5d\26\240\271\221\376\377\374\376\377\374\376\377\374\261" + "\306\245\376\377\374\376\377\374\376\377\374\240\271\221\341\347\334" + "\376\377\374\376\377\374\376\377\374\233\264\2155k\24""4j\23""9g\21\202" + "\320q\202\320q4j\23""9g\21""4j\23\0\0\30""1\1\30""1\1\30""1\1\25""0\10" + "\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\25" + "0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\25""0" + "\10\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3" + "\27""1\12\23""3\3\23""3\3\27""1\12\24""4\5\24""4\5\24""4\5\25""5\6\25" + "5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\31""9\13\31" + "9\13\34:\5\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7""9Y)\373\375\372\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\372\374\3717V\40\32" + "\77\12\32\77\12\32\77\12\202\320q\202\320q\32\77\12\32\77\12\32\77\12" + "\0\0.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + "0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24" + "0Y\24""2Z\15""2Z\15""0Y\24""3[\16-\\\16-\\\16""3[\16/^\20""0Y\24""3[" + "\16/^\20/^\20""0_\21""0_\21""0_\21""3[\16""0_\21""0_\21""2a\23""2a\23" + "2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""7e\17""5d\26" + "5d\26\231\262\213\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\232\261\2049g\21""9g\21""4j\23""9g\21\202\320q\202\320q5k\24""9g\21" + "9g\21\0\0\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1\1\30""1\1\25""0" + "\10\30""1\1\30""1\1\25""0\10\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3" + "\30""1\1\23""3\3\30""1\1\23""3\3\30""1\1\23""3\3\23""3\3\24""4\5\30""1" + "\1\24""4\5\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8" + "\2\32""8\2\31""9\13\32""8\2\27""8\11\34:\5\27""8\11\34:\5\27=\7\27=\7" + "\27=\7\27=\7\27=\7\30>\10\32\77\12\234\253\222\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\234\253\222\36B\5\32\77\12\32\77\12\36B\5\32\77\12\202\320q\202" + "\320q\36B\5\32\77\12\32\77\12\0\0.W\23.W\23.W\23.W\23-V\22-V\22-V\22" + "-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""2" + "Z\15""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""2Z\15-\\\16""0Y\24-\\" + "\16""3[\16""3[\16/^\20/^\20""3[\16/^\20""0_\21""0_\21""0_\21""0_\21""0" + "_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5" + "d\26""7e\17""5d\26""5d\26""5d\26""5d\26""7e\17""9g\21c\210H\264\310\247" + "\345\354\341\372\374\371\372\374\371\345\354\341\266\304\244`\214J5k" + "\24""4j\23""4j\23""5k\24""9g\21""4j\23\202\320q\202\320q4j\23""5k\24" + "9g\21\0\0\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10" + "\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1" + "\1\30""1\1\25""0\10\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3" + "\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\24""4\5\24""4\5\25" + "5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\32" + "8\2\31""9\13\32""8\2\31""9\13\34:\5\31""9\13\34:\5\27""8\11\27=\7\27" + "=\7\35;\6\27=\7\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12Nj\77" + "\32\77\12\36B\5\32\77\12\202\320q\202\320q\32\77\12\36B\5\32\77\12\0" + "\0.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-V\22-" + "V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23""2Z\15.W\23""0Y\24""0Y\24" + "2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24" + "2Z\15""2Z\15""2Z\15-\\\16""3[\16-\\\16/^\20""3[\16/^\20""3[\16/^\20/" + "^\20/^\20""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26p\217V5d\26""5d\26""7e" + "\17""5d\26""7e\17""9g\21""9g\21""9g\21""5k\24""9g\21""5k\24""9g\21""4" + "j\23""9g\21""4j\23c\210H\363\365\3629g\21""4j\23""4j\23\202\320q\202" + "\320q9g\21""5k\24""9g\21\0\0\30""1\1\25""0\10\30""1\1\25""0\10\25""0" + "\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\25" + "0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\30""1" + "\1\30""1\1\25""0\10\30""1\1\27""1\12\23""3\3\27""1\12\23""3\3\30""1\1" + "\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\23""3\3\30""1\1\24""4\5\24""4" + "\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8" + "\2\31""9\13\31""9\13\32""8\2\31""9\13\27""8\11\34:\5\34:\5\34:\5\27=" + "\7\27=\7\367\371\366QpJ\30>\10\30>\10\30>\10\32\77\12\32\77\12\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12Ef" + "5\360\362\357\376\377\374\32\77\12\32\77\12\36B\5\202\320q\202\320q\32" + "\77\12\32\77\12\32\77\12\0\0.W\23.W\23.W\23""2Z\15-V\22-V\22-V\22-V\22" + "-V\22-V\22-V\22.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + ".W\23""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15" + "0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15-\\\16""3[\16""0Y\24/^\20""3" + "[\16/^\20""0Y\24""3[\16/^\20""0_\21""0_\21""0_\21""0_\21""0_\21""0_\21" + "2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""7e\17" + "5d\26\376\377\374\367\371\366d\211I7e\17""5d\26""7f\30""9g\21""9g\21" + "5k\24""9g\21""5k\24""9g\21""5k\24""9g\21[\205>\363\362\351\376\377\374" + "\376\377\3749g\21""5k\24""4j\23\202\320q\202\320q4j\23""5k\24""4j\23" + "\0\0\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10\25""0\10\25""0" + "\10\25""0\10\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\30""1" + "\1\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1" + "\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3\27""1\12\23""3\3\27" + "1\12\23""3\3\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\32""8\2\34:" + "\5\27""8\11\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\376\377\374\376\377\374" + "\363\365\362Lh=\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12" + "\32\77\12\32\77\12\32\77\12\77_/\355\357\353\376\377\374\376\377\374" + "\376\377\374\32\77\12\36B\5\32\77\12\202\320q\202\320q\36B\5\32\77\12" + "\36B\5\0\0.W\23.W\23.W\23.W\23.W\23-V\22-V\22-V\22-V\22.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""2Z\15""0Y" + "\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2" + "Z\15""2Z\15""0Y\24""3[\16""3[\16-\\\16""3[\16/^\20""3[\16/^\20""3[\16" + "3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23" + "2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26\376\377" + "\374\376\377\374\376\377\374\364\367\363b\207G9g\21""7f\30""5k\24""9" + "g\21""9g\21""4j\23""9g\21V\1779\355\357\353\376\377\374\376\377\374\376" + "\377\374\376\377\3745k\24""4j\23""4j\23\202\320q\202\320q9g\21""5k\24" + "5k\24\0\0\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1" + "\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\25""0\10" + "\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\23""3\3\27""1\12\23""3\3\23" + "3\3\23""3\3\23""3\3\27""1\12\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3" + "\27""1\12\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\31""9\13\32""8\2\31""9\13\34:\5\34:\5" + "\27""8\11\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\363\365\362\376\377\374" + "\376\377\374\376\377\374\360\362\357C^5\32\77\12\32\77\12\32\77\12\32" + "\77\12\36B\5;[+\337\351\344\376\377\374\376\377\374\376\377\374\376\377" + "\374\270\303\261\36B\5\32\77\12\36B\5\202\320q\202\320q\32\77\12\32\77" + "\12\36B\5\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""2Z\15.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23""2Z\15.W\23.W\23.W\23""0Y\24""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24-\\\16""3[\16-\\\16/^\20/^\20""3[\16/^\20/^\20""3" + "[\16/^\20""3[\16""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""2" + "a\23""3b\24""3b\24""3b\24""3b\24""7e\17""5d\26""5d\26""7e\17""7e\17h" + "\214L\370\372\367\376\377\374\376\377\374\376\377\374\360\362\357Y\203" + "<9g\21""4j\23""9g\21T{/\347\356\343\376\377\374\376\377\374\376\377\374" + "\376\377\374\303\323\271@m\30""9g\21""5k\24""4j\23\202\320q\202\320q" + "4j\23""9g\21""4j\23\0\0\25""0\10\30""1\1\25""0\10\30""1\1\30""1\1\25" + "0\10\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\25""0\10\30""1\1\30""1" + "\1\30""1\1\25""0\10\30""1\1\25""0\10\30""1\1\27""1\12\23""3\3\23""3\3" + "\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\23""3\3\27""1\12\23""3\3\23" + "3\3\30""1\1\23""3\3\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\32""8\2\31""9\13\32""8\2\34:\5\34:\5\34" + ":\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10YpL\367\371\366" + "\376\377\374\376\377\374\376\377\374\355\357\353\77_/\32\77\12""7V\40" + "\337\351\344\376\377\374\376\377\374\376\377\374\376\377\374\277\313" + "\270\40E\20\32\77\12\36B\5\32\77\12\32\77\12\202\320q\202\320q\32\77" + "\12\32\77\12\36B\5\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23." + "W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""2Z\15""0" + "Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15-\\\16-\\\16""3[\16/^\20/^\20""3[\16/^\20/^" + "\20/^\20""0_\21""0_\21""0_\21""0_\21""0_\21""3[\16""2a\23""2a\23""2a" + "\23""2a\23""3b\24""3b\24""3b\24""3b\24""7e\17""7e\17""5d\26""7e\17""7" + "e\17""5d\26""7e\17""7e\17s\222Y\371\373\370\376\377\374\376\377\374\376" + "\377\374\352\361\346j\217N\344\353\340\376\377\374\376\377\374\376\377" + "\374\376\377\374\313\326\304@m\30""9g\21""5k\24""9g\21""4j\23""4j\23" + "\202\320q\202\320q4j\23""9g\21""4j\23\0\0\30""1\1\30""1\1\25""0\10\30" + "1\1\30""1\1\25""0\10\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\30""1\1" + "\25""0\10\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\23""3\3\23" + "3\3\23""3\3\23""3\3\30""1\1\30""1\1\23""3\3\30""1\1\23""3\3\23""3\3\23" + "3\3\23""3\3\24""4\5\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\32""8\2\31""9\13\31""9" + "\13\34:\5\31""9\13\34:\5\31""9\13\27=\7\27=\7\27=\7\27=\7\30>\10\30>" + "\10\35;\6\32\77\12\32\77\12d{V\372\374\371\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\304\322\305\"H\22\32\77\12\36B\5\32\77\12\32\77\12\36B\5\32\77\12\202" + "\320q\202\320q\32\77\12\32\77\12\36B\5\0\0.W\23.W\23.W\23.W\23.W\23." + "W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24" + "0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15" + "0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""3[\16-\\\16""3[\16-\\\16""3[\16/^" + "\20/^\20/^\20/^\20""3[\16""0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2" + "a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5" + "d\26""7e\17""7e\17""7e\17""5d\26""7e\17""9g\21""7f\30""4j\23|\234b\373" + "\375\372\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\321\334\312Cr$4j\23""9g\21""4j\23""5k\24""9g\21""4j\23""9" + "g\21\202\320q\202\320q4j\23""4j\23""9g\21\0\0\30""1\1\25""0\10\30""1" + "\1\30""1\1\30""1\1\30""1\1\30""1\1\30""1\1\25""0\10\30""1\1\30""1\1\30" + "1\1\25""0\10\30""1\1\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\23""3" + "\3\23""3\3\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\23""3\3\23""3\3\23" + "3\3\27""1\12\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\31""9\13\32""8\2\32""8\2\32""8\2\34:\5" + "\27""8\11\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30" + ">\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12m\204_\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\321\327\314'E\20\32\77\12" + "\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\202\320" + "q\202\320q\32\77\12\32\77\12\36B\5\0\0.W\23.W\23.W\23.W\23.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23""0Y\24""0Y\24""2Z\15""0" + "Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0" + "Y\24""2Z\15""0Y\24""0Y\24-\\\16-\\\16-\\\16/^\20/^\20""0Y\24/^\20/^\20" + "/^\20/^\20/^\20""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a" + "\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""7e\17""5d\26""5" + "d\26""7e\17""7e\17""5d\26\247\271\223\247\271\223\247\271\223\243\274" + "\224\243\274\224\243\274\224\341\347\334\376\377\374\376\377\374\376" + "\377\374\376\377\374\261\306\245\243\274\224\247\271\223\243\274\224" + "\247\271\223\243\274\224\243\274\2244j\23""9g\21""4j\23\202\320q\202" + "\320q9g\21""4j\23""4j\23\0\0\25""0\10\25""0\10\30""1\1\30""1\1\30""1" + "\1\25""0\10\30""1\1\25""0\10\25""0\10\30""1\1\30""1\1\25""0\10\25""0" + "\10\30""1\1\30""1\1\23""3\3\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12" + "\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\24""4\5\24" + "4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27""7\10\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\32""8\2\32""8\2\31""9\13\32""8\2\27""8\11\34:\5\34:\5\31" + "9\13\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77\12\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\32\77\12\32\77\12\32\77\12\202\320q\202\320q\32\77\12\36B\5" + "\32\77\12\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + ".W\23.W\23""2Z\15""0Y\24""2Z\15""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""2Z\15-\\\16""3" + "[\16-\\\16-\\\16""3[\16/^\20""3[\16/^\20/^\20/^\20/^\20""0_\21""0_\21" + "0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24" + "3b\24""3b\24""5d\26""7e\17""5d\26""7e\17""7e\17""5d\26""5d\26""9g\21" + "7f\30\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\3749g\21""4j\23""9g\21\202\320q\202\320q9g\21""4j\23""9" + "g\21\0\0\25""0\10\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\30""1\1" + "\25""0\10\30""1\1\30""1\1\30""1\1\30""1\1\27""1\12\23""3\3\23""3\3\23" + "3\3\23""3\3\23""3\3\27""1\12\23""3\3\30""1\1\23""3\3\27""1\12\30""1\1" + "\23""3\3\23""3\3\23""3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5" + "\6\25""5\6\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\32""8\2\32""8\2\31""9" + "\13\32""8\2\31""9\13\34:\5\27""8\11\34:\5\27""8\11\27=\7\27=\7\27=\7" + "\30>\10\35;\6\30>\10\30>\10\32\77\12\32\77\12\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\32\77\12\36" + "B\5\32\77\12\202\320q\202\320q\32\77\12\36B\5\32\77\12\0\0.W\23.W\23" + ".W\23.W\23.W\23.W\23.W\23.W\23""2Z\15.W\23""2Z\15""0Y\24""0Y\24""0Y\24" + "2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24" + "2Z\15""0Y\24""0Y\24""2Z\15""0Y\24-\\\16""3[\16-\\\16""3[\16/^\20""3[" + "\16/^\20/^\20/^\20/^\20""3[\16""0_\21""0_\21""0_\21""3[\16""0_\21""2" + "a\23""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24""3b\24""5d\26""5" + "d\26""5d\26""5d\26""7e\17""7e\17""5d\26""9g\21""9g\21""9g\21\376\377" + "\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376" + "\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374" + "\376\377\374\376\377\374\376\377\374\376\377\374\376\377\374\376\377" + "\3749g\21""5k\24""6l\25\202\320q\202\320q5k\24""6l\25""9g\21\0\0\30""1" + "\1\30""1\1\25""0\10\30""1\1\25""0\10\25""0\10\25""0\10\30""1\1\30""1" + "\1\30""1\1\23""3\3\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\27""1\12" + "\23""3\3\23""3\3\30""1\1\23""3\3\27""1\12\23""3\3\27""1\12\23""3\3\23" + "3\3\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10" + "\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7" + "\10\27""7\10\27""7\10\31""9\13\32""8\2\31""9\13\31""9\13\32""8\2\34:" + "\5\27""8\11\34:\5\27""8\11\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>" + "\10\30>\10\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B" + "\5\32\77\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77" + "\12\36B\5\32\77\12\36B\5\33A\14\36B\5\33A\14\33A\14\36B\5\33A\14\36B" + "\5\33A\14\33A\14\36B\5\33A\14\0\0.W\23.W\23.W\23.W\23.W\23.W\23.W\23" + "2Z\15""0Y\24""0Y\24""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24" + "0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""2Z\15" + "2Z\15-\\\16-\\\16""0Y\24-\\\16/^\20""3[\16/^\20/^\20/^\20/^\20""0_\21" + "0_\21""0_\21""0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24" + "3b\24""3b\24""3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17" + "5d\26""9g\21""9g\21""4j\23""9g\21""4j\23""9g\21""5k\24""4j\23""4j\23" + "9g\21""4j\23""9g\21""4j\23""5k\24""9g\21""5k\24""9g\21""5k\24""6l\25" + "9g\21""5k\24""6l\25""9g\21""6l\25""6l\25""5k\24""5k\24""9g\21""6l\25" + "5k\24\0\0\30""1\1\25""0\10\25""0\10\25""0\10\25""0\10\25""0\10\30""1" + "\1\23""3\3\30""1\1\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\23""3\3\30" + "1\1\23""3\3\27""1\12\23""3\3\23""3\3\23""3\3\23""3\3\27""1\12\23""3\3" + "\24""4\5\24""4\5\24""4\5\25""5\6\25""5\6\25""5\6\25""5\6\27""7\10\27" + "7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27""7\10\27" + "7\10\27""7\10\27""7\10\32""8\2\32""8\2\31""9\13\32""8\2\34:\5\27""8\11" + "\34:\5\34:\5\34:\5\27=\7\27=\7\27=\7\27=\7\30>\10\30>\10\30>\10\32\77" + "\12\32\77\12\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\32\77\12\36B\5" + "\32\77\12\36B\5\32\77\12\32\77\12\32\77\12\36B\5\32\77\12\36B\5\32\77" + "\12\36B\5\33A\14\36B\5\33A\14\36B\5\33A\14\36B\5\36B\5\33A\14\36B\5\33" + "A\14\33A\14\36B\5\0\0.W\23.W\23.W\23.W\23.W\23.W\23""2Z\15""0Y\24""0" + "Y\24""0Y\24""0Y\24""2Z\15""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0Y\24""0" + "Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""0Y\24""2Z\15""3[\16-\\\16-\\" + "\16""3[\16/^\20""3[\16/^\20/^\20/^\20""3[\16/^\20""3[\16""0_\21""0_\21" + "0_\21""0_\21""0_\21""2a\23""2a\23""2a\23""2a\23""3b\24""3b\24""3b\24" + "3b\24""3b\24""5d\26""5d\26""5d\26""5d\26""5d\26""7e\17""5d\26""9g\21" + "7f\30""4j\23""9g\21""4j\23""5k\24""9g\21""5k\24""4j\23""9g\21""4j\23" + "4j\23""9g\21""5k\24""5k\24""4j\23""4j\23""6l\25""9g\21""5k\24""5k\24" + "5k\24""5k\24""9g\21""6l\25""5k\24""9g\21""5k\24""9g\21""9g\21""5k\24" + "\0\0", +}; + + diff --git a/polymer/eduke32/source/testgame/rsrc/game_icon.c b/polymer/eduke32/source/testgame/rsrc/game_icon.c new file mode 100644 index 000000000..9b40ddc92 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/game_icon.c @@ -0,0 +1,687 @@ +/* GIMP RGBA C-Source image dump (game_icon.c) */ + +#include "compat.h" +#include "sdlappicon.h" + +static uint8_t sdlappicon_pixels[] = { + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377@0\40\377`H0\377`H0\377@0\40\377hhh\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377@0\40" + "\377`H0\377`H0\377@0\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377`H0" + "\377\230tL\0\230tL\0`H0\377hhh\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377hhh\377`H0\377\230tL\0\230tL\0`H" + "0\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377`H0\377\230tL\0\230tL\0`H" + "0\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377hhh\377`H0\377\230tL\0\230tL\0`H0\377\40\40\40\377\230" + "tL\0\230tL\0\40\40\40\377@0\40\377`H0\377`H0\377@0\40\377hhh\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "hhh\377@0\40\377`H0\377`H0\377@0\40\377\40\40\40\377\230tL\0\230tL\0\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377```\377" + "@@@\377```\377\200\200\200\377\200\200\200\377```\377```\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377\200\200\200\377\200\200\200\377```\377" + "@@@\377```\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377hhh\377@@@\377\40\40\40\377@@@\377\200\200\200\377\200" + "\200\200\377```\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp" + "p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377```\377pp" + "p\377\200\200\200\377@@@\377\40\40\40\377@@@\377hhh\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377```\377@@@\377" + "```\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377XXX\377XXX\377XXX\377ppp\377\200\200\200\377XXX\377\200" + "\200\200\377\200\200\200\377XXX\377\200\200\200\377XXX\377XXX\377XXX\377" + "\200\200\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377X" + "XX\377XXX\377XXX\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377```\377ppp\377\200\200\200\377```\377@@@\377```\377hhh\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377XXX\377\200\200" + "\200\377xxx\377XXX\377\200\200\200\377XXX\377\200\200\200\377\200\200\200" + "\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200" + "\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377XXX\377\200" + "\200\200\377ppp\377XXX\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377XXX\377XXX\377XXX\377ppp\377\200\200\200\377XXX\377\200\200\200" + "\377\200\200\200\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200" + "\200\377\200\200\200\377XXX\377\200\200\200\377\200\200\200\377\200\200\200" + "\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377xxx\377XXX\377" + "\200\200\200\377XXX\377xxx\377xxx\377XXX\377\200\200\200\377\200\200\200" + "\377XXX\377\200\200\200\377\200\200\200\377XXX\377\200\200\200\377\200\200" + "\200\377\200\200\200\377XXX\377\200\200\200\377ppp\377XXX\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p" + "pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377XXX\377XXX\377XXX\377ppp\377" + "\200\200\200\377hhh\377XXX\377XXX\377hhh\377\200\200\200\377XXX\377XXX\377" + "XXX\377\200\200\200\377XXX\377XXX\377XXX\377\200\200\200\377XXX\377XXX\377" + "XXX\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377" + "ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377h" + "hh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230" + "tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377`" + "``\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```" + "\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377```\377ppp\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "```\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp" + "p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp" + "p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377```\377ppp\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377" + "ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377h" + "hh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230" + "tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p" + "pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377" + "```\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377```\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp" + "p\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377pp" + "p\377ppp\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230" + "tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377p" + "pp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377ppp\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377```\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377```\377ppp\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377" + "```\377```\377```\377```\377```\377```\377```\377```\377```\377```\377``" + "`\377```\377```\377```\377```\377```\377```\377ppp\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377p" + "pp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp" + "\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377" + "ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377ppp\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377hhh\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200" + "\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377hhh\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377hhh\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377```\377xxx\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377xxx\377```\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377PPP\377ppp\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377ppp\377PPP\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377888\377```\377ppp\377xxx\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377\200\200\200\377\200\200\200\377xxx\377ppp\377```\377888\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0" + "\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377888\377PPP\377```\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh" + "\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377" + "hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hh" + "h\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377" + "hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377hhh\377```\377PPP\377888\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0" + "\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\37700`" + "\377PPP\377hhh\377ppp\377ppp\377hhh\377hhh\377hhh\377hhh\377hhh\377ppp\377" + "xxx\377xxx\377ppp\377ppp\377ppp\377ppp\377ppp\377xxx\377xxx\377xxx\377xx" + "x\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377ppp\377hhh\377XXX\377HHH\377" + "HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377@@@\377000\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377PPP\377hhh" + "\377xxx\377xxx\377ppp\377hhh\377```\377```\377```\377```\377hhh\377ppp\377" + "xxx\377xxx\377xxx\377xxx\377xxx\377ppp\377xxx\377xxx\377xxx\377xxx\377xx" + "x\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377xxx\377hhh\377XX" + "X\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377@@@\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230t" + "L\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377```\377" + "ppp\377xxx\377ppp\377hhh\377PPP\377@@@\377@@@\377@@@\377@@@\377@@@\377PP" + "P\377ppp\377xxx\377xxx\377xxx\377ppp\377ppp\377xxx\377xxx\377\200\200\200" + "\377\200\200\200\377\200\200\200\377xxx\377xxx\377xxx\377xxx\377xxx\377x" + "xx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH" + "\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377hhh\377ppp\377ppp\377ppp\377hhh\377@@@\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377" + "xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377x" + "xx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH" + "\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377" + "xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377x" + "xx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH" + "\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377\40\40\40\377@@@\377@@@\377" + "@@@\377@@@\377@@@\377@@@\377\40\40\40\377@@@\377@@@\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377" + "hhh\377xxx\377xxx\377xxx\377ppp\377ppp\377xxx\377xxx\377xxx\377xxx\377xx" + "x\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200" + "\200\200\377xxx\377xxx\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377\40\40\40\377@@@\377hhh" + "\377\230\230\230\377\230\230\230\377\210\210\210\377\270\270\270\377\230" + "\230\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40" + "\40\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377pp" + "p\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377" + "xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377" + "\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377hhh\377\230\230\230\377" + "\270\270\270\377\270\270\270\377\230\230\230\377\270\270\270\377\230\230" + "\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40" + "\40\377\40\40\40\377hhh\377hhh\377hhh\377ppp\377hhh\377@@@\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377" + "xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377\200\200" + "\200\377xxx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377" + "\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377\230\230\230\377\270\270" + "\270\377\230\230\230\377hhh\377@@@\377\270\270\270\377\230\230\230\377@@" + "@\377\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40" + "\40\40\377hhh\377hhh\377ppp\377ppp\377hhh\377@@@\377\40\40\40\377\40\40\40" + "\377\40\40\40\377\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377xxx\377x" + "xx\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377" + "xxx\377xxx\377xxx\377xxx\377\200\200\200\377\210\210\210\377\210\210\210" + "\377xxx\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\230tL\0\230tL\0\40\40\40\377@@@\377\270\270\270\377\230\230\230\377hhh\377" + "@@@\377@@@\377\270\270\270\377\230\230\230\377\250\250\250\377\230\230\230" + "\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377hhh\377" + "ppp\377xxx\377xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377@@@\377hhh\377ppp\377xxx\377xxx\377xxx\377xxx\377" + "xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377xxx\377xxx\377xxx\377" + "\200\200\200\377\210\210\210\377\220\220\220\377\210\210\210\377xxx\377X" + "XX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230" + "tL\0\40\40\40\377@@@\377\270\270\270\377\230\230\230\377hhh\377@@@\377@@" + "@\377\270\270\270\377\230\230\230\377\250\250\250\377\230\230\230\377\270" + "\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377" + "xxx\377xxx\377ppp\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377@@@\377hhh\377xxx\377xxx\377xxx\377\200\200\200\377x" + "xx\377xxx\377\200\200\200\377\200\200\200\377\200\200\200\377xxx\377xxx\377" + "xxx\377xxx\377\200\200\200\377\210\210\210\377\220\220\220\377\210\210\210" + "\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377\40\40\40\377(((\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0\40" + "\40\40\377@@@\377\230\230\230\377\270\270\270\377\230\230\230\377hhh\377" + "@@@\377\270\270\270\377\230\230\230\377@@@\377\230\230\230\377\270\270\270" + "\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377x" + "xx\377ppp\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377@@@\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377" + "\200\200\200\377\200\200\200\377\200\200\200\377\210\210\210\377\210\210" + "\210\377\210\210\210\377\200\200\200\377\200\200\200\377xxx\377xxx\377\200" + "\200\200\377\210\210\210\377\210\210\210\377\200\200\200\377ppp\377XXX\377" + "HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40" + "\377(((\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0\40\40\40\377@@@\377" + "hhh\377\230\230\230\377\270\270\270\377\270\270\270\377\230\230\230\377\270" + "\270\270\377\230\230\230\377@@@\377\230\230\230\377\270\270\270\377@@@\377" + "\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377xxx\377hhh\377" + "@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "@@@\377ppp\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\210\210\210\377\210\210\210\377\210" + "\210\210\377\210\210\210\377\200\200\200\377\200\200\200\377xxx\377xxx\377" + "\200\200\200\377\200\200\200\377xxx\377hhh\377XXX\377HHH\377HHH\377HHH\377" + "HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377XD,\377XD,\377P<(" + "\377P<(\377\230tL\0\230tL\0@0\40\377\40\40\40\377@@@\377hhh\377\230\230\230" + "\377\230\230\230\377\210\210\210\377\270\270\270\377\230\230\230\377@@@\377" + "\230\230\230\377\270\270\270\377@@@\377\40\40\40\377\40\40\40\377\40\40\40" + "\377ppp\377xxx\377xxx\377xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377@@@\377ppp\377\200\200\200\377\200" + "\200\200\377\200\200\200\377xxx\377xxx\377xxx\377\200\200\200\377\210\210" + "\210\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377" + "xxx\377xxx\377\200\200\200\377\200\200\200\377xxx\377hhh\377XXX\377HHH\377" + "HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377000" + "\377XD,\377P<(\377\40\40\40\377\230tL\0\230tL\0`H0\377@0\40\377\40\40\40" + "\377@@@\377@@@\377@@@\377@@@\377@@@\377@@@\377\40\40\40\377@@@\377@@@\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377ppp\377xxx\377xxx\377" + "xxx\377hhh\377@@@\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377@@@\377ppp\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377\200" + "\200\200\377\200\200\200\377\200\200\200\377\200\200\200\377\200\200\200" + "\377\200\200\200\377\200\200\200\377\200\200\200\377\210\210\210\377\200" + "\200\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HH" + "H\377HHH\377HHH\377HHH\377HHH\377\40\40\40\377\40\40\40\377H4$\377@0\40\377" + "\40\40\40\377\230tL\0\230tL\0\230tL\0`H0\377@0\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377@0\40\377" + "ppp\377xxx\377xxx\377xxx\377hhh\377PPP\377@@@\377@@@\377@@@\377@@@\377@@" + "@\377PPP\377xxx\377\200\200\200\377xxx\377ppp\377ppp\377xxx\377xxx\377\200" + "\200\200\377xxx\377xxx\377xxx\377xxx\377\200\200\200\377\200\200\200\377" + "\210\210\210\377\210\210\210\377\200\200\200\377\200\200\200\377ppp\377X" + "XX\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377HHH\377\40" + "\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\230tL\0\230" + "tL\0\230tL\0\230tL\0`H0\377@0\40\377\40\40\40\377\40\40\40\377\40\40\40\377" + "\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40" + "\377\40\40\40\377@0\40\377`H0\377ppp\377ppp\377ppp\377ppp\377ppp\377hhh\377" + "hhh\377ppp\377ppp\377xxx\377xxx\377\200\200\200\377\210\210\210\377\200\200" + "\200\377xxx\377ppp\377ppp\377xxx\377xxx\377\200\200\200\377xxx\377xxx\377" + "xxx\377xxx\377\200\200\200\377\210\210\210\377\210\210\210\377\200\200\200" + "\377\200\200\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377H" + "HH\377HHH\377HHH\377HHH\377HHH\377@@@\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0" + "`H0\377@0\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\40\40\40\377\40\40\40\377@0\40\377`H0\377\230tL\0pp" + "p\377hhh\377hhh\377ppp\377ppp\377ppp\377ppp\377xxx\377\200\200\200\377\200" + "\200\200\377\210\210\210\377\210\210\210\377\220\220\220\377\210\210\210" + "\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377xxx\377" + "\200\200\200\377\210\210\210\377\210\210\210\377\200\200\200\377\200\200" + "\200\377\200\200\200\377ppp\377XXX\377HHH\377HHH\377HHH\377HHH\377HHH\377" + "HHH\377HHH\377HHH\377000\377\40\40\40\377\40\40\40\377\40\40\40\377\40\40" + "\40\377\40\40\40\377\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230tL\0\230" + "tL\0\230tL\0\230tL\0\230tL\0\230tL\0", +}; + +struct sdlappicon sdlappicon = { + 64, 64, + sdlappicon_pixels +}; diff --git a/polymer/eduke32/source/testgame/rsrc/game_icon.ico b/polymer/eduke32/source/testgame/rsrc/game_icon.ico new file mode 100644 index 000000000..30eeebe17 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/game_icon.ico differ diff --git a/polymer/eduke32/source/testgame/rsrc/game_icon.png b/polymer/eduke32/source/testgame/rsrc/game_icon.png new file mode 100644 index 000000000..a814fd268 Binary files /dev/null and b/polymer/eduke32/source/testgame/rsrc/game_icon.png differ diff --git a/polymer/eduke32/source/testgame/rsrc/gameres.rc b/polymer/eduke32/source/testgame/rsrc/gameres.rc new file mode 100644 index 000000000..95384bb33 --- /dev/null +++ b/polymer/eduke32/source/testgame/rsrc/gameres.rc @@ -0,0 +1,36 @@ +#include +#include +#include "startwin.game.h" + +RSRC_ICON ICON "game_icon.ico" +RSRC_BMP BITMAP "game.bmp" + +WIN_STARTWIN DIALOGEX DISCARDABLE 20, 40, 260, 200 +STYLE DS_MODALFRAME | DS_CENTER | DS_SETFONT | DS_FIXEDSYS | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU +CAPTION "Startup" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", WIN_STARTWIN_BITMAP, "STATIC", SS_BITMAP | WS_CHILD | WS_VISIBLE, 0, 0, 32, 32 + CONTROL "", WIN_STARTWIN_TABCTL, WC_TABCONTROL, WS_CLIPSIBLINGS | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 5, 250, 170 + CONTROL "&Start", WIN_STARTWIN_START, "BUTTON", BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 154, 180, 48, 14 + CONTROL "&Cancel", WIN_STARTWIN_CANCEL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 207, 180, 48, 14 + + CONTROL "", WIN_STARTWIN_MESSAGES, "EDIT", ES_MULTILINE | ES_READONLY | WS_CHILD | WS_VSCROLL, 0, 0, 32, 32 +END + +WIN_STARTWINPAGE_CONFIG DIALOGEX DISCARDABLE 20, 40, 279, 168 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD +CAPTION "Dialog" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "&Video mode:", -1, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE, 5, 8, 50, 8 + CONTROL "", IDC3DVMODE, "COMBOBOX", CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 60, 6, 80, 56 + CONTROL "&Fullscreen", IDCFULLSCREEN, "BUTTON", BS_CHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 148, 8, 49, 10 + CONTROL "&Always show configuration on start", IDCALWAYSSHOW, "BUTTON", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 118, 116, 140, 8 +END + +#if defined(_M_X64) || defined(__amd64__) || defined(__x86_64__) +1 24 "64/manifest.game.xml" +#else +1 24 "32/manifest.game.xml" +#endif diff --git a/polymer/eduke32/source/testgame/src/StartupWinController.game.m b/polymer/eduke32/source/testgame/src/StartupWinController.game.m new file mode 100644 index 000000000..d8b995767 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/StartupWinController.game.m @@ -0,0 +1,285 @@ +#import + +#include "compat.h" +#include "baselayer.h" +#include "build.h" + +static struct { + int fullscreen; + int xdim3d, ydim3d, bpp3d; + int forcesetup; +} settings; + +@interface StartupWinController : NSWindowController +{ + NSMutableArray *modeslist3d; + + IBOutlet NSButton *alwaysShowButton; + IBOutlet NSButton *fullscreenButton; + IBOutlet NSTextView *messagesView; + IBOutlet NSTabView *tabView; + IBOutlet NSPopUpButton *videoMode3DPUButton; + + IBOutlet NSButton *cancelButton; + IBOutlet NSButton *startButton; +} + +- (void)dealloc; +- (void)populateVideoModes:(BOOL)firstTime; + +- (IBAction)alwaysShowClicked:(id)sender; +- (IBAction)fullscreenClicked:(id)sender; + +- (IBAction)cancel:(id)sender; +- (IBAction)start:(id)sender; + +- (void)setupRunMode; +- (void)setupMessagesMode; +- (void)putsMessage:(NSString *)str; +- (void)setTitle:(NSString *)str; +@end + +@implementation StartupWinController + +- (void)dealloc +{ + [modeslist3d release]; + [super dealloc]; +} + +- (void)populateVideoModes:(BOOL)firstTime +{ + int i, mode3d, fullscreen = ([fullscreenButton state] == NSOnState); + int idx3d = -1; + int xdim, ydim, bpp; + + if (firstTime) { + xdim = settings.xdim3d; + ydim = settings.ydim3d; + bpp = settings.bpp3d; + } else { + mode3d = [[modeslist3d objectAtIndex:[videoMode3DPUButton indexOfSelectedItem]] intValue]; + if (mode3d >= 0) { + xdim = validmode[mode3d].xdim; + ydim = validmode[mode3d].ydim; + bpp = validmode[mode3d].bpp; + } + + } + mode3d = checkvideomode(&xdim, &ydim, bpp, fullscreen, 1); + if (mode3d < 0) { + int i, cd[] = { 32, 24, 16, 15, 8, 0 }; + for (i=0; cd[i]; ) { if (cd[i] >= bpp) i++; else break; } + for ( ; cd[i]; i++) { + mode3d = checkvideomode(&xdim, &ydim, cd[i], fullscreen, 1); + if (mode3d < 0) continue; + break; + } + } + + [modeslist3d release]; + [videoMode3DPUButton removeAllItems]; + + modeslist3d = [[NSMutableArray alloc] init]; + + for (i = 0; i < validmodecnt; i++) { + if (fullscreen == validmode[i].fs) { + if (i == mode3d) idx3d = [modeslist3d count]; + [modeslist3d addObject:[NSNumber numberWithInt:i]]; + [videoMode3DPUButton addItemWithTitle:[NSString stringWithFormat:@"%d %C %d %d-bpp", + validmode[i].xdim, 0xd7, validmode[i].ydim, validmode[i].bpp]]; + } + } + + if (idx3d >= 0) [videoMode3DPUButton selectItemAtIndex:idx3d]; +} + +- (IBAction)alwaysShowClicked:(id)sender +{ +} + +- (IBAction)fullscreenClicked:(id)sender +{ + [self populateVideoModes:NO]; +} + +- (IBAction)cancel:(id)sender +{ + [NSApp abortModal]; +} + +- (IBAction)start:(id)sender +{ + int mode = [[modeslist3d objectAtIndex:[videoMode3DPUButton indexOfSelectedItem]] intValue]; + if (mode >= 0) { + settings.xdim3d = validmode[mode].xdim; + settings.ydim3d = validmode[mode].ydim; + settings.bpp3d = validmode[mode].bpp; + settings.fullscreen = validmode[mode].fs; + } + + settings.forcesetup = [alwaysShowButton state] == NSOnState; + + [NSApp stopModal]; +} + +- (void)setupRunMode +{ + getvalidmodes(); + + [fullscreenButton setState: (settings.fullscreen ? NSOnState : NSOffState)]; + [alwaysShowButton setState: (settings.forcesetup ? NSOnState : NSOffState)]; + [self populateVideoModes:YES]; + + // enable all the controls on the Configuration page + NSEnumerator *enumerator = [[[[tabView tabViewItemAtIndex:0] view] subviews] objectEnumerator]; + NSControl *control; + while (control = [enumerator nextObject]) [control setEnabled:true]; + + [cancelButton setEnabled:true]; + [startButton setEnabled:true]; + + [tabView selectTabViewItemAtIndex:0]; + [NSCursor unhide]; // Why should I need to do this? +} + +- (void)setupMessagesMode +{ + [tabView selectTabViewItemAtIndex:1]; + + // disable all the controls on the Configuration page except "always show", so the + // user can enable it if they want to while waiting for something else to happen + NSEnumerator *enumerator = [[[[tabView tabViewItemAtIndex:0] view] subviews] objectEnumerator]; + NSControl *control; + while (control = [enumerator nextObject]) { + if (control == alwaysShowButton) continue; + [control setEnabled:false]; + } + + [cancelButton setEnabled:false]; + [startButton setEnabled:false]; +} + +- (void)putsMessage:(NSString *)str +{ + NSRange end; + NSTextStorage *text = [messagesView textStorage]; + BOOL shouldAutoScroll; + + shouldAutoScroll = ((int)NSMaxY([messagesView bounds]) == (int)NSMaxY([messagesView visibleRect])); + + end.location = [text length]; + end.length = 0; + + [text beginEditing]; + [messagesView replaceCharactersInRange:end withString:str]; + [text endEditing]; + + if (shouldAutoScroll) { + end.location = [text length]; + end.length = 0; + [messagesView scrollRangeToVisible:end]; + } +} + +- (void)setTitle:(NSString *)str +{ + [[self window] setTitle:str]; +} + +@end + +static StartupWinController *startwin = nil; + +int startwin_open(void) +{ + if (startwin != nil) return 1; + + startwin = [[StartupWinController alloc] initWithWindowNibName:@"startwin.game"]; + if (startwin == nil) return -1; + + [startwin setupMessagesMode]; + [startwin showWindow:nil]; + + return 0; +} + +int startwin_close(void) +{ + if (startwin == nil) return 1; + + [startwin close]; + [startwin release]; + startwin = nil; + + return 0; +} + +int startwin_puts(const char *s) +{ + NSString *ns; + + if (!s) return -1; + if (startwin == nil) return 1; + + ns = [[NSString alloc] initWithCString:s]; + [startwin putsMessage:ns]; + [ns release]; + + return 0; +} + +int startwin_settitle(const char *s) +{ + NSString *ns; + + if (!s) return -1; + if (startwin == nil) return 1; + + ns = [[NSString alloc] initWithCString:s]; + [startwin setTitle:ns]; + [ns release]; + + return 0; +} + +int startwin_idle(void *v) +{ + if (startwin) [[startwin window] displayIfNeeded]; + return 0; +} + +extern int xdimgame, ydimgame, bppgame, forcesetup; + +int startwin_run(void) +{ + int retval; + + if (startwin == nil) return 0; + + settings.fullscreen = fullscreen; + settings.xdim3d = xdimgame; + settings.ydim3d = ydimgame; + settings.bpp3d = bppgame; + settings.forcesetup = forcesetup; + + [startwin setupRunMode]; + + switch ([NSApp runModalForWindow:[startwin window]]) { + case NSRunStoppedResponse: retval = 1; break; + case NSRunAbortedResponse: retval = 0; break; + default: retval = -1; + } + + [startwin setupMessagesMode]; + + if (retval) { + fullscreen = settings.fullscreen; + xdimgame = settings.xdim3d; + ydimgame = settings.ydim3d; + bppgame = settings.bpp3d; + forcesetup = settings.forcesetup; + } + + return retval; +} diff --git a/polymer/eduke32/source/testgame/src/bstub.c b/polymer/eduke32/source/testgame/src/bstub.c new file mode 100644 index 000000000..2e5576f70 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/bstub.c @@ -0,0 +1,613 @@ +// "Build Engine & Tools" Copyright (c) 1993-1997 Ken Silverman +// Ken Silverman's official web site: "http://www.advsys.net/ken" +// See the included license file "BUILDLIC.TXT" for license info. +// +// This file has been modified from Ken Silverman's original release +// by Jonathon Fowler (jf@jonof.id.au) + +#include "compat.h" +#include "build.h" +#include "editor.h" +#include "pragmas.h" +#include "baselayer.h" +#include "names.h" +#include "osd.h" +#include "cache1d.h" +#include "common.h" + +#include "common_game.h" + +const char* AppProperName = "Build Editor"; +const char* AppTechnicalName = "testeditor"; + +static char tempbuf[256]; + +#define NUMOPTIONS 9 +char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0,0}; +unsigned char keys[NUMBUILDKEYS] = +{ + 0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39, + 0x1e,0x2c,0xd1,0xc9,0x33,0x34, + 0x9c,0x1c,0xd,0xc,0xf,0x45 +}; + + +static char levelname[BMAX_PATH] = ""; + + +//static int hang = 0; +//static int rollangle = 0; + +//Detecting 2D / 3D mode: +// qsetmode is 200 in 3D mode +// qsetmode is 350/480 in 2D mode +// +//You can read these variables when F5-F8 is pressed in 3D mode only: +// +// If (searchstat == 0) WALL searchsector=sector, searchwall=wall +// If (searchstat == 1) CEILING searchsector=sector +// If (searchstat == 2) FLOOR searchsector=sector +// If (searchstat == 3) SPRITE searchsector=sector, searchwall=sprite +// If (searchstat == 4) MASKED WALL searchsector=sector, searchwall=wall +// +// searchsector is the sector of the selected item for all 5 searchstat's +// +// searchwall is undefined if searchstat is 1 or 2 +// searchwall is the wall if searchstat = 0 or 4 +// searchwall is the sprite if searchstat = 3 (Yeah, I know - it says wall, +// but trust me, it's the sprite number) + +int averagefps; +#define AVERAGEFRAMES 32 +static unsigned int frameval[AVERAGEFRAMES]; +static int framecnt = 0; + +const char *defsfilename = "kenbuild.def"; +const char *startwin_labeltext = "Starting Build Editor..."; +int nextvoxid = 0; + + +int32_t ExtPreInit(int32_t argc,const char **argv) +{ + UNREFERENCED_PARAMETER(argc); + UNREFERENCED_PARAMETER(argv); + + wm_setapptitle("BUILD by Ken Silverman"); + + G_ExtPreInit(); + + OSD_SetLogFile("testeditor.log"); + initprintf("KenBuild Editor %s %s\n", s_buildRev, s_buildInfo); + initprintf("Compiled %s\n", s_buildTimestamp); + + return 0; +} + +int ExtInit(void) +{ + int i, rv = 0; + + /*printf("------------------------------------------------------------------------------\n"); + printf(" BUILD.EXE copyright(c) 1996 by Ken Silverman. You are granted the\n"); + printf(" right to use this software for your personal use only. This is a\n"); + printf(" special version to be used with \"Happy Fun KenBuild\" and may not work\n"); + printf(" properly with other Build engine games. Please refer to license.doc\n"); + printf(" for distribution rights\n"); + printf("------------------------------------------------------------------------------\n"); + getch(); + */ + + initgroupfile("stuff.dat"); + bpp = 8; + if (loadsetup("build.cfg") < 0) buildputs("Configuration file not found, using defaults.\n"), rv = 1; + Bmemcpy((void *)buildkeys,(void *)keys,NUMBUILDKEYS); //Trick to make build use setup.dat keys + if (option[4] > 0) option[4] = 0; + if (initengine()) { + wm_msgbox("Build Engine Initialisation Error", + "There was a problem initialising the Build engine: %s", engineerrstr); + return -1; + } + initinput(); + initmouse(); + + //You can load your own palette lookup tables here if you just + //copy the right code! + for(i=0;i<256;i++) + tempbuf[i] = ((i+32)&255); //remap colors for screwy palette sectors + makepalookup(16,tempbuf,0,0,0,1); + + kensplayerheight = 32; + zmode = 0; + + setbasepaltable(basepaltable, 1); + + G_InitMultiPsky(); + + tiletovox[PLAYER] = nextvoxid++; + tiletovox[BROWNMONSTER] = nextvoxid++; + +#ifdef _WIN32 +// allowtaskswitching(0); +#endif + return rv; +} + +void ExtUnInit(void) +{ + uninitgroupfile(); + writesetup("build.cfg"); +} + +//static int daviewingrange, daaspect, horizval1, horizval2; +void ExtPreCheckKeys(void) +{ + int /*cosang, sinang, dx, dy, mindx,*/ i, j, k; + + if (keystatus[0x3e]) //F4 - screen re-size + { + keystatus[0x3e] = 0; + + //cycle through all vesa modes, then screen-buffer mode + if (keystatus[0x2a]|keystatus[0x36]) { + setgamemode(!fullscreen, xdim, ydim, bpp); + } else { + + //cycle through all modes + j=-1; + + // work out a mask to select the mode + for (i=0; i> 3) + (xdim >> 4) + (xdim >> 6)) & (~7); + dy = (ydim + (ydim >> 3) + (ydim >> 4) + (ydim >> 6)) & (~7); + i = scale(320,ydim,xdim); + + if (waloff[4094] == 0) allocache(&waloff[4094],/*240L*384L*/dx*dy,&walock[4094]); + setviewtotile(4094,/*240L,384L*/dy,dx); + + cosang = sintable[(hang+512)&2047]; + sinang = sintable[hang&2047]; + + dx = dmulscale1(320,cosang,i,sinang); mindx = dx; + dy = dmulscale1(-i,cosang,320,sinang); + horizval1 = dy*(320>>1)/dx-1; + + dx = dmulscale1(320,cosang,-i,sinang); mindx = min(dx,mindx); + dy = dmulscale1(i,cosang,320,sinang); + horizval2 = dy*(320>>1)/dx+1; + + daviewingrange = scale(65536,16384*(xdim>>1),mindx-16); + daaspect = scale(daviewingrange,scale(320,tilesizx[4094],tilesizy[4094]),horizval2+6-horizval1); + setaspect(daviewingrange,scale(daaspect,ydim*320,xdim*i)); + horiz = 100-divscale15(horizval1+horizval2,daviewingrange); + } +#endif +} + +#define MAXVOXMIPS 5 +extern intptr_t voxoff[][MAXVOXMIPS]; +void ExtAnalyzeSprites(int32_t ourx, int32_t oury, int32_t oura, int32_t smoothr) +{ + int i, *longptr; + spritetype *tspr; + + UNREFERENCED_PARAMETER(ourx); + UNREFERENCED_PARAMETER(oury); + UNREFERENCED_PARAMETER(oura); + UNREFERENCED_PARAMETER(smoothr); + + for(i=0,tspr=&tsprite[0];ipicnum] >= 0) + { + switch(tspr->picnum) + { + case PLAYER: + if (!voxoff[ tiletovox[PLAYER] ][0]) { + if (qloadkvx(tiletovox[PLAYER],"voxel000.kvx")) { + tiletovox[PLAYER] = -1; + break; + } + } + //tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum]; + longptr = (int *)voxoff[ tiletovox[PLAYER] ][0]; + tspr->xrepeat = scale(tspr->xrepeat,56,longptr[2]); + tspr->yrepeat = scale(tspr->yrepeat,56,longptr[2]); + tspr->shade -= 6; + break; + case BROWNMONSTER: + if (!voxoff[ tiletovox[BROWNMONSTER] ][0]) { + if (qloadkvx(tiletovox[BROWNMONSTER],"voxel001.kvx")) { + tiletovox[BROWNMONSTER] = -1; + break; + } + } + //tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum]; + break; + } + } + + tspr->shade += 6; + if (sector[tspr->sectnum].ceilingstat&1) + tspr->shade += sector[tspr->sectnum].ceilingshade; + else + tspr->shade += sector[tspr->sectnum].floorshade; + } +} + +void ExtCheckKeys(void) +{ + int i;//, p, y, dx, dy, cosang, sinang, bufplc, tsizy, tsizyup15; + int j; + + if (qsetmode == 200) //In 3D mode + { +#if 0 + if (hang != 0) + { + bufplc = waloff[4094]+(mulscale16(horiz-100,xdimenscale)+(tilesizx[4094]>>1))*tilesizy[4094]; + setviewback(); + cosang = sintable[(hang+512)&2047]; + sinang = sintable[hang&2047]; + dx = dmulscale1(xdim,cosang,ydim,sinang); + dy = dmulscale1(-ydim,cosang,xdim,sinang); + + begindrawing(); + tsizy = tilesizy[4094]; + tsizyup15 = (tsizy<<15); + dx = mulscale14(dx,daviewingrange); + dy = mulscale14(dy,daaspect); + sinang = mulscale14(sinang,daviewingrange); + cosang = mulscale14(cosang,daaspect); + p = ylookup[windowy1]+frameplace+windowx2+1; + for(y=windowy1;y<=windowy2;y++) + { + i = divscale16(tsizyup15,dx); + stretchhline(0,(xdim>>1)*i+tsizyup15,xdim>>2,i,mulscale32(i,dy)*tsizy+bufplc,p); + dx -= sinang; dy += cosang; p += ylookup[1]; + } + walock[4094] = 1; + + Bsprintf(tempbuf,"%d",(hang*180)>>10); + printext256(0L,8L,31,-1,tempbuf,1); + enddrawing(); + } +#endif + if (keystatus[0xa]) setaspect(viewingrange+(viewingrange>>8),yxaspect+(yxaspect>>8)); + if (keystatus[0xb]) setaspect(viewingrange-(viewingrange>>8),yxaspect-(yxaspect>>8)); + if (keystatus[0xc]) setaspect(viewingrange,yxaspect-(yxaspect>>8)); + if (keystatus[0xd]) setaspect(viewingrange,yxaspect+(yxaspect>>8)); + //if (keystatus[0x38]) setrollangle(rollangle+=((keystatus[0x2a]|keystatus[0x36])*6+2)); + //if (keystatus[0xb8]) setrollangle(rollangle-=((keystatus[0x2a]|keystatus[0x36])*6+2)); + //if (keystatus[0x1d]|keystatus[0x9d]) setrollangle(rollangle=0); + + begindrawing(); + + i = frameval[framecnt&(AVERAGEFRAMES-1)]; + j = frameval[framecnt&(AVERAGEFRAMES-1)] = getticks(); framecnt++; + if (i != j) averagefps = ((mul3(averagefps)+((AVERAGEFRAMES*1000)/(j-i)) )>>2); + Bsprintf((char *)tempbuf,"%d",averagefps); + printext256(0L,0L,31,-1,(char *)tempbuf,1); + + enddrawing(); + editinput(); + } + else + { + } +} + +void ExtCleanUp(void) +{ +} + +void ExtPreLoadMap(void) +{ +} + + +void ExtSetupMapFilename(const char *mapname) +{ + char title[256]; + + Bstrncpy(levelname, mapname, sizeof(levelname)); + + Bsnprintf(title, 256, "BUILD by Ken Silverman - %s", mapname); + wm_setapptitle(title); +} + +void ExtLoadMap(const char *mapname) +{ + ExtSetupMapFilename(mapname); +} + +int32_t ExtPreSaveMap(void) +{ + return 0; +} + +void ExtSaveMap(const char *mapname) +{ + UNREFERENCED_PARAMETER(mapname); + saveboard("backup.map", &pos, ang, cursectnum); +} + +const char *ExtGetSectorCaption(short sectnum) +{ + if ((sector[sectnum].lotag|sector[sectnum].hitag) == 0) + { + tempbuf[0] = 0; + } + else + { + Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)sector[sectnum].hitag, + (unsigned short)sector[sectnum].lotag); + } + return((char *)tempbuf); +} + +const char *ExtGetWallCaption(short wallnum) +{ + if ((wall[wallnum].lotag|wall[wallnum].hitag) == 0) + { + tempbuf[0] = 0; + } + else + { + Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)wall[wallnum].hitag, + (unsigned short)wall[wallnum].lotag); + } + return((char *)tempbuf); +} + +const char *ExtGetSpriteCaption(short spritenum) +{ + if ((sprite[spritenum].lotag|sprite[spritenum].hitag) == 0) + { + tempbuf[0] = 0; + } + else + { + Bsprintf((char *)tempbuf,"%hu,%hu",(unsigned short)sprite[spritenum].hitag, + (unsigned short)sprite[spritenum].lotag); + } + return((char *)tempbuf); +} + +//printext16 parameters: +//printext16(int xpos, int ypos, short col, short backcol, +// char name[82], char fontsize) +// xpos 0-639 (top left) +// ypos 0-479 (top left) +// col 0-15 +// backcol 0-15, -1 is transparent background +// name +// fontsize 0=8*8, 1=3*5 + +//drawline16 parameters: +// drawline16(int x1, int y1, int x2, int y2, char col) +// x1, x2 0-639 +// y1, y2 0-143 (status bar is 144 high, origin is top-left of STATUS BAR) +// col 0-15 + +void ExtShowSectorData(short sectnum) //F5 +{ + int i; + if (qsetmode == 200) //In 3D mode + { + } + else + { + begindrawing(); + clearmidstatbar16(); //Clear middle of status bar + + Bsprintf((char *)tempbuf,"Sector %d",sectnum); + printext16(8,ydim16+32,11,-1,(char *)tempbuf,0); + + printext16(8,ydim16+48,11,-1,"8*8 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",0); + printext16(8,ydim16+56,11,-1,"3*5 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",1); + + i=ydim16; ydim16=ydim; + drawline16(320,i+68,344,i+80,4); //Draw house + drawline16(344,i+80,344,i+116,4); + drawline16(344,i+116,296,i+116,4); + drawline16(296,i+116,296,i+80,4); + drawline16(296,i+80,320,i+68,4); + ydim16=i; + enddrawing(); + } +} + +void ExtShowWallData(short wallnum) //F6 +{ + if (qsetmode == 200) //In 3D mode + { + } + else + { + begindrawing(); + clearmidstatbar16(); //Clear middle of status bar + + Bsprintf((char *)tempbuf,"Wall %d",wallnum); + printext16(8,ydim16+32,11,-1,(char *)tempbuf,0); + enddrawing(); + } +} + +void ExtShowSpriteData(short spritenum) //F6 +{ + if (qsetmode == 200) //In 3D mode + { + } + else + { + begindrawing(); + clearmidstatbar16(); //Clear middle of status bar + + Bsprintf((char *)tempbuf,"Sprite %d",spritenum); + printext16(8,ydim16+32,11,-1,(char *)tempbuf,0); + enddrawing(); + } +} + +void ExtEditSectorData(short sectnum) //F7 +{ + short nickdata; + + if (qsetmode == 200) //In 3D mode + { + //Ceiling + if (searchstat == 1) + sector[searchsector].ceilingpicnum++; //Just a stupid example + + //Floor + if (searchstat == 2) + sector[searchsector].floorshade++; //Just a stupid example + } + else //In 2D mode + { + Bsprintf((char *)tempbuf,"Sector (%d) Nick's variable: ",sectnum); + nickdata = 0; + nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0); + + printmessage16(" "); //Clear message box (top right of status bar) + ExtShowSectorData(sectnum); + } +} + +void ExtEditWallData(short wallnum) //F8 +{ + short nickdata; + + if (qsetmode == 200) //In 3D mode + { + } + else + { + Bsprintf((char *)tempbuf,"Wall (%d) Nick's variable: ",wallnum); + nickdata = 0; + nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0); + + printmessage16(" "); //Clear message box (top right of status bar) + ExtShowWallData(wallnum); + } +} + +void ExtEditSpriteData(short spritenum) //F8 +{ + short nickdata; + + if (qsetmode == 200) //In 3D mode + { + } + else + { + Bsprintf((char *)tempbuf,"Sprite (%d) Nick's variable: ",spritenum); + nickdata = 0; + nickdata = getnumber16((char *)tempbuf,nickdata,65536L,0); + printmessage16(" "); + + printmessage16(" "); //Clear message box (top right of status bar) + ExtShowSpriteData(spritenum); + } +} + +void faketimerhandler(void) +{ + sampletimer(); +} + +void M32RunScript(const char *s) { UNREFERENCED_PARAMETER(s); } +void G_Polymer_UnInit(void) { } + +void app_crashhandler(void) +{ + if (levelname[0]) + { + append_ext_UNSAFE(levelname, "_crash.map"); + SaveBoard(levelname, M32_SB_NOEXT); + } +} + + //Just thought you might want my getnumber16 code +/* +getnumber16(char namestart[80], short num, int maxnumber) +{ + char buffer[80]; + int j, k, n, danum, oldnum; + + danum = (int)num; + oldnum = danum; + while ((keystatus[0x1c] != 2) && (keystatus[0x1] == 0)) //Enter, ESC + { + sprintf(&buffer,"%s%ld_ ",namestart,danum); + printmessage16(buffer); + + for(j=2;j<=11;j++) //Scan numbers 0-9 + if (keystatus[j] > 0) + { + keystatus[j] = 0; + k = j-1; + if (k == 10) k = 0; + n = (danum*10)+k; + if (n < maxnumber) danum = n; + } + if (keystatus[0xe] > 0) // backspace + { + danum /= 10; + keystatus[0xe] = 0; + } + if (keystatus[0x1c] == 1) //L. enter + { + oldnum = danum; + keystatus[0x1c] = 2; + asksave = 1; + } + } + keystatus[0x1c] = 0; + keystatus[0x1] = 0; + return((short)oldnum); +} +*/ + +/* + * vim:ts=4: + */ diff --git a/polymer/eduke32/source/testgame/src/common.c b/polymer/eduke32/source/testgame/src/common.c new file mode 100644 index 000000000..5eba33526 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/common.c @@ -0,0 +1,54 @@ + +#include "compat.h" +#include "build.h" + +#include "names.h" +#include "common_game.h" + +uint8_t *basepaltable[1] = { + palette +}; + +#define NUMPSKYMULTIS 2 +EDUKE32_STATIC_ASSERT(NUMPSKYMULTIS <= MAXPSKYMULTIS); +EDUKE32_STATIC_ASSERT(PSKYOFF_MAX <= MAXPSKYTILES); + +// Set up new-style multi-psky handling. +void Ken_InitMultiPsky(void) +{ + int32_t i; + + static int32_t inited; + if (inited) + return; + inited = 1; + + multipskytile[0] = -1; + multipskytile[1] = DAYSKY; + multipskytile[2] = NIGHTSKY; + + pskynummultis = NUMPSKYMULTIS; + + // When adding other multi-skies, take care that the tileofs[] values are + // <= PSKYOFF_MAX. (It can be increased up to MAXPSKYTILES, but should be + // set as tight as possible.) + + // The default sky properties (all others are implicitly zero): + multipsky[0].lognumtiles = 1; + multipsky[0].horizfrac = 65536; + + // DAYSKY + multipsky[1].lognumtiles = 1; + multipsky[1].horizfrac = 65536; + + // DAYSKY + multipsky[2].lognumtiles = 3; + multipsky[2].horizfrac = 65536; + + for (i=0; i=k) *(eq--) = 0; + + if (Bstrcasecmp(k, key)) continue; + + while (*v == ' ' || *k == '\t') v++; + eq = v + Bstrlen(v)-1; + + while ((*eq == ' ' || *eq == '\t' || *eq == '\r' || *eq == '\n') && eq>=v) *(eq--) = 0; + + value[--len] = 0; + do value[x] = v[x]; while (v[x++] != 0 && len-- > 0); + + return x-1; + } +} + +extern short brightness; +extern int fullscreen; +extern unsigned char option[8]; +extern unsigned char keys[NUMBUILDKEYS]; +extern double msens; + +/* + * SETUP.DAT + * 0 = video mode (0:chained 1:vesa 2:screen buffered 3/4/5:tseng/paradise/s3 6:red-blue) + * 1 = sound (0:none) + * 2 = music (0:none) + * 3 = input (0:keyboard 1:+mouse) + * 4 = multiplayer (0:single 1-4:com 5-11:ipx) + * 5&0xf0 = com speed + * 5&0x0f = com irq + * 6&0xf0 = chained y-res + * 6&0x0f = chained x-res or vesa mode + * 7&0xf0 = sound samplerate + * 7&0x01 = sound quality + * 7&0x02 = 8/16 bit + * 7&0x04 = mono/stereo + * + * bytes 8 to 26 are key settings: + * 0 = Forward (0xc8) + * 1 = Backward (0xd0) + * 2 = Turn left (0xcb) + * 3 = Turn right (0xcd) + * 4 = Run (0x2a) + * 5 = Strafe (0x9d) + * 6 = Fire (0x1d) + * 7 = Use (0x39) + * 8 = Stand high (0x1e) + * 9 = Stand low (0x2c) + * 10 = Look up (0xd1) + * 11 = Look down (0xc9) + * 12 = Strafe left (0x33) + * 13 = Strafe right (0x34) + * 14 = 2D/3D switch (0x9c) + * 15 = View cycle (0x1c) + * 16 = 2D Zoom in (0xd) + * 17 = 2D Zoom out (0xc) + * 18 = Chat (0xf) + */ + +int loadsetup(const char *fn) +{ + BFILE *fp; +#define VL 32 + char val[VL]; + int i; + + if ((fp = Bfopen(fn, "rt")) == NULL) return -1; + + if (readconfig(fp, "forcesetup", val, VL) > 0) { if (Batoi(val) != 0) forcesetup = 1; else forcesetup = 0; } + if (readconfig(fp, "fullscreen", val, VL) > 0) { if (Batoi(val) != 0) fullscreen = 1; else fullscreen = 0; } + if (readconfig(fp, "resolution", val, VL) > 0) { + i = Batoi(val) & 0x0f; + if ((unsigned)i<13) { xdimgame = xdim2d = vesares[i][0]; ydimgame = ydim2d = vesares[i][1]; } + } + if (readconfig(fp, "xdim", val, VL) > 0) xdimgame = xdim2d = Batoi(val); + if (readconfig(fp, "ydim", val, VL) > 0) ydimgame = xdim2d = Batoi(val); + if (readconfig(fp, "samplerate", val, VL) > 0) option[7] = (Batoi(val) & 0x0f) << 4; + if (readconfig(fp, "music", val, VL) > 0) { if (Batoi(val) != 0) option[2] = 1; else option[2] = 0; } + if (readconfig(fp, "mouse", val, VL) > 0) { if (Batoi(val) != 0) option[3] = 1; else option[3] = 0; } + if (readconfig(fp, "bpp", val, VL) > 0) bppgame = Batoi(val); + if (readconfig(fp, "renderer", val, VL) > 0) { i = Batoi(val); setrendermode(i); } + if (readconfig(fp, "brightness", val, VL) > 0) brightness = min(max(Batoi(val),0),15); + +#ifdef RENDERTYPEWIN + if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = Batoi(val); +#endif + + option[0] = 1; // vesa all the way... + option[1] = 1; // sound all the way... + option[4] = 0; // no multiplayer + option[5] = 0; + + if (readconfig(fp, "keyforward", val, VL) > 0) keys[0] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keybackward", val, VL) > 0) keys[1] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyturnleft", val, VL) > 0) keys[2] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyturnright", val, VL) > 0) keys[3] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyrun", val, VL) > 0) keys[4] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keystrafe", val, VL) > 0) keys[5] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyfire", val, VL) > 0) keys[6] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyuse", val, VL) > 0) keys[7] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keystandhigh", val, VL) > 0) keys[8] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keystandlow", val, VL) > 0) keys[9] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keylookup", val, VL) > 0) keys[10] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keylookdown", val, VL) > 0) keys[11] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keystrafeleft", val, VL) > 0) keys[12] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keystraferight", val, VL) > 0) keys[13] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "key2dmode", val, VL) > 0) keys[14] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyviewcycle", val, VL) > 0) keys[15] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "key2dzoomin", val, VL) > 0) keys[16] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "key2dzoomout", val, VL) > 0) keys[17] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keychat", val, VL) > 0) keys[18] = Bstrtol(val, NULL, 16); + if (readconfig(fp, "keyconsole", val, VL) > 0) { keys[19] = Bstrtol(val, NULL, 16); OSD_CaptureKey(keys[19]); } + + if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL); + + Bfclose(fp); + + return 0; +} + +int writesetup(const char *fn) +{ + BFILE *fp; + + fp = Bfopen(fn,"wt"); + if (!fp) return -1; + + Bfprintf(fp, + "; Always show configuration options on startup\n" + "; 0 - No\n" + "; 1 - Yes\n" + "forcesetup = %d\n" + "\n" + "; Video mode selection\n" + "; 0 - Windowed\n" + "; 1 - Fullscreen\n" + "fullscreen = %d\n" + "\n" + "; Video resolution\n" + "xdim = %d\n" + "ydim = %d\n" + "\n" + "; 3D-mode colour depth\n" + "bpp = %d\n" + "\n" +#ifdef USE_OPENGL + "; OpenGL mode options\n" + "glusetexcache = %d\n" + "\n" +#endif +#ifdef RENDERTYPEWIN + "; Maximum OpenGL mode refresh rate (Windows only, in Hertz)\n" + "maxrefreshfreq = %d\n" + "\n" +#endif + "; 3D mode brightness setting\n" + "; 0 - lowest\n" + "; 15 - highest\n" + "brightness = %d\n" + "\n" + "; Sound sample frequency\n" + "; 0 - 6 KHz\n" + "; 1 - 8 KHz\n" + "; 2 - 11.025 KHz\n" + "; 3 - 16 KHz\n" + "; 4 - 22.05 KHz\n" + "; 5 - 32 KHz\n" + "; 6 - 44.1 KHz\n" + "samplerate = %d\n" + "\n" + "; Music playback\n" + "; 0 - Off\n" + "; 1 - On\n" + "music = %d\n" + "\n" + "; Enable mouse\n" + "; 0 - No\n" + "; 1 - Yes\n" + "mouse = %d\n" + "\n" + "; Mouse sensitivity\n" + "mousesensitivity = %g\n" + "\n" + "; Key Settings\n" + "; Here's a map of all the keyboard scan codes: NOTE: values are listed in hex!\n" + "; +---------------------------------------------------------------------------------------------+\n" + "; | 01 3B 3C 3D 3E 3F 40 41 42 43 44 57 58 46 |\n" + "; |ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 SCROLL |\n" + "; | |\n" + "; |29 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E D2 C7 C9 45 B5 37 4A |\n" + "; | ` '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' - = BACK INS HOME PGUP NUMLK KP/ KP* KP- |\n" + "; | |\n" + "; | 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 2B D3 CF D1 47 48 49 4E |\n" + "; |TAB Q W E R T Y U I O P [ ] \\ DEL END PGDN KP7 KP8 KP9 KP+ |\n" + "; | |\n" + "; | 3A 1E 1F 20 21 22 23 24 25 26 27 28 1C 4B 4C 4D |\n" + "; |CAPS A S D F G H J K L ; ' ENTER KP4 KP5 KP6 9C |\n" + "; | KPENTER|\n" + "; | 2A 2C 2D 2E 2F 30 31 32 33 34 35 36 C8 4F 50 51 |\n" + "; |LSHIFT Z X C V B N M , . / RSHIFT UP KP1 KP2 KP3 |\n" + "; | |\n" + "; | 1D 38 39 B8 9D CB D0 CD 52 53 |\n" + "; |LCTRL LALT SPACE RALT RCTRL LEFT DOWN RIGHT KP0 KP. |\n" + "; +---------------------------------------------------------------------------------------------+\n" + "\n" + "keyforward = %X\n" + "keybackward = %X\n" + "keyturnleft = %X\n" + "keyturnright = %X\n" + "keyrun = %X\n" + "keystrafe = %X\n" + "keyfire = %X\n" + "keyuse = %X\n" + "keystandhigh = %X\n" + "keystandlow = %X\n" + "keylookup = %X\n" + "keylookdown = %X\n" + "keystrafeleft = %X\n" + "keystraferight = %X\n" + "key2dmode = %X\n" + "keyviewcycle = %X\n" + "key2dzoomin = %X\n" + "key2dzoomout = %X\n" + "keychat = %X\n" + "keyconsole = %X\n" + "\n", + + forcesetup, fullscreen, xdimgame, ydimgame, bppgame, +#ifdef USE_OPENGL + glusetexcache, +#endif +#ifdef RENDERTYPEWIN + maxrefreshfreq, +#endif + brightness, option[7]>>4, option[2], + option[3], msens, + keys[0], keys[1], keys[2], keys[3], keys[4], keys[5], + keys[6], keys[7], keys[8], keys[9], keys[10], keys[11], + keys[12], keys[13], keys[14], keys[15], keys[16], keys[17], + keys[18], keys[19] + ); + + Bfclose(fp); + + return 0; +} diff --git a/polymer/eduke32/source/testgame/src/game.c b/polymer/eduke32/source/testgame/src/game.c new file mode 100644 index 000000000..f7f74c72a --- /dev/null +++ b/polymer/eduke32/source/testgame/src/game.c @@ -0,0 +1,6323 @@ +// Ken Silverman's official web site: "http://www.advsys.net/ken" +// See the included license file "BUILDLIC.TXT" for license info. +// +// This file has been modified from Ken Silverman's original release +// by Jonathon Fowler (jf@jonof.id.au) + +#include "compat.h" +#include "build.h" +#include "names.h" +#include "pragmas.h" +#include "cache1d.h" +#include "game.h" +#include "osd.h" +#include "mmulti.h" +#include "common.h" + +#include "renderlayer.h" + +#include "common_game.h" + +const char* AppProperName = "KenBuild"; +const char* AppTechnicalName = "testgame"; + +#define TIMERINTSPERSECOND 140 //280 +#define MOVESPERSECOND 40 +#define TICSPERFRAME 3 +#define MOVEFIFOSIZ 256 +#define EYEHEIGHT (32<<8) //Normally (32<<8), (51<<8) to make mirrors happy + +#define TILE_TILT (MAXTILES-2) + + +static int32_t clipmove_old(int32_t *x, int32_t *y, int32_t *z, int16_t *sectnum, int32_t xvect, int32_t yvect, int32_t walldist, + int32_t ceildist, int32_t flordist, uint32_t cliptype) ATTRIBUTE((nonnull(1,2,3,4))); + +static int32_t clipmove_old(int32_t *x, int32_t *y, int32_t *z, int16_t *sectnum, int32_t xvect, int32_t yvect, int32_t walldist, + int32_t ceildist, int32_t flordist, uint32_t cliptype) +{ + vec3_t vector = { *x, *y, *z }; + + int32_t result = clipmove(&vector, sectnum, xvect, yvect, walldist, ceildist, flordist, cliptype); + + *x = vector.x; + *y = vector.y; + *z = vector.z; + + return result; +} + +static void getzrange_old(int32_t x, int32_t y, int32_t z, int16_t sectnum, int32_t *ceilz, int32_t *ceilhit, int32_t *florz, + int32_t *florhit, int32_t walldist, uint32_t cliptype) ATTRIBUTE((nonnull(5,6,7,8))); + +static void getzrange_old(int32_t x, int32_t y, int32_t z, int16_t sectnum, int32_t *ceilz, int32_t *ceilhit, int32_t *florz, + int32_t *florhit, int32_t walldist, uint32_t cliptype) +{ + const vec3_t vector = { x, y, z }; + getzrange(&vector, sectnum, ceilz, ceilhit, florz, florhit, walldist, cliptype); +} + +static int32_t setsprite_eyeheight(int16_t spritenum, const vec3_t *pos) ATTRIBUTE((nonnull(2))); +static int32_t setsprite_eyeheight(int16_t spritenum, const vec3_t *pos) +{ + vec3_t eyepos = *pos; + eyepos.z += EYEHEIGHT; + return setsprite(spritenum, &eyepos); +} + + +// declared in sound.c +void initsb(char,char,int,char,char,char,char); +void uninitsb(void); +void setears(int,int,int,int); +void wsayfollow(char *,int,int,int *,int *,char); +void wsay(char *,int,int,int); +void loadwaves(void); +void loadsong(char *); +void musicon(void); +void musicoff(void); +void refreshaudio(void); + +// declared in config.c +int loadsetup(const char *); +int writesetup(const char *); + +/*************************************************************************** + KEN'S TAG DEFINITIONS: (Please define your own tags for your games) + + sector[?].lotag = 0 Normal sector + sector[?].lotag = 1 If you are on a sector with this tag, then all sectors + with same hi tag as this are operated. Once. + sector[?].lotag = 2 Same as sector[?].tag = 1 but this is retriggable. + sector[?].lotag = 3 A really stupid sector that really does nothing now. + sector[?].lotag = 4 A sector where you are put closer to the floor + (such as the slime in DOOM1.DAT) + sector[?].lotag = 5 A really stupid sector that really does nothing now. + sector[?].lotag = 6 A normal door - instead of pressing D, you tag the + sector with a 6. The reason I make you edit doors + this way is so that can program the doors + yourself. + sector[?].lotag = 7 A door the goes down to open. + sector[?].lotag = 8 A door that opens horizontally in the middle. + sector[?].lotag = 9 A sliding door that opens vertically in the middle. + -Example of the advantages of not using BSP tree. + sector[?].lotag = 10 A warping sector with floor and walls that shade. + sector[?].lotag = 11 A sector with all walls that do X-panning. + sector[?].lotag = 12 A sector with walls using the dragging function. + sector[?].lotag = 13 A sector with some swinging doors in it. + sector[?].lotag = 14 A revolving door sector. + sector[?].lotag = 15 A subway track. + sector[?].lotag = 16 A true double-sliding door. + + wall[?].lotag = 0 Normal wall + wall[?].lotag = 1 Y-panning wall + wall[?].lotag = 2 Switch - If you flip it, then all sectors with same hi + tag as this are operated. + wall[?].lotag = 3 Marked wall to detemine starting dir. (sector tag 12) + wall[?].lotag = 4 Mark on the shorter wall closest to the pivot point + of a swinging door. (sector tag 13) + wall[?].lotag = 5 Mark where a subway should stop. (sector tag 15) + wall[?].lotag = 6 Mark for true double-sliding doors (sector tag 16) + wall[?].lotag = 7 Water fountain + wall[?].lotag = 8 Bouncy wall! + + sprite[?].lotag = 0 Normal sprite + sprite[?].lotag = 1 If you press space bar on an AL, and the AL is tagged + with a 1, he will turn evil. + sprite[?].lotag = 2 When this sprite is operated, a bomb is shot at its + position. + sprite[?].lotag = 3 Rotating sprite. + sprite[?].lotag = 4 Sprite switch. + sprite[?].lotag = 5 Basketball hoop score. + +KEN'S STATUS DEFINITIONS: (Please define your own statuses for your games) + status = 0 Inactive sprite + status = 1 Active monster sprite + status = 2 Monster that becomes active only when it sees you + status = 3 Smoke on the wall for chainguns + status = 4 Splashing sprites (When you shoot slime) + status = 5 Explosion! + status = 6 Travelling bullet + status = 7 Bomb sprial-out explosion + status = 8 Player! + status = 9 EVILALGRAVE shrinking list + status = 10 EVILAL list + status = 11 Sprite respawning list + status = 12 Sprite which does not respawn (Andy's addition) + status = MAXSTATUS Non-existent sprite (this will be true for your + code also) +**************************************************************************/ + +typedef struct +{ + signed char fvel, svel, avel; + short bits; +} input; + +static int screentilt = 0, oscreentilt = 0; + + +static int fvel, svel, avel; +static int fvel2, svel2, avel2; + +#define NUMOPTIONS 8 +#define NUMGAMEKEYS 19 +char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0}; +unsigned char keys[NUMGAMEKEYS] = +{ + 0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39, + 0x1e,0x2c,0xd1,0xc9,0x33,0x34, + 0x9c,0x1c,0xd,0xc,0xf +}; +int xdimgame = 320, ydimgame = 200, bppgame = 8, xdim2d = 640, ydim2d = 480; // JBF 20050318: config.c expects to find these +int forcesetup = 1; + +static int digihz[8] = {6000,8000,11025,16000,22050,32000,44100,48000}; + +static char frame2draw[MAXPLAYERS]; +static int frameskipcnt[MAXPLAYERS]; + +#define LAVASIZ 128 +#define LAVALOGSIZ 7 +#define LAVAMAXDROPS 32 +static char lavabakpic[(LAVASIZ+4)*(LAVASIZ+4)], lavainc[LAVASIZ]; +static int lavanumdrops, lavanumframes; +static int lavadropx[LAVAMAXDROPS], lavadropy[LAVAMAXDROPS]; +static int lavadropsiz[LAVAMAXDROPS], lavadropsizlookup[LAVAMAXDROPS]; +static int lavaradx[24][96], lavarady[24][96], lavaradcnt[32]; + + //Shared player variables +static vec3_t pos[MAXPLAYERS]; +static int horiz[MAXPLAYERS], zoom[MAXPLAYERS], hvel[MAXPLAYERS]; +static short ang[MAXPLAYERS], cursectnum[MAXPLAYERS], ocursectnum[MAXPLAYERS]; +static short playersprite[MAXPLAYERS], deaths[MAXPLAYERS]; +static int lastchaingun[MAXPLAYERS]; +static int health[MAXPLAYERS], flytime[MAXPLAYERS]; +static short oflags[MAXPLAYERS]; +static short numbombs[MAXPLAYERS]; +static short numgrabbers[MAXPLAYERS]; // Andy did this +static short nummissiles[MAXPLAYERS]; // Andy did this +static char dimensionmode[MAXPLAYERS]; +static char revolvedoorstat[MAXPLAYERS]; +static short revolvedoorang[MAXPLAYERS], revolvedoorrotang[MAXPLAYERS]; +static int revolvedoorx[MAXPLAYERS], revolvedoory[MAXPLAYERS]; + +static int nummoves; +// Bug: NUMSTATS used to be equal to the greatest tag number, +// so that the last statrate[] entry was random memory junk +// because stats 0-NUMSTATS required NUMSTATS+1 bytes. -Andy +#define NUMSTATS 13 +static signed char statrate[NUMSTATS] = {-1,0,-1,0,0,0,1,3,0,3,15,-1,-1}; + + //Input structures +static char networkmode; //0 is 2(n-1) mode, 1 is n(n-1) mode +static int locselectedgun, locselectedgun2; +static input loc, oloc, loc2; +static input ffsync[MAXPLAYERS], osync[MAXPLAYERS], ssync[MAXPLAYERS]; + //Input faketimerhandler -> movethings fifo +static int movefifoplc, movefifoend[MAXPLAYERS]; +static input baksync[MOVEFIFOSIZ][MAXPLAYERS]; + //Game recording variables +static int reccnt, recstat = 1; +static input recsync[16384][2]; + +//static int myminlag[MAXPLAYERS], mymaxlag, otherminlag, bufferjitter = 1; +static signed char otherlag[MAXPLAYERS] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; +static int averagelag[MAXPLAYERS] = {512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512}; + +static int fakemovefifoplc; +static vec3_t my, omy; +static int myzvel; +static int myhoriz, omyhoriz; +static short myang, omyang, mycursectnum; +static vec3_t mybak[MOVEFIFOSIZ]; +static int myhorizbak[MOVEFIFOSIZ]; +static short myangbak[MOVEFIFOSIZ]; + + //GAME.C sync state variables +static char syncstat, syncval[MOVEFIFOSIZ], othersyncval[MOVEFIFOSIZ]; +static int syncvaltottail, syncvalhead, othersyncvalhead, syncvaltail; + +static char detailmode = 0, ready2send = 0; +static int ototalclock = 0, gotlastpacketclock = 0, smoothratio; +static vec3_t opos[MAXPLAYERS]; +static int ohoriz[MAXPLAYERS], ozoom[MAXPLAYERS]; +static short oang[MAXPLAYERS]; + +static vec3_t osprite[MAXSPRITES]; + +#define MAXINTERPOLATIONS 1024 +static int numinterpolations = 0, startofdynamicinterpolations = 0; +static int oldipos[MAXINTERPOLATIONS]; +static int bakipos[MAXINTERPOLATIONS]; +static int *curipos[MAXINTERPOLATIONS]; + +// extern int cachecount; + +static char playerreadyflag[MAXPLAYERS]; + + //Miscellaneous variables +static unsigned char packbuf[MAXXDIM]; +static char tempbuf[MAXXDIM]; +static char boardfilename[BMAX_PATH]; +static short tempshort[MAXSECTORS]; +static short screenpeek = 0, oldmousebstatus = 0; +short brightness = 0; +static short screensize, screensizeflag = 0; +static short neartagsector, neartagwall, neartagsprite; +static int lockclock, neartagdist, neartaghitdist; +extern int pageoffset, ydim16; +static int globhiz, globloz, globhihit, globlohit; + + //Over the shoulder mode variables +static int cameradist = -1, cameraang = 0, cameraclock = 0; + + //Board animation variables +#define MAXMIRRORS 64 +static short mirrorwall[MAXMIRRORS], mirrorsector[MAXMIRRORS], mirrorcnt; +static short floormirrorsector[64], floormirrorcnt; +static short turnspritelist[16], turnspritecnt; +static short warpsectorlist[64], warpsectorcnt; +static short xpanningsectorlist[16], xpanningsectorcnt; +static short ypanningwalllist[64], ypanningwallcnt; +static short floorpanninglist[64], floorpanningcnt; +static short dragsectorlist[16], dragxdir[16], dragydir[16], dragsectorcnt; +static int dragx1[16], dragy1[16], dragx2[16], dragy2[16], dragfloorz[16]; +static short swingcnt, swingwall[32][5], swingsector[32]; +static short swingangopen[32], swingangclosed[32], swingangopendir[32]; +static short swingang[32], swinganginc[32]; +static int swingx[32][8], swingy[32][8]; +static short revolvesector[4], revolveang[4], revolvecnt; +static int revolvex[4][16], revolvey[4][16]; +static int revolvepivotx[4], revolvepivoty[4]; +static short subwaytracksector[4][128], subwaynumsectors[4], subwaytrackcnt; +static int subwaystop[4][8], subwaystopcnt[4]; +static int subwaytrackx1[4], subwaytracky1[4]; +static int subwaytrackx2[4], subwaytracky2[4]; +static int subwayx[4], subwaygoalstop[4], subwayvel[4], subwaypausetime[4]; +static short waterfountainwall[MAXPLAYERS], waterfountaincnt[MAXPLAYERS]; +static short slimesoundcnt[MAXPLAYERS]; + + //Variables that let you type messages to other player +static char getmessage[162], getmessageleng; +static int getmessagetimeoff; +static char typemessage[162], typemessageleng = 0, typemode = 0; +#if 0 +static char scantoasc[128] = +{ + 0,0,'1','2','3','4','5','6','7','8','9','0','-','=',0,0, + 'q','w','e','r','t','y','u','i','o','p','[',']',0,0,'a','s', + 'd','f','g','h','j','k','l',';',39,'`',0,92,'z','x','c','v', + 'b','n','m',',','.','/',0,'*',0,32,0,0,0,0,0,0, + 0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1', + '2','3','0','.',0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; +static char scantoascwithshift[128] = +{ + 0,0,'!','@','#','$','%','^','&','*','(',')','_','+',0,0, + 'Q','W','E','R','T','Y','U','I','O','P','{','}',0,0,'A','S', + 'D','F','G','H','J','K','L',':',34,'~',0,'|','Z','X','C','V', + 'B','N','M','<','>','?',0,'*',0,32,0,0,0,0,0,0, + 0,0,0,0,0,0,0,'7','8','9','-','4','5','6','+','1', + '2','3','0','.',0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +}; +#endif + + //These variables are for animating x, y, or z-coordinates of sectors, + //walls, or sprites (They are NOT to be used for changing the [].picnum's) + //See the setanimation(), and getanimategoal() functions for more details. +#define MAXANIMATES 512 +static int *animateptr[MAXANIMATES], animategoal[MAXANIMATES]; +static int animatevel[MAXANIMATES], animateacc[MAXANIMATES], animatecnt = 0; + +#if defined USE_OPENGL + //These parameters are in exact order of sprite structure in BUILD.H +#define spawnsprite(newspriteindex2,x2,y2,z2,cstat2,shade2,pal2, \ + clipdist2,xrepeat2,yrepeat2,xoffset2,yoffset2,picnum2,ang2, \ + xvel2,yvel2,zvel2,owner2,sectnum2,statnum2,lotag2,hitag2,extra2)\ +{ \ + spritetype *spr2; \ + newspriteindex2 = insertsprite(sectnum2,statnum2); \ + spr2 = &sprite[newspriteindex2]; \ + spr2->x = x2; spr2->y = y2; spr2->z = z2; \ + spr2->cstat = cstat2; spr2->shade = shade2; \ + spr2->pal = pal2; spr2->clipdist = clipdist2; \ + spr2->xrepeat = xrepeat2; spr2->yrepeat = yrepeat2; \ + spr2->xoffset = xoffset2; spr2->yoffset = yoffset2; \ + spr2->picnum = picnum2; spr2->ang = ang2; \ + spr2->xvel = xvel2; spr2->yvel = yvel2; spr2->zvel = zvel2; \ + spr2->owner = owner2; \ + spr2->lotag = lotag2; spr2->hitag = hitag2; spr2->extra = extra2; \ + copybuf(&spr2->x,&osprite[newspriteindex2].x,3); \ + show2dsprite[newspriteindex2>>3] &= ~(1<<(newspriteindex2&7)); \ + if (show2dsector[sectnum2>>3]&(1<<(sectnum2&7))) \ + show2dsprite[newspriteindex2>>3] |= (1<<(newspriteindex2&7)); \ + clearbufbyte(&spriteext[newspriteindex2], sizeof(spriteext_t), 0); \ +} +#else +#define spawnsprite(newspriteindex2,x2,y2,z2,cstat2,shade2,pal2, \ + clipdist2,xrepeat2,yrepeat2,xoffset2,yoffset2,picnum2,ang2, \ + xvel2,yvel2,zvel2,owner2,sectnum2,statnum2,lotag2,hitag2,extra2)\ +{ \ + spritetype *spr2; \ + newspriteindex2 = insertsprite(sectnum2,statnum2); \ + spr2 = &sprite[newspriteindex2]; \ + spr2->x = x2; spr2->y = y2; spr2->z = z2; \ + spr2->cstat = cstat2; spr2->shade = shade2; \ + spr2->pal = pal2; spr2->clipdist = clipdist2; \ + spr2->xrepeat = xrepeat2; spr2->yrepeat = yrepeat2; \ + spr2->xoffset = xoffset2; spr2->yoffset = yoffset2; \ + spr2->picnum = picnum2; spr2->ang = ang2; \ + spr2->xvel = xvel2; spr2->yvel = yvel2; spr2->zvel = zvel2; \ + spr2->owner = owner2; \ + spr2->lotag = lotag2; spr2->hitag = hitag2; spr2->extra = extra2; \ + copybuf(&spr2->x,&osprite[newspriteindex2].x,3); \ + show2dsprite[newspriteindex2>>3] &= ~(1<<(newspriteindex2&7)); \ + if (show2dsector[sectnum2>>3]&(1<<(sectnum2&7))) \ + show2dsprite[newspriteindex2>>3] |= (1<<(newspriteindex2&7)); \ +} +#endif + +int nextvoxid = 0; + +int osdcmd_restartvid(const osdfuncparm_t *parm) +{ + UNREFERENCED_PARAMETER(parm); + + resetvideomode(); + if (setgamemode(fullscreen,xdim,ydim,bpp)) + buildputs("restartvid: Reset failed...\n"); + + return OSDCMD_OK; +} + +static int osdcmd_vidmode(const osdfuncparm_t *parm) +{ + int newx = xdim, newy = ydim, newbpp = bpp, newfullscreen = fullscreen; + + if (parm->numparms < 1 || parm->numparms > 4) return OSDCMD_SHOWHELP; + + switch (parm->numparms) { + case 1: // bpp switch + newbpp = Batol(parm->parms[0]); + break; + case 2: // res switch + newx = Batol(parm->parms[0]); + newy = Batol(parm->parms[1]); + break; + case 3: // res & bpp switch + case 4: + newx = Batol(parm->parms[0]); + newy = Batol(parm->parms[1]); + newbpp = Batol(parm->parms[2]); + if (parm->numparms == 4) + newfullscreen = (Batol(parm->parms[3]) != 0); + break; + } + + if (setgamemode(newfullscreen,newx,newy,newbpp)) + buildputs("vidmode: Mode change failed!\n"); + screensize = xdim+1; + return OSDCMD_OK; +} + +static int osdcmd_map(const osdfuncparm_t *parm) { + int i; + char *dot, namebuf[BMAX_PATH+1]; + + if (parm->numparms != 1) return OSDCMD_SHOWHELP; + + strncpy(namebuf, parm->parms[0], BMAX_PATH); + namebuf[BMAX_PATH] = 0; + dot = strrchr(namebuf, '.'); + if ((!dot || Bstrcasecmp(dot, ".map")) && strlen(namebuf) <= BMAX_PATH-4) { + strcat(namebuf, ".map"); + } + + prepareboard(namebuf); + + screenpeek = myconnectindex; + reccnt = 0; + for(i=connecthead;i>=0;i=connectpoint2[i]) initplayersprite((short)i); + + waitforeverybody(); + totalclock = ototalclock = 0; gotlastpacketclock = 0; nummoves = 0; + + ready2send = 1; + drawscreen(screenpeek,65536L); + + return OSDCMD_OK; +} + +extern int startwin_run(void); + +int32_t app_main(int32_t argc, const char **argv) +{ +#if defined STARTUP_SETUP_WINDOW + int cmdsetup = 0; +#endif + int i, j, k /*, l, fil, waitplayers, x1, y1, x2, y2*/; + int /*other, packleng,*/ netparm; + + G_ExtPreInit(); + + OSD_SetLogFile("testgame.log"); + initprintf("KenBuild %s %s\n", s_buildRev, s_buildInfo); + initprintf("Compiled %s\n", s_buildTimestamp); + +#ifdef USE_OPENGL + OSD_RegisterFunction("restartvid","restartvid: reinitialise the video mode",osdcmd_restartvid); + OSD_RegisterFunction("vidmode","vidmode [xdim ydim] [bpp] [fullscreen]: immediately change the video mode",osdcmd_vidmode); + OSD_RegisterFunction("map", "map [filename]: load a map", osdcmd_map); +#endif + + wm_setapptitle("KenBuild by Ken Silverman"); + + Bstrcpy(boardfilename, "nukeland.map"); + j = 0; netparm = argc; + for (i=1;i= 2); + + loadpics("tiles000.art",1048576); //Load artwork + if (!qloadkvx(nextvoxid,"voxel000.kvx")) + tiletovox[PLAYER] = nextvoxid++; + if (!qloadkvx(nextvoxid,"voxel001.kvx")) + tiletovox[BROWNMONSTER] = nextvoxid++; + if (!loaddefinitionsfile("kenbuild.def")) buildputs("Definitions file loaded.\n"); + + //Here's an example of TRUE ornamented walls + //The allocatepermanenttile should be called right after loadpics + //Since it resets the tile cache for each call. + if (allocatepermanenttile(SLIME,128,128) == 0) //If enough memory + { + buildputs("Not enough memory for slime!\n"); + exit(0); + } + if (allocatepermanenttile(MAXTILES-1,64,64) != 0) //If enough memory + { + //My face with an explosion written over it + copytilepiece(KENPICTURE,0,0,64,64,MAXTILES-1,0,0); + copytilepiece(EXPLOSION,0,0,64,64,MAXTILES-1,0,0); + } + + initlava(); + + for(j=0;j<256;j++) + tempbuf[j] = ((j+32)&255); //remap colors for screwy palette sectors + makepalookup(16,tempbuf,0,0,0,1); + + for(j=0;j<256;j++) tempbuf[j] = j; + makepalookup(17,tempbuf,24,24,24,1); + + for(j=0;j<256;j++) tempbuf[j] = j; //(j&31)+32; + makepalookup(18,tempbuf,8,8,48,1); + + prepareboard(boardfilename); //Load board + + initsb(option[1],option[2],digihz[option[7]>>4],((option[7]&4)>0)+1,((option[7]&2)>0)+1,60,option[7]&1); + //if (Bstrcmp(boardfilename,"klab.map") == 0) + // loadsong("klabsong.kdm"); + //else + loadsong("neatsong.kdm"); + musicon(); + +#if 0 + if (option[4] > 0) + { + x1 = ((xdim-screensize)>>1); + x2 = x1+screensize-1; + y1 = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + y2 = y1 + scale(screensize,ydim-32,xdim)-1; + + drawtilebackground(/*0L,0L,*/BACKGROUND,8,x1,y1,x2,y2,0); + + sendlogon(); + + if (option[4] < 5) waitplayers = 2; else waitplayers = option[4]-3; + while (numplayers < waitplayers) + { + sprintf(tempbuf,"%ld of %ld players in...",numplayers,waitplayers); + printext256(68L,84L,31,0,tempbuf,0); + nextpage(); + + if (getpacket(&other,packbuf) > 0) + if (packbuf[0] == 255) + keystatus[1] = 1; + + if (handleevents()) { + if (quitevent) { + keystatus[1] = 1; + quitevent = 0; + } + } + + if (keystatus[1]) + { + sendlogoff(); //Signing off + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + exit(0); + } + } + screenpeek = myconnectindex; + + if (numplayers <= 3) + networkmode = 1; + else + networkmode = 0; + + j = 1; + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + if (myconnectindex == i) break; + j++; + } + sprintf(getmessage,"Player %ld",j); + if (networkmode == 0) + { + if (j == 1) Bstrcat(getmessage," (Master)"); + else Bstrcat(getmessage," (Slave)"); + } else + Bstrcat(getmessage," (Even)"); + getmessageleng = Bstrlen(getmessage); + getmessagetimeoff = totalclock+120; + } +#endif + screenpeek = myconnectindex; + reccnt = 0; + for(i=connecthead;i>=0;i=connectpoint2[i]) initplayersprite((short)i); + + waitforeverybody(); + totalclock = ototalclock = 0; gotlastpacketclock = 0; nummoves = 0; + + ready2send = 1; + drawscreen(screenpeek,65536L); + + while (!keystatus[1]) //Main loop starts here + { + if (handleevents()) { + if (quitevent) { + keystatus[1] = 1; + quitevent = 0; + } + } + + refreshaudio(); + OSD_DispatchQueued(); + + // backslash (useful only with KDM) +// if (keystatus[0x2b]) { keystatus[0x2b] = 0; preparesndbuf(); } + + if ((networkmode == 1) || (myconnectindex != connecthead)) + while (fakemovefifoplc != movefifoend[myconnectindex]) fakedomovethings(); + + getpackets(); + + if (typemode == 0) //if normal game keys active + { + if ((keystatus[0x2a]&keystatus[0x36]&keystatus[0x13]) > 0) //Sh.Sh.R (replay) + { + keystatus[0x13] = 0; + playback(); + } + + if (keystatus[0x26]&(keystatus[0x1d]|keystatus[0x9d])) //Load game + { + keystatus[0x26] = 0; + loadgame(); + drawstatusbar(screenpeek); // Andy did this + } + + if (keystatus[0x1f]&(keystatus[0x1d]|keystatus[0x9d])) //Save game + { + keystatus[0x1f] = 0; + savegame(); + } + } + + if ((networkmode == 0) || (option[4] == 0)) + { + while (movefifoplc != movefifoend[0]) domovethings(); + } + else + { + j = connecthead; + if (j == myconnectindex) j = connectpoint2[j]; + averagelag[j] = ((averagelag[j]*7+(((movefifoend[myconnectindex]-movefifoend[j]+otherlag[j]+2)&255)<<8))>>3); + j = max(averagelag[j]>>9,1); + while (((movefifoend[myconnectindex]-movefifoplc)&(MOVEFIFOSIZ-1)) > j) + { + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (movefifoplc == movefifoend[i]) break; + if (i >= 0) break; + if (myconnectindex != connecthead) + { + k = ((movefifoend[myconnectindex]-movefifoend[connecthead]-otherlag[connecthead]+128)&255); + if (k > 128+1) ototalclock++; + if (k < 128-1) ototalclock--; + } + domovethings(); + } + } + i = (totalclock-gotlastpacketclock)*(65536/(TIMERINTSPERSECOND/MOVESPERSECOND)); + + drawscreen(screenpeek,i); + } + + sendlogoff(); //Signing off + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + + return(0); +} + +void operatesector(short dasector) +{ //Door code + int i, j, /*k, s, nexti, good, cnt,*/ datag; + int /*dax, day,*/ daz, dax2, day2, /*daz2,*/ centx, centy; + short startwall, endwall, wallfind[2]; + + datag = sector[dasector].lotag; + + startwall = sector[dasector].wallptr; + endwall = startwall + sector[dasector].wallnum; + centx = 0L, centy = 0L; + for(i=startwall;i= 0) //If door already moving, reverse its direction + { + if (datag == 8) + daz = ((sector[dasector].ceilingz+sector[dasector].floorz)>>1); + else + daz = sector[dasector].floorz; + + if (animategoal[i] == daz) + animategoal[i] = sector[nextsectorneighborz(dasector,sector[dasector].floorz,-1,-1)].ceilingz; + else + animategoal[i] = daz; + animatevel[i] = 0; + } + else //else insert the door's ceiling on the animation list + { + if (sector[dasector].ceilingz == sector[dasector].floorz) + daz = sector[nextsectorneighborz(dasector,sector[dasector].floorz,-1,-1)].ceilingz; + else + { + if (datag == 8) + daz = ((sector[dasector].ceilingz+sector[dasector].floorz)>>1); + else + daz = sector[dasector].floorz; + } + if ((j = setanimation(§or[dasector].ceilingz,daz,6L,6L)) >= 0) + wsayfollow("updowndr.wav",4096L+(krand()&255)-128,256L,¢x,¢y,0); + } + } + //Simple door that moves down + if ((datag == 7) || (datag == 8)) //If the sector in front's elevator + { + i = getanimationgoal(§or[dasector].floorz); + if (i >= 0) //If elevator already moving, reverse its direction + { + if (datag == 8) + daz = ((sector[dasector].ceilingz+sector[dasector].floorz)>>1); + else + daz = sector[dasector].ceilingz; + + if (animategoal[i] == daz) + animategoal[i] = sector[nextsectorneighborz(dasector,sector[dasector].ceilingz,1,1)].floorz; + else + animategoal[i] = daz; + animatevel[i] = 0; + } + else //else insert the elevator's ceiling on the animation list + { + if (sector[dasector].floorz == sector[dasector].ceilingz) + daz = sector[nextsectorneighborz(dasector,sector[dasector].ceilingz,1,1)].floorz; + else + { + if (datag == 8) + daz = ((sector[dasector].ceilingz+sector[dasector].floorz)>>1); + else + daz = sector[dasector].ceilingz; + } + if ((j = setanimation(§or[dasector].floorz,daz,6L,6L)) >= 0) + wsayfollow("updowndr.wav",4096L+(krand()&255)-128,256L,¢x,¢y,0); + } + } + + if (datag == 9) //Smooshy-wall sideways double-door + { + //find any points with either same x or same y coordinate + // as center (centx, centy) - should be 2 points found. + wallfind[0] = -1; + wallfind[1] = -1; + for(i=startwall;i>1)-wall[wallfind[j]].x; + day2 = ((wall[i].y+wall[wall[wallfind[j]].point2].y)>>1)-wall[wallfind[j]].y; + if (dax2 != 0) + { + dax2 = wall[wall[wall[wallfind[j]].point2].point2].x; + dax2 -= wall[wall[wallfind[j]].point2].x; + setanimation(&wall[wallfind[j]].x,wall[wallfind[j]].x+dax2,4L,0L); + setanimation(&wall[i].x,wall[i].x+dax2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].x,wall[wall[wallfind[j]].point2].x+dax2,4L,0L); + } + else if (day2 != 0) + { + day2 = wall[wall[wall[wallfind[j]].point2].point2].y; + day2 -= wall[wall[wallfind[j]].point2].y; + setanimation(&wall[wallfind[j]].y,wall[wallfind[j]].y+day2,4L,0L); + setanimation(&wall[i].y,wall[i].y+day2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].y,wall[wall[wallfind[j]].point2].y+day2,4L,0L); + } + } + else + { + i = wallfind[j]-1; if (i < startwall) i = endwall-1; + dax2 = ((wall[i].x+wall[wall[wallfind[j]].point2].x)>>1)-wall[wallfind[j]].x; + day2 = ((wall[i].y+wall[wall[wallfind[j]].point2].y)>>1)-wall[wallfind[j]].y; + if (dax2 != 0) + { + setanimation(&wall[wallfind[j]].x,centx,4L,0L); + setanimation(&wall[i].x,centx+dax2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].x,centx+dax2,4L,0L); + } + else if (day2 != 0) + { + setanimation(&wall[wallfind[j]].y,centy,4L,0L); + setanimation(&wall[i].y,centy+day2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].y,centy+day2,4L,0L); + } + } + } + wsayfollow("updowndr.wav",4096L-256L,256L,¢x,¢y,0); + wsayfollow("updowndr.wav",4096L+256L,256L,¢x,¢y,0); + } + + if (datag == 13) //Swinging door + { + for(i=0;i>1) == centx) && (((wall[wallfind[j]].y+wall[wall[wallfind[j]].point2].y)>>1) == centy)) + { //door was closed + //find what direction door should open + i = wallfind[j]-1; if (i < startwall) i = endwall-1; + dax2 = wall[i].x-wall[wallfind[j]].x; + day2 = wall[i].y-wall[wallfind[j]].y; + if (dax2 != 0) + { + dax2 = wall[wall[wall[wall[wallfind[j]].point2].point2].point2].x; + dax2 -= wall[wall[wall[wallfind[j]].point2].point2].x; + setanimation(&wall[wallfind[j]].x,wall[wallfind[j]].x+dax2,4L,0L); + setanimation(&wall[i].x,wall[i].x+dax2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].x,wall[wall[wallfind[j]].point2].x+dax2,4L,0L); + setanimation(&wall[wall[wall[wallfind[j]].point2].point2].x,wall[wall[wall[wallfind[j]].point2].point2].x+dax2,4L,0L); + } + else if (day2 != 0) + { + day2 = wall[wall[wall[wall[wallfind[j]].point2].point2].point2].y; + day2 -= wall[wall[wall[wallfind[j]].point2].point2].y; + setanimation(&wall[wallfind[j]].y,wall[wallfind[j]].y+day2,4L,0L); + setanimation(&wall[i].y,wall[i].y+day2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].y,wall[wall[wallfind[j]].point2].y+day2,4L,0L); + setanimation(&wall[wall[wall[wallfind[j]].point2].point2].y,wall[wall[wall[wallfind[j]].point2].point2].y+day2,4L,0L); + } + } + else + { //door was not closed + i = wallfind[j]-1; if (i < startwall) i = endwall-1; + dax2 = wall[i].x-wall[wallfind[j]].x; + day2 = wall[i].y-wall[wallfind[j]].y; + if (dax2 != 0) + { + setanimation(&wall[wallfind[j]].x,centx,4L,0L); + setanimation(&wall[i].x,centx+dax2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].x,centx,4L,0L); + setanimation(&wall[wall[wall[wallfind[j]].point2].point2].x,centx+dax2,4L,0L); + } + else if (day2 != 0) + { + setanimation(&wall[wallfind[j]].y,centy,4L,0L); + setanimation(&wall[i].y,centy+day2,4L,0L); + setanimation(&wall[wall[wallfind[j]].point2].y,centy,4L,0L); + setanimation(&wall[wall[wall[wallfind[j]].point2].point2].y,centy+day2,4L,0L); + } + } + } + wsayfollow("updowndr.wav",4096L-64L,256L,¢x,¢y,0); + wsayfollow("updowndr.wav",4096L+64L,256L,¢x,¢y,0); + } +} + +void operatesprite(short dasprite) +{ + int datag; + + datag = sprite[dasprite].lotag; + + if (datag == 2) //A sprite that shoots a bomb + { + vec3_t vector = { sprite[dasprite].x,sprite[dasprite].y,sprite[dasprite].z }; + shootgun(dasprite, &vector, + sprite[dasprite].ang,100L,sprite[dasprite].sectnum,2); + } +} + +int changehealth(short snum, short deltahealth) +{ + // int dax, day; + // short good, k, startwall, endwall, s; + + if (health[snum] > 0) + { + health[snum] += deltahealth; + if (health[snum] > 999) health[snum] = 999; + + if (health[snum] <= 0) + { + health[snum] = -1; + wsayfollow("death.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + sprite[playersprite[snum]].picnum = SKELETON; + } + + if ((snum == screenpeek) && (screensize <= xdim)) + { + if (health[snum] > 0) + sprintf((char *)tempbuf,"Health:%3d",health[snum]); + else + sprintf((char *)tempbuf,"YOU STINK!"); + + printext((xdim>>1)-(Bstrlen((char *)tempbuf)<<2),ydim-24,(char *)tempbuf,ALPHABET/*,80*/); + } + } + return(health[snum] <= 0); //You were just injured +} + +void changenumbombs(short snum, short deltanumbombs) { // Andy did this + numbombs[snum] += deltanumbombs; + if (numbombs[snum] > 999) numbombs[snum] = 999; + if (numbombs[snum] <= 0) { + wsayfollow("doh.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + numbombs[snum] = 0; + } + + if ((snum == screenpeek) && (screensize <= xdim)) { + sprintf((char *)tempbuf,"B:%3d",numbombs[snum]); + printext(8L,(ydim - 28L),(char *)tempbuf,ALPHABET/*,80*/); + } +} + +void changenummissiles(short snum, short deltanummissiles) { // Andy did this + nummissiles[snum] += deltanummissiles; + if (nummissiles[snum] > 999) nummissiles[snum] = 999; + if (nummissiles[snum] <= 0) { + wsayfollow("doh.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + nummissiles[snum] = 0; + } + + if ((snum == screenpeek) && (screensize <= xdim)) { + sprintf((char *)tempbuf,"M:%3d",nummissiles[snum]); + printext(8L,(ydim - 20L),(char *)tempbuf,ALPHABET/*,80*/); + } +} + +void changenumgrabbers(short snum, short deltanumgrabbers) { // Andy did this + numgrabbers[snum] += deltanumgrabbers; + if (numgrabbers[snum] > 999) numgrabbers[snum] = 999; + if (numgrabbers[snum] <= 0) { + wsayfollow("doh.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + numgrabbers[snum] = 0; + } + + if ((snum == screenpeek) && (screensize <= xdim)) { + sprintf((char *)tempbuf,"G:%3d",numgrabbers[snum]); + printext(8L,(ydim - 12L),(char *)tempbuf,ALPHABET/*,80*/); + } +} + +static int ostatusflytime = 0x80000000; +void drawstatusflytime(short snum) { // Andy did this + int nstatusflytime; + + if ((snum == screenpeek) && (screensize <= xdim)) { + nstatusflytime = (((flytime[snum] + 119) - lockclock) / 120); + if (nstatusflytime > 1000) nstatusflytime = 1000; + else if (nstatusflytime < 0) nstatusflytime = 0; + if (nstatusflytime != ostatusflytime) { + if (nstatusflytime > 999) sprintf((char *)tempbuf,"FT:BIG"); + else sprintf((char *)tempbuf,"FT:%3d",nstatusflytime); + printext((xdim - 56L),(ydim - 20L),(char *)tempbuf,ALPHABET/*,80*/); + ostatusflytime = nstatusflytime; + } + } +} + +void drawstatusbar(short snum) { // Andy did this + int nstatusflytime; + + if ((snum == screenpeek) && (screensize <= xdim)) { + sprintf((char *)tempbuf,"Deaths:%d",deaths[snum]); + printext((xdim>>1)-(strlen((char *)tempbuf)<<2),ydim-16,(char *)tempbuf,ALPHABET/*,80*/); + sprintf((char *)tempbuf,"Health:%3d",health[snum]); + printext((xdim>>1)-(strlen((char *)tempbuf)<<2),ydim-24,(char *)tempbuf,ALPHABET/*,80*/); + + sprintf((char *)tempbuf,"B:%3d",numbombs[snum]); + printext(8L,(ydim - 28L),(char *)tempbuf,ALPHABET/*,80*/); + sprintf((char *)tempbuf,"M:%3d",nummissiles[snum]); + printext(8L,(ydim - 20L),(char *)tempbuf,ALPHABET/*,80*/); + sprintf((char *)tempbuf,"G:%3d",numgrabbers[snum]); + printext(8L,(ydim - 12L),(char *)tempbuf,ALPHABET/*,80*/); + + nstatusflytime = (((flytime[snum] + 119) - lockclock) / 120); + if (nstatusflytime < 0) { + sprintf((char *)tempbuf,"FT: 0"); + ostatusflytime = 0; + } + else if (nstatusflytime > 999) { + sprintf((char *)tempbuf,"FT:BIG"); + ostatusflytime = 999; + } + else { + sprintf((char *)tempbuf,"FT:%3d",nstatusflytime); + ostatusflytime = nstatusflytime; + } + printext((xdim - 56L),(ydim - 20L),(char *)tempbuf,ALPHABET/*,80*/); + } +} + +void prepareboard(char *daboardfilename) +{ + short startwall, endwall, dasector; + int i, j, k=0, s, dax, day, /*daz,*/ dax2, day2; + + getmessageleng = 0; + typemessageleng = 0; + + randomseed = 17L; + + //Clear (do)animation's list + animatecnt = 0; + typemode = 0; + locselectedgun = 0; + locselectedgun2 = 0; + + if (loadboard(daboardfilename,0,&pos[0],&ang[0],&cursectnum[0]) == -1) + { + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + printf("Board not found\n"); + exit(0); + } else { + char tempfn[BMAX_PATH + 1], *fp; + + strncpy(tempfn, daboardfilename, BMAX_PATH); + tempfn[BMAX_PATH] = 0; + + fp = strrchr(tempfn,'.'); + if (fp) *fp = 0; + + if (strlen(tempfn) <= BMAX_PATH-4) { + strcat(tempfn,".mhk"); + loadmaphack(tempfn); + } + } + + setup3dscreen(); + + for(i=0;i dax2) dax2 = wall[j].x; + if (wall[j].y > day2) day2 = wall[j].y; + if (wall[j].lotag == 3) k = j; + } + if (wall[k].x == dax) dragxdir[dragsectorcnt] = -16; + if (wall[k].y == day) dragydir[dragsectorcnt] = -16; + if (wall[k].x == dax2) dragxdir[dragsectorcnt] = 16; + if (wall[k].y == day2) dragydir[dragsectorcnt] = 16; + + dasector = wall[startwall].nextsector; + dragx1[dragsectorcnt] = 0x7fffffff; + dragy1[dragsectorcnt] = 0x7fffffff; + dragx2[dragsectorcnt] = 0x80000000; + dragy2[dragsectorcnt] = 0x80000000; + startwall = sector[dasector].wallptr; + endwall = startwall+sector[dasector].wallnum; + for(j=startwall;j dragx2[dragsectorcnt]) dragx2[dragsectorcnt] = wall[j].x; + if (wall[j].y > dragy2[dragsectorcnt]) dragy2[dragsectorcnt] = wall[j].y; + + setinterpolation(§or[dasector].floorz); + setinterpolation(&wall[j].x); + setinterpolation(&wall[j].y); + setinterpolation(&wall[wall[j].nextwall].x); + setinterpolation(&wall[wall[j].nextwall].y); + } + + dragx1[dragsectorcnt] += (wall[sector[i].wallptr].x-dax); + dragy1[dragsectorcnt] += (wall[sector[i].wallptr].y-day); + dragx2[dragsectorcnt] -= (dax2-wall[sector[i].wallptr].x); + dragy2[dragsectorcnt] -= (day2-wall[sector[i].wallptr].y); + + dragfloorz[dragsectorcnt] = sector[i].floorz; + + dragsectorlist[dragsectorcnt++] = i; + break; + case 13: + startwall = sector[i].wallptr; + endwall = startwall+sector[i].wallnum; + for(j=startwall;j dax2) dax2 = wall[j].x; + if (wall[j].y > day2) day2 = wall[j].y; + } + for(j=startwall;j dax) && (wall[j].y > day) && (wall[j].x < dax2) && (wall[j].y < day2)) + { + subwayx[subwaytrackcnt] = wall[j].x; + } + else + { + subwaystop[subwaytrackcnt][subwaystopcnt[subwaytrackcnt]] = wall[j].x; + subwaystopcnt[subwaytrackcnt]++; + } + } + } + + for(j=1;j subwaytrackx1[subwaytrackcnt]) + if (wall[startwall].y > subwaytracky1[subwaytrackcnt]) + if (wall[startwall].x < subwaytrackx2[subwaytrackcnt]) + if (wall[startwall].y < subwaytracky2[subwaytrackcnt]) + { + if (sector[j].floorz != sector[i].floorz) + { + sector[j].ceilingstat |= 64; + sector[j].floorstat |= 64; + } + subwaytracksector[subwaytrackcnt][subwaynumsectors[subwaytrackcnt]] = j; + subwaynumsectors[subwaytrackcnt]++; + } + } + + subwayvel[subwaytrackcnt] = 64; + subwaypausetime[subwaytrackcnt] = 720; + + startwall = sector[i].wallptr; + endwall = startwall+sector[i].wallnum; + for(k=startwall;k subwaytrackx1[subwaytrackcnt]) + if (wall[k].y > subwaytracky1[subwaytrackcnt]) + if (wall[k].x < subwaytrackx2[subwaytrackcnt]) + if (wall[k].y < subwaytracky2[subwaytrackcnt]) + setinterpolation(&wall[k].x); + + for(j=1;j=0;k=nextspritesect[k]) + if (statrate[sprite[k].statnum] < 0) + setinterpolation(&sprite[k].x); + } + + + subwaytrackcnt++; + break; + } + if (sector[i].floorpicnum == FLOORMIRROR) + floormirrorsector[mirrorcnt++] = i; + //if (sector[i].ceilingpicnum == FLOORMIRROR) floormirrorsector[mirrorcnt++] = i; //SOS + } + + //Scan wall tags + + mirrorcnt = 0; + tilesizx[MIRROR] = 0; + tilesizy[MIRROR] = 0; + for(i=0;i= 0) && (wall[i].overpicnum == MIRROR) && (wall[i].cstat&32)) + { + if ((sector[s].floorstat&1) == 0) + { + wall[i].overpicnum = MIRRORLABEL+mirrorcnt; + sector[s].ceilingpicnum = MIRRORLABEL+mirrorcnt; + sector[s].floorpicnum = MIRRORLABEL+mirrorcnt; + sector[s].floorstat |= 1; + mirrorwall[mirrorcnt] = i; + mirrorsector[mirrorcnt] = s; + mirrorcnt++; + } + else + wall[i].overpicnum = sector[s].ceilingpicnum; + } + } + + //Invalidate textures in sector behind mirror + for(i=0;i=0;i--) copybuf(&sprite[i].x,&osprite[i].x,3); + + searchmap(cursectnum[connecthead]); + + lockclock = 0; + ototalclock = 0; + gotlastpacketclock = 0; + + screensize = xdim; + dax = ((xdim-screensize)>>1); + dax2 = dax+screensize-1; + day = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + day2 = day + scale(screensize,ydim-32,xdim)-1; + setview(dax,day,dax2,day2); + + startofdynamicinterpolations = numinterpolations; + +#if 0 + for(i=connecthead;i>=0;i=connectpoint2[i]) myminlag[i] = 0; + otherminlag = mymaxlag = 0; +#endif +} + +void checktouchsprite(short snum, short sectnum) +{ + int i, nexti; + + if ((sectnum < 0) || (sectnum >= numsectors)) return; + + for(i=headspritesect[sectnum];i>=0;i=nexti) + { + nexti = nextspritesect[i]; + if (sprite[i].cstat&0x8000) continue; + if ((klabs(pos[snum].x-sprite[i].x)+klabs(pos[snum].y-sprite[i].y) < 512) && (klabs((pos[snum].z>>8)-((sprite[i].z>>8)-(tilesizy[sprite[i].picnum]>>1))) <= 40)) + { + switch(sprite[i].picnum) + { + case COIN: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,192L,&sprite[i].x,&sprite[i].y,0); + changehealth(snum,5); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*60; + changespritestat((short)i,11); + } + break; + case DIAMONDS: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + changehealth(snum,15); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*120; + changespritestat((short)i,11); + } + break; + case COINSTACK: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + changehealth(snum,25); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*180; + changespritestat((short)i,11); + } + break; + case GIFTBOX: + wsayfollow("getstuff.wav",4096L+(krand()&127)+256-mulscale4(sprite[i].xrepeat,sprite[i].yrepeat),208L,&sprite[i].x,&sprite[i].y,0); + changehealth(snum,max(mulscale8(sprite[i].xrepeat,sprite[i].yrepeat),1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 90*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case CANNON: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (snum == myconnectindex) keystatus[4] = 1; + changenumbombs(snum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 60*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case LAUNCHER: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (snum == myconnectindex) keystatus[5] = 1; + changenummissiles(snum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 90*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case GRABCANNON: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (snum == myconnectindex) keystatus[6] = 1; + changenumgrabbers(snum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case AIRPLANE: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (flytime[snum] < lockclock) flytime[snum] = lockclock; + flytime[snum] += 60*(sprite[i].xrepeat+sprite[i].yrepeat); + drawstatusflytime(snum); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + } + } + } +} + +void checkgrabbertouchsprite(short snum, short sectnum) // Andy did this +{ + int i, nexti; + short onum; + + if ((sectnum < 0) || (sectnum >= numsectors)) return; + onum = (sprite[snum].owner & (MAXSPRITES - 1)); + + for(i=headspritesect[sectnum];i>=0;i=nexti) + { + nexti = nextspritesect[i]; + if (sprite[i].cstat&0x8000) continue; + if ((klabs(sprite[snum].x-sprite[i].x)+klabs(sprite[snum].y-sprite[i].y) < 512) && (klabs((sprite[snum].z>>8)-((sprite[i].z>>8)-(tilesizy[sprite[i].picnum]>>1))) <= 40)) + { + switch(sprite[i].picnum) + { + case COIN: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,192L,&sprite[i].x,&sprite[i].y,0); + changehealth(onum,5); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*60; + changespritestat((short)i,11); + } + break; + case DIAMONDS: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + changehealth(onum,15); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*120; + changespritestat((short)i,11); + } + break; + case COINSTACK: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + changehealth(onum,25); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*180; + changespritestat((short)i,11); + } + break; + case GIFTBOX: + wsayfollow("getstuff.wav",4096L+(krand()&127)+256-mulscale4(sprite[i].xrepeat,sprite[i].yrepeat),208L,&sprite[i].x,&sprite[i].y,0); + changehealth(onum,max(mulscale8(sprite[i].xrepeat,sprite[i].yrepeat),1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 90*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case CANNON: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (onum == myconnectindex) keystatus[4] = 1; + changenumbombs(onum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 60*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case LAUNCHER: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (onum == myconnectindex) keystatus[5] = 1; + changenummissiles(onum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 90*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case GRABCANNON: + wsayfollow("getstuff.wav",3584L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (onum == myconnectindex) keystatus[6] = 1; + changenumgrabbers(onum,((sprite[i].xrepeat+sprite[i].yrepeat)>>1)); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + case AIRPLANE: + wsayfollow("getstuff.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (flytime[snum] < lockclock) flytime[snum] = lockclock; + flytime[onum] += 60*(sprite[i].xrepeat+sprite[i].yrepeat); + drawstatusflytime(onum); + if (sprite[i].statnum == 12) deletesprite((short)i); + else { + sprite[i].cstat |= 0x8000; + sprite[i].extra = 120*(sprite[i].xrepeat+sprite[i].yrepeat); + changespritestat((short)i,11); + } + break; + } + } + } +} + +void shootgun(short snum, const vec3_t *vector, + short daang, int dahoriz, short dasectnum, char guntype) +{ + short daang2; + int /*i,*/ j, daz2; + hitdata_t hitinfo; + + switch(guntype) + { + case 0: //Shoot chain gun + daang2 = ((daang + (krand()&31)-16)&2047); + daz2 = ((100-dahoriz)*2000) + ((krand()-32768)>>1); + + hitscan(vector,dasectnum, //Start position + sintable[(daang2+512)&2047], //X vector of 3D ang + sintable[daang2&2047], //Y vector of 3D ang + daz2, //Z vector of 3D ang + &hitinfo,CLIPMASK1); + + if (wall[hitinfo.wall].picnum == KENPICTURE) + { + if (waloff[MAXTILES-1] != 0) wall[hitinfo.wall].picnum = MAXTILES-1; + wsayfollow("hello.wav",4096L+(krand()&127)-64,256L,&wall[hitinfo.wall].x,&wall[hitinfo.wall].y,0); + } + else if (((hitinfo.wall < 0) && (hitinfo.sprite < 0) && (hitinfo.pos.z >= vector->z) && ((sector[hitinfo.sect].floorpicnum == SLIME) || (sector[hitinfo.sect].floorpicnum == FLOORMIRROR))) || ((hitinfo.wall >= 0) && (wall[hitinfo.wall].picnum == SLIME))) + { //If you shoot slime, make a splash + wsayfollow("splash.wav",4096L+(krand()&511)-256,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + spawnsprite(j,hitinfo.pos.x,hitinfo.pos.y,hitinfo.pos.z,2,0,0,32,64,64,0,0,SPLASH,daang, + 0,0,0,snum+4096,hitinfo.sect,4,63,0,0); //63=time left for splash + } + else + { + wsayfollow("shoot.wav",4096L+(krand()&127)-64,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + + if ((hitinfo.sprite >= 0) && (sprite[hitinfo.sprite].statnum < MAXSTATUS)) + switch(sprite[hitinfo.sprite].picnum) + { + case BROWNMONSTER: + if (sprite[hitinfo.sprite].lotag > 0) sprite[hitinfo.sprite].lotag -= 10; + if (sprite[hitinfo.sprite].lotag > 0) + { + wsayfollow("hurt.wav",4096L+(krand()&511)-256,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + if (sprite[hitinfo.sprite].lotag <= 25) + sprite[hitinfo.sprite].cstat |= 2; + } + else + { + wsayfollow("mondie.wav",4096L+(krand()&127)-64,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + sprite[hitinfo.sprite].z += ((tilesizy[sprite[hitinfo.sprite].picnum]*sprite[hitinfo.sprite].yrepeat)<<1); + sprite[hitinfo.sprite].picnum = GIFTBOX; + sprite[hitinfo.sprite].cstat &= ~0x83; //Should not clip, foot-z + changespritestat(hitinfo.sprite,12); + + spawnsprite(j,hitinfo.pos.x,hitinfo.pos.y,hitinfo.pos.z+(32<<8),0,-4,0,32,64,64, + 0,0,EXPLOSION,daang,0,0,0,snum+4096, + hitinfo.sect,5,31,0,0); + } + break; + case EVILAL: + wsayfollow("blowup.wav",4096L+(krand()&127)-64,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + sprite[hitinfo.sprite].picnum = EVILALGRAVE; + sprite[hitinfo.sprite].cstat = 0; + sprite[hitinfo.sprite].xvel = (krand()&255)-128; + sprite[hitinfo.sprite].yvel = (krand()&255)-128; + sprite[hitinfo.sprite].zvel = (krand()&4095)-3072; + changespritestat(hitinfo.sprite,9); + + spawnsprite(j,hitinfo.pos.x,hitinfo.pos.y,hitinfo.pos.z+(32<<8),0,-4,0,32,64,64,0, + 0,EXPLOSION,daang,0,0,0,snum+4096,hitinfo.sect,5,31,0,0); + //31=time left for explosion + + break; + case PLAYER: + for(j=connecthead;j>=0;j=connectpoint2[j]) + if (playersprite[j] == hitinfo.sprite) + { + wsayfollow("ouch.wav",4096L+(krand()&127)-64,256L,&hitinfo.pos.x,&hitinfo.pos.y,0); + changehealth(j,-10); + break; + } + break; + } + + spawnsprite(j,hitinfo.pos.x,hitinfo.pos.y,hitinfo.pos.z+(8<<8),2,-4,0,32,16,16,0,0, + EXPLOSION,daang,0,0,0,snum+4096,hitinfo.sect,3,63,0,0); + + //Sprite starts out with center exactly on wall. + //This moves it back enough to see it at all angles. + movesprite((short)j,-(((int)sintable[(512+daang)&2047]*TICSPERFRAME)<<4),-(((int)sintable[daang]*TICSPERFRAME)<<4),0L,4L<<8,4L<<8,CLIPMASK1); + } + break; + case 1: //Shoot silver sphere bullet + spawnsprite(j,vector->x,vector->y,vector->z,1+128,0,0,16,64,64,0,0,BULLET,daang, + sintable[(daang+512)&2047]>>5,sintable[daang&2047]>>5, + (100-dahoriz)<<6,snum+4096,dasectnum,6,0,0,0); + wsayfollow("shoot2.wav",4096L+(krand()&127)-64,128L,&sprite[j].x,&sprite[j].y,1); + break; + case 2: //Shoot bomb + spawnsprite(j,vector->x,vector->y,vector->z,128,0,0,12,16,16,0,0,BOMB,daang, + sintable[(daang+512)&2047]*5>>8,sintable[daang&2047]*5>>8, + (80-dahoriz)<<6,snum+4096,dasectnum,6,0,0,0); + wsayfollow("shoot3.wav",4096L+(krand()&127)-64,192L,&sprite[j].x,&sprite[j].y,1); + break; + case 3: //Shoot missile (Andy did this) + spawnsprite(j,vector->x,vector->y,vector->z,1+128,0,0,16,32,32,0,0,MISSILE,daang, + sintable[(daang+512)&2047]>>4,sintable[daang&2047]>>4, + (100-dahoriz)<<7,snum+4096,dasectnum,6,0,0,0); + wsayfollow("shoot3.wav",4096L+(krand()&127)-64,192L,&sprite[j].x,&sprite[j].y,1); + break; + case 4: //Shoot grabber (Andy did this) + spawnsprite(j,vector->x,vector->y,vector->z,1+128,0,0,16,64,64,0,0,GRABBER,daang, + sintable[(daang+512)&2047]>>5,sintable[daang&2047]>>5, + (100-dahoriz)<<6,snum+4096,dasectnum,6,0,0,0); + wsayfollow("shoot4.wav",4096L+(krand()&127)-64,128L,&sprite[j].x,&sprite[j].y,1); + break; + } +} + +#define MAXVOXMIPS 5 +extern intptr_t voxoff[][MAXVOXMIPS]; +void analyzesprites(int dax, int day) +{ + int i, j=0, k, *intptr; + vec3_t *ospr; + spritetype *tspr; + + //This function is called between drawrooms() and drawmasks() + //It has a list of possible sprites that may be drawn on this frame + + for(i=0,tspr=&tsprite[0];ipicnum] >= 0) + switch(tspr->picnum) + { + case PLAYER: + // //Get which of the 8 angles of the sprite to draw (0-7) + // //k ranges from 0-7 + //k = getangle(tspr->x-dax,tspr->y-day); + //k = (((tspr->ang+3072+128-k)&2047)>>8)&7; + // //This guy has only 5 pictures for 8 angles (3 are x-flipped) + //if (k <= 4) + //{ + // tspr->picnum += (k<<2); + // tspr->cstat &= ~4; //clear x-flipping bit + //} + //else + //{ + // tspr->picnum += ((8-k)<<2); + // tspr->cstat |= 4; //set x-flipping bit + //} + + if ((tspr->cstat&2) == 0) + { + //tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum]; + intptr = (int *)voxoff[ tiletovox[PLAYER] ][0]; + tspr->xrepeat = scale(tspr->xrepeat,56,intptr[2]); + tspr->yrepeat = scale(tspr->yrepeat,56,intptr[2]); + tspr->shade -= 6; + } + break; + case BROWNMONSTER: + //tspr->cstat |= 48; tspr->picnum = tiletovox[tspr->picnum]; + break; + } + + k = statrate[tspr->statnum]; + if (k >= 0) //Interpolate moving sprite + { + ospr = &osprite[tspr->owner]; + switch(k) + { + case 0: j = smoothratio; break; + case 1: j = (smoothratio>>1)+(((nummoves-tspr->owner)&1)<<15); break; + case 3: j = (smoothratio>>2)+(((nummoves-tspr->owner)&3)<<14); break; + case 7: j = (smoothratio>>3)+(((nummoves-tspr->owner)&7)<<13); break; + case 15: j = (smoothratio>>4)+(((nummoves-tspr->owner)&15)<<12); break; + } + k = tspr->x-ospr->x; tspr->x = ospr->x; + if (k != 0) tspr->x += mulscale16(k,j); + k = tspr->y-ospr->y; tspr->y = ospr->y; + if (k != 0) tspr->y += mulscale16(k,j); + k = tspr->z-ospr->z; tspr->z = ospr->z; + if (k != 0) tspr->z += mulscale16(k,j); + } + + //Don't allow close explosion sprites to be transluscent + k = tspr->statnum; + if ((k == 3) || (k == 4) || (k == 5) || (k == 7)) + if (klabs(dax-tspr->x) < 256) + if (klabs(day-tspr->y) < 256) + tspr->cstat &= ~2; + + tspr->shade += 6; + if (sector[tspr->sectnum].ceilingstat&1) + tspr->shade += sector[tspr->sectnum].ceilingshade; + else + tspr->shade += sector[tspr->sectnum].floorshade; + } +} + +void tagcode(void) +{ + int i, /*nexti,*/ j, k, l, s, dax, day, /*daz, dax2, day2,*/ cnt, good; + short startwall, endwall, dasector, p, oldang; + + for(p=connecthead;p>=0;p=connectpoint2[p]) + { + if (sector[cursectnum[p]].lotag == 1) + { + activatehitag(sector[cursectnum[p]].hitag); + sector[cursectnum[p]].lotag = 0; + sector[cursectnum[p]].hitag = 0; + } + if ((sector[cursectnum[p]].lotag == 2) && (cursectnum[p] != ocursectnum[p])) + activatehitag(sector[cursectnum[p]].hitag); + } + + for(i=0;i>2); + if (j >= 16) j = 31-j; + { + sector[dasector].ceilingshade = j; + sector[dasector].floorshade = j; + startwall = sector[dasector].wallptr; + endwall = startwall+sector[dasector].wallnum; + for(s=startwall;s=0;p=connectpoint2[p]) + if (sector[cursectnum[p]].lotag == 10) //warp sector + { + if (cursectnum[p] != ocursectnum[p]) + { + warpsprite(playersprite[p]); + pos[p].x = sprite[playersprite[p]].x; + pos[p].y = sprite[playersprite[p]].y; + pos[p].z = sprite[playersprite[p]].z; + ang[p] = sprite[playersprite[p]].ang; + cursectnum[p] = sprite[playersprite[p]].sectnum; + + sprite[playersprite[p]].z += EYEHEIGHT; + + //warp(&pos[p].x,&pos[p].y,&pos[p].z,&ang[p],&cursectnum[p]); + //Update sprite representation of player + //setsprite_eyeheight(playersprite[p],&pos[p]); + //sprite[playersprite[p]].ang = ang[p]; + } + } + + for(i=0;i>2)&255); + } + + for(i=0;i>2)&255); + sector[floorpanninglist[i]].floorypanning = ((lockclock>>2)&255); + } + + for(i=0;i dragx2[i]) dragxdir[i] = -16; + if (wall[startwall].y+dragydir[i] > dragy2[i]) dragydir[i] = -16; + + for(j=startwall;j>3); + + for(p=connecthead;p>=0;p=connectpoint2[p]) + if (cursectnum[p] == dasector) + { + pos[p].x += dragxdir[i]; + pos[p].y += dragydir[i]; + if (p == myconnectindex) + { my.x += dragxdir[i]; my.y += dragydir[i]; } + //pos[p].z += (sector[dasector].floorz-j); + + //Update sprite representation of player + setsprite_eyeheight(playersprite[p],&pos[p]); + sprite[playersprite[p]].ang = ang[p]; + } + } + + for(i=0;i=0;p=connectpoint2[p]) + if ((cursectnum[p] == swingsector[i]) || (testneighborsectors(cursectnum[p],swingsector[i]) == 1)) + { + cnt = 256; + do + { + good = 1; + + //swingangopendir is -1 if forwards, 1 is backwards + l = (swingangopendir[i] > 0); + for(k=l+3;k>=l;k--) + if (clipinsidebox(pos[p].x,pos[p].y,swingwall[i][k],128L) != 0) + { + good = 0; + break; + } + if (good == 0) + { + if (cnt == 256) + { + swinganginc[i] = -swinganginc[i]; + swingang[i] = oldang; + } + else + { + swingang[i] = ((swingang[i]-swinganginc[i])&2047); + } + for(k=1;k<=3;k++) + rotatepoint(swingx[i][0],swingy[i][0],swingx[i][k],swingy[i][k],swingang[i],&wall[swingwall[i][k]].x,&wall[swingwall[i][k]].y); + if (swingang[i] == swingangclosed[i]) + { + wsayfollow("closdoor.wav",4096L+(krand()&511)-256,256L,&swingx[i][0],&swingy[i][0],0); + swinganginc[i] = 0; + break; + } + if (swingang[i] == swingangopen[i]) + { + swinganginc[i] = 0; + break; + } + cnt--; + } + } while ((good == 0) && (cnt > 0)); + } + } + } + if (swinganginc[i] == 0) + for(j=1;j<=3;j++) + { + stopinterpolation(&wall[swingwall[i][j]].x); + stopinterpolation(&wall[swingwall[i][j]].y); + } + } + + for(i=0;i 2)) + { + dasector = subwaytracksector[i][0]; + startwall = sector[dasector].wallptr; + endwall = startwall+sector[dasector].wallnum; + for(k=startwall;k subwaytrackx1[i]) + if (wall[k].y > subwaytracky1[i]) + if (wall[k].x < subwaytrackx2[i]) + if (wall[k].y < subwaytracky2[i]) + wall[k].x += subwayvel[i]; + + for(j=1;j=0;s=nextspritesect[s]) + sprite[s].x += subwayvel[i]; + } + + for(p=connecthead;p>=0;p=connectpoint2[p]) + if (cursectnum[p] != subwaytracksector[i][0]) + if (sector[cursectnum[p]].floorz != sector[subwaytracksector[i][0]].floorz) + if (pos[p].x > subwaytrackx1[i]) + if (pos[p].y > subwaytracky1[i]) + if (pos[p].x < subwaytrackx2[i]) + if (pos[p].y < subwaytracky2[i]) + { + pos[p].x += subwayvel[i]; + if (p == myconnectindex) + { my.x += subwayvel[i]; } + + //Update sprite representation of player + setsprite_eyeheight(playersprite[p],&pos[p]); + sprite[playersprite[p]].ang = ang[p]; + } + + subwayx[i] += subwayvel[i]; + } + + j = subwayvel[i]; + k = subwaystop[i][subwaygoalstop[i]] - subwayx[i]; + if (k > 0) + { + if (k > 4096) + { + if (subwayvel[i] < 256) subwayvel[i]++; + } + else + subwayvel[i] = (k>>4)+1; + } + else if (k < 0) + { + if (k < -4096) + { + if (subwayvel[i] > -256) subwayvel[i]--; + } + else + subwayvel[i] = (k>>4)-1; + } + if ((j < 0) && (subwayvel[i] >= 0)) subwayvel[i] = -1; + if ((j > 0) && (subwayvel[i] <= 0)) subwayvel[i] = 1; + + if ((subwayvel[i] <= 2) && (subwayvel[i] >= -2) && (klabs(k) < 2048)) + { + //Open / close doors + if ((subwaypausetime[i] == 720) || ((subwaypausetime[i] >= 120) && (subwaypausetime[i]-TICSPERFRAME < 120))) + activatehitag(sector[subwaytracksector[i][0]].hitag); + + subwaypausetime[i] -= TICSPERFRAME; + if (subwaypausetime[i] < 0) + { + subwaypausetime[i] = 720; + if (subwayvel[i] < 0) + { + subwaygoalstop[i]--; + if (subwaygoalstop[i] < 0) + { + subwaygoalstop[i] = 1; + subwayvel[i] = 1; + } + } + else if (subwayvel[i] > 0) + { + subwaygoalstop[i]++; + if (subwaygoalstop[i] >= subwaystopcnt[i]) + { + subwaygoalstop[i] = subwaystopcnt[i]-2; + subwayvel[i] = -1; + } + } + } + } + } +} + +void statuslistcode(void) +{ + short p, target, hitobject, daang, osectnum, movestat; + int i, nexti, j, nextj, k, l, dax, day, daz, dist=0, ox, oy, mindist; + int doubvel, xvect, yvect; + + //Go through active BROWNMONSTER list + for(i=headspritestat[1];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + k = krand(); + + //Choose a target player + mindist = 0x7fffffff; target = connecthead; + for(p=connecthead;p>=0;p=connectpoint2[p]) + { + dist = klabs(sprite[i].x-pos[p].x)+klabs(sprite[i].y-pos[p].y); + if (dist < mindist) mindist = dist, target = p; + } + + //brown monster decides to shoot bullet + if ((k&63) == 23) + { + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[target].x,pos[target].y,pos[target].z,cursectnum[target]) == 0) + { + if ((k&0xf00) == 0xb00) changespritestat(i,2); + } + else + { + wsayfollow("monshoot.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,1); + + doubvel = (TICSPERFRAME<<((ssync[target].bits&256)>0)); + xvect = 0, yvect = 0; + if (ssync[target].fvel != 0) + { + xvect += ((((int)ssync[target].fvel)*doubvel*(int)sintable[(ang[target]+512)&2047])>>3); + yvect += ((((int)ssync[target].fvel)*doubvel*(int)sintable[ang[target]&2047])>>3); + } + if (ssync[target].svel != 0) + { + xvect += ((((int)ssync[target].svel)*doubvel*(int)sintable[ang[target]&2047])>>3); + yvect += ((((int)ssync[target].svel)*doubvel*(int)sintable[(ang[target]+1536)&2047])>>3); + } + + ox = pos[target].x; oy = pos[target].y; + + //distance is j + j = ksqrt((ox-sprite[i].x)*(ox-sprite[i].x)+(oy-sprite[i].y)*(oy-sprite[i].y)); + + switch((sprite[i].extra>>11)&3) + { + case 1: j = -(j>>1); break; + case 3: j = 0; break; + case 0: case 2: break; + } + sprite[i].extra += 2048; + + //rate is (TICSPERFRAME<<19) + xvect = scale(xvect,j,TICSPERFRAME<<19); + yvect = scale(yvect,j,TICSPERFRAME<<19); + clipmove_old(&ox,&oy,&pos[target].z,&cursectnum[target],xvect<<14,yvect<<14,128L,4<<8,4<<8,CLIPMASK0); + ox -= sprite[i].x; + oy -= sprite[i].y; + + daang = ((getangle(ox,oy)+(krand()&7)-4)&2047); + + dax = (sintable[(daang+512)&2047]>>6); + day = (sintable[daang&2047]>>6); + daz = 0; + if (ox != 0) + daz = scale(dax,pos[target].z+(8<<8)-sprite[i].z,ox); + else if (oy != 0) + daz = scale(day,pos[target].z+(8<<8)-sprite[i].z,oy); + + spawnsprite(j,sprite[i].x,sprite[i].y,sprite[i].z,128,0,0, + 16,sprite[i].xrepeat,sprite[i].yrepeat,0,0,BULLET,daang,dax,day,daz,i,sprite[i].sectnum,6,0,0,0); + + sprite[i].extra &= (~2047); + } + } + + //Move brown monster + dax = sprite[i].x; //Back up old x&y if stepping off cliff + day = sprite[i].y; + + doubvel = max(mulscale7(sprite[i].xrepeat,sprite[i].yrepeat),4); + + osectnum = sprite[i].sectnum; + movestat = movesprite((short)i,(int)sintable[(sprite[i].ang+512)&2047]*doubvel,(int)sintable[sprite[i].ang]*doubvel,0L,4L<<8,4L<<8,CLIPMASK0); + if (globloz > sprite[i].z+(48<<8)) + { sprite[i].x = dax; sprite[i].y = day; movestat = 1; } + else + sprite[i].z = globloz-((tilesizy[sprite[i].picnum]*sprite[i].yrepeat)<<1); + + if ((sprite[i].sectnum != osectnum) && (sector[sprite[i].sectnum].lotag == 10)) + { warpsprite((short)i); movestat = 0; } + + if ((movestat != 0) || ((k&63) == 1)) + { + if (sprite[i].ang == (sprite[i].extra&2047)) + { + daang = (getangle(pos[target].x-sprite[i].x,pos[target].y-sprite[i].y)&2047); + daang = ((daang+(krand()&1023)-512)&2047); + sprite[i].extra = ((sprite[i].extra&(~2047))|daang); + } + if ((sprite[i].extra-sprite[i].ang)&1024) + { + sprite[i].ang = ((sprite[i].ang-32)&2047); + if (!((sprite[i].extra-sprite[i].ang)&1024)) sprite[i].ang = (sprite[i].extra&2047); + } + else + { + sprite[i].ang = ((sprite[i].ang+32)&2047); + if (((sprite[i].extra-sprite[i].ang)&1024)) sprite[i].ang = (sprite[i].extra&2047); + } + } + } + + for(i=headspritestat[10];i>=0;i=nexti) //EVILAL list + { + nexti = nextspritestat[i]; + + if (sprite[i].yrepeat < 38) continue; + if (sprite[i].yrepeat < 64) + { + sprite[i].xrepeat++; + sprite[i].yrepeat++; + continue; + } + + if ((nummoves-i)&statrate[10]) continue; + + //Choose a target player + mindist = 0x7fffffff; target = connecthead; + for(p=connecthead;p>=0;p=connectpoint2[p]) + { + dist = klabs(sprite[i].x-pos[p].x)+klabs(sprite[i].y-pos[p].y); + if (dist < mindist) mindist = dist, target = p; + } + + k = (krand()&255); + + if ((sprite[i].lotag&32) && (k < 48)) //Al decides to reproduce + { + l = 0; + if ((sprite[i].lotag&64) && (k < 2)) //Give him a chance to reproduce without seeing you + l = 1; + else if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[target].x,pos[target].y,pos[target].z,cursectnum[target]) == 1) + l = 1; + if (l != 0) + { + spawnsprite(j,sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].cstat,sprite[i].shade,sprite[i].pal, + sprite[i].clipdist,38,38,sprite[i].xoffset,sprite[i].yoffset,sprite[i].picnum,krand()&2047,0,0,0,i, + sprite[i].sectnum,10,sprite[i].lotag,sprite[i].hitag,sprite[i].extra); + switch(krand()&31) //Mutations! + { + case 0: sprite[i].cstat ^= 2; break; + case 1: sprite[i].cstat ^= 512; break; + case 2: sprite[i].shade++; break; + case 3: sprite[i].shade--; break; + case 4: sprite[i].pal ^= 16; break; + case 5: case 6: case 7: sprite[i].lotag ^= (1<<(krand()&7)); break; + case 8: sprite[i].lotag = (krand()&255); break; + } + } + } + if (k >= 208+((sprite[i].lotag&128)>>2)) //Al decides to shoot bullet + { + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[target].x,pos[target].y,pos[target].z,cursectnum[target]) == 1) + { + wsayfollow("zipguns.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,1); + + spawnsprite(j,sprite[i].x,sprite[i].y, + sector[sprite[i].sectnum].floorz-(24<<8), + 0,0,0,16,32,32,0,0,BULLET, + (getangle(pos[target].x-sprite[j].x, + pos[target].y-sprite[j].y)+(krand()&15)-8)&2047, + sintable[(sprite[j].ang+512)&2047]>>6, + sintable[sprite[j].ang&2047]>>6, + ((pos[target].z+(8<<8)-sprite[j].z)<<8) / + (ksqrt((pos[target].x-sprite[j].x) * + (pos[target].x-sprite[j].x) + + (pos[target].y-sprite[j].y) * + (pos[target].y-sprite[j].y))+1), + i,sprite[i].sectnum,6,0,0,0); + } + } + + //Move Al + l = (((sprite[i].lotag&3)+2)<<8); + if (sprite[i].lotag&4) l = -l; + dax = sintable[(sprite[i].ang+512)&2047]*l; + day = sintable[sprite[i].ang]*l; + + osectnum = sprite[i].sectnum; + movestat = movesprite((short)i,dax,day,0L,-8L<<8,-8L<<8,CLIPMASK0); + sprite[i].z = globloz; + if ((sprite[i].sectnum != osectnum) && (sector[sprite[i].sectnum].lotag == 10)) + { + warpsprite((short)i); + movestat = 0; + } + + if (sprite[i].lotag&16) + { + if (((k&124) >= 120) && (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[target].x,pos[target].y,pos[target].z,cursectnum[target]) == 1)) + sprite[i].ang = getangle(pos[target].x-sprite[i].x,pos[target].y-sprite[i].y); + else + sprite[i].ang = (krand()&2047); + } + + if (movestat != 0) + { + if ((k&2) && (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[target].x,pos[target].y,pos[target].z,cursectnum[target]) == 1)) + sprite[i].ang = getangle(pos[target].x-sprite[i].x,pos[target].y-sprite[i].y); + else + sprite[i].ang = (krand()&2047); + + if ((movestat&49152) == 49152) + if (sprite[movestat&16383].picnum == EVILAL) + if ((k&31) >= 30) + { + wsayfollow("blowup.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[i].picnum = EVILALGRAVE; + sprite[i].cstat = 0; + sprite[i].xvel = (krand()&255)-128; + sprite[i].yvel = (krand()&255)-128; + sprite[i].zvel = (krand()&4095)-3072; + changespritestat(i,9); + } + + if (sprite[i].lotag&8) + if ((k&31) >= 30) + { + wsayfollow("blowup.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[i].picnum = EVILALGRAVE; + sprite[i].cstat = 0; + sprite[i].xvel = (krand()&255)-128; + sprite[i].yvel = (krand()&255)-128; + sprite[i].zvel = (krand()&4095)-3072; + changespritestat(i,9); + } + + if (movestat == -1) + { + wsayfollow("blowup.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[i].picnum = EVILALGRAVE; + sprite[i].cstat = 0; + sprite[i].xvel = (krand()&255)-128; + sprite[i].yvel = (krand()&255)-128; + sprite[i].zvel = (krand()&4095)-3072; + changespritestat(i,9); + } + } + } + + //Go through travelling bullet sprites + for(i=headspritestat[6];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + if ((nummoves-i)&statrate[6]) continue; + + //If the sprite is a bullet then... + if ((sprite[i].picnum == BULLET) || (sprite[i].picnum == GRABBER) || (sprite[i].picnum == MISSILE) || (sprite[i].picnum == BOMB)) + { + dax = ((((int)sprite[i].xvel)*TICSPERFRAME)<<12); + day = ((((int)sprite[i].yvel)*TICSPERFRAME)<<12); + daz = ((((int)sprite[i].zvel)*TICSPERFRAME)>>2); + if (sprite[i].picnum == BOMB) daz = 0; + + osectnum = sprite[i].sectnum; + hitobject = movesprite((short)i,dax,day,daz,4L<<8,4L<<8,CLIPMASK1); + if ((sprite[i].sectnum != osectnum) && (sector[sprite[i].sectnum].lotag == 10)) + { + warpsprite((short)i); + hitobject = 0; + } + + if (sprite[i].picnum == GRABBER) { // Andy did this (& Ken) !Homing! + checkgrabbertouchsprite(i,sprite[i].sectnum); + l = 0x7fffffff; + for (j = connecthead; j >= 0; j = connectpoint2[j]) // Players + if (j != (sprite[i].owner & (MAXSPRITES - 1))) + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].sectnum,pos[j].x,pos[j].y,pos[j].z,cursectnum[j])) { + k = ksqrt(sqr(pos[j].x - sprite[i].x) + sqr(pos[j].y - sprite[i].y) + (sqr(pos[j].z - sprite[i].z) >> 8)); + if (k < l) { + l = k; + dax = (pos[j].x - sprite[i].x); + day = (pos[j].y - sprite[i].y); + daz = (pos[j].z - sprite[i].z); + } + } + for(j = headspritestat[1]; j >= 0; j = nextj) { // Active monsters + nextj = nextspritestat[j]; + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].sectnum,sprite[j].x,sprite[j].y,sprite[j].z,sprite[j].sectnum)) { + k = ksqrt(sqr(sprite[j].x - sprite[i].x) + sqr(sprite[j].y - sprite[i].y) + (sqr(sprite[j].z - sprite[i].z) >> 8)); + if (k < l) { + l = k; + dax = (sprite[j].x - sprite[i].x); + day = (sprite[j].y - sprite[i].y); + daz = (sprite[j].z - sprite[i].z); + } + } + } + for(j = headspritestat[2]; j >= 0; j = nextj) { // Inactive monsters + nextj = nextspritestat[j]; + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z,sprite[i].sectnum,sprite[j].x,sprite[j].y,sprite[j].z,sprite[j].sectnum)) { + k = ksqrt(sqr(sprite[j].x - sprite[i].x) + sqr(sprite[j].y - sprite[i].y) + (sqr(sprite[j].z - sprite[i].z) >> 8)); + if (k < l) { + l = k; + dax = (sprite[j].x - sprite[i].x); + day = (sprite[j].y - sprite[i].y); + daz = (sprite[j].z - sprite[i].z); + } + } + } + if (l != 0x7fffffff) { + sprite[i].xvel = (divscale7(dax,l) + sprite[i].xvel); // 1/5 of velocity is homing, 4/5 is momentum + sprite[i].yvel = (divscale7(day,l) + sprite[i].yvel); // 1/5 of velocity is homing, 4/5 is momentum + sprite[i].zvel = (divscale7(daz,l) + sprite[i].zvel); // 1/5 of velocity is homing, 4/5 is momentum + l = ksqrt((sprite[i].xvel * sprite[i].xvel) + (sprite[i].yvel * sprite[i].yvel) + ((sprite[i].zvel * sprite[i].zvel) >> 8)); + sprite[i].xvel = divscale9(sprite[i].xvel,l); + sprite[i].yvel = divscale9(sprite[i].yvel,l); + sprite[i].zvel = divscale9(sprite[i].zvel,l); + sprite[i].ang = getangle(sprite[i].xvel,sprite[i].yvel); + } + } + + if (sprite[i].picnum == BOMB) + { + j = sprite[i].sectnum; + if ((sector[j].floorstat&2) && (sprite[i].z > globloz-(8<<8))) + { + k = sector[j].wallptr; + daang = getangle(wall[wall[k].point2].x-wall[k].x,wall[wall[k].point2].y-wall[k].y); + sprite[i].xvel += mulscale22(sintable[(daang+1024)&2047],sector[j].floorheinum); + sprite[i].yvel += mulscale22(sintable[(daang+512)&2047],sector[j].floorheinum); + } + } + + if (sprite[i].picnum == BOMB) + { + sprite[i].z += sprite[i].zvel; + sprite[i].zvel += (TICSPERFRAME<<7); + if (sprite[i].z < globhiz+(tilesizy[BOMB]<<6)) + { + sprite[i].z = globhiz+(tilesizy[BOMB]<<6); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + if (sprite[i].z > globloz-(tilesizy[BOMB]<<6)) + { + sprite[i].z = globloz-(tilesizy[BOMB]<<6); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + dax = sprite[i].xvel; day = sprite[i].yvel; + dist = dax*dax+day*day; + if (dist < 512) + { + bombexplode(i); + goto bulletisdeletedskip; + } + if (dist < 4096) + { + sprite[i].xrepeat = ((4096+2048)*16) / (dist+2048); + sprite[i].yrepeat = sprite[i].xrepeat; + sprite[i].xoffset = (krand()&15)-8; + sprite[i].yoffset = (krand()&15)-8; + } + if (mulscale30(krand(),dist) == 0) + { + sprite[i].xvel -= ksgn(sprite[i].xvel); + sprite[i].yvel -= ksgn(sprite[i].yvel); + sprite[i].zvel -= ksgn(sprite[i].zvel); + } + } + + //Check for bouncy objects before killing bullet + if ((hitobject&0xc000) == 16384) //Bullet hit a ceiling/floor + { + k = sector[hitobject&(MAXSECTORS-1)].wallptr; l = wall[k].point2; + daang = getangle(wall[l].x-wall[k].x,wall[l].y-wall[k].y); + + getzsofslope(hitobject&(MAXSECTORS-1),sprite[i].x,sprite[i].y,&k,&l); + if (sprite[i].z < ((k+l)>>1)) k = sector[hitobject&(MAXSECTORS-1)].ceilingheinum; + else k = sector[hitobject&(MAXSECTORS-1)].floorheinum; + + dax = mulscale14(k,sintable[(daang)&2047]); + day = mulscale14(k,sintable[(daang+1536)&2047]); + daz = 4096; + + k = sprite[i].xvel*dax+sprite[i].yvel*day+mulscale4(sprite[i].zvel,daz); + l = dax*dax+day*day+daz*daz; + if ((klabs(k)>>14) < l) + { + k = divscale17(k,l); + sprite[i].xvel -= mulscale16(dax,k); + sprite[i].yvel -= mulscale16(day,k); + sprite[i].zvel -= mulscale12(daz,k); + } + wsayfollow("bouncy.wav",4096L+(krand()&127)-64,255,&sprite[i].x,&sprite[i].y,1); + hitobject = 0; + sprite[i].owner = -1; //Bullet turns evil! + } + else if ((hitobject&0xc000) == 32768) //Bullet hit a wall + { + if (wall[hitobject&4095].lotag == 8) + { + dax = sprite[i].xvel; day = sprite[i].yvel; + if ((sprite[i].picnum != BOMB) || (dax*dax+day*day >= 512)) + { + k = (hitobject&4095); l = wall[k].point2; + j = getangle(wall[l].x-wall[k].x,wall[l].y-wall[k].y)+512; + + //k = cos(ang) * sin(ang) * 2 + k = mulscale13(sintable[(j+512)&2047],sintable[j&2047]); + //l = cos(ang * 2) + l = sintable[((j<<1)+512)&2047]; + + ox = sprite[i].xvel; oy = sprite[i].yvel; + dax = -ox; day = -oy; + sprite[i].xvel = dmulscale14(day,k,dax,l); + sprite[i].yvel = dmulscale14(dax,k,-day,l); + + if (sprite[i].picnum == BOMB) + { + sprite[i].xvel -= (sprite[i].xvel>>3); + sprite[i].yvel -= (sprite[i].yvel>>3); + sprite[i].zvel -= (sprite[i].zvel>>3); + } + ox -= sprite[i].xvel; oy -= sprite[i].yvel; + dist = ((ox*ox+oy*oy)>>8); + wsayfollow("bouncy.wav",4096L+(krand()&127)-64,min(dist,256),&sprite[i].x,&sprite[i].y,1); + hitobject = 0; + sprite[i].owner = -1; //Bullet turns evil! + } + } + } + else if ((hitobject&0xc000) == 49152) //Bullet hit a sprite + { + if (sprite[hitobject&4095].picnum == BOUNCYMAT) + { + if ((sprite[hitobject&4095].cstat&48) == 0) + { + sprite[i].xvel = -sprite[i].xvel; + sprite[i].yvel = -sprite[i].yvel; + sprite[i].zvel = -sprite[i].zvel; + dist = 255; + } + else if ((sprite[hitobject&4095].cstat&48) == 16) + { + j = sprite[hitobject&4095].ang; + + //k = cos(ang) * sin(ang) * 2 + k = mulscale13(sintable[(j+512)&2047],sintable[j&2047]); + //l = cos(ang * 2) + l = sintable[((j<<1)+512)&2047]; + + ox = sprite[i].xvel; oy = sprite[i].yvel; + dax = -ox; day = -oy; + sprite[i].xvel = dmulscale14(day,k,dax,l); + sprite[i].yvel = dmulscale14(dax,k,-day,l); + + ox -= sprite[i].xvel; oy -= sprite[i].yvel; + dist = ((ox*ox+oy*oy)>>8); + } + sprite[i].owner = -1; //Bullet turns evil! + wsayfollow("bouncy.wav",4096L+(krand()&127)-64,min(dist,256),&sprite[i].x,&sprite[i].y,1); + hitobject = 0; + } + } + + if (hitobject != 0) + { + if ((sprite[i].picnum == MISSILE) || (sprite[i].picnum == BOMB)) + { + if ((hitobject&0xc000) == 49152) + if (sprite[hitobject&4095].lotag == 5) //Basketball hoop + { + wsayfollow("niceshot.wav",3840L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + deletesprite((short)i); + goto bulletisdeletedskip; + } + + bombexplode(i); + goto bulletisdeletedskip; + } + + if ((hitobject&0xc000) == 16384) //Hits a ceiling / floor + { + wsayfollow("bullseye.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + deletesprite((short)i); + goto bulletisdeletedskip; + } + else if ((hitobject&0xc000) == 32768) //Bullet hit a wall + { + if (wall[hitobject&4095].picnum == KENPICTURE) + { + if (waloff[MAXTILES-1] != 0) + wall[hitobject&4095].picnum = MAXTILES-1; + wsayfollow("hello.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); //Ken says, "Hello... how are you today!" + } + else + wsayfollow("bullseye.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + + deletesprite((short)i); + goto bulletisdeletedskip; + } + else if ((hitobject&0xc000) == 49152) //Bullet hit a sprite + { + if ((sprite[hitobject&4095].lotag == 5) && (sprite[i].picnum == GRABBER)) { // Basketball hoop (Andy's addition) + wsayfollow("niceshot.wav",3840L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + switch (krand() & 63) { + case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: + sprite[i].picnum = COIN; break; + case 10: case 11: case 12: case 13: case 14: case 15: case 16: + sprite[i].picnum = DIAMONDS; break; + case 17: case 18: case 19: + sprite[i].picnum = COINSTACK; break; + case 20: case 21: case 22: case 23: + sprite[i].picnum = GIFTBOX; break; + case 24: case 25: + sprite[i].picnum = GRABCANNON; break; + case 26: case 27: + sprite[i].picnum = LAUNCHER; break; + case 28: case 29: case 30: + sprite[i].picnum = CANNON; break; + case 31: + sprite[i].picnum = AIRPLANE; break; + default: + deletesprite((short)i); + goto bulletisdeletedskip; + } + sprite[i].xvel = sprite[i].yvel = sprite[i].zvel = 0; + sprite[i].cstat &= ~0x83; //Should not clip, foot-z + changespritestat(i,12); + goto bulletisdeletedskip; + } + + //Check if bullet hit a player & find which player it was... + if (sprite[hitobject&4095].picnum == PLAYER) + for(j=connecthead;j>=0;j=connectpoint2[j]) + if (sprite[i].owner != j+4096) + if (playersprite[j] == (hitobject&4095)) + { + wsayfollow("ouch.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + if (sprite[i].picnum == GRABBER) { // Andy did this + k = ((sprite[i].xrepeat * sprite[i].yrepeat) * 3) >> 9; + changehealth((sprite[i].owner - 4096),k); + changehealth(j,-k); + } + else changehealth(j,-mulscale8(sprite[i].xrepeat,sprite[i].yrepeat)); + deletesprite((short)i); + goto bulletisdeletedskip; + } + + //Check if bullet hit any monsters... + j = (hitobject&4095); //j is the spritenum that the bullet (spritenum i) hit + if (sprite[i].owner != j) + { + switch(sprite[j].picnum) + { + case BROWNMONSTER: + if (sprite[j].lotag > 0) { + if (sprite[i].picnum == GRABBER) { // Andy did this + k = ((sprite[i].xrepeat * sprite[i].yrepeat) * 3) >> 9; + changehealth((sprite[i].owner - 4096),k); + sprite[j].lotag -= k; + } + sprite[j].lotag -= mulscale8(sprite[i].xrepeat,sprite[i].yrepeat); + } + if (sprite[j].lotag > 0) + { + if (sprite[j].lotag <= 25) sprite[j].cstat |= 2; + wsayfollow("hurt.wav",4096L+(krand()&511)-256,256L,&sprite[i].x,&sprite[i].y,1); + } + else + { + wsayfollow("mondie.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[j].z += ((tilesizy[sprite[j].picnum]*sprite[j].yrepeat)<<1); + sprite[j].picnum = GIFTBOX; + sprite[j].cstat &= ~0x83; //Should not clip, foot-z + + spawnsprite(k,sprite[j].x,sprite[j].y,sprite[j].z, + 0,-4,0,32,64,64,0,0,EXPLOSION,sprite[j].ang, + 0,0,0,j,sprite[j].sectnum,5,31,0,0); + //31=Time left for explosion to stay + + changespritestat(j,12); + } + deletesprite((short)i); + goto bulletisdeletedskip; + case EVILAL: + wsayfollow("blowup.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[j].picnum = EVILALGRAVE; + sprite[j].cstat = 0; + sprite[j].xvel = (krand()&255)-128; + sprite[j].yvel = (krand()&255)-128; + sprite[j].zvel = (krand()&4095)-3072; + changespritestat(j,9); + + deletesprite((short)i); + goto bulletisdeletedskip; + case AL: + wsayfollow("blowup.wav",5144L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + sprite[j].xrepeat += 2; + sprite[j].yrepeat += 2; + if (sprite[j].yrepeat >= 38) + { + sprite[j].picnum = EVILAL; + //sprite[j].cstat |= 2; //Make him transluscent + changespritestat(j,10); + } + deletesprite((short)i); + goto bulletisdeletedskip; + default: + wsayfollow("bullseye.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + deletesprite((short)i); + goto bulletisdeletedskip; + } + } + } + } + } +bulletisdeletedskip: continue; + } + + //Go through monster waiting for you list + for(i=headspritestat[2];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + if ((nummoves-i)&15) continue; + + //Use dot product to see if monster's angle is towards a player + for(p=connecthead;p>=0;p=connectpoint2[p]) + if (sintable[(sprite[i].ang+512)&2047]*(pos[p].x-sprite[i].x) + sintable[sprite[i].ang&2047]*(pos[p].y-sprite[i].y) >= 0) + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[p].x,pos[p].y,pos[p].z,cursectnum[p]) == 1) + { + changespritestat(i,1); + //if (sprite[i].lotag == 100) + //{ + wsayfollow("iseeyou.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,1); + // sprite[i].lotag = 99; + //} + } + } + + //Go through smoke sprites + for(i=headspritestat[3];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].z -= (TICSPERFRAME<<6); + sprite[i].lotag -= TICSPERFRAME; + if ((int16_t)sprite[i].lotag < 0) deletesprite(i); + } + + //Go through splash sprites + for(i=headspritestat[4];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].lotag -= TICSPERFRAME; + sprite[i].picnum = SPLASH + ((63-sprite[i].lotag)>>4); + if ((int16_t)sprite[i].lotag < 0) deletesprite(i); + } + + //Go through explosion sprites + for(i=headspritestat[5];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].lotag -= TICSPERFRAME; + if ((int16_t)sprite[i].lotag < 0) deletesprite(i); + } + + //Go through bomb spriral-explosion sprites + for(i=headspritestat[7];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].xrepeat = (sprite[i].lotag>>2); + sprite[i].yrepeat = (sprite[i].lotag>>2); + sprite[i].lotag -= (TICSPERFRAME<<2); + if ((int16_t)sprite[i].lotag < 0) { deletesprite(i); continue; } + + if ((nummoves-i)&statrate[7]) continue; + + sprite[i].x += ((sprite[i].xvel*TICSPERFRAME)>>2); + sprite[i].y += ((sprite[i].yvel*TICSPERFRAME)>>2); + sprite[i].z += ((sprite[i].zvel*TICSPERFRAME)>>2); + + sprite[i].zvel += (TICSPERFRAME<<9); + if (sprite[i].z < sector[sprite[i].sectnum].ceilingz+(4<<8)) + { + sprite[i].z = sector[sprite[i].sectnum].ceilingz+(4<<8); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + if (sprite[i].z > sector[sprite[i].sectnum].floorz-(4<<8)) + { + sprite[i].z = sector[sprite[i].sectnum].floorz-(4<<8); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + } + + //EVILALGRAVE shrinking list + for(i=headspritestat[9];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].xrepeat = (sprite[i].lotag>>2); + sprite[i].yrepeat = (sprite[i].lotag>>2); + sprite[i].lotag -= TICSPERFRAME; + if ((int16_t)sprite[i].lotag < 0) { deletesprite(i); continue; } + + if ((nummoves-i)&statrate[9]) continue; + + sprite[i].x += (sprite[i].xvel*TICSPERFRAME); + sprite[i].y += (sprite[i].yvel*TICSPERFRAME); + sprite[i].z += (sprite[i].zvel*TICSPERFRAME); + + sprite[i].zvel += (TICSPERFRAME<<8); + if (sprite[i].z < sector[sprite[i].sectnum].ceilingz) + { + sprite[i].z = sector[sprite[i].sectnum].ceilingz; + sprite[i].xvel -= (sprite[i].xvel>>2); + sprite[i].yvel -= (sprite[i].yvel>>2); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + if (sprite[i].z > sector[sprite[i].sectnum].floorz) + { + sprite[i].z = sector[sprite[i].sectnum].floorz; + sprite[i].xvel -= (sprite[i].xvel>>2); + sprite[i].yvel -= (sprite[i].yvel>>2); + sprite[i].zvel = -(sprite[i].zvel>>1); + } + } + + //Re-spawning sprite list + for(i=headspritestat[11];i>=0;i=nexti) + { + nexti = nextspritestat[i]; + + sprite[i].extra -= TICSPERFRAME; + if (sprite[i].extra < 0) + { + wsayfollow("warp.wav",6144L+(krand()&127)-64,128L,&sprite[i].x,&sprite[i].y,0); + sprite[i].cstat &= ~0x8000; + sprite[i].extra = -1; + changespritestat((short)i,0); + } + } +} + +void activatehitag(short dahitag) +{ + int i, nexti; + + for(i=0;i=0;i=nexti) + { + nexti = nextspritestat[i]; + if (sprite[i].hitag == dahitag) operatesprite(i); + } +} + +void bombexplode(int i) +{ + int j, nextj, k, daang, dax, day, dist; + + spawnsprite(j,sprite[i].x,sprite[i].y,sprite[i].z,0,-4,0, + 32,64,64,0,0,EXPLOSION,sprite[i].ang, + 0,0,0,sprite[i].owner,sprite[i].sectnum,5,31,0,0); + //31=Time left for explosion to stay + + for(k=0;k<12;k++) + { + spawnsprite(j,sprite[i].x,sprite[i].y,sprite[i].z+(8<<8),2,-4,0, + 32,24,24,0,0,EXPLOSION,sprite[i].ang, + (krand()>>7)-256,(krand()>>7)-256,(krand()>>2)-8192, + sprite[i].owner,sprite[i].sectnum,7,96,0,0); + //96=Time left for smoke to be alive + } + + for(j=connecthead;j>=0;j=connectpoint2[j]) + { + dist = (pos[j].x-sprite[i].x)*(pos[j].x-sprite[i].x); + dist += (pos[j].y-sprite[i].y)*(pos[j].y-sprite[i].y); + dist += ((pos[j].z-sprite[i].z)>>4)*((pos[j].z-sprite[i].z)>>4); + if (dist < 4194304) + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,pos[j].x,pos[j].y,pos[j].z,cursectnum[j]) == 1) + { + k = ((32768/((dist>>16)+4))>>5); + if (j == myconnectindex) + { + daang = getangle(pos[j].x-sprite[i].x,pos[j].y-sprite[i].y); + dax = ((k*sintable[(daang+512)&2047])>>14); + day = ((k*sintable[daang&2047])>>14); + fvel += ((dax*sintable[(ang[j]+512)&2047]+day*sintable[ang[j]&2047])>>14); + svel += ((day*sintable[(ang[j]+512)&2047]-dax*sintable[ang[j]&2047])>>14); + } + changehealth(j,-k); //if changehealth returns 1, you're dead + } + } + + for(k=1;k<=2;k++) //Check for hurting monsters + { + for(j=headspritestat[k];j>=0;j=nextj) + { + nextj = nextspritestat[j]; + + dist = (sprite[j].x-sprite[i].x)*(sprite[j].x-sprite[i].x); + dist += (sprite[j].y-sprite[i].y)*(sprite[j].y-sprite[i].y); + dist += ((sprite[j].z-sprite[i].z)>>4)*((sprite[j].z-sprite[i].z)>>4); + if (dist >= 4194304) continue; + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,sprite[j].x,sprite[j].y,sprite[j].z-(tilesizy[sprite[j].picnum]<<7),sprite[j].sectnum) == 0) + continue; + if (sprite[j].picnum == BROWNMONSTER) + { + sprite[j].z += ((tilesizy[sprite[j].picnum]*sprite[j].yrepeat)<<1); + sprite[j].picnum = GIFTBOX; + sprite[j].cstat &= ~0x83; //Should not clip, foot-z + changespritestat(j,12); + } + } + } + + for(j=headspritestat[10];j>=0;j=nextj) //Check for EVILAL's + { + nextj = nextspritestat[j]; + + dist = (sprite[j].x-sprite[i].x)*(sprite[j].x-sprite[i].x); + dist += (sprite[j].y-sprite[i].y)*(sprite[j].y-sprite[i].y); + dist += ((sprite[j].z-sprite[i].z)>>4)*((sprite[j].z-sprite[i].z)>>4); + if (dist >= 4194304) continue; + if (cansee(sprite[i].x,sprite[i].y,sprite[i].z-(tilesizy[sprite[i].picnum]<<7),sprite[i].sectnum,sprite[j].x,sprite[j].y,sprite[j].z-(tilesizy[sprite[j].picnum]<<7),sprite[j].sectnum) == 0) + continue; + + sprite[j].picnum = EVILALGRAVE; + sprite[j].cstat = 0; + sprite[j].xvel = (krand()&255)-128; + sprite[j].yvel = (krand()&255)-128; + sprite[j].zvel = (krand()&4095)-3072; + changespritestat(j,9); + } + + wsayfollow("blowup.wav",3840L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,0); + deletesprite((short)i); +} + +void processinput(short snum) +{ + // int oldposx, oldposy, nexti; + int i, j, k, doubvel, xvect, yvect, goalz; + int dax, day/*, dax2, day2, odax, oday, odax2, oday2*/; + // short startwall, endwall; + // char *ptr; + + //SHARED KEYS: + //Movement code + if ((ssync[snum].fvel|ssync[snum].svel) != 0) + { + doubvel = (TICSPERFRAME<<((ssync[snum].bits&256)>0)); + + xvect = 0, yvect = 0; + if (ssync[snum].fvel != 0) + { + xvect += ((((int)ssync[snum].fvel)*doubvel*(int)sintable[(ang[snum]+512)&2047])>>3); + yvect += ((((int)ssync[snum].fvel)*doubvel*(int)sintable[ang[snum]&2047])>>3); + } + if (ssync[snum].svel != 0) + { + xvect += ((((int)ssync[snum].svel)*doubvel*(int)sintable[ang[snum]&2047])>>3); + yvect += ((((int)ssync[snum].svel)*doubvel*(int)sintable[(ang[snum]+1536)&2047])>>3); + } + if (flytime[snum] > lockclock) { xvect += xvect; yvect += yvect; } // DOuble flying speed + clipmove(&pos[snum],&cursectnum[snum],xvect,yvect,128L,4<<8,4<<8,CLIPMASK0); + revolvedoorstat[snum] = 1; + } + else + { + revolvedoorstat[snum] = 0; + } + + sprite[playersprite[snum]].cstat &= ~1; + //Push player away from walls if clipmove doesn't work + if (pushmove(&pos[snum],&cursectnum[snum],128L,4<<8,4<<8,CLIPMASK0) < 0) + changehealth(snum,-1000); //If this screws up, then instant death!!! + + // Getzrange returns the highest and lowest z's for an entire box, + // NOT just a point. This prevents you from falling off cliffs + // when you step only slightly over the cliff. + getzrange(&pos[snum],cursectnum[snum],&globhiz,&globhihit,&globloz,&globlohit,128L,CLIPMASK0); + sprite[playersprite[snum]].cstat |= 1; + + if (ssync[snum].avel != 0) //ang += avel * constant + { //ENGINE calculates avel for you + doubvel = TICSPERFRAME; + if ((ssync[snum].bits&256) > 0) //Lt. shift makes turn velocity 50% faster + doubvel += (TICSPERFRAME>>1); + ang[snum] += ((((int)ssync[snum].avel)*doubvel)>>4); + ang[snum] &= 2047; + } + + if (health[snum] < 0) + { + health[snum] -= TICSPERFRAME; + if (health[snum] <= -160) + { + hvel[snum] = 0; + if (snum == myconnectindex) + fvel = 0, svel = 0, avel = 0, keystatus[3] = 1; + + deaths[snum]++; + health[snum] = 100; + numbombs[snum] = 0; + numgrabbers[snum] = 0; + nummissiles[snum] = 0; + flytime[snum] = 0; + + findrandomspot(&pos[snum].x,&pos[snum].y,&cursectnum[snum]); + pos[snum].z = getflorzofslope(cursectnum[snum],pos[snum].x,pos[snum].y)-(1<<8); + horiz[snum] = 100; + ang[snum] = (krand()&2047); + + sprite[playersprite[snum]].x = pos[snum].x; + sprite[playersprite[snum]].y = pos[snum].y; + sprite[playersprite[snum]].z = pos[snum].z+EYEHEIGHT; + sprite[playersprite[snum]].picnum = PLAYER; + sprite[playersprite[snum]].ang = ang[snum]; + sprite[playersprite[snum]].xrepeat = 64; + sprite[playersprite[snum]].yrepeat = 64; + changespritesect(playersprite[snum],cursectnum[snum]); + + drawstatusbar(snum); // Andy did this + + i = playersprite[snum]; + wsayfollow("zipguns.wav",4096L+(krand()&127)-64,256L,&sprite[i].x,&sprite[i].y,1); + for(k=0;k<16;k++) + { + spawnsprite(j,sprite[i].x,sprite[i].y,sprite[i].z+(8<<8),2,-4,0, + 32,24,24,0,0,EXPLOSION,sprite[i].ang, + (krand()&511)-256,(krand()&511)-256,(krand()&16384)-8192, + sprite[i].owner,sprite[i].sectnum,7,96,0,0); + //96=Time left for smoke to be alive + } + } + else + { + sprite[playersprite[snum]].xrepeat = max(((128+health[snum])>>1),0); + sprite[playersprite[snum]].yrepeat = max(((128+health[snum])>>1),0); + + hvel[snum] += (TICSPERFRAME<<2); + horiz[snum] = max(horiz[snum]-4,0); + pos[snum].z += hvel[snum]; + if (pos[snum].z > globloz-(4<<8)) + { + pos[snum].z = globloz-(4<<8); + horiz[snum] = min(horiz[snum]+5,200); + hvel[snum] = 0; + } + } + } + + if (((ssync[snum].bits&8) > 0) && (horiz[snum] > 100-(200>>1))) horiz[snum] -= 4; //- + if (((ssync[snum].bits&4) > 0) && (horiz[snum] < 100+(200>>1))) horiz[snum] += 4; //+ + + goalz = globloz-EYEHEIGHT; + if (sector[cursectnum[snum]].lotag == 4) //slime sector + if ((globlohit&0xc000) != 49152) //You're not on a sprite + { + goalz = globloz-(8<<8); + if (pos[snum].z >= goalz-(2<<8)) + { + clipmove(&pos[snum],&cursectnum[snum],-TICSPERFRAME<<14,-TICSPERFRAME<<14,128L,4<<8,4<<8,CLIPMASK0); + + if (slimesoundcnt[snum] >= 0) + { + slimesoundcnt[snum] -= TICSPERFRAME; + while (slimesoundcnt[snum] < 0) + { + slimesoundcnt[snum] += 120; + wsayfollow("slime.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + } + } + } + } + if (goalz < globhiz+(16<<8)) //ceiling&floor too close + goalz = ((globloz+globhiz)>>1); + //goalz += mousz; + if (health[snum] >= 0) + { + if ((ssync[snum].bits&1) > 0) //A (stand high) + { + if (flytime[snum] <= lockclock) + { + if (pos[snum].z >= globloz-(32<<8)) + { + goalz -= (16<<8); + if (ssync[snum].bits&256) goalz -= (24<<8); + } + } + else + { + hvel[snum] -= 192; + if (ssync[snum].bits&256) hvel[snum] -= 192; + } + } + if ((ssync[snum].bits&2) > 0) //Z (stand low) + { + if (flytime[snum] <= lockclock) + { + goalz += (12<<8); + if (ssync[snum].bits&256) goalz += (12<<8); + } + else + { + hvel[snum] += 192; + if (ssync[snum].bits&256) hvel[snum] += 192; + } + } + } + + if (flytime[snum] <= lockclock) + { + if (pos[snum].z < goalz) + hvel[snum] += (TICSPERFRAME<<4); + else + hvel[snum] = (((goalz-pos[snum].z)*TICSPERFRAME)>>5); + } + else + { + hvel[snum] -= (hvel[snum]>>2); + hvel[snum] -= ksgn(hvel[snum]); + } + + pos[snum].z += hvel[snum]; + if (pos[snum].z > globloz-(4<<8)) pos[snum].z = globloz-(4<<8), hvel[snum] = 0; + if (pos[snum].z < globhiz+(4<<8)) pos[snum].z = globhiz+(4<<8), hvel[snum] = 0; + + if (dimensionmode[snum] != 3) + { + if (((ssync[snum].bits&32) > 0) && (zoom[snum] > 48)) zoom[snum] -= (zoom[snum]>>4); + if (((ssync[snum].bits&16) > 0) && (zoom[snum] < 4096)) zoom[snum] += (zoom[snum]>>4); + } + + //Update sprite representation of player + // -should be after movement, but before shooting code + setsprite_eyeheight(playersprite[snum],&pos[snum]); + sprite[playersprite[snum]].ang = ang[snum]; + + if (health[snum] >= 0) + { + if ((cursectnum[snum] < 0) || (cursectnum[snum] >= numsectors)) + { //How did you get in the wrong sector? + wsayfollow("ouch.wav",4096L+(krand()&127)-64,64L,&pos[snum].x,&pos[snum].y,1); + changehealth(snum,-TICSPERFRAME); + } + else if (globhiz+(8<<8) > globloz) + { //Ceiling and floor are smooshing you! + wsayfollow("ouch.wav",4096L+(krand()&127)-64,64L,&pos[snum].x,&pos[snum].y,1); + changehealth(snum,-TICSPERFRAME); + } + } + + if ((waterfountainwall[snum] >= 0) && (health[snum] >= 0)) + if ((wall[neartagwall].lotag != 7) || ((ssync[snum].bits&1024) == 0)) + { + i = waterfountainwall[snum]; + if (wall[i].overpicnum == USEWATERFOUNTAIN) + wall[i].overpicnum = WATERFOUNTAIN; + else if (wall[i].picnum == USEWATERFOUNTAIN) + wall[i].picnum = WATERFOUNTAIN; + + waterfountainwall[snum] = -1; + } + + if ((ssync[snum].bits&1024) > 0) //Space bar + { + //Continuous triggers... + + neartag(pos[snum].x,pos[snum].y,pos[snum].z,cursectnum[snum],ang[snum],&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1024L,3,NULL); + if (neartagsector == -1) + { + i = cursectnum[snum]; + if ((sector[i].lotag|sector[i].hitag) != 0) + neartagsector = i; + } + + if (wall[neartagwall].lotag == 7) //Water fountain + { + if (wall[neartagwall].overpicnum == WATERFOUNTAIN) + { + wsayfollow("water.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + wall[neartagwall].overpicnum = USEWATERFOUNTAIN; + waterfountainwall[snum] = neartagwall; + } + else if (wall[neartagwall].picnum == WATERFOUNTAIN) + { + wsayfollow("water.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + wall[neartagwall].picnum = USEWATERFOUNTAIN; + waterfountainwall[snum] = neartagwall; + } + + if (waterfountainwall[snum] >= 0) + { + waterfountaincnt[snum] -= TICSPERFRAME; + while (waterfountaincnt[snum] < 0) + { + waterfountaincnt[snum] += 120; + wsayfollow("water.wav",4096L+(krand()&127)-64,256L,&pos[snum].x,&pos[snum].y,1); + changehealth(snum,2); + } + } + } + + //1-time triggers... + if ((oflags[snum]&1024) == 0) + { + if (neartagsector >= 0) + if (sector[neartagsector].hitag == 0) + operatesector(neartagsector); + + if (neartagwall >= 0) + if (wall[neartagwall].lotag == 2) //Switch + { + activatehitag(wall[neartagwall].hitag); + + j = wall[neartagwall].overpicnum; + if (j == SWITCH1ON) //1-time switch + { + wall[neartagwall].overpicnum = GIFTBOX; + wall[neartagwall].lotag = 0; + wall[neartagwall].hitag = 0; + } + if (j == GIFTBOX) //1-time switch + { + wall[neartagwall].overpicnum = SWITCH1ON; + wall[neartagwall].lotag = 0; + wall[neartagwall].hitag = 0; + } + if (j == SWITCH2ON) wall[neartagwall].overpicnum = SWITCH2OFF; + if (j == SWITCH2OFF) wall[neartagwall].overpicnum = SWITCH2ON; + if (j == SWITCH3ON) wall[neartagwall].overpicnum = SWITCH3OFF; + if (j == SWITCH3OFF) wall[neartagwall].overpicnum = SWITCH3ON; + + i = wall[neartagwall].point2; + dax = ((wall[neartagwall].x+wall[i].x)>>1); + day = ((wall[neartagwall].y+wall[i].y)>>1); + wsayfollow("switch.wav",4096L+(krand()&255)-128,256L,&dax,&day,0); + } + + if (neartagsprite >= 0) + { + if (sprite[neartagsprite].lotag == 1) + { //if you're shoving innocent little AL around, he gets mad! + if (sprite[neartagsprite].picnum == AL) + { + sprite[neartagsprite].picnum = EVILAL; + sprite[neartagsprite].cstat |= 2; //Make him transluscent + sprite[neartagsprite].xrepeat = 38; + sprite[neartagsprite].yrepeat = 38; + changespritestat(neartagsprite,10); + } + } + if (sprite[neartagsprite].lotag == 4) + { + activatehitag(sprite[neartagsprite].hitag); + + j = sprite[neartagsprite].picnum; + if (j == SWITCH1ON) //1-time switch + { + sprite[neartagsprite].picnum = GIFTBOX; + sprite[neartagsprite].lotag = 0; + sprite[neartagsprite].hitag = 0; + } + if (j == GIFTBOX) //1-time switch + { + sprite[neartagsprite].picnum = SWITCH1ON; + sprite[neartagsprite].lotag = 0; + sprite[neartagsprite].hitag = 0; + } + if (j == SWITCH2ON) sprite[neartagsprite].picnum = SWITCH2OFF; + if (j == SWITCH2OFF) sprite[neartagsprite].picnum = SWITCH2ON; + if (j == SWITCH3ON) sprite[neartagsprite].picnum = SWITCH3OFF; + if (j == SWITCH3OFF) sprite[neartagsprite].picnum = SWITCH3ON; + + dax = sprite[neartagsprite].x; + day = sprite[neartagsprite].y; + wsayfollow("switch.wav",4096L+(krand()&255)-128,256L,&dax,&day,0); + } + } + } + } + + if ((ssync[snum].bits & 2048) > 0) { // Shoot a bullet + if ((numbombs[snum] == 0) && (((ssync[snum].bits >> 13) & 7) == 2) && (myconnectindex == snum)) + locselectedgun = 0; + if ((nummissiles[snum] == 0) && (((ssync[snum].bits >> 13) & 7) == 3) && (myconnectindex == snum)) + locselectedgun = 1; + if ((numgrabbers[snum] == 0) && (((ssync[snum].bits >> 13) & 7) == 4) && (myconnectindex == snum)) + locselectedgun = 1; + + if ((health[snum] >= 0) || ((krand() & 127) > -health[snum])) + switch((ssync[snum].bits >> 13) & 7) { + case 0: + if (lockclock > lastchaingun[snum]+8) { + lastchaingun[snum] = lockclock; + shootgun(snum,&pos[snum],ang[snum],horiz[snum],cursectnum[snum],0); + } + break; + case 1: + if ((oflags[snum] & 2048) == 0) + shootgun(snum,&pos[snum],ang[snum],horiz[snum],cursectnum[snum],1); + break; + case 2: + if ((oflags[snum] & 2048) == 0) + if (numbombs[snum] > 0) { + shootgun(snum,&pos[snum],ang[snum],horiz[snum],cursectnum[snum],2); + changenumbombs(snum,-1); + } + break; + case 3: + if ((oflags[snum] & 2048) == 0) + if (nummissiles[snum] > 0) { + shootgun(snum,&pos[snum],ang[snum],horiz[snum],cursectnum[snum],3); + changenummissiles(snum,-1); + } + break; + case 4: + if ((oflags[snum] & 2048) == 0) + if (numgrabbers[snum] > 0) { + shootgun(snum,&pos[snum],ang[snum],horiz[snum],cursectnum[snum],4); + changenumgrabbers(snum,-1); + } + break; + } + } + + if ((ssync[snum].bits&4096) > (oflags[snum]&4096)) //Keypad enter + { + dimensionmode[snum]++; + if (dimensionmode[snum] > 3) dimensionmode[snum] = 1; + } + + oflags[snum] = ssync[snum].bits; +} + +void view(short snum, vec3_t *v, short *vsectnum, short ang, int horiz) +{ + spritetype *sp; + int i, nx, ny, nz, hx, hy /*, hz*/; + short bakcstat, daang; + hitdata_t hitinfo; + + nx = (sintable[(ang+1536)&2047]>>4); + ny = (sintable[(ang+1024)&2047]>>4); + nz = (horiz-100)*128; + + sp = &sprite[snum]; + + bakcstat = sp->cstat; + sp->cstat &= (short)~0x101; + + updatesectorz(v->x,v->y,v->z,vsectnum); + hitscan(v,*vsectnum,nx,ny,nz,&hitinfo,CLIPMASK1); + hx = hitinfo.pos.x-v->x; hy = hitinfo.pos.y-v->y; + if (klabs(nx)+klabs(ny) > klabs(hx)+klabs(hy)) + { + *vsectnum = hitinfo.sect; + if (hitinfo.wall >= 0) + { + daang = getangle(wall[wall[hitinfo.wall].point2].x-wall[hitinfo.wall].x, + wall[wall[hitinfo.wall].point2].y-wall[hitinfo.wall].y); + + i = nx*sintable[daang]+ny*sintable[(daang+1536)&2047]; + if (klabs(nx) > klabs(ny)) hx -= mulscale28(nx,i); + else hy -= mulscale28(ny,i); + } + else if (hitinfo.sprite < 0) + { + if (klabs(nx) > klabs(ny)) hx -= (nx>>5); + else hy -= (ny>>5); + } + if (klabs(nx) > klabs(ny)) i = divscale16(hx,nx); + else i = divscale16(hy,ny); + if (i < cameradist) cameradist = i; + } + v->x = v->x+mulscale16(nx,cameradist); + v->y = v->y+mulscale16(ny,cameradist); + v->z = v->z+mulscale16(nz,cameradist); + + updatesectorz(v->x,v->y,v->z,vsectnum); + + sp->cstat = bakcstat; +} + +void drawscreen(short snum, int dasmoothratio) +{ + int i, j, k=0, l, charsperline, tempint; + int x1, y1, x2, y2, ox1, oy1, ox2, oy2, dist, maxdist; + vec3_t cpos; + int choriz, czoom, tposx, tposy; + int tiltlock, *intptr, ovisibility, oparallaxvisibility; + short cang, tang, csect; + char ch, *ptr, *ptr2, *ptr3, *ptr4; + spritetype *tspr; + + smoothratio = max(min(dasmoothratio,65536),0); + + dointerpolations(); + + if ((snum == myconnectindex) && ((networkmode == 1) || (myconnectindex != connecthead))) + { + cpos.x = omy.x+mulscale16(my.x-omy.x,smoothratio); + cpos.y = omy.y+mulscale16(my.y-omy.y,smoothratio); + cpos.z = omy.z+mulscale16(my.z-omy.z,smoothratio); + choriz = omyhoriz+mulscale16(myhoriz-omyhoriz,smoothratio); + cang = omyang+mulscale16((int)(((myang+1024-omyang)&2047)-1024),smoothratio); + } + else + { + cpos.x = opos[snum].x+mulscale16(pos[snum].x-opos[snum].x,smoothratio); + cpos.y = opos[snum].y+mulscale16(pos[snum].y-opos[snum].y,smoothratio); + cpos.z = opos[snum].z+mulscale16(pos[snum].z-opos[snum].z,smoothratio); + choriz = ohoriz[snum]+mulscale16(horiz[snum]-ohoriz[snum],smoothratio); + cang = oang[snum]+mulscale16(((ang[snum]+1024-oang[snum])&2047)-1024,smoothratio); + } + czoom = ozoom[snum]+mulscale16(zoom[snum]-ozoom[snum],smoothratio); + + setears(cpos.x,cpos.y,(int)sintable[(cang+512)&2047]<<14,(int)sintable[cang&2047]<<14); + + if (dimensionmode[myconnectindex] == 3) + { + tempint = screensize; + + if (((loc.bits&32) > (screensizeflag&32)) && (screensize > 64)) + { + ox1 = ((xdim-screensize)>>1); + ox2 = ox1+screensize-1; + oy1 = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + oy2 = oy1 + scale(screensize,ydim-32,xdim)-1; + screensize -= (screensize>>3); + + if (tempint > xdim) + { + screensize = xdim; + + flushperms(); + + rotatesprite((xdim-320)<<15,(ydim-32)<<16,65536L,0,STATUSBAR,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + i = ((xdim-320)>>1); + while (i >= 8) i -= 8, rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL8,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + if (i >= 4) i -= 4, rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL4,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + i = ((xdim-320)>>1)+320; + while (i <= xdim-8) rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL8,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L), i += 8; + if (i <= xdim-4) rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL4,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L), i += 4; + + drawstatusbar(screenpeek); // Andy did this + } + + x1 = ((xdim-screensize)>>1); + x2 = x1+screensize-1; + y1 = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + y2 = y1 + scale(screensize,ydim-32,xdim)-1; + setview(x1,y1,x2,y2); + + // (ox1,oy1)⁄ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒø + // ≥ (x1,y1) ≥ + // ≥ ⁄ƒƒƒƒƒø ≥ + // ≥ ≥ ≥ ≥ + // ≥ ¿ƒƒƒƒƒŸ ≥ + // ≥ (x2,y2) ≥ + // ¿ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒŸ(ox2,oy2) + + drawtilebackground(/*0L,0L,*/BACKGROUND,8,ox1,oy1,x1-1,oy2,0); + drawtilebackground(/*0L,0L,*/BACKGROUND,8,x2+1,oy1,ox2,oy2,0); + drawtilebackground(/*0L,0L,*/BACKGROUND,8,x1,oy1,x2,y1-1,0); + drawtilebackground(/*0L,0L,*/BACKGROUND,8,x1,y2+1,x2,oy2,0); + } + if (((loc.bits&16) > (screensizeflag&16)) && (screensize <= xdim)) + { + screensize += (screensize>>3); + if ((screensize > xdim) && (tempint == xdim)) + { + screensize = xdim+1; + x1 = 0; y1 = 0; + x2 = xdim-1; y2 = ydim-1; + } + else + { + if (screensize > xdim) screensize = xdim; + x1 = ((xdim-screensize)>>1); + x2 = x1+screensize-1; + y1 = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + y2 = y1 + scale(screensize,ydim-32,xdim)-1; + } + setview(x1,y1,x2,y2); + } + screensizeflag = loc.bits; + } + + if (dimensionmode[snum] != 2) + { + if ((numplayers > 1) && (option[4] == 0)) + { + //Do not draw other views constantly if they're staying still + //It's a shame this trick will only work in screen-buffer mode + //At least screen-buffer mode covers all the HI hi-res modes + //if (vidoption == 2) + //{ + for(i=connecthead;i>=0;i=connectpoint2[i]) frame2draw[i] = 0; + frame2draw[snum] = 1; + + //2-1,3-1,4-2 + //5-2,6-2,7-2,8-3,9-3,10-3,11-3,12-4,13-4,14-4,15-4,16-5 + x1 = pos[snum].x; y1 = pos[snum].y; + for(j=(numplayers>>2)+1;j>0;j--) + { + maxdist = 0x80000000; + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (frame2draw[i] == 0) + { + x2 = pos[i].x-x1; y2 = pos[i].y-y1; + dist = dmulscale12(x2,x2,y2,y2); + + if (dist < 64) dist = 16384; + else if (dist > 16384) dist = 64; + else dist = 1048576 / dist; + + dist *= frameskipcnt[i]; + + //Increase frame rate if screen is moving + if ((pos[i].x != opos[i].x) || (pos[i].y != opos[i].y) || + (pos[i].z != opos[i].z) || (ang[i] != oang[i]) || + (horiz[i] != ohoriz[i])) dist += dist; + + if (dist > maxdist) maxdist = dist, k = i; + } + + for(i=connecthead;i>=0;i=connectpoint2[i]) + frameskipcnt[i] += (frameskipcnt[i]>>3)+1; + frameskipcnt[k] = 0; + + frame2draw[k] = 1; + } + //} + //else + //{ + // for(i=connecthead;i>=0;i=connectpoint2[i]) frame2draw[i] = 1; + //} + + for(i=connecthead,j=0;i>=0;i=connectpoint2[i],j++) + if (frame2draw[i] != 0) + { + if (numplayers <= 4) + { + switch(j) + { + case 0: setview(0,0,(xdim>>1)-1,(ydim>>1)-1); break; + case 1: setview((xdim>>1),0,xdim-1,(ydim>>1)-1); break; + case 2: setview(0,(ydim>>1),(xdim>>1)-1,ydim-1); break; + case 3: setview((xdim>>1),(ydim>>1),xdim-1,ydim-1); break; + } + } + else + { + switch(j) + { + case 0: setview(0,0,(xdim>>2)-1,(ydim>>2)-1); break; + case 1: setview(xdim>>2,0,(xdim>>1)-1,(ydim>>2)-1); break; + case 2: setview(xdim>>1,0,xdim-(xdim>>2)-1,(ydim>>2)-1); break; + case 3: setview(xdim-(xdim>>2),0,xdim-1,(ydim>>2)-1); break; + case 4: setview(0,ydim>>2,(xdim>>2)-1,(ydim>>1)-1); break; + case 5: setview(xdim>>2,ydim>>2,(xdim>>1)-1,(ydim>>1)-1); break; + case 6: setview(xdim>>1,ydim>>2,xdim-(xdim>>2)-1,(ydim>>1)-1); break; + case 7: setview(xdim-(xdim>>2),ydim>>2,xdim-1,(ydim>>1)-1); break; + case 8: setview(0,ydim>>1,(xdim>>2)-1,ydim-(ydim>>2)-1); break; + case 9: setview(xdim>>2,ydim>>1,(xdim>>1)-1,ydim-(ydim>>2)-1); break; + case 10: setview(xdim>>1,ydim>>1,xdim-(xdim>>2)-1,ydim-(ydim>>2)-1); break; + case 11: setview(xdim-(xdim>>2),ydim>>1,xdim-1,ydim-(ydim>>2)-1); break; + case 12: setview(0,ydim-(ydim>>2),(xdim>>2)-1,ydim-1); break; + case 13: setview(xdim>>2,ydim-(ydim>>2),(xdim>>1)-1,ydim-1); break; + case 14: setview(xdim>>1,ydim-(ydim>>2),xdim-(xdim>>2)-1,ydim-1); break; + case 15: setview(xdim-(xdim>>2),ydim-(ydim>>2),xdim-1,ydim-1); break; + } + } + + if (i == snum) + { + sprite[playersprite[snum]].cstat |= 0x8000; + drawrooms(cpos.x,cpos.y,cpos.z,cang,choriz,cursectnum[i]); + sprite[playersprite[snum]].cstat &= ~0x8000; + analyzesprites(cpos.x,cpos.y); + } + else + { + sprite[playersprite[i]].cstat |= 0x8000; + drawrooms(pos[i].x,pos[i].y,pos[i].z,ang[i],horiz[i],cursectnum[i]); + sprite[playersprite[i]].cstat &= ~0x8000; + analyzesprites(pos[i].x,pos[i].y); + } + drawmasks(); + if ((numgrabbers[i] > 0) || (nummissiles[i] > 0) || (numbombs[i] > 0)) + rotatesprite(160<<16,184L<<16,65536,0,GUNONBOTTOM,sector[cursectnum[i]].floorshade,0,2,windowx1,windowy1,windowx2,windowy2); + + if (lockclock < 384) + { + if (lockclock < 128) + rotatesprite(320<<15,200<<15,lockclock<<9,lockclock<<4,DEMOSIGN,(128-lockclock)>>2,0,1+2,windowx1,windowy1,windowx2,windowy2); + else if (lockclock < 256) + rotatesprite(320<<15,200<<15,65536,0,DEMOSIGN,0,0,2,windowx1,windowy1,windowx2,windowy2); + else + rotatesprite(320<<15,200<<15,(384-lockclock)<<9,lockclock<<4,DEMOSIGN,(lockclock-256)>>2,0,1+2,windowx1,windowy1,windowx2,windowy2); + } + + if (health[i] <= 0) + rotatesprite(320<<15,200<<15,(-health[i])<<11,(-health[i])<<5,NO,0,0,2,windowx1,windowy1,windowx2,windowy2); + } + } + else + { + //Init for screen rotation + if (getrendermode() == 0) { // JBF 20031220 + tiltlock = screentilt; + if ((tiltlock) || (detailmode)) + { + walock[TILE_TILT] = 255; + if (waloff[TILE_TILT] == 0) + allocache(&waloff[TILE_TILT],320L*320L,&walock[TILE_TILT]); + if ((tiltlock&1023) == 0) + setviewtotile(TILE_TILT,200L>>detailmode,320L>>detailmode); + else + setviewtotile(TILE_TILT,320L>>detailmode,320L>>detailmode); + if ((tiltlock&1023) == 512) + { //Block off unscreen section of 90¯ tilted screen + j = ((320-60)>>detailmode); + for(i=(60>>detailmode)-1;i>=0;i--) + { + startumost[i] = 1; startumost[i+j] = 1; + startdmost[i] = 0; startdmost[i+j] = 0; + } + } + + i = (tiltlock&511); if (i > 256) i = 512-i; + i = sintable[i+512]*8 + sintable[i]*5L; + setaspect(i>>1,yxaspect); + } + } else { + tiltlock = screentilt; + // Ken loves to interpolate + setrollangle(oscreentilt + mulscale16(((screentilt-oscreentilt+1024)&2047)-1024,smoothratio)); + } + + if ((gotpic[FLOORMIRROR>>3]&(1<<(FLOORMIRROR&7))) > 0) + { + dist = 0x7fffffff; i = 0; + for(k=floormirrorcnt-1;k>=0;k--) + { + j = klabs(wall[sector[floormirrorsector[k]].wallptr].x-cpos.x); + j += klabs(wall[sector[floormirrorsector[k]].wallptr].y-cpos.y); + if (j < dist) dist = j, i = k; + } + + //if (cpos.z > sector[floormirrorsector[i]].ceilingz) i = 1-i; //SOS + + j = floormirrorsector[i]; + + if (cameradist < 0) sprite[playersprite[snum]].cstat |= 0x8000; + drawrooms(cpos.x,cpos.y,(sector[j].floorz<<1)-cpos.z,cang,201-choriz,j); //SOS + //drawrooms(cpos.x,cpos.y,cpos.z,cang,choriz,j+MAXSECTORS); //SOS + sprite[playersprite[snum]].cstat &= ~0x8000; + analyzesprites(cpos.x,cpos.y); + drawmasks(); + + //Temp horizon + if (getrendermode() == 0) { + l = scale(choriz-100,windowx2-windowx1,320)+((windowy1+windowy2)>>1); + begindrawing(); //{{{ + for(y1=windowy1,y2=windowy2;y1>2,31)<<8); + ptr4 = palookup[18]; + ptr4 += (min(klabs(y2-l)>>2,31)<<8); + + j = sintable[((y2+totalclock)<<6)&2047]; + j += sintable[((y2-totalclock)<<7)&2047]; + j >>= 14; + + //ptr2 += j; + + //for(x1=windowx1;x1<=windowx2;x1++) + // { ch = ptr[x1]; ptr[x1] = ptr3[ptr2[x1]]; ptr2[x1] = ptr4[ch]; } + + ox1 = windowx1-min(j,0); + ox2 = windowx2-max(j,0); + + for(x1=windowx1;x1>3] &= ~(1<<(FLOORMIRROR&7)); + } + + + //Over the shoulder mode + csect = cursectnum[snum]; + if (cameradist >= 0) + { + cang += cameraang; + view(playersprite[snum],&cpos,&csect,cang,choriz); + } + + //WARNING! Assuming (MIRRORLABEL&31) = 0 and MAXMIRRORS = 64 + intptr = (int *)&gotpic[MIRRORLABEL>>3]; // CHECK! + if (intptr[0]|intptr[1]) + for(i=MAXMIRRORS-1;i>=0;i--) + if (gotpic[(i+MIRRORLABEL)>>3]&(1<<(i&7))) + { + gotpic[(i+MIRRORLABEL)>>3] &= ~(1<<(i&7)); + + //Prepare drawrooms for drawing mirror and calculate reflected + //position into tposx, tposy, and tang (tpos.z == cpos.z) + //Must call preparemirror before drawrooms and + // completemirror after drawrooms + preparemirror(cpos.x,cpos.y,/*cpos.z,*/cang,/*choriz,*/ + mirrorwall[i],/*mirrorsector[i],*/&tposx,&tposy,&tang); + + ovisibility = g_visibility; + oparallaxvisibility = parallaxvisibility; + g_visibility <<= 1; + parallaxvisibility <<= 1; + ptr = palookup[0]; palookup[0] = palookup[17]; palookup[17] = ptr; + + drawrooms(tposx,tposy,cpos.z,tang,choriz,mirrorsector[i]|MAXSECTORS); + for(j=0,tspr=&tsprite[0];jcstat&48) == 0) tspr->cstat |= 4; + analyzesprites(tposx,tposy); + drawmasks(); + + ptr = palookup[0]; palookup[0] = palookup[17]; palookup[17] = ptr; + g_visibility = ovisibility; + parallaxvisibility = oparallaxvisibility; + + completemirror(); //Reverse screen x-wise in this function + + break; + } + + if (cameradist < 0) sprite[playersprite[snum]].cstat |= 0x8000; + drawrooms(cpos.x,cpos.y,cpos.z,cang,choriz,csect); + sprite[playersprite[snum]].cstat &= ~0x8000; + analyzesprites(cpos.x,cpos.y); + drawmasks(); + + //Finish for screen rotation + if (getrendermode() == 0) { // JBF 20031220 + if ((tiltlock) || (detailmode)) + { + setviewback(); + i = (tiltlock&511); if (i > 256) i = 512-i; + i = sintable[i+512]*8 + sintable[i]*5L; + if (detailmode == 0) i >>= 1; + rotatesprite(320<<15,200<<15,i,tiltlock+512,TILE_TILT,0,0,2+4+64,windowx1,windowy1,windowx2,windowy2); + walock[TILE_TILT] = 1; + } + } + + if (((numgrabbers[screenpeek] > 0) || (nummissiles[screenpeek] > 0) || (numbombs[screenpeek] > 0)) && (cameradist < 0)) + { + //Reset startdmost to bottom of screen + if ((windowx1 == 0) && (windowx2 == 319) && (yxaspect == 65536) && (tiltlock == 0)) + { + x1 = 160L-(tilesizx[GUNONBOTTOM]>>1); y1 = windowy2+1; + for(i=0;i>2,0,1+2,windowx1,windowy1,windowx2,windowy2); + else if (lockclock < 256) + rotatesprite(320<<15,200<<15,65536,0,DEMOSIGN,0,0,2,windowx1,windowy1,windowx2,windowy2); + else + rotatesprite(320<<15,200<<15,(384-lockclock)<<9,lockclock<<4,DEMOSIGN,(lockclock-256)>>2,0,1+2,windowx1,windowy1,windowx2,windowy2); + } + + if (health[screenpeek] <= 0) + rotatesprite(320<<15,200<<15,(-health[screenpeek])<<11,(-health[screenpeek])<<5,NO,0,0,2,windowx1,windowy1,windowx2,windowy2); + } + } + + //Only animate lava if its picnum is on screen + //gotpic is a bit array where the tile number's bit is set + //whenever it is drawn (ceilings, walls, sprites, etc.) + if ((gotpic[SLIME>>3]&(1<<(SLIME&7))) > 0) + { + gotpic[SLIME>>3] &= ~(1<<(SLIME&7)); + if (waloff[SLIME] != 0) { + movelava((char *)waloff[SLIME]); + invalidatetile(SLIME,0,1); // JBF 20031228 + } + } + + if ((show2dsector[cursectnum[snum]>>3]&(1<<(cursectnum[snum]&7))) == 0) + searchmap(cursectnum[snum]); + + if (dimensionmode[snum] != 3) + { + //Move back pivot point + i = scale(czoom,screensize,320); + if (dimensionmode[snum] == 2) + { + clearview(0L); //Clear screen to specified color + drawmapview(cpos.x,cpos.y,i,cang); + } + drawoverheadmap(cpos.x,cpos.y,i,cang); + } + + if (typemode != 0) + { + charsperline = 40; + //if (dimensionmode[snum] == 2) charsperline = 80; + + for(i=0;i<=typemessageleng;i+=charsperline) + { + for(j=0;j 0) + { + charsperline = 40; + //if (dimensionmode[snum] == 2) charsperline = 80; + + for(i=0;i<=getmessageleng;i+=charsperline) + { + for(j=0;j getmessagetimeoff) + getmessageleng = 0; + } + if ((numplayers >= 2) && (screenpeek != myconnectindex)) + { + j = 1; + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + if (i == screenpeek) break; + j++; + } + Bsprintf((char *)tempbuf,"(Player %d's view)",j); + printext256((xdim>>1)-(Bstrlen((char *)tempbuf)<<2),0,24,-1,(char *)tempbuf,0); + } + + if (syncstat != 0) printext256(68L,84L,31,0,"OUT OF SYNC!",0); + if (syncstate != 0) printext256(68L,92L,31,0,"Missed Network packet!",0); + +// //Uncomment this to test cache locks +//extern int cacnum; +//typedef struct { int *hand, leng; char *lock; } cactype; +//extern cactype cac[]; +// +// j = 0; +// for(i=0;i= 200) +// { +// Bsprintf(tempbuf,"Locked- %ld: Leng:%ld, Lock:%ld",i,cac[i].leng,*cac[i].lock); +// printext256(0L,j,31,-1,tempbuf,1); j += 6; +// } + + nextpage(); // send completed frame to display + + while (totalclock >= ototalclock+(TIMERINTSPERSECOND/MOVESPERSECOND)) + faketimerhandler(); + + if (keystatus[0x3f]) //F5 + { + keystatus[0x3f] = 0; + detailmode ^= 1; + //setrendermode(3); + } + if (keystatus[0x58]) //F12 + { + keystatus[0x58] = 0; + screencapture("captxxxx.tga",keystatus[0x2a]|keystatus[0x36],"EDuke32"); + } + if (keystatus[0x3e]) //F4 - screen re-size + { + keystatus[0x3e] = 0; + + if (keystatus[0x2a]|keystatus[0x36]) { + setgamemode(!fullscreen, xdim, ydim, bpp); + } else { + + //cycle through all modes + j=-1; + + // work out a mask to select the mode + for (i=0; i 8) brightness = 0; + setbrightness(brightness,0,0); + } + + if (option[4] == 0) //Single player only keys + { + if (keystatus[0xd2]) //Insert - Insert player + { + keystatus[0xd2] = 0; + if (numplayers < MAXPLAYERS) + { + connectpoint2[numplayers-1] = numplayers; + connectpoint2[numplayers] = -1; + + movefifoend[numplayers] = movefifoend[0]; //HACK 01/05/2000 + + initplayersprite(numplayers); + + clearallviews(0L); //Clear screen to specified color + + numplayers++; + } + } + if (keystatus[0xd3]) //Delete - Delete player + { + keystatus[0xd3] = 0; + if (numplayers > 1) + { + numplayers--; + connectpoint2[numplayers-1] = -1; + + deletesprite(playersprite[numplayers]); + playersprite[numplayers] = -1; + + if (myconnectindex >= numplayers) myconnectindex = 0; + if (screenpeek >= numplayers) screenpeek = 0; + + if (numplayers < 2) + setup3dscreen(); + else + clearallviews(0L); //Clear screen to specified color + } + } + if (keystatus[0x46]) //Scroll Lock + { + keystatus[0x46] = 0; + + myconnectindex = connectpoint2[myconnectindex]; + if (myconnectindex < 0) myconnectindex = connecthead; + screenpeek = myconnectindex; + } + } + + restoreinterpolations(); +} + +void movethings(void) +{ + int i; + + gotlastpacketclock = totalclock; + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + copybufbyte(&ffsync[i],&baksync[movefifoend[i]][i],sizeof(input)); + movefifoend[i] = ((movefifoend[i]+1)&(MOVEFIFOSIZ-1)); + } +} + +void fakedomovethings(void) +{ + input *syn; + int /*i, j, k,*/ doubvel, xvect, yvect, goalz; + short bakcstat; + + syn = (input *)&baksync[fakemovefifoplc][myconnectindex]; + + omy = my; + omyang = myang; + omyhoriz = myhoriz; + + bakcstat = sprite[playersprite[myconnectindex]].cstat; + sprite[playersprite[myconnectindex]].cstat &= ~0x101; + + if ((syn->fvel|syn->svel) != 0) + { + doubvel = (TICSPERFRAME<<((syn->bits&256)>0)); + + xvect = 0, yvect = 0; + if (syn->fvel != 0) + { + xvect += ((((int)syn->fvel)*doubvel*(int)sintable[(myang+512)&2047])>>3); + yvect += ((((int)syn->fvel)*doubvel*(int)sintable[myang&2047])>>3); + } + if (syn->svel != 0) + { + xvect += ((((int)syn->svel)*doubvel*(int)sintable[myang&2047])>>3); + yvect += ((((int)syn->svel)*doubvel*(int)sintable[(myang+1536)&2047])>>3); + } + if (flytime[myconnectindex] > lockclock) { xvect += xvect; yvect += yvect; } // DOuble flying speed + clipmove(&my,&mycursectnum,xvect,yvect,128L,4<<8,4<<8,CLIPMASK0); + } + + pushmove(&my,&mycursectnum,128L,4<<8,4<<8,CLIPMASK0); + getzrange(&my,mycursectnum,&globhiz,&globhihit,&globloz,&globlohit,128L,CLIPMASK0); + + if (syn->avel != 0) //ang += avel * constant + { //ENGINE calculates avel for you + doubvel = TICSPERFRAME; + if ((syn->bits&256) > 0) //Lt. shift makes turn velocity 50% faster + doubvel += (TICSPERFRAME>>1); + myang += ((((int)syn->avel)*doubvel)>>4); + myang &= 2047; + } + + if (((syn->bits&8) > 0) && (myhoriz > 100-(200>>1))) myhoriz -= 4; //- + if (((syn->bits&4) > 0) && (myhoriz < 100+(200>>1))) myhoriz += 4; //+ + + goalz = globloz-EYEHEIGHT; + if (sector[mycursectnum].lotag == 4) //slime sector + if ((globlohit&0xc000) != 49152) //You're not on a sprite + { + goalz = globloz-(8<<8); + if (my.z >= goalz-(2<<8)) + clipmove(&my,&mycursectnum,-TICSPERFRAME<<14,-TICSPERFRAME<<14,128L,4<<8,4<<8,CLIPMASK0); + } + if (goalz < globhiz+(16<<8)) //ceiling&floor too close + goalz = ((globloz+globhiz)>>1); + + if (health[myconnectindex] >= 0) + { + if ((syn->bits&1) > 0) //A (stand high) + { + if (flytime[myconnectindex] <= lockclock) + { + if (my.z >= globloz-(32<<8)) + { + goalz -= (16<<8); + if (syn->bits&256) goalz -= (24<<8); + } + } + else + { + myzvel -= 192; + if (syn->bits&256) myzvel -= 192; + } + } + if ((syn->bits&2) > 0) //Z (stand low) + { + if (flytime[myconnectindex] <= lockclock) + { + goalz += (12<<8); + if (syn->bits&256) goalz += (12<<8); + } + else + { + myzvel += 192; + if (syn->bits&256) myzvel += 192; + } + } + } + + if (flytime[myconnectindex] <= lockclock) + { + if (my.z < goalz) + myzvel += (TICSPERFRAME<<4); + else + myzvel = (((goalz-my.z)*TICSPERFRAME)>>5); + } + else + { + myzvel -= (myzvel>>2); + myzvel -= ksgn(myzvel); + } + + my.z += myzvel; + if (my.z > globloz-(4<<8)) my.z = globloz-(4<<8), myzvel = 0; + if (my.z < globhiz+(4<<8)) my.z = globhiz+(4<<8), myzvel = 0; + + sprite[playersprite[myconnectindex]].cstat = bakcstat; + + mybak[fakemovefifoplc] = my; + myangbak[fakemovefifoplc] = myang; + myhorizbak[fakemovefifoplc] = myhoriz; + fakemovefifoplc = (fakemovefifoplc+1)&(MOVEFIFOSIZ-1); +} + + //Prediction correction +void fakedomovethingscorrect(void) +{ + int i; + + if ((networkmode == 0) && (myconnectindex == connecthead)) return; + + i = ((movefifoplc-1)&(MOVEFIFOSIZ-1)); + + if ((pos[myconnectindex].x == mybak[i].x) && + (pos[myconnectindex].y == mybak[i].y) && + (pos[myconnectindex].z == mybak[i].z) && + (horiz[myconnectindex] == myhorizbak[i]) && + (ang[myconnectindex] == myangbak[i])) + return; + + //Re-start fakedomovethings back to place of error + my = omy; + myzvel = hvel[myconnectindex]; + myang = omyang = ang[myconnectindex]; + mycursectnum = cursectnum[myconnectindex]; + myhoriz = omyhoriz = horiz[myconnectindex]; + + fakemovefifoplc = movefifoplc; + while (fakemovefifoplc != movefifoend[myconnectindex]) fakedomovethings(); +} + +void domovethings(void) +{ + short i, j, startwall, endwall; + // spritetype *spr; + walltype *wal; + // vec3_t *ospr; + + nummoves++; + + for(i=connecthead;i>=0;i=connectpoint2[i]) + copybufbyte(&baksync[movefifoplc][i],&ssync[i],sizeof(input)); + movefifoplc = ((movefifoplc+1)&(MOVEFIFOSIZ-1)); + + if (option[4] != 0) + { + syncval[syncvalhead] = (char)(randomseed&255); + syncvalhead = ((syncvalhead+1)&(MOVEFIFOSIZ-1)); + } + + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + opos[i] = pos[i]; + ohoriz[i] = horiz[i]; + ozoom[i] = zoom[i]; + oang[i] = ang[i]; + } + + for(i=NUMSTATS-1;i>=0;i--) + if (statrate[i] >= 0) + for(j=headspritestat[i];j>=0;j=nextspritestat[j]) + if (((nummoves-j)&statrate[i]) == 0) + copybuf(&sprite[j].x,&osprite[j].x,3); + + for(i=connecthead;i>=0;i=connectpoint2[i]) + ocursectnum[i] = cursectnum[i]; + + updateinterpolations(); + + if ((numplayers <= 2) && (recstat == 1)) + { + j = 0; + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + copybufbyte(&ssync[i],&recsync[reccnt][j],sizeof(input)); + j++; + } + reccnt++; if (reccnt > 16383) reccnt = 16383; + } + + lockclock += TICSPERFRAME; + drawstatusflytime(screenpeek); // Andy did this + + if (cameradist >= 0) + { + cameradist = min(cameradist+((totalclock-cameraclock)<<10),65536); + if (keystatus[0x52]) //0 + cameraang -= ((totalclock-cameraclock)<<(2+(keystatus[0x2a]|keystatus[0x36]))); + if (keystatus[0x53]) //. + cameraang += ((totalclock-cameraclock)<<(2+(keystatus[0x2a]|keystatus[0x36]))); + cameraclock = totalclock; + } + + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + processinput(i); //Move player + + checktouchsprite(i,cursectnum[i]); //Pick up coins + startwall = sector[cursectnum[i]].wallptr; + endwall = startwall + sector[cursectnum[i]].wallnum; + for(j=startwall,wal=&wall[j];jnextsector >= 0) checktouchsprite(i,wal->nextsector); + } + + doanimations(); + tagcode(); //Door code, moving sector code, other stuff + statuslistcode(); //Monster / bullet code / explosions + + fakedomovethingscorrect(); + + checkmasterslaveswitch(); +} + +void getinput(void) +{ + char ch /*, keystate, *ptr*/; + int i, j /*, k*/; + int mousx, mousy, bstatus; + + if (typemode == 0) //if normal game keys active + { + if (keystatus[keys[15]]) + { + keystatus[keys[15]] = 0; + + screenpeek = connectpoint2[screenpeek]; + if (screenpeek < 0) screenpeek = connecthead; + drawstatusbar(screenpeek); // Andy did this + } + + for(i=7;i>=0;i--) + if (keystatus[i+2]) + { keystatus[i+2] = 0; locselectedgun = i; break; } + } + + + //KEYTIMERSTUFF + if (!keystatus[keys[5]]) + { + if (keystatus[keys[2]]) avel = max(avel-16*TICSPERFRAME,-128); + if (keystatus[keys[3]]) avel = min(avel+16*TICSPERFRAME,127); + } + else + { + if (keystatus[keys[2]]) svel = min(svel+8*TICSPERFRAME,127); + if (keystatus[keys[3]]) svel = max(svel-8*TICSPERFRAME,-128); + } + if (keystatus[keys[0]]) fvel = min(fvel+8*TICSPERFRAME,127); + if (keystatus[keys[1]]) fvel = max(fvel-8*TICSPERFRAME,-128); + if (keystatus[keys[12]]) svel = min(svel+8*TICSPERFRAME,127); + if (keystatus[keys[13]]) svel = max(svel-8*TICSPERFRAME,-128); + + if (avel < 0) avel = min(avel+12*TICSPERFRAME,0); + if (avel > 0) avel = max(avel-12*TICSPERFRAME,0); + if (svel < 0) svel = min(svel+2*TICSPERFRAME,0); + if (svel > 0) svel = max(svel-2*TICSPERFRAME,0); + if (fvel < 0) fvel = min(fvel+2*TICSPERFRAME,0); + if (fvel > 0) fvel = max(fvel-2*TICSPERFRAME,0); + + if ((option[4] == 0) && (numplayers >= 2)) + { + if (!keystatus[0x4f]) + { + if (keystatus[0x4b]) avel2 = max(avel2-16*TICSPERFRAME,-128); + if (keystatus[0x4d]) avel2 = min(avel2+16*TICSPERFRAME,127); + } + else + { + if (keystatus[0x4b]) svel2 = min(svel2+8*TICSPERFRAME,127); + if (keystatus[0x4d]) svel2 = max(svel2-8*TICSPERFRAME,-128); + } + if (keystatus[0x48]) fvel2 = min(fvel2+8*TICSPERFRAME,127); + if (keystatus[0x4c]) fvel2 = max(fvel2-8*TICSPERFRAME,-128); + + if (avel2 < 0) avel2 = min(avel2+12*TICSPERFRAME,0); + if (avel2 > 0) avel2 = max(avel2-12*TICSPERFRAME,0); + if (svel2 < 0) svel2 = min(svel2+2*TICSPERFRAME,0); + if (svel2 > 0) svel2 = max(svel2-2*TICSPERFRAME,0); + if (fvel2 < 0) fvel2 = min(fvel2+2*TICSPERFRAME,0); + if (fvel2 > 0) fvel2 = max(fvel2-2*TICSPERFRAME,0); + } + + oscreentilt = screentilt; + if (keystatus[0x1a]) screentilt += ((4*TICSPERFRAME)<<(keystatus[0x2a]|keystatus[0x36])); + if (keystatus[0x1b]) screentilt -= ((4*TICSPERFRAME)<<(keystatus[0x2a]|keystatus[0x36])); + + i = (TICSPERFRAME<<1); + while ((screentilt != 0) && (i > 0)) + { screentilt = ((screentilt+ksgn(screentilt-1024))&2047); i--; } + if (keystatus[0x28]) screentilt = 1536; + + + loc.fvel = min(max(fvel,-128+8),127-8); + loc.svel = min(max(svel,-128+8),127-8); + loc.avel = min(max(avel,-128+16),127-16); + + getmousevalues(&mousx,&mousy,&bstatus); + loc.avel = min(max(loc.avel+(mousx<<3),-128),127); + loc.fvel = min(max(loc.fvel-(mousy<<3),-128),127); + + loc.bits = (locselectedgun<<13); + if (typemode == 0) //if normal game keys active + { + loc.bits |= (keystatus[0x32]<<9); //M (be master) + loc.bits |= ((keystatus[keys[14]]==1)<<12); //Map mode + } + loc.bits |= keystatus[keys[8]]; //Stand high + loc.bits |= (keystatus[keys[9]]<<1); //Stand low + loc.bits |= (keystatus[keys[16]]<<4); //Zoom in + loc.bits |= (keystatus[keys[17]]<<5); //Zoom out + loc.bits |= (keystatus[keys[4]]<<8); //Run + loc.bits |= (keystatus[keys[10]]<<2); //Look up + loc.bits |= (keystatus[keys[11]]<<3); //Look down + loc.bits |= ((keystatus[keys[7]]==1)<<10); //Space + loc.bits |= ((keystatus[keys[6]]==1)<<11); //Shoot + loc.bits |= (((bstatus&6)>(oldmousebstatus&6))<<10); //Space + loc.bits |= (((bstatus&1)>(oldmousebstatus&1))<<11); //Shoot + + oldmousebstatus = bstatus; + if (((loc.bits&2048) > 0) && (locselectedgun == 0)) + oldmousebstatus &= ~1; //Allow continous fire with mouse for chain gun + + //PRIVATE KEYS: +#if 0 + if (keystatus[0xb7]) //Printscreen + { + keystatus[0xb7] = 0; + printscreeninterrupt(); + } +#endif + if (keystatus[0x2f]) //V + { + keystatus[0x2f] = 0; + if (cameradist < 0) cameradist = 0; else cameradist = -1; + cameraang = 0; + } + + if (typemode == 0) //if normal game keys active + { + if (keystatus[0x19]) //P + { + keystatus[0x19] = 0; + parallaxtype++; + if (parallaxtype > 2) parallaxtype = 0; + } + if (keystatus[0x38]|keystatus[0xb8]) //ALT + { + if (keystatus[0x4a]) // Keypad - + g_visibility = min(g_visibility+(g_visibility>>3),16384); + if (keystatus[0x4e]) // Keypad + + g_visibility = max(g_visibility-(g_visibility>>3),128); + } + + if (keystatus[keys[18]]) //Typing mode + { + keystatus[keys[18]] = 0; + typemode = 1; + bflushchars(); + keyfifoplc = keyfifoend; //Reset keyboard fifo + } + } + else + { + while ((ch = bgetchar())) + { + if (ch == 8) //Backspace + { + if (typemessageleng == 0) { typemode = 0; break; } + typemessageleng--; + } + else if (ch == 9) // tab + { + keystatus[0xf] = 0; + typemode = 0; + break; + } + else if (ch == 13) //Either ENTER + { + keystatus[0x1c] = 0; keystatus[0x9c] = 0; + if (typemessageleng > 0) + { + packbuf[0] = 2; //Sending text is message type 4 + for(j=typemessageleng-1;j>=0;j--) + packbuf[j+1] = typemessage[j]; + + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (i != myconnectindex) + sendpacket(i,packbuf,typemessageleng+1); + + typemessageleng = 0; + } + typemode = 0; + break; + } + else if ((typemessageleng < 159) && (ch >= 32) && (ch < 128)) + { + typemessage[typemessageleng++] = ch; + } + } + } +} + +void initplayersprite(short snum) +{ + int i; + + if (playersprite[snum] >= 0) return; + + spawnsprite(playersprite[snum],pos[snum].x,pos[snum].y,pos[snum].z+EYEHEIGHT, + 1+256,0,snum,32,64,64,0,0,PLAYER,ang[snum],0,0,0,snum+4096, + cursectnum[snum],8,0,0,0); + + switch(snum) + { + case 1: for(i=0;i<32;i++) tempbuf[i+192] = i+128; break; //green->red + case 2: for(i=0;i<32;i++) tempbuf[i+192] = i+32; break; //green->blue + case 3: for(i=0;i<32;i++) tempbuf[i+192] = i+224; break; //green->pink + case 4: for(i=0;i<32;i++) tempbuf[i+192] = i+64; break; //green->brown + case 5: for(i=0;i<32;i++) tempbuf[i+192] = i+96; break; + case 6: for(i=0;i<32;i++) tempbuf[i+192] = i+160; break; + case 7: for(i=0;i<32;i++) tempbuf[i+192] = i+192; break; + default: for(i=0;i<256;i++) tempbuf[i] = i; break; + } + makepalookup(snum,tempbuf,0,0,0,1); +} + +void playback(void) +{ + int i, j, k; + + ready2send = 0; + recstat = 0; i = reccnt; + while (!keystatus[1]) + { + if (handleevents()) { + if (quitevent) { + keystatus[1] = 1; + quitevent = 0; + } + } + + refreshaudio(); + + while (totalclock >= lockclock+TICSPERFRAME) + { + sampletimer(); + if (i >= reccnt) + { + prepareboard(boardfilename); + for(i=connecthead;i>=0;i=connectpoint2[i]) + initplayersprite((short)i); + totalclock = 0; + i = 0; + } + + k = 0; + for(j=connecthead;j>=0;j=connectpoint2[j]) + { + copybufbyte(&recsync[i][k],&ffsync[j],sizeof(input)); + k++; + } + movethings(); domovethings(); + i++; + } + drawscreen(screenpeek,(totalclock-gotlastpacketclock)*(65536/(TIMERINTSPERSECOND/MOVESPERSECOND))); + + if (keystatus[keys[15]]) + { + keystatus[keys[15]] = 0; + screenpeek = connectpoint2[screenpeek]; + if (screenpeek < 0) screenpeek = connecthead; + drawstatusbar(screenpeek); // Andy did this + } + if (keystatus[keys[14]]) + { + keystatus[keys[14]] = 0; + dimensionmode[screenpeek]++; + if (dimensionmode[screenpeek] > 3) dimensionmode[screenpeek] = 1; + } + } + + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + exit(0); +} + +void setup3dscreen(void) +{ + int i, dax, day, dax2, day2; + + i = setgamemode(fullscreen,xdimgame,ydimgame,bppgame); + if (i < 0) + { + printf("Error setting video mode.\n"); + sendlogoff(); + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + exit(0); + } + +#if 0 + //Make that ugly pink into black in case it ever shows up! + i = 0L; + setpalette(255,1,(char *)&i); + //outp(0x3c8,255); outp(0x3c9,0); outp(0x3c9,0); outp(0x3c9,0); +#endif + + screensize = xdim; + if (screensize > xdim) + { + dax = 0; day = 0; + dax2 = xdim-1; day2 = ydim-1; + } + else + { + dax = ((xdim-screensize)>>1); + dax2 = dax+screensize-1; + day = (((ydim-32)-scale(screensize,ydim-32,xdim))>>1); + day2 = day + scale(screensize,ydim-32,xdim)-1; + setview(dax,day,dax2,day2); + } + + flushperms(); + + if (screensize < xdim) + drawtilebackground(/*0L,0L,*/BACKGROUND,8,0L,0L,xdim-1L,ydim-1L,0); //Draw background + + if (screensize <= xdim) + { + rotatesprite((xdim-320)<<15,(ydim-32)<<16,65536L,0,STATUSBAR,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + i = ((xdim-320)>>1); + while (i >= 8) i -= 8, rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL8,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + if (i >= 4) i -= 4, rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL4,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L); + i = ((xdim-320)>>1)+320; + while (i <= xdim-8) rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL8,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L), i += 8; + if (i <= xdim-4) rotatesprite(i<<16,(ydim-32)<<16,65536L,0,STATUSBARFILL4,0,0,8+16+64+128,0L,0L,xdim-1L,ydim-1L), i += 4; + + drawstatusbar(screenpeek); // Andy did this + } +} + +void findrandomspot(int *x, int *y, short *sectnum) +{ + short startwall, endwall, s, dasector; + vec3_t da = { 0, 0, 0 }; + int minx, maxx, miny, maxy, cnt; + + for(cnt=256;cnt>=0;cnt--) + { + do + { + dasector = mulscale16(krand(),numsectors); + } while ((sector[dasector].ceilingz+(8<<8) >= sector[dasector].floorz) || ((sector[dasector].lotag|sector[dasector].hitag) != 0) || ((sector[dasector].floorstat&1) != 0)); + + startwall = sector[dasector].wallptr; + endwall = startwall+sector[dasector].wallnum; + if (endwall <= startwall) continue; + + minx = 0x7fffffff; maxx = 0x80000000; + miny = 0x7fffffff; maxy = 0x80000000; + + for(s=startwall;s maxx) maxx = wall[s].x; + if (wall[s].y < miny) miny = wall[s].y; + if (wall[s].y > maxy) maxy = wall[s].y; + } + + if ((maxx-minx <= 256) || (maxy-miny <= 256)) continue; + + da.x /= (endwall-startwall); + da.y /= (endwall-startwall); + + if (inside(da.x,da.y,dasector) == 0) continue; + + da.z = sector[dasector].floorz-(32<<8); + if (pushmove(&da,&dasector,128L,4<<8,4<<8,CLIPMASK0) < 0) continue; + + *x = da.x; *y = da.y; *sectnum = dasector; + return; + } +} + +void warp(int *x, int *y, int *z, short *daang, short *dasector) +{ + short startwall, endwall, s; + int i, j, dax, day, ox, oy; + + ox = *x; oy = *y; + + for(i=0;i= warpsectorcnt) i = 0; + } while (sector[warpsectorlist[i]].hitag != j); + *dasector = warpsectorlist[i]; + break; + } + + //Find center of sector + startwall = sector[*dasector].wallptr; + endwall = startwall+sector[*dasector].wallnum; + dax = 0L, day = 0L; + for(s=startwall;s= 0) + i = s; + } + *x = dax / (endwall-startwall); + *y = day / (endwall-startwall); + *z = sector[*dasector].floorz-(32<<8); + updatesector(*x,*y,dasector); + dax = ((wall[i].x+wall[wall[i].point2].x)>>1); + day = ((wall[i].y+wall[wall[i].point2].y)>>1); + *daang = getangle(dax-*x,day-*y); + + wsayfollow("warp.wav",3072L+(krand()&127)-64,192L,&ox,&oy,0); + wsayfollow("warp.wav",4096L+(krand()&127)-64,256L,x,y,0); +} + +void warpsprite(short spritenum) +{ + short dasectnum; + + dasectnum = sprite[spritenum].sectnum; + warp(&sprite[spritenum].x,&sprite[spritenum].y,&sprite[spritenum].z, + &sprite[spritenum].ang,&dasectnum); + + copybuf(&sprite[spritenum].x,&osprite[spritenum].x,3); + changespritesect(spritenum,dasectnum); + + show2dsprite[spritenum>>3] &= ~(1<<(spritenum&7)); + if (show2dsector[dasectnum>>3]&(1<<(dasectnum&7))) + show2dsprite[spritenum>>3] |= (1<<(spritenum&7)); +} + +void initlava(void) +{ + int x, y, z, r; + + for(z=0;z<32;z++) lavaradcnt[z] = 0; + for(x=-16;x<=16;x++) + for(y=-16;y<=16;y++) + { + r = ksqrt(x*x + y*y); + lavaradx[r][lavaradcnt[r]] = x; + lavarady[r][lavaradcnt[r]] = y; + lavaradcnt[r]++; + } + + for(z=0;z<16;z++) + lavadropsizlookup[z] = 8 / (ksqrt(z)+1); + + for(z=0;z>4)&7)-4)+12; + + lavanumdrops = 0; + lavanumframes = 0; +} + +#if defined(__WATCOMC__) && !defined(NOASM) +#pragma aux addlava =\ + "mov al, byte ptr [ebx-133]",\ + "mov dl, byte ptr [ebx-1]",\ + "add al, byte ptr [ebx-132]",\ + "add dl, byte ptr [ebx+131]",\ + "add al, byte ptr [ebx-131]",\ + "add dl, byte ptr [ebx+132]",\ + "add al, byte ptr [ebx+1]",\ + "add al, dl",\ + parm [ebx]\ + modify exact [eax edx] +int addlava(int); +#elif defined(_MSC_VER) && !defined(NOASM) +inline int addlava(void *b) +{ + _asm { + mov ebx, b + mov al, byte ptr [ebx-133] + mov dl, byte ptr [ebx-1] + add al, byte ptr [ebx-132] + add dl, byte ptr [ebx+131] + add al, byte ptr [ebx-131] + add dl, byte ptr [ebx+132] + add al, byte ptr [ebx+1] + add al, dl + } +} +#elif defined(__GNUC__) && defined(__i386__) && !defined(NOASM) +inline int addlava(void *b) +{ + int r; + __asm__ __volatile__ ( + "movb -133(%%ebx), %%al\n\t" + "movb -1(%%ebx), %%dl\n\t" + "addb -132(%%ebx), %%al\n\t" + "addb 131(%%ebx), %%dl\n\t" + "addb -131(%%ebx), %%al\n\t" + "addb 132(%%ebx), %%dl\n\t" + "addb 1(%%ebx), %%al\n\t" + "addb %%dl, %%al" + : "=a" (r) : "b" (b) + : "dx" + ); + return r; +} +#else +inline int addlava(void *bx) +{ + char *b = (char *)bx; + return b[-133] + b[-132] + b[-131] + b[1] + b[-1] + b[131] + b[132]; +} +#endif + +void movelava(char *dapic) +{ + int i, /*j,*/ x, y, z, zz, dalavadropsiz, dadropsizlookup; + int dalavax, dalavay, *ptr, *ptr2; + char *pi, *pj, *py; + + for(z=min(LAVAMAXDROPS-lavanumdrops-1,3);z>=0;z--) + { + lavadropx[lavanumdrops] = (Brand()&(LAVASIZ-1)); + lavadropy[lavanumdrops] = (Brand()&(LAVASIZ-1)); + lavadropsiz[lavanumdrops] = 1; + lavanumdrops++; + } + + for(z=lavanumdrops-1;z>=0;z--) + { + dadropsizlookup = lavadropsizlookup[lavadropsiz[z]]*(((z&1)<<1)-1); + dalavadropsiz = lavadropsiz[z]; + dalavax = lavadropx[z]; dalavay = lavadropy[z]; + for(zz=lavaradcnt[lavadropsiz[z]]-1;zz>=0;zz--) + { + i = (((lavaradx[dalavadropsiz][zz]+dalavax)&(LAVASIZ-1))< 10) + { + lavanumdrops--; + lavadropx[z] = lavadropx[lavanumdrops]; + lavadropy[z] = lavadropy[lavanumdrops]; + lavadropsiz[z] = lavadropsiz[lavanumdrops]; + } + } + + //Back up dapic with 1 pixel extra on each boundary + //(to prevent anding for wrap-around) + ptr = (int *)dapic; + ptr2 = (int *)((LAVASIZ+4)+1+((intptr_t)lavabakpic)); + for(x=0;x>2);y>0;y--) *ptr2++ = ((*ptr++)&0x1f1f1f1f); + ptr2++; + } + for(y=0;y>3)+ + ((addlava(&py[1])&0xf8)<<5)+ + ((addlava(&py[2])&0xf8)<<13)+ + ((addlava(&py[3])&0xf8)<<21)+ + 0xc2c2c2c2; + } + } + + lavanumframes++; +} + +void doanimations(void) +{ + int i, j; + + for(i=animatecnt-1;i>=0;i--) + { + j = *animateptr[i]; + + if (j < animategoal[i]) + j = min(j+animatevel[i]*TICSPERFRAME,animategoal[i]); + else + j = max(j-animatevel[i]*TICSPERFRAME,animategoal[i]); + animatevel[i] += animateacc[i]; + + *animateptr[i] = j; + + if (j == animategoal[i]) + { + animatecnt--; + if (i != animatecnt) + { + stopinterpolation(animateptr[i]); + animateptr[i] = animateptr[animatecnt]; + animategoal[i] = animategoal[animatecnt]; + animatevel[i] = animatevel[animatecnt]; + animateacc[i] = animateacc[animatecnt]; + } + } + } +} + +int getanimationgoal(int *animptr) +{ + int i; + + for(i=animatecnt-1;i>=0;i--) + if (animptr == animateptr[i]) return(i); + return(-1); +} + +int setanimation(int *animptr, int thegoal, int thevel, int theacc) +{ + int i, j; + + if (animatecnt >= MAXANIMATES) return(-1); + + j = animatecnt; + for(i=animatecnt-1;i>=0;i--) + if (animptr == animateptr[i]) + { j = i; break; } + + setinterpolation(animptr); + + animateptr[j] = animptr; + animategoal[j] = thegoal; + animatevel[j] = thevel; + animateacc[j] = theacc; + if (j == animatecnt) animatecnt++; + return(j); +} + +void checkmasterslaveswitch(void) +{ + int i, j; + + if (option[4] == 0) return; + + j = 0; + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (ssync[i].bits&512) j++; + if (j != 1) return; + + i = connecthead; + for(j=connectpoint2[i];j>=0;j=connectpoint2[j]) + { + if (ssync[j].bits&512) + { + connectpoint2[i] = connectpoint2[j]; + connectpoint2[j] = connecthead; + connecthead = (short)j; + + oloc.fvel = loc.fvel+1; + oloc.svel = loc.svel+1; + oloc.avel = loc.avel+1; + oloc.bits = loc.bits+1; + for(i=0;i=0;i=connectpoint2[i]) + { + if (myconnectindex == i) break; + j++; + } + if (j == 1) + Bstrcpy(getmessage,"Player 1 (Master)"); + else + Bsprintf(getmessage,"Player %d (Slave)",j); + getmessageleng = Bstrlen(getmessage); + getmessagetimeoff = totalclock+120; + + return; + } + i = j; + } +} + + +int testneighborsectors(short sect1, short sect2) +{ + short i, startwall, num1, num2; + + num1 = sector[sect1].wallnum; + num2 = sector[sect2].wallnum; + if (num1 < num2) //Traverse walls of sector with fewest walls (for speed) + { + startwall = sector[sect1].wallptr; + for(i=num1-1;i>=0;i--) + if (wall[i+startwall].nextsector == sect2) + return(1); + } + else + { + startwall = sector[sect2].wallptr; + for(i=num2-1;i>=0;i--) + if (wall[i+startwall].nextsector == sect1) + return(1); + } + return(0); +} + +int loadgame(void) +{ + int dummy = 0; + int i; + int fil; + int tmpanimateptr[MAXANIMATES]; + + if ((fil = kopen4load("save0000.gam",0)) == -1) return(-1); + + kdfread(&numplayers,4,1,fil); + kdfread(&myconnectindex,4,1,fil); + kdfread(&connecthead,4,1,fil); + kdfread(connectpoint2,4,MAXPLAYERS,fil); + + //Make sure palookups get set, sprites will get overwritten later + for(i=connecthead;i>=0;i=connectpoint2[i]) initplayersprite((short)i); + + for (i = 0; i < MAXPLAYERS; ++i) + kdfread(&pos[i].x,4,1,fil); + for (i = 0; i < MAXPLAYERS; ++i) + kdfread(&pos[i].y,4,1,fil); + for (i = 0; i < MAXPLAYERS; ++i) + kdfread(&pos[i].z,4,1,fil); + + kdfread(horiz,4,MAXPLAYERS,fil); + kdfread(zoom,4,MAXPLAYERS,fil); + kdfread(hvel,4,MAXPLAYERS,fil); + kdfread(ang,2,MAXPLAYERS,fil); + kdfread(cursectnum,2,MAXPLAYERS,fil); + kdfread(ocursectnum,2,MAXPLAYERS,fil); + kdfread(playersprite,2,MAXPLAYERS,fil); + kdfread(deaths,2,MAXPLAYERS,fil); + kdfread(lastchaingun,4,MAXPLAYERS,fil); + kdfread(health,4,MAXPLAYERS,fil); + kdfread(numgrabbers,2,MAXPLAYERS,fil); + kdfread(nummissiles,2,MAXPLAYERS,fil); + kdfread(numbombs,2,MAXPLAYERS,fil); + kdfread(flytime,4,MAXPLAYERS,fil); + kdfread(oflags,2,MAXPLAYERS,fil); + kdfread(dimensionmode,1,MAXPLAYERS,fil); + kdfread(revolvedoorstat,1,MAXPLAYERS,fil); + kdfread(revolvedoorang,2,MAXPLAYERS,fil); + kdfread(revolvedoorrotang,2,MAXPLAYERS,fil); + kdfread(revolvedoorx,4,MAXPLAYERS,fil); + kdfread(revolvedoory,4,MAXPLAYERS,fil); + + kdfread(&numsectors,2,1,fil); + kdfread(sector,sizeof(sectortype),numsectors,fil); + kdfread(&numwalls,2,1,fil); + kdfread(wall,sizeof(walltype),numwalls,fil); + //Store all sprites (even holes) to preserve indeces + kdfread(sprite,sizeof(spritetype),MAXSPRITES,fil); + kdfread(headspritesect,2,MAXSECTORS+1,fil); + kdfread(prevspritesect,2,MAXSPRITES,fil); + kdfread(nextspritesect,2,MAXSPRITES,fil); + kdfread(headspritestat,2,MAXSTATUS+1,fil); + kdfread(prevspritestat,2,MAXSPRITES,fil); + kdfread(nextspritestat,2,MAXSPRITES,fil); + + kdfread(&fvel,4,1,fil); + kdfread(&svel,4,1,fil); + kdfread(&avel,4,1,fil); + + kdfread(&locselectedgun,4,1,fil); + kdfread(&loc.fvel,1,1,fil); + kdfread(&oloc.fvel,1,1,fil); + kdfread(&loc.svel,1,1,fil); + kdfread(&oloc.svel,1,1,fil); + kdfread(&loc.avel,1,1,fil); + kdfread(&oloc.avel,1,1,fil); + kdfread(&loc.bits,2,1,fil); + kdfread(&oloc.bits,2,1,fil); + + kdfread(&locselectedgun2,4,1,fil); + kdfread(&loc2.fvel,sizeof(input),1,fil); + + kdfread(ssync,sizeof(input),MAXPLAYERS,fil); + kdfread(osync,sizeof(input),MAXPLAYERS,fil); + + kdfread(boardfilename,1,80,fil); + kdfread(&screenpeek,2,1,fil); + kdfread(&oldmousebstatus,2,1,fil); + kdfread(&brightness,2,1,fil); + kdfread(&neartagsector,2,1,fil); + kdfread(&neartagwall,2,1,fil); + kdfread(&neartagsprite,2,1,fil); + kdfread(&lockclock,4,1,fil); + kdfread(&neartagdist,4,1,fil); + kdfread(&neartaghitdist,4,1,fil); + + kdfread(turnspritelist,2,16,fil); + kdfread(&turnspritecnt,2,1,fil); + kdfread(warpsectorlist,2,16,fil); + kdfread(&warpsectorcnt,2,1,fil); + kdfread(xpanningsectorlist,2,16,fil); + kdfread(&xpanningsectorcnt,2,1,fil); + kdfread(ypanningwalllist,2,64,fil); + kdfread(&ypanningwallcnt,2,1,fil); + kdfread(floorpanninglist,2,64,fil); + kdfread(&floorpanningcnt,2,1,fil); + kdfread(dragsectorlist,2,16,fil); + kdfread(dragxdir,2,16,fil); + kdfread(dragydir,2,16,fil); + kdfread(&dragsectorcnt,2,1,fil); + kdfread(dragx1,4,16,fil); + kdfread(dragy1,4,16,fil); + kdfread(dragx2,4,16,fil); + kdfread(dragy2,4,16,fil); + kdfread(dragfloorz,4,16,fil); + kdfread(&swingcnt,2,1,fil); + kdfread(swingwall,2,32*5,fil); + kdfread(swingsector,2,32,fil); + kdfread(swingangopen,2,32,fil); + kdfread(swingangclosed,2,32,fil); + kdfread(swingangopendir,2,32,fil); + kdfread(swingang,2,32,fil); + kdfread(swinganginc,2,32,fil); + kdfread(swingx,4,32*8,fil); + kdfread(swingy,4,32*8,fil); + kdfread(revolvesector,2,4,fil); + kdfread(revolveang,2,4,fil); + kdfread(&revolvecnt,2,1,fil); + kdfread(revolvex,4,4*16,fil); + kdfread(revolvey,4,4*16,fil); + kdfread(revolvepivotx,4,4,fil); + kdfread(revolvepivoty,4,4,fil); + kdfread(subwaytracksector,2,4*128,fil); + kdfread(subwaynumsectors,2,4,fil); + kdfread(&subwaytrackcnt,2,1,fil); + kdfread(subwaystop,4,4*8,fil); + kdfread(subwaystopcnt,4,4,fil); + kdfread(subwaytrackx1,4,4,fil); + kdfread(subwaytracky1,4,4,fil); + kdfread(subwaytrackx2,4,4,fil); + kdfread(subwaytracky2,4,4,fil); + kdfread(subwayx,4,4,fil); + kdfread(subwaygoalstop,4,4,fil); + kdfread(subwayvel,4,4,fil); + kdfread(subwaypausetime,4,4,fil); + kdfread(waterfountainwall,2,MAXPLAYERS,fil); + kdfread(waterfountaincnt,2,MAXPLAYERS,fil); + kdfread(slimesoundcnt,2,MAXPLAYERS,fil); + + //Warning: only works if all pointers are in sector structures! + kdfread(tmpanimateptr,4,MAXANIMATES,fil); + for(i=MAXANIMATES-1;i>=0;i--) + animateptr[i] = (int *)(tmpanimateptr[i]+(intptr_t)sector); + + kdfread(animategoal,4,MAXANIMATES,fil); + kdfread(animatevel,4,MAXANIMATES,fil); + kdfread(animateacc,4,MAXANIMATES,fil); + kdfread(&animatecnt,4,1,fil); + + kdfread(&totalclock,4,1,fil); + kdfread(&numframes,4,1,fil); + kdfread(&randomseed,4,1,fil); + kdfread(&numshades,2,1,fil); + + kdfread(&g_visibility,4,1,fil); + kdfread(¶llaxvisibility,4,1,fil); + kdfread(¶llaxtype,1,1,fil); + kdfread(&dummy,4,1,fil); + kdfread(&dummy,2,MAXPSKYTILES,fil); + kdfread(&dummy,2,1,fil); + + kdfread(&mirrorcnt,2,1,fil); + kdfread(mirrorwall,2,mirrorcnt,fil); + kdfread(mirrorsector,2,mirrorcnt,fil); + + //I should save off interpolation list, but they're pointers :( + numinterpolations = 0; + startofdynamicinterpolations = 0; + + kclose(fil); + + for(i=connecthead;i>=0;i=connectpoint2[i]) initplayersprite((short)i); + + totalclock = lockclock; + ototalclock = lockclock; + + Bstrcpy(getmessage,"Game loaded."); + getmessageleng = Bstrlen(getmessage); + getmessagetimeoff = totalclock+360+(getmessageleng<<4); + return(0); +} + +int savegame(void) +{ + int dummy = 0; + int i; + BFILE *fil; + int tmpanimateptr[MAXANIMATES]; + + if ((fil = Bfopen("save0000.gam","wb")) == 0) return(-1); + + dfwrite(&numplayers,4,1,fil); + dfwrite(&myconnectindex,4,1,fil); + dfwrite(&connecthead,4,1,fil); + dfwrite(connectpoint2,4,MAXPLAYERS,fil); + + for (i = 0; i < MAXPLAYERS; ++i) + dfwrite(&pos[i].x,4,1,fil); + for (i = 0; i < MAXPLAYERS; ++i) + dfwrite(&pos[i].y,4,1,fil); + for (i = 0; i < MAXPLAYERS; ++i) + dfwrite(&pos[i].z,4,1,fil); + + dfwrite(horiz,4,MAXPLAYERS,fil); + dfwrite(zoom,4,MAXPLAYERS,fil); + dfwrite(hvel,4,MAXPLAYERS,fil); + dfwrite(ang,2,MAXPLAYERS,fil); + dfwrite(cursectnum,2,MAXPLAYERS,fil); + dfwrite(ocursectnum,2,MAXPLAYERS,fil); + dfwrite(playersprite,2,MAXPLAYERS,fil); + dfwrite(deaths,2,MAXPLAYERS,fil); + dfwrite(lastchaingun,4,MAXPLAYERS,fil); + dfwrite(health,4,MAXPLAYERS,fil); + dfwrite(numgrabbers,2,MAXPLAYERS,fil); + dfwrite(nummissiles,2,MAXPLAYERS,fil); + dfwrite(numbombs,2,MAXPLAYERS,fil); + dfwrite(flytime,4,MAXPLAYERS,fil); + dfwrite(oflags,2,MAXPLAYERS,fil); + dfwrite(dimensionmode,1,MAXPLAYERS,fil); + dfwrite(revolvedoorstat,1,MAXPLAYERS,fil); + dfwrite(revolvedoorang,2,MAXPLAYERS,fil); + dfwrite(revolvedoorrotang,2,MAXPLAYERS,fil); + dfwrite(revolvedoorx,4,MAXPLAYERS,fil); + dfwrite(revolvedoory,4,MAXPLAYERS,fil); + + dfwrite(&numsectors,2,1,fil); + dfwrite(sector,sizeof(sectortype),numsectors,fil); + dfwrite(&numwalls,2,1,fil); + dfwrite(wall,sizeof(walltype),numwalls,fil); + //Store all sprites (even holes) to preserve indeces + dfwrite(sprite,sizeof(spritetype),MAXSPRITES,fil); + dfwrite(headspritesect,2,MAXSECTORS+1,fil); + dfwrite(prevspritesect,2,MAXSPRITES,fil); + dfwrite(nextspritesect,2,MAXSPRITES,fil); + dfwrite(headspritestat,2,MAXSTATUS+1,fil); + dfwrite(prevspritestat,2,MAXSPRITES,fil); + dfwrite(nextspritestat,2,MAXSPRITES,fil); + + dfwrite(&fvel,4,1,fil); + dfwrite(&svel,4,1,fil); + dfwrite(&avel,4,1,fil); + + dfwrite(&locselectedgun,4,1,fil); + dfwrite(&loc.fvel,1,1,fil); + dfwrite(&oloc.fvel,1,1,fil); + dfwrite(&loc.svel,1,1,fil); + dfwrite(&oloc.svel,1,1,fil); + dfwrite(&loc.avel,1,1,fil); + dfwrite(&oloc.avel,1,1,fil); + dfwrite(&loc.bits,2,1,fil); + dfwrite(&oloc.bits,2,1,fil); + + dfwrite(&locselectedgun2,4,1,fil); + dfwrite(&loc2.fvel,sizeof(input),1,fil); + + dfwrite(ssync,sizeof(input),MAXPLAYERS,fil); + dfwrite(osync,sizeof(input),MAXPLAYERS,fil); + + dfwrite(boardfilename,1,80,fil); + dfwrite(&screenpeek,2,1,fil); + dfwrite(&oldmousebstatus,2,1,fil); + dfwrite(&brightness,2,1,fil); + dfwrite(&neartagsector,2,1,fil); + dfwrite(&neartagwall,2,1,fil); + dfwrite(&neartagsprite,2,1,fil); + dfwrite(&lockclock,4,1,fil); + dfwrite(&neartagdist,4,1,fil); + dfwrite(&neartaghitdist,4,1,fil); + + dfwrite(turnspritelist,2,16,fil); + dfwrite(&turnspritecnt,2,1,fil); + dfwrite(warpsectorlist,2,16,fil); + dfwrite(&warpsectorcnt,2,1,fil); + dfwrite(xpanningsectorlist,2,16,fil); + dfwrite(&xpanningsectorcnt,2,1,fil); + dfwrite(ypanningwalllist,2,64,fil); + dfwrite(&ypanningwallcnt,2,1,fil); + dfwrite(floorpanninglist,2,64,fil); + dfwrite(&floorpanningcnt,2,1,fil); + dfwrite(dragsectorlist,2,16,fil); + dfwrite(dragxdir,2,16,fil); + dfwrite(dragydir,2,16,fil); + dfwrite(&dragsectorcnt,2,1,fil); + dfwrite(dragx1,4,16,fil); + dfwrite(dragy1,4,16,fil); + dfwrite(dragx2,4,16,fil); + dfwrite(dragy2,4,16,fil); + dfwrite(dragfloorz,4,16,fil); + dfwrite(&swingcnt,2,1,fil); + dfwrite(swingwall,2,32*5,fil); + dfwrite(swingsector,2,32,fil); + dfwrite(swingangopen,2,32,fil); + dfwrite(swingangclosed,2,32,fil); + dfwrite(swingangopendir,2,32,fil); + dfwrite(swingang,2,32,fil); + dfwrite(swinganginc,2,32,fil); + dfwrite(swingx,4,32*8,fil); + dfwrite(swingy,4,32*8,fil); + dfwrite(revolvesector,2,4,fil); + dfwrite(revolveang,2,4,fil); + dfwrite(&revolvecnt,2,1,fil); + dfwrite(revolvex,4,4*16,fil); + dfwrite(revolvey,4,4*16,fil); + dfwrite(revolvepivotx,4,4,fil); + dfwrite(revolvepivoty,4,4,fil); + dfwrite(subwaytracksector,2,4*128,fil); + dfwrite(subwaynumsectors,2,4,fil); + dfwrite(&subwaytrackcnt,2,1,fil); + dfwrite(subwaystop,4,4*8,fil); + dfwrite(subwaystopcnt,4,4,fil); + dfwrite(subwaytrackx1,4,4,fil); + dfwrite(subwaytracky1,4,4,fil); + dfwrite(subwaytrackx2,4,4,fil); + dfwrite(subwaytracky2,4,4,fil); + dfwrite(subwayx,4,4,fil); + dfwrite(subwaygoalstop,4,4,fil); + dfwrite(subwayvel,4,4,fil); + dfwrite(subwaypausetime,4,4,fil); + dfwrite(waterfountainwall,2,MAXPLAYERS,fil); + dfwrite(waterfountaincnt,2,MAXPLAYERS,fil); + dfwrite(slimesoundcnt,2,MAXPLAYERS,fil); + + //Warning: only works if all pointers are in sector structures! + for(i=MAXANIMATES-1;i>=0;i--) + tmpanimateptr[i] = (int)((intptr_t)animateptr[i]-(intptr_t)sector); + dfwrite(tmpanimateptr,4,MAXANIMATES,fil); + + dfwrite(animategoal,4,MAXANIMATES,fil); + dfwrite(animatevel,4,MAXANIMATES,fil); + dfwrite(animateacc,4,MAXANIMATES,fil); + dfwrite(&animatecnt,4,1,fil); + + dfwrite(&totalclock,4,1,fil); + dfwrite(&numframes,4,1,fil); + dfwrite(&randomseed,4,1,fil); + dfwrite(&numshades,2,1,fil); + + dfwrite(&g_visibility,4,1,fil); + dfwrite(¶llaxvisibility,4,1,fil); + dfwrite(¶llaxtype,1,1,fil); + dfwrite(&dummy,4,1,fil); + dfwrite(&dummy,2,MAXPSKYTILES,fil); + dfwrite(&dummy,2,1,fil); + + dfwrite(&mirrorcnt,2,1,fil); + dfwrite(mirrorwall,2,mirrorcnt,fil); + dfwrite(mirrorsector,2,mirrorcnt,fil); + + Bfclose(fil); + + Bstrcpy(getmessage,"Game saved."); + getmessageleng = Bstrlen(getmessage); + getmessagetimeoff = totalclock+360+(getmessageleng<<4); + return(0); +} + +void faketimerhandler(void) +{ + short other /*, packbufleng*/; + int i, j, k, l; + + sampletimer(); + if ((totalclock < ototalclock+(TIMERINTSPERSECOND/MOVESPERSECOND)) || (ready2send == 0)) return; + ototalclock += (TIMERINTSPERSECOND/MOVESPERSECOND); + + getpackets(); + if (getoutputcirclesize() >= 16) return; + getinput(); + +#if 0 + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (i != myconnectindex) + { + k = (movefifoend[myconnectindex]-1)-movefifoend[i]; + myminlag[i] = min(myminlag[i],k); + mymaxlag = max(mymaxlag,k); + } + + if (((movefifoend[myconnectindex]-1)&(TIMERUPDATESIZ-1)) == 0) + { + i = mymaxlag-bufferjitter; mymaxlag = 0; + if (i > 0) bufferjitter += ((2+i)>>2); + else if (i < 0) bufferjitter -= ((2-i)>>2); + } +#endif + + if (networkmode == 1) + { + packbuf[2] = 0; j = 3; + if (loc.fvel != oloc.fvel) packbuf[j++] = loc.fvel, packbuf[2] |= 1; + if (loc.svel != oloc.svel) packbuf[j++] = loc.svel, packbuf[2] |= 2; + if (loc.avel != oloc.avel) packbuf[j++] = loc.avel, packbuf[2] |= 4; + if ((loc.bits^oloc.bits)&0x00ff) packbuf[j++] = (loc.bits&255), packbuf[2] |= 8; + if ((loc.bits^oloc.bits)&0xff00) packbuf[j++] = ((loc.bits>>8)&255), packbuf[2] |= 16; + copybufbyte(&loc,&oloc,sizeof(input)); + + copybufbyte(&loc,&baksync[movefifoend[myconnectindex]][myconnectindex],sizeof(input)); + movefifoend[myconnectindex] = ((movefifoend[myconnectindex]+1)&(MOVEFIFOSIZ-1)); + + for(i=connecthead;i>=0;i=connectpoint2[i]) + if (i != myconnectindex) + { + packbuf[0] = 17; + packbuf[1] = (char)((movefifoend[myconnectindex]-movefifoend[i])&(MOVEFIFOSIZ-1)); + + k = j; + if ((myconnectindex == connecthead) || ((i == connecthead) && (myconnectindex == connectpoint2[connecthead]))) + { + while (syncvalhead != syncvaltail) + { + packbuf[j++] = syncval[syncvaltail]; + syncvaltail = ((syncvaltail+1)&(MOVEFIFOSIZ-1)); + } + } + sendpacket(i,packbuf,j); + j = k; + } + + gotlastpacketclock = totalclock; + return; + } + + //MASTER (or 1 player game) + if ((myconnectindex == connecthead) || (option[4] == 0)) + { + copybufbyte(&loc,&ffsync[myconnectindex],sizeof(input)); + + if (option[4] != 0) + { + packbuf[0] = 0; + j = ((numplayers+1)>>1)+1; + for(k=1;k=0;i=connectpoint2[i]) + { + l = 0; + if (ffsync[i].fvel != osync[i].fvel) packbuf[j++] = ffsync[i].fvel, l |= 1; + if (ffsync[i].svel != osync[i].svel) packbuf[j++] = ffsync[i].svel, l |= 2; + if (ffsync[i].avel != osync[i].avel) packbuf[j++] = ffsync[i].avel, l |= 4; + if (ffsync[i].bits != osync[i].bits) + { + packbuf[j++] = (ffsync[i].bits&255); + packbuf[j++] = ((ffsync[i].bits>>8)&255); + l |= 8; + } + packbuf[k>>3] |= (l<<(k&7)); + k += 4; + + copybufbyte(&ffsync[i],&osync[i],sizeof(input)); + } + + while (syncvalhead != syncvaltail) + { + packbuf[j++] = syncval[syncvaltail]; + syncvaltail = ((syncvaltail+1)&(MOVEFIFOSIZ-1)); + } + + for(i=connectpoint2[connecthead];i>=0;i=connectpoint2[i]) + sendpacket(i,packbuf,j); + } + else if (numplayers >= 2) + { + if (keystatus[0xb5]) + { + keystatus[0xb5] = 0; + locselectedgun2++; if (locselectedgun2 >= 3) locselectedgun2 = 0; + } + + //Second player on 1 computer mode + loc2.fvel = min(max(fvel2,-128+8),127-8); + loc2.svel = min(max(svel2,-128+8),127-8); + loc2.avel = min(max(avel2,-128+16),127-16); + loc2.bits = (locselectedgun2<<13); + loc2.bits |= keystatus[0x45]; //Stand high + loc2.bits |= (keystatus[0x47]<<1); //Stand low + loc2.bits |= (1<<8); //Run + loc2.bits |= (keystatus[0x49]<<2); //Look up + loc2.bits |= (keystatus[0x37]<<3); //Look down + loc2.bits |= (keystatus[0x50]<<10); //Space + loc2.bits |= (keystatus[0x52]<<11); //Shoot + + other = connectpoint2[myconnectindex]; + if (other < 0) other = connecthead; + + copybufbyte(&loc2,&ffsync[other],sizeof(input)); + } + movethings(); //Move EVERYTHING (you too!) + } + else //I am a SLAVE + { + packbuf[0] = 1; packbuf[1] = 0; j = 2; + if (loc.fvel != oloc.fvel) packbuf[j++] = loc.fvel, packbuf[1] |= 1; + if (loc.svel != oloc.svel) packbuf[j++] = loc.svel, packbuf[1] |= 2; + if (loc.avel != oloc.avel) packbuf[j++] = loc.avel, packbuf[1] |= 4; + if ((loc.bits^oloc.bits)&0x00ff) packbuf[j++] = (loc.bits&255), packbuf[1] |= 8; + if ((loc.bits^oloc.bits)&0xff00) packbuf[j++] = ((loc.bits>>8)&255), packbuf[1] |= 16; + copybufbyte(&loc,&oloc,sizeof(input)); + sendpacket(connecthead,packbuf,j); + } +} + +void getpackets(void) +{ + int i, j, k, l; + int other, packbufleng, movecnt; + + if (option[4] == 0) return; + + movecnt = 0; + while ((packbufleng = getpacket(&other,packbuf)) > 0) + { + switch(packbuf[0]) + { + case 0: //[0] (receive master sync buffer) + j = ((numplayers+1)>>1)+1; k = (1<<3); + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + l = (packbuf[k>>3]>>(k&7)); + if (l&1) ffsync[i].fvel = packbuf[j++]; + if (l&2) ffsync[i].svel = packbuf[j++]; + if (l&4) ffsync[i].avel = packbuf[j++]; + if (l&8) + { + ffsync[i].bits = ((short)packbuf[j])+(((short)packbuf[j+1])<<8); + j += 2; + } + k += 4; + } + + while (j != packbufleng) + { + othersyncval[othersyncvalhead] = packbuf[j++]; + othersyncvalhead = ((othersyncvalhead+1)&(MOVEFIFOSIZ-1)); + } + if ((syncvalhead != syncvaltottail) && (othersyncvalhead != syncvaltottail)) + { + syncstat = 0; + do + { + syncstat |= (syncval[syncvaltottail]^othersyncval[syncvaltottail]); + syncvaltottail = ((syncvaltottail+1)&(MOVEFIFOSIZ-1)); + } while ((syncvalhead != syncvaltottail) && (othersyncvalhead != syncvaltottail)); + } + + movethings(); //Move all players and sprites + movecnt++; + break; + case 1: //[1] (receive slave sync buffer) + j = 2; k = packbuf[1]; + if (k&1) ffsync[other].fvel = packbuf[j++]; + if (k&2) ffsync[other].svel = packbuf[j++]; + if (k&4) ffsync[other].avel = packbuf[j++]; + if (k&8) ffsync[other].bits = ((ffsync[other].bits&0xff00)|((short)packbuf[j++])); + if (k&16) ffsync[other].bits = ((ffsync[other].bits&0x00ff)|(((short)packbuf[j++])<<8)); + break; + case 2: + getmessageleng = packbufleng-1; + for(j=getmessageleng-1;j>=0;j--) getmessage[j] = packbuf[j+1]; + getmessagetimeoff = totalclock+360+(getmessageleng<<4); + wsay("getstuff.wav",8192L,63L,63L); //Added 12/2004 + break; + case 3: + wsay("getstuff.wav",4096L,63L,63L); + break; +#if 0 + case 5: + playerreadyflag[other] = packbuf[1]; + if ((other == connecthead) && (packbuf[1] == 2)) + sendpacket(connecthead,packbuf,2); + break; +#endif + case 250: + playerreadyflag[other]++; + break; + case 17: + j = 3; k = packbuf[2]; + if (k&1) ffsync[other].fvel = packbuf[j++]; + if (k&2) ffsync[other].svel = packbuf[j++]; + if (k&4) ffsync[other].avel = packbuf[j++]; + if (k&8) ffsync[other].bits = ((ffsync[other].bits&0xff00)|((short)packbuf[j++])); + if (k&16) ffsync[other].bits = ((ffsync[other].bits&0x00ff)|(((short)packbuf[j++])<<8)); + otherlag[other] = packbuf[1]; + + copybufbyte(&ffsync[other],&baksync[movefifoend[other]][other],sizeof(input)); + movefifoend[other] = ((movefifoend[other]+1)&(MOVEFIFOSIZ-1)); + + while (j != packbufleng) + { + othersyncval[othersyncvalhead] = packbuf[j++]; + othersyncvalhead = ((othersyncvalhead+1)&(MOVEFIFOSIZ-1)); + } + if ((syncvalhead != syncvaltottail) && (othersyncvalhead != syncvaltottail)) + { + syncstat = 0; + do + { + syncstat |= (syncval[syncvaltottail]^othersyncval[syncvaltottail]); + syncvaltottail = ((syncvaltottail+1)&(MOVEFIFOSIZ-1)); + } while ((syncvalhead != syncvaltottail) && (othersyncvalhead != syncvaltottail)); + } + + break; + case 255: //[255] (logout) + keystatus[1] = 1; + break; + } + } + if ((networkmode == 0) && (myconnectindex != connecthead) && ((movecnt&1) == 0)) + { + if (rand()&1) ototalclock += (TICSPERFRAME>>1); + else ototalclock -= (TICSPERFRAME>>1); + } +} + +void drawoverheadmap(int cposx, int cposy, int czoom, short cang) +{ + int i, j, k, l=0, x1, y1, x2=0, y2=0, x3, y3, x4, y4, ox, oy, xoff, yoff; + int dax, day, cosang, sinang, xspan, yspan, sprx, spry; + int xrepeat, yrepeat, z1, z2, startwall, endwall, tilenum, daang; + int xvect, yvect, xvect2, yvect2; + char col; + walltype *wal, *wal2; + spritetype *spr; + + xvect = sintable[(-cang)&2047] * czoom; + yvect = sintable[(1536-cang)&2047] * czoom; + xvect2 = mulscale16(xvect,yxaspect); + yvect2 = mulscale16(yvect,yxaspect); + + //Draw red lines + for(i=0;inextwall; if (k < 0) continue; + + if ((show2dwall[j>>3]&(1<<(j&7))) == 0) continue; + if ((k > j) && ((show2dwall[k>>3]&(1<<(k&7))) > 0)) continue; + + if (sector[wal->nextsector].ceilingz == z1) + if (sector[wal->nextsector].floorz == z2) + if (((wal->cstat|wall[wal->nextwall].cstat)&(16+32)) == 0) continue; + + col = 152; + + if (dimensionmode[screenpeek] == 2) + { + if (sector[i].floorz != sector[i].ceilingz) + if (sector[wal->nextsector].floorz != sector[wal->nextsector].ceilingz) + if (((wal->cstat|wall[wal->nextwall].cstat)&(16+32)) == 0) + if (sector[i].floorz == sector[wal->nextsector].floorz) continue; + if (sector[i].floorpicnum != sector[wal->nextsector].floorpicnum) continue; + if (sector[i].floorshade != sector[wal->nextsector].floorshade) continue; + col = 12; + } + + ox = wal->x-cposx; oy = wal->y-cposy; + x1 = dmulscale16(ox,xvect,-oy,yvect)+(xdim<<11); + y1 = dmulscale16(oy,xvect2,ox,yvect2)+(ydim<<11); + + wal2 = &wall[wal->point2]; + ox = wal2->x-cposx; oy = wal2->y-cposy; + x2 = dmulscale16(ox,xvect,-oy,yvect)+(xdim<<11); + y2 = dmulscale16(oy,xvect2,ox,yvect2)+(ydim<<11); + + drawline256(x1,y1,x2,y2,col); + } + } + + //Draw sprites + k = playersprite[screenpeek]; + for(i=0;i=0;j=nextspritesect[j]) + if ((show2dsprite[j>>3]&(1<<(j&7))) > 0) + { + spr = &sprite[j]; if (spr->cstat&0x8000) continue; + col = 56; + if (spr->cstat&1) col = 248; + if (j == k) col = 31; + + k = statrate[spr->statnum]; + sprx = spr->x; + spry = spr->y; + if (k >= 0) + { + switch(k) + { + case 0: l = smoothratio; break; + case 1: l = (smoothratio>>1)+(((nummoves-j)&1)<<15); break; + case 3: l = (smoothratio>>2)+(((nummoves-j)&3)<<14); break; + case 7: l = (smoothratio>>3)+(((nummoves-j)&7)<<13); break; + case 15: l = (smoothratio>>4)+(((nummoves-j)&15)<<12); break; + } + sprx = osprite[j].x+mulscale16(sprx-osprite[j].x,l); + spry = osprite[j].y+mulscale16(spry-osprite[j].y,l); + } + + switch (spr->cstat&48) + { + case 0: + ox = sprx-cposx; oy = spry-cposy; + x1 = dmulscale16(ox,xvect,-oy,yvect); + y1 = dmulscale16(oy,xvect2,ox,yvect2); + + if (dimensionmode[screenpeek] == 1) + { + ox = (sintable[(spr->ang+512)&2047]>>7); + oy = (sintable[(spr->ang)&2047]>>7); + x2 = dmulscale16(ox,xvect,-oy,yvect); + y2 = dmulscale16(oy,xvect,ox,yvect); + + if (j == playersprite[screenpeek]) + { + x2 = 0L; + y2 = -(czoom<<5); + } + + x3 = mulscale16(x2,yxaspect); + y3 = mulscale16(y2,yxaspect); + + drawline256(x1-x2+(xdim<<11),y1-y3+(ydim<<11), + x1+x2+(xdim<<11),y1+y3+(ydim<<11),col); + drawline256(x1-y2+(xdim<<11),y1+x3+(ydim<<11), + x1+x2+(xdim<<11),y1+y3+(ydim<<11),col); + drawline256(x1+y2+(xdim<<11),y1-x3+(ydim<<11), + x1+x2+(xdim<<11),y1+y3+(ydim<<11),col); + } + else + { + if (((gotsector[i>>3]&(1<<(i&7))) > 0) && (czoom > 96)) + { + daang = (spr->ang-cang)&2047; + if (j == playersprite[screenpeek]) { x1 = 0; y1 = 0; daang = 0; } + rotatesprite((x1<<4)+(xdim<<15),(y1<<4)+(ydim<<15),mulscale16(czoom*spr->yrepeat,yxaspect),daang,spr->picnum,spr->shade,spr->pal,(spr->cstat&2)>>1,windowx1,windowy1,windowx2,windowy2); + } + } + break; + case 16: + x1 = sprx; y1 = spry; + tilenum = spr->picnum; + xoff = (int)picanm[tilenum].xofs+((int)spr->xoffset); + if ((spr->cstat&4) > 0) xoff = -xoff; + k = spr->ang; l = spr->xrepeat; + dax = sintable[k&2047]*l; day = sintable[(k+1536)&2047]*l; + l = tilesizx[tilenum]; k = (l>>1)+xoff; + x1 -= mulscale16(dax,k); x2 = x1+mulscale16(dax,l); + y1 -= mulscale16(day,k); y2 = y1+mulscale16(day,l); + + ox = x1-cposx; oy = y1-cposy; + x1 = dmulscale16(ox,xvect,-oy,yvect); + y1 = dmulscale16(oy,xvect2,ox,yvect2); + + ox = x2-cposx; oy = y2-cposy; + x2 = dmulscale16(ox,xvect,-oy,yvect); + y2 = dmulscale16(oy,xvect2,ox,yvect2); + + drawline256(x1+(xdim<<11),y1+(ydim<<11), + x2+(xdim<<11),y2+(ydim<<11),col); + + break; + case 32: + if (dimensionmode[screenpeek] == 1) + { + tilenum = spr->picnum; + xoff = (int)picanm[tilenum].xofs+((int)spr->xoffset); + yoff = (int)picanm[tilenum].yofs+((int)spr->yoffset); + if ((spr->cstat&4) > 0) xoff = -xoff; + if ((spr->cstat&8) > 0) yoff = -yoff; + + k = spr->ang; + cosang = sintable[(k+512)&2047]; sinang = sintable[k]; + xspan = tilesizx[tilenum]; xrepeat = spr->xrepeat; + yspan = tilesizy[tilenum]; yrepeat = spr->yrepeat; + + dax = ((xspan>>1)+xoff)*xrepeat; day = ((yspan>>1)+yoff)*yrepeat; + x1 = sprx + dmulscale16(sinang,dax,cosang,day); + y1 = spry + dmulscale16(sinang,day,-cosang,dax); + l = xspan*xrepeat; + x2 = x1 - mulscale16(sinang,l); + y2 = y1 + mulscale16(cosang,l); + l = yspan*yrepeat; + k = -mulscale16(cosang,l); x3 = x2+k; x4 = x1+k; + k = -mulscale16(sinang,l); y3 = y2+k; y4 = y1+k; + + ox = x1-cposx; oy = y1-cposy; + x1 = dmulscale16(ox,xvect,-oy,yvect); + y1 = dmulscale16(oy,xvect2,ox,yvect2); + + ox = x2-cposx; oy = y2-cposy; + x2 = dmulscale16(ox,xvect,-oy,yvect); + y2 = dmulscale16(oy,xvect2,ox,yvect2); + + ox = x3-cposx; oy = y3-cposy; + x3 = dmulscale16(ox,xvect,-oy,yvect); + y3 = dmulscale16(oy,xvect2,ox,yvect2); + + ox = x4-cposx; oy = y4-cposy; + x4 = dmulscale16(ox,xvect,-oy,yvect); + y4 = dmulscale16(oy,xvect2,ox,yvect2); + + drawline256(x1+(xdim<<11),y1+(ydim<<11), + x2+(xdim<<11),y2+(ydim<<11),col); + + drawline256(x2+(xdim<<11),y2+(ydim<<11), + x3+(xdim<<11),y3+(ydim<<11),col); + + drawline256(x3+(xdim<<11),y3+(ydim<<11), + x4+(xdim<<11),y4+(ydim<<11),col); + + drawline256(x4+(xdim<<11),y4+(ydim<<11), + x1+(xdim<<11),y1+(ydim<<11),col); + + } + break; + } + } + + //Draw white lines + for(i=0;inextwall >= 0) continue; + + if ((show2dwall[j>>3]&(1<<(j&7))) == 0) continue; + + if (tilesizx[wal->picnum] == 0) continue; + if (tilesizy[wal->picnum] == 0) continue; + + if (j == k) + { x1 = x2; y1 = y2; } + else + { + ox = wal->x-cposx; oy = wal->y-cposy; + x1 = dmulscale16(ox,xvect,-oy,yvect)+(xdim<<11); + y1 = dmulscale16(oy,xvect2,ox,yvect2)+(ydim<<11); + } + + k = wal->point2; wal2 = &wall[k]; + ox = wal2->x-cposx; oy = wal2->y-cposy; + x2 = dmulscale16(ox,xvect,-oy,yvect)+(xdim<<11); + y2 = dmulscale16(oy,xvect2,ox,yvect2)+(ydim<<11); + + drawline256(x1,y1,x2,y2,24); + } + } +} + + //New movesprite using getzrange. Note that I made the getzrange + //parameters global (&globhiz,&globhihit,&globloz,&globlohit) so they + //don't need to be passed everywhere. Also this should make this + //movesprite function compatible with the older movesprite functions. +int movesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, int clipmask) +{ + int daz, zoffs /*, tempint*/; + short retval, dasectnum, datempshort; + spritetype *spr; + + spr = &sprite[spritenum]; + + if ((spr->cstat&128) == 0) + zoffs = -((tilesizy[spr->picnum]*spr->yrepeat)<<1); + else + zoffs = 0; + + dasectnum = spr->sectnum; //Can't modify sprite sectors directly becuase of linked lists + daz = spr->z+zoffs; //Must do this if not using the new centered centering (of course) + retval = clipmove_old(&spr->x,&spr->y,&daz,&dasectnum,dx,dy, + ((int)spr->clipdist)<<2,ceildist,flordist,clipmask); + + if (dasectnum < 0) retval = -1; + + if ((dasectnum != spr->sectnum) && (dasectnum >= 0)) + changespritesect(spritenum,dasectnum); + + //Set the blocking bit to 0 temporarly so getzrange doesn't pick up + //its own sprite + datempshort = spr->cstat; spr->cstat &= ~1; + getzrange_old(spr->x,spr->y,spr->z-1,spr->sectnum, + &globhiz,&globhihit,&globloz,&globlohit, + ((int)spr->clipdist)<<2,clipmask); + spr->cstat = datempshort; + + daz = spr->z+zoffs + dz; + if ((daz <= globhiz) || (daz > globloz)) + { + if (retval != 0) return(retval); + return(16384+dasectnum); + } + spr->z = daz-zoffs; + return(retval); +} + + +void waitforeverybody () +{ + int i; + if (numplayers < 2) return; + packbuf[0] = 250; + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + if (i != myconnectindex) sendpacket(i,packbuf,1); + if ((!networkmode) && (myconnectindex != connecthead)) break; //slaves in M/S mode only send to master + } + playerreadyflag[myconnectindex]++; + while (1) + { + handleevents(); + refreshaudio(); + + drawrooms(pos[myconnectindex].x,pos[myconnectindex].y,pos[myconnectindex].z,ang[myconnectindex],horiz[myconnectindex],cursectnum[myconnectindex]); + if (!networkmode) Bsprintf((char *)tempbuf,"Master/slave mode"); + else Bsprintf((char *)tempbuf,"Peer-peer mode"); + printext256((xdim>>1)-(strlen((char *)tempbuf)<<2),(ydim>>1)-24,31,0,(char *)tempbuf,0); + Bsprintf((char *)tempbuf,"Waiting for players"); + printext256((xdim>>1)-(strlen((char *)tempbuf)<<2),(ydim>>1)-16,31,0,(char *)tempbuf,0); + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + if (playerreadyflag[i] < playerreadyflag[myconnectindex]) + { + //slaves in M/S mode only wait for master + if ((!networkmode) && (myconnectindex != connecthead) && (i != connecthead)) + { + Bsprintf((char *)tempbuf,"Player %d",i); + printext256((xdim>>1)-(16<<2),(ydim>>1)+i*8,15,0,(char *)tempbuf,0); + } + else + { + Bsprintf((char *)tempbuf,"Player %d NOT ready",i); + printext256((xdim>>1)-(16<<2),(ydim>>1)+i*8,127,0,(char *)tempbuf,0); + } + } + else + { + Bsprintf((char *)tempbuf,"Player %d ready",i); + printext256((xdim>>1)-(16<<2),(ydim>>1)+i*8,31,0,(char *)tempbuf,0); + } + if (i == myconnectindex) + { + Bsprintf((char *)tempbuf,"You->"); + printext256((xdim>>1)-(26<<2),(ydim>>1)+i*8,95,0,(char *)tempbuf,0); + } + } + nextpage(); + + + if (quitevent || keystatus[1]) { + sendlogoff(); //Signing off + musicoff(); + uninitmultiplayers(); + uninittimer(); + uninitinput(); + uninitengine(); + uninitsb(); + uninitgroupfile(); + exit(0); + } + + getpackets(); + + for(i=connecthead;i>=0;i=connectpoint2[i]) + { + if (playerreadyflag[i] < playerreadyflag[myconnectindex]) break; + if ((!networkmode) && (myconnectindex != connecthead)) { i = -1; break; } //slaves in M/S mode only wait for master + } + if (i < 0) return; + } +} + + +void searchmap(short startsector) +{ + int i, j, dasect, splc, send, startwall, endwall; + short dapic; + walltype *wal; + + if ((startsector < 0) || (startsector >= numsectors)) return; + for(i=0;i<(MAXSECTORS>>3);i++) show2dsector[i] = 0; + for(i=0;i<(MAXWALLS>>3);i++) show2dwall[i] = 0; + for(i=0;i<(MAXSPRITES>>3);i++) show2dsprite[i] = 0; + + //Search your area recursively & set all show2dsector/show2dwalls + tempshort[0] = startsector; + show2dsector[startsector>>3] |= (1<<(startsector&7)); + dapic = sector[startsector].ceilingpicnum; + if (waloff[dapic] == 0) loadtile(dapic); + dapic = sector[startsector].floorpicnum; + if (waloff[dapic] == 0) loadtile(dapic); + for(splc=0,send=1;splc>3] |= (1<<(i&7)); + dapic = wall[i].picnum; + if (waloff[dapic] == 0) loadtile(dapic); + dapic = wall[i].overpicnum; + if (((dapic&0xfffff000) == 0) && (waloff[dapic] == 0)) loadtile(dapic); + + j = wal->nextsector; + if ((j >= 0) && ((show2dsector[j>>3]&(1<<(j&7))) == 0)) + { + show2dsector[j>>3] |= (1<<(j&7)); + + dapic = sector[j].ceilingpicnum; + if (waloff[dapic] == 0) loadtile(dapic); + dapic = sector[j].floorpicnum; + if (waloff[dapic] == 0) loadtile(dapic); + + tempshort[send++] = (short)j; + } + } + + for(i=headspritesect[dasect];i>=0;i=nextspritesect[i]) + { + show2dsprite[i>>3] |= (1<<(i&7)); + dapic = sprite[i].picnum; + if (waloff[dapic] == 0) loadtile(dapic); + } + } +} + +void setinterpolation(int *posptr) +{ + int i; + + if (numinterpolations >= MAXINTERPOLATIONS) return; + for(i=numinterpolations-1;i>=0;i--) + if (curipos[i] == posptr) return; + curipos[numinterpolations] = posptr; + oldipos[numinterpolations] = *posptr; + numinterpolations++; +} + +void stopinterpolation(int *posptr) +{ + int i; + + for(i=numinterpolations-1;i>=startofdynamicinterpolations;i--) + if (curipos[i] == posptr) + { + numinterpolations--; + oldipos[i] = oldipos[numinterpolations]; + bakipos[i] = bakipos[numinterpolations]; + curipos[i] = curipos[numinterpolations]; + } +} + +void updateinterpolations(void) //Stick at beginning of domovethings +{ + int i; + + for(i=numinterpolations-1;i>=0;i--) oldipos[i] = *curipos[i]; +} + +void dointerpolations(void) //Stick at beginning of drawscreen +{ + int i, j, odelta, ndelta; + + ndelta = 0; j = 0; + for(i=numinterpolations-1;i>=0;i--) + { + bakipos[i] = *curipos[i]; + odelta = ndelta; ndelta = (*curipos[i])-oldipos[i]; + if (odelta != ndelta) j = mulscale16(ndelta,smoothratio); + *curipos[i] = oldipos[i]+j; + } +} + +void restoreinterpolations(void) //Stick at end of drawscreen +{ + int i; + + for(i=numinterpolations-1;i>=0;i--) *curipos[i] = bakipos[i]; +} + +void printext(int x, int y, char *buffer, short tilenum /*, char invisiblecol*/) +{ + int i; + char ch; + + for(i=0;buffer[i]!=0;i++) + { + ch = (char)buffer[i]; + rotatesprite((x-((8&15)<<3))<<16,(y-((8>>4)<<3))<<16,65536L,0,tilenum,0,0,8+16+64+128,x,y,x+7,y+7); + rotatesprite((x-((ch&15)<<3))<<16,(y-((ch>>4)<<3))<<16,65536L,0,tilenum,0,0,8+16+128,x,y,x+7,y+7); + x += 8; + } +} + +void drawtilebackground (/*int thex, int they,*/ short tilenum, + signed char shade, int cx1, int cy1, + int cx2, int cy2, char dapalnum) +{ + int x, y, xsiz, ysiz, tx1, ty1, tx2, ty2; + + xsiz = tilesizx[tilenum]; tx1 = cx1/xsiz; tx2 = cx2/xsiz; + ysiz = tilesizy[tilenum]; ty1 = cy1/ysiz; ty2 = cy2/ysiz; + + for(x=tx1;x<=tx2;x++) + for(y=ty1;y<=ty2;y++) + rotatesprite(x*xsiz<<16,y*ysiz<<16,65536L,0,tilenum,shade,dapalnum,8+16+64+128,cx1,cy1,cx2,cy2); +} + +void M32RunScript(const char *s) { UNREFERENCED_PARAMETER(s); } +void G_Polymer_UnInit(void) { } +void app_crashhandler(void) { } + +/* + * vim:ts=4:sw=4: + */ diff --git a/polymer/eduke32/source/testgame/src/game.h b/polymer/eduke32/source/testgame/src/game.h new file mode 100644 index 000000000..8276d173e --- /dev/null +++ b/polymer/eduke32/source/testgame/src/game.h @@ -0,0 +1,55 @@ +// game.h + +void operatesector(short dasector); +void operatesprite(short dasprite); +int changehealth(short snum, short deltahealth); +void changenumbombs(short snum, short deltanumbombs); +void changenummissiles(short snum, short deltanummissiles); +void changenumgrabbers(short snum, short deltanumgrabbers); +void drawstatusflytime(short snum); +void drawstatusbar(short snum); +void prepareboard(char *daboardfilename); +void checktouchsprite(short snum, short sectnum); +void checkgrabbertouchsprite(short snum, short sectnum); +void shootgun(short snum, const vec3_t *vector, short daang, int dahoriz, short dasectnum, char guntype); +void analyzesprites(int dax, int day); +void tagcode(void); +void statuslistcode(void); +void activatehitag(short dahitag); +void bombexplode(int i); +void processinput(short snum); +void view(short snum, vec3_t *v, short *vsectnum, short ang, int horiz); +void drawscreen(short snum, int dasmoothratio); +void movethings(void); +void fakedomovethings(void); +void fakedomovethingscorrect(void); +void domovethings(void); +void getinput(void); +void initplayersprite(short snum); +void playback(void); +void setup3dscreen(void); +void findrandomspot(int *x, int *y, short *sectnum); +void warp(int *x, int *y, int *z, short *daang, short *dasector); +void warpsprite(short spritenum); +void initlava(void); +void movelava(char *dapic); +void doanimations(void); +int getanimationgoal(int *animptr); +int setanimation(int *animptr, int thegoal, int thevel, int theacc); +void checkmasterslaveswitch(void); +int testneighborsectors(short sect1, short sect2); +int loadgame(void); +int savegame(void); +void faketimerhandler(void); +void getpackets(void); +void drawoverheadmap(int cposx, int cposy, int czoom, short cang); +int movesprite(short spritenum, int dx, int dy, int dz, int ceildist, int flordist, int clipmask); +void waitforeverybody(void); +void searchmap(short startsector); +void setinterpolation(int *posptr); +void stopinterpolation(int *posptr); +void updateinterpolations(void); +void dointerpolations(void); +void restoreinterpolations(void); +void printext(int x, int y, char *buffer, short tilenum /*, char invisiblecol*/); +void drawtilebackground (/*int thex, int they,*/ short tilenum, signed char shade, int cx1, int cy1, int cx2, int cy2, char dapalnum); diff --git a/polymer/eduke32/source/testgame/src/names.h b/polymer/eduke32/source/testgame/src/names.h new file mode 100644 index 000000000..6373be4d8 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/names.h @@ -0,0 +1,49 @@ +//Be careful when changing this file - it is parsed by Editart and Build. +#define SWITCH1ON 15 +#define SLIME 34 +#define BACKGROUND 37 +#define KENPICTURE 48 +#define BUILDDISK 49 +#define SWITCH2ON 66 +#define SWITCH2OFF 69 +#define ALPHABET 73 +#define NO 74 +#define DEMOSIGN 75 +#define COIN 76 +#define COINSTACK 77 +#define GIFTBOX 78 +#define DIAMONDS 79 +#define EVILALGRAVE 83 +#define STATUSBAR 87 +#define DAYSKY 89 +#define WATERFOUNTAIN 90 +#define USEWATERFOUNTAIN 91 +#define NIGHTSKY 93 +#define BULLET 98 +#define BOMB 100 +#define CANNON 101 +#define GUNONBOTTOM 102 +#define BOMBEMITTER 103 +#define EXPLOSION 105 +#define SPLASH 106 +#define BROWNMONSTER 110 +#define SKELETON 113 +#define AL 114 +#define EVILAL 115 +#define PLAYER 120 +#define SWITCH3OFF 146 +#define SWITCH3ON 147 +#define AIRPLANE 148 +#define SPIRAL 149 +#define COMPASS 150 +#define FOOTPRINT 156 +#define STATUSBARFILL8 160 +#define STATUSBARFILL4 161 +#define BOUNCYMAT 162 +#define MIRROR 165 +#define FLOORMIRROR 166 +#define GRABBER 167 +#define GRABCANNON 168 +#define MISSILE 169 +#define LAUNCHER 171 +#define MIRRORLABEL 4000 diff --git a/polymer/eduke32/source/testgame/src/sound_stub.c b/polymer/eduke32/source/testgame/src/sound_stub.c new file mode 100644 index 000000000..b32d36de3 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/sound_stub.c @@ -0,0 +1,64 @@ + +#include "compat.h" + +void initsb(char dadigistat, char damusistat, int dasamplerate, char danumspeakers, char dabytespersample, char daintspersec, char daquality) +{ + UNREFERENCED_PARAMETER(dadigistat); + UNREFERENCED_PARAMETER(damusistat); + UNREFERENCED_PARAMETER(dasamplerate); + UNREFERENCED_PARAMETER(danumspeakers); + UNREFERENCED_PARAMETER(dabytespersample); + UNREFERENCED_PARAMETER(daintspersec); + UNREFERENCED_PARAMETER(daquality); +} + +void uninitsb(void) +{ +} + +void setears(int daposx, int daposy, int daxvect, int dayvect) +{ + UNREFERENCED_PARAMETER(daposx); + UNREFERENCED_PARAMETER(daposy); + UNREFERENCED_PARAMETER(daxvect); + UNREFERENCED_PARAMETER(dayvect); +} + +void wsayfollow(char *dafilename, int dafreq, int davol, int *daxplc, int *dayplc, char followstat) +{ + UNREFERENCED_PARAMETER(dafilename); + UNREFERENCED_PARAMETER(dafreq); + UNREFERENCED_PARAMETER(davol); + UNREFERENCED_PARAMETER(daxplc); + UNREFERENCED_PARAMETER(dayplc); + UNREFERENCED_PARAMETER(followstat); +} + +void wsay(char *dafilename, int dafreq, int volume1, int volume2) +{ + UNREFERENCED_PARAMETER(dafilename); + UNREFERENCED_PARAMETER(dafreq); + UNREFERENCED_PARAMETER(volume1); + UNREFERENCED_PARAMETER(volume2); +} + +void loadwaves(void) +{ +} + +void loadsong(char *filename) +{ + UNREFERENCED_PARAMETER(filename); +} + +void musicon(void) +{ +} + +void musicoff(void) +{ +} + +void refreshaudio(void) +{ +} diff --git a/polymer/eduke32/source/testgame/src/startgtk.game.c b/polymer/eduke32/source/testgame/src/startgtk.game.c new file mode 100644 index 000000000..0bc026493 --- /dev/null +++ b/polymer/eduke32/source/testgame/src/startgtk.game.c @@ -0,0 +1,544 @@ +/* NOTE: Glade will generate code for a dialogue box which you should + * then patch into this file whenever you make a change to the Glade + * template. + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifndef LINKED_GTK +# include "dynamicgtk.h" +#endif + +#include "baselayer.h" +#include "compat.h" +#include "build.h" + +#define TAB_CONFIG 0 +#define TAB_MESSAGES 1 + +static struct { + int fullscreen; + int xdim3d, ydim3d, bpp3d; + int forcesetup; +} settings; + +extern int gtkenabled; + +static GtkWidget *startwin = NULL; +static int retval = -1, mode = TAB_MESSAGES; + +// -- SUPPORT FUNCTIONS ------------------------------------------------------- + +#define GLADE_HOOKUP_OBJECT(component,widget,name) \ + g_object_set_data_full (G_OBJECT (component), name, \ + gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) + +#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ + g_object_set_data (G_OBJECT (component), name, widget) + +#define lookup_widget(x,w) \ + (GtkWidget*) g_object_get_data(G_OBJECT(x), w) + +static GdkPixbuf *load_banner(void) +{ + extern const GdkPixdata startbanner_pixdata; + return gdk_pixbuf_from_pixdata(&startbanner_pixdata, FALSE, NULL); +} + +static void SetPage(int n) +{ + if (!gtkenabled || !startwin) return; + mode = n; + gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(startwin,"tabs")), n); + + // each control in the config page vertical layout plus the start button should be made (in)sensitive + if (n == TAB_CONFIG) n = TRUE; else n = FALSE; + gtk_widget_set_sensitive(lookup_widget(startwin,"startbutton"), n); + gtk_container_foreach(GTK_CONTAINER(lookup_widget(startwin,"configvlayout")), + (GtkCallback)gtk_widget_set_sensitive, (gpointer)n); +} + +static void on_vmode3dcombo_changed(GtkComboBox *, gpointer); +static void PopulateForm(void) +{ + int mode3d, i; + GtkListStore *modes3d; + GtkTreeIter iter; + GtkComboBox *box3d; + char buf[64]; + + mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); + if (mode3d < 0) { + int i, cd[] = { 32, 24, 16, 15, 8, 0 }; + for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; } + for ( ; cd[i]; i++) { + mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); + if (mode3d < 0) continue; + settings.bpp3d = cd[i]; + break; + } + } + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"fullscreencheck")), settings.fullscreen); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(startwin,"alwaysshowcheck")), settings.forcesetup); + + box3d = GTK_COMBO_BOX(lookup_widget(startwin,"vmode3dcombo")); + modes3d = GTK_LIST_STORE(gtk_combo_box_get_model(box3d)); + gtk_list_store_clear(modes3d); + + for (i=0; i aptr) + gtk_text_buffer_insert(textbuffer, &enditer, (const gchar *)aptr, (gint)(bptr-aptr)-1); +#if GTK_CHECK_VERSION(2,6,0) + gtk_text_buffer_backspace(textbuffer, &enditer, FALSE, TRUE); +#else + { + GtkTextIter iter2 = enditer; + gtk_text_iter_backward_cursor_position(&iter2); + //FIXME: this seems be deleting one too many chars somewhere! + if (!gtk_text_iter_equal(&iter2, &enditer)) + gtk_text_buffer_delete_interactive(textbuffer, &iter2, &enditer, TRUE); + } +#endif + aptr = ++bptr; + break; + case 0: + if (bptr > aptr) + gtk_text_buffer_insert(textbuffer, &enditer, (const gchar *)aptr, (gint)(bptr-aptr)); + aptr = bptr; + break; + case '\r': // FIXME + default: + bptr++; + break; + } + } + + mark = gtk_text_buffer_create_mark(textbuffer, NULL, &enditer, 1); + gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview), mark, 0.0, FALSE, 0.0, 1.0); + gtk_text_buffer_delete_mark(textbuffer, mark); + + return 0; +} + +int startwin_settitle(const char *title) +{ + if (!gtkenabled) return 0; + if (!startwin) return 1; + gtk_window_set_title (GTK_WINDOW (startwin), title); + return 0; +} + +int startwin_idle(void *s) +{ + if (!gtkenabled) return 0; + //if (!startwin) return 1; + gtk_main_iteration_do (FALSE); + return 0; +} + +extern int xdimgame, ydimgame, bppgame, forcesetup; + +int startwin_run(void) +{ + if (!gtkenabled) return 0; + if (!startwin) return 1; + + SetPage(TAB_CONFIG); + + settings.fullscreen = fullscreen; + settings.xdim3d = xdimgame; + settings.ydim3d = ydimgame; + settings.bpp3d = bppgame; + settings.forcesetup = forcesetup; + PopulateForm(); + + gtk_main(); + + SetPage(TAB_MESSAGES); + if (retval) { + fullscreen = settings.fullscreen; + xdimgame = settings.xdim3d; + ydimgame = settings.ydim3d; + bppgame = settings.bpp3d; + forcesetup = settings.forcesetup; + } + + return retval; +} diff --git a/polymer/eduke32/source/testgame/src/startwin.game.c b/polymer/eduke32/source/testgame/src/startwin.game.c new file mode 100644 index 000000000..95370d12b --- /dev/null +++ b/polymer/eduke32/source/testgame/src/startwin.game.c @@ -0,0 +1,421 @@ +#ifndef _WIN32 +#error Only for Windows +#endif + +#include "compat.h" +#include "build.h" +#include "winlayer.h" + +#define WIN32_LEAN_AND_MEAN +#include +#include +#define _WIN32_IE 0x0600 +#include +#include + +#include "startwin.game.h" + +#define TAB_CONFIG 0 +#define TAB_MESSAGES 1 + +static struct { + int fullscreen; + int xdim3d, ydim3d, bpp3d; + int forcesetup; +} settings; + +static HWND startupdlg = NULL; +static HWND pages[2] = { NULL, NULL}; +static int done = -1, mode = TAB_CONFIG; + +static void PopulateForm(void) +{ + int i,j; + char buf[64]; + int mode3d; + HWND hwnd3d; + + hwnd3d = GetDlgItem(pages[TAB_CONFIG], IDC3DVMODE); + + mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, settings.bpp3d, settings.fullscreen, 1); + if (mode3d < 0) { + int cd[] = { 32, 24, 16, 15, 8, 0 }; + for (i=0; cd[i]; ) { if (cd[i] >= settings.bpp3d) i++; else break; } + for ( ; cd[i]; i++) { + mode3d = checkvideomode(&settings.xdim3d, &settings.ydim3d, cd[i], settings.fullscreen, 1); + if (mode3d < 0) continue; + settings.bpp3d = cd[i]; + break; + } + } + + Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCFULLSCREEN), (settings.fullscreen ? BST_CHECKED : BST_UNCHECKED)); + Button_SetCheck(GetDlgItem(pages[TAB_CONFIG], IDCALWAYSSHOW), (settings.forcesetup ? BST_CHECKED : BST_UNCHECKED)); + + ComboBox_ResetContent(hwnd3d); + for (i=0; iidFrom != WIN_STARTWIN_TABCTL) break; + cur = (int)SendMessage(nmhdr->hwndFrom, TCM_GETCURSEL,0,0); + switch (nmhdr->code) { + case TCN_SELCHANGING: { + if (cur < 0 || !pages[cur]) break; + ShowWindow(pages[cur],SW_HIDE); + return TRUE; + } + case TCN_SELCHANGE: { + if (cur < 0 || !pages[cur]) break; + ShowWindow(pages[cur],SW_SHOW); + return TRUE; + } + } + break; + } + + case WM_CLOSE: + if (mode == TAB_CONFIG) done = 0; + else quitevent++; + return TRUE; + + case WM_DESTROY: + if (hbmp) { + DeleteObject(hbmp); + hbmp = NULL; + } + + if (pages[TAB_CONFIG]) { + DestroyWindow(pages[TAB_CONFIG]); + pages[TAB_CONFIG] = NULL; + } + + startupdlg = NULL; + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case WIN_STARTWIN_CANCEL: + if (mode == TAB_CONFIG) done = 0; + else quitevent++; + return TRUE; + case WIN_STARTWIN_START: done = 1; return TRUE; + } + return FALSE; + + case WM_CTLCOLORSTATIC: + if ((HWND)lParam == pages[TAB_MESSAGES]) + return (BOOL)GetSysColorBrush(COLOR_WINDOW); + break; + + default: break; + } + + return FALSE; +} + + +int startwin_open(void) +{ + INITCOMMONCONTROLSEX icc; + if (startupdlg) return 1; + icc.dwSize = sizeof(icc); + icc.dwICC = ICC_TAB_CLASSES; + InitCommonControlsEx(&icc); + startupdlg = CreateDialog((HINSTANCE)win_gethinstance(), MAKEINTRESOURCE(WIN_STARTWIN), NULL, startup_dlgproc); + if (startupdlg) { + SetPage(TAB_MESSAGES); + EnableConfig(0); + return 0; + } + return -1; +} + +int startwin_close(void) +{ + if (!startupdlg) return 1; + DestroyWindow(startupdlg); + startupdlg = NULL; + return 0; +} + +int startwin_puts(const char *buf) +{ + const char *p = NULL, *q = NULL; + char workbuf[1024]; + static int newline = 0; + int curlen, linesbefore, linesafter; + HWND edctl; + int vis; + + if (!startupdlg) return 1; + + edctl = pages[TAB_MESSAGES]; + if (!edctl) return -1; + + vis = ((int)SendMessage(GetDlgItem(startupdlg, WIN_STARTWIN_TABCTL), TCM_GETCURSEL,0,0) == TAB_MESSAGES); + + if (vis) SendMessage(edctl, WM_SETREDRAW, FALSE,0); + curlen = SendMessage(edctl, WM_GETTEXTLENGTH, 0,0); + SendMessage(edctl, EM_SETSEL, (WPARAM)curlen, (LPARAM)curlen); + linesbefore = SendMessage(edctl, EM_GETLINECOUNT, 0,0); + p = buf; + while (*p) { + if (newline) { + SendMessage(edctl, EM_REPLACESEL, 0, (LPARAM)"\r\n"); + newline = 0; + } + q = p; + while (*q && *q != '\n') q++; + memcpy(workbuf, p, q-p); + if (*q == '\n') { + if (!q[1]) { + newline = 1; + workbuf[q-p] = 0; + } else { + workbuf[q-p] = '\r'; + workbuf[q-p+1] = '\n'; + workbuf[q-p+2] = 0; + } + p = q+1; + } else { + workbuf[q-p] = 0; + p = q; + } + SendMessage(edctl, EM_REPLACESEL, 0, (LPARAM)workbuf); + } + linesafter = SendMessage(edctl, EM_GETLINECOUNT, 0,0); + SendMessage(edctl, EM_LINESCROLL, 0, linesafter-linesbefore); + if (vis) SendMessage(edctl, WM_SETREDRAW, TRUE,0); + return 0; +} + +int startwin_settitle(const char *str) +{ + if (!startupdlg) return 1; + SetWindowText(startupdlg, str); + return 0; +} + +int startwin_idle(void *v) +{ + if (!startupdlg || !IsWindow(startupdlg)) return 0; + if (IsDialogMessage(startupdlg, (MSG*)v)) return 1; + return 0; +} + +extern int xdimgame, ydimgame, bppgame, forcesetup; + +int startwin_run(void) +{ + MSG msg; + if (!startupdlg) return 1; + + done = -1; + + SetPage(TAB_CONFIG); + EnableConfig(1); + + settings.fullscreen = fullscreen; + settings.xdim3d = xdimgame; + settings.ydim3d = ydimgame; + settings.bpp3d = bppgame; + settings.forcesetup = forcesetup; + PopulateForm(); + + while (done < 0) { + switch (GetMessage(&msg, NULL, 0,0)) { + case 0: done = 1; break; + case -1: return -1; + default: + if (IsWindow(startupdlg) && IsDialogMessage(startupdlg, &msg)) break; + TranslateMessage(&msg); + DispatchMessage(&msg); + break; + } + } + + SetPage(TAB_MESSAGES); + EnableConfig(0); + if (done) { + fullscreen = settings.fullscreen; + xdimgame = settings.xdim3d; + ydimgame = settings.ydim3d; + bppgame = settings.bpp3d; + forcesetup = settings.forcesetup; + } + + return done; +} diff --git a/polymer/eduke32/source/testgame/src/startwin.game.h b/polymer/eduke32/source/testgame/src/startwin.game.h new file mode 100644 index 000000000..154f2c68f --- /dev/null +++ b/polymer/eduke32/source/testgame/src/startwin.game.h @@ -0,0 +1,17 @@ +// resource ids +#define WIN_STARTWIN 1000 +#define WIN_STARTWINPAGE_CONFIG 2000 +#define WIN_STARTWIN_BITMAP 100 // banner bitmap +#define WIN_STARTWIN_TABCTL 101 +#define WIN_STARTWIN_CANCEL IDCANCEL +#define WIN_STARTWIN_START IDOK + +#define WIN_STARTWIN_MESSAGES 104 // output list box + +#define RSRC_ICON 100 +#define RSRC_BMP 200 + +// config page +#define IDCFULLSCREEN 100 +#define IDC3DVMODE 101 +#define IDCALWAYSSHOW 102