diff options
author | Joseph Eagar <joeedh@gmail.com> | 2009-11-08 02:10:18 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2009-11-08 02:10:18 +0300 |
commit | 2ead17843c08c9c4ed211010c0ad4d2a5c31a99c (patch) | |
tree | 0fc77499284278cdf8b017eac803910c87b4e07a | |
parent | cfa4f3222a427eff1991e8fd2c341ce4ca5385bd (diff) | |
parent | 4e9699debff6b0ac7e3bfc91d615e071218a67db (diff) |
merge with trunk/2.5 at r24378
364 files changed, 53471 insertions, 25413 deletions
diff --git a/CMake/macros.cmake b/CMake/macros.cmake index 150bd55bfd7..258cbdf57b6 100644 --- a/CMake/macros.cmake +++ b/CMake/macros.cmake @@ -76,6 +76,11 @@ MACRO(SETUP_LIBDIRS) IF(WITH_FFTW3) LINK_DIRECTORIES(${FFTW3_LIBPATH}) ENDIF(WITH_FFTW3) + IF(WITH_OPENCOLLADA) + LINK_DIRECTORIES(${OPENCOLLADA_LIBPATH}) + LINK_DIRECTORIES(${PCRE_LIBPATH}) + LINK_DIRECTORIES(${EXPAT_LIBPATH}) + ENDIF(WITH_OPENCOLLADA) IF(WIN32) LINK_DIRECTORIES(${PTHREADS_LIBPATH}) @@ -135,6 +140,11 @@ MACRO(SETUP_LIBLINKS IF(WITH_FFMPEG) TARGET_LINK_LIBRARIES(${target} ${FFMPEG_LIB}) ENDIF(WITH_FFMPEG) + IF(WITH_OPENCOLLADA) + TARGET_LINK_LIBRARIES(${target} ${OPENCOLLADA_LIB}) + TARGET_LINK_LIBRARIES(${target} ${PCRE_LIB}) + TARGET_LINK_LIBRARIES(${target} ${EXPAT_LIB}) + ENDIF(WITH_OPENCOLLADA) IF(WIN32) TARGET_LINK_LIBRARIES(${target} ${PTHREADS_LIB}) ENDIF(WIN32) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea62bbceb0e..4e02ea20fb0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,6 +80,7 @@ OPTION(WITH_LZMA "Enable best LZMA compression, used for pointcache" ON OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation" OFF) OPTION(WITH_BUILDINFO "Include extra build details" ON) OPTION(WITH_INSTALL "Install accompanying scripts and language files needed to run blender" ON) +OPTION(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org/)" OFF) IF (APPLE) OPTION(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON) @@ -90,6 +91,18 @@ IF(NOT WITH_GAMEENGINE AND WITH_PLAYER) MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE") ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER) +IF (WITH_OPENCOLLADA AND NOT APPLE) +SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory") +SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}) +SET(OPENCOLLADA_LIB OpenCollada) +SET(PCRE /usr CACHE FILEPATH "PCRE Directory") +SET(PCRE_LIBPATH ${PCRE}/lib) +SET(PCRE_LIB pcre) +SET(EXPAT /usr CACHE FILEPATH "Expat Directory") +SET(EXPAT_LIBPATH ${EXPAT}/lib) +SET(EXPAT_LIB expat) +ENDIF (WITH_OPENCOLLADA AND NOT APPLE) + # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g: # On Unix: # cmake -D PYTHON_LIB=/usr/local/lib/python2.3/config/libpython2.3.so -D PYTHON_INC=/usr/local/include/python2.3 -D PYTHON_BINARY=/usr/local/bin/python2.3 -G "Unix Makefiles" ../blender @@ -503,12 +516,28 @@ IF(APPLE) SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime") ENDIF (WITH_COCOA) + IF(WITH_OPENMP) - SET(LLIBS "${LLIBS} -lgomp ") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp ") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp ") + SET(LLIBS "${LLIBS} -lgomp") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") ENDIF(WITH_OPENMP) + IF (WITH_OPENCOLLADA) + SET(OPENCOLLADA ${LIBDIR}/opencollada) + SET(OPENCOLLADA_INC ${OPENCOLLADA}/include) + SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) + SET(OPENCOLLADA_LIB "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2" ) + #pcre is bundled with openCollada + #SET(PCRE ${LIBDIR}/pcre) + #SET(PCRE_LIBPATH ${PCRE}/lib) + SET(PCRE_LIB pcre) + #native OSX libxml2 is used + #SET(EXPAT ${LIBDIR}/expat) + #SET(EXPAT_LIBPATH ${EXPAT}/lib) + #SET(EXPAT_LIB expat) + ENDIF (WITH_OPENCOLLADA) + SET(SDL ${LIBDIR}/sdl) SET(SDL_INCLUDE_DIR ${SDL}/include) SET(SDL_LIBRARY SDL) @@ -526,6 +555,16 @@ IF(APPLE) SET(TIFF_INC ${TIFF}/include) SET(EXETYPE MACOSX_BUNDLE) + + + IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller") + ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64") + SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller") + ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386") + ENDIF(APPLE) IF(CMAKE_SYSTEM_NAME MATCHES "Linux") @@ -540,13 +579,19 @@ IF(WITH_BUILDINFO) IF(UNIX) EXEC_PROGRAM("date \"+%Y-%m-%d\"" OUTPUT_VARIABLE BUILD_DATE) EXEC_PROGRAM("date \"+%H:%M:%S\"" OUTPUT_VARIABLE BUILD_TIME) - EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV) + EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV RETURN_VALUE BUILD_REV_RETURN) + IF(BUILD_REV_RETURN) + SET(BUILD_REV "unknown") + ENDIF(BUILD_REV_RETURN) ENDIF(UNIX) IF(WIN32) EXEC_PROGRAM("cmd /c date /t" OUTPUT_VARIABLE BUILD_DATE) EXEC_PROGRAM("cmd /c time /t" OUTPUT_VARIABLE BUILD_TIME) - EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV) + EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV RETURN_VALUE BUILD_REV_RETURN) + IF(BUILD_REV_RETURN) + SET(BUILD_REV "unknown") + ENDIF(BUILD_REV_RETURN) ENDIF(WIN32) ENDIF(WITH_BUILDINFO) diff --git a/SConstruct b/SConstruct index 1385e3e7128..4384c3c8131 100644 --- a/SConstruct +++ b/SConstruct @@ -124,7 +124,10 @@ if toolset: #if env: # btools.SetupSpawn(env) else: - env = BlenderEnvironment(ENV = os.environ) + if bitness==64 and platform=='win32': + env = BlenderEnvironment(ENV = os.environ, MSVS_ARCH='amd64') + else: + env = BlenderEnvironment(ENV = os.environ) if not env: print "Could not create a build environment" @@ -217,6 +220,11 @@ if env['WITH_BF_OPENMP'] == 1: env.Append(CPPFLAGS=['-fopenmp']) env.Append(CXXFLAGS=['-fopenmp']) +if env['WITH_GHOST_COCOA'] == True: + env.Append(CFLAGS=['-DGHOST_COCOA']) + env.Append(CXXFLAGS=['-DGHOST_COCOA']) + env.Append(CPPFLAGS=['-DGHOST_COCOA']) + #check for additional debug libnames if env.has_key('BF_DEBUG_LIBS'): diff --git a/config/darwin-config.py b/config/darwin-config.py index 981f321e5bc..8a1b0eff6c1 100644 --- a/config/darwin-config.py +++ b/config/darwin-config.py @@ -1,8 +1,23 @@ +# +# Note : if you want to alter this file +# copy it as a whole in the upper folder +# as user-config.py +# dont create a new file with only some +# vars changed. + import commands # IMPORTANT NOTE : OFFICIAL BUILDS SHOULD BE DONE WITH SDKs USE_SDK=True +############################################################################# +################### Cocoa & architecture settings ################## +############################################################################# + +WITH_GHOST_COCOA=True +MACOSX_ARCHITECTURE = 'i386' # valid archs: ppc, i386, ppc64, x86_64 + + cmd = 'uname -p' MAC_PROC=commands.getoutput(cmd) cmd = 'uname -r' @@ -11,28 +26,42 @@ if cmd_res[0]=='7': MAC_CUR_VER='10.3' elif cmd_res[0]=='8': MAC_CUR_VER='10.4' -else: +elif cmd_res[0]=='9': MAC_CUR_VER='10.5' +elif cmd_res[0]=='10': + MAC_CUR_VER='10.6' if MAC_PROC == 'powerpc': LCGDIR = '#../lib/darwin-6.1-powerpc' else : - LCGDIR = '#../lib/darwin-8.x.i386' + LCGDIR = '#../lib/darwin-9.x.universal' LIBDIR = '${LCGDIR}' BF_PYTHON_VERSION = '3.1' -if MAC_PROC== 'powerpc' and BF_PYTHON_VERSION == '2.3': +if MAC_PROC == 'powerpc' and BF_PYTHON_VERSION == '2.3': MAC_MIN_VERS = '10.3' MACOSX_SDK='/Developer/SDKs/MacOSX10.3.9.sdk' -else: + CC = 'gcc' + CXX = 'g++' +elif MACOSX_ARCHITECTURE == 'i386' or MACOSX_ARCHITECTURE == 'ppc': MAC_MIN_VERS = '10.4' MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk' + CC = 'gcc-4.0' + CXX = 'g++-4.0' +else : + MAC_MIN_VERS = '10.5' + MACOSX_SDK='/Developer/SDKs/MacOSX10.5.sdk' + CC = 'gcc-4.2' + CXX = 'g++-4.2' +############################################################################# +################### Dependency settings ################## +############################################################################# # enable ffmpeg support WITH_BF_FFMPEG = True # -DWITH_FFMPEG -FFMPEG_PRECOMPILED = False +FFMPEG_PRECOMPILED = True if FFMPEG_PRECOMPILED: # use precompiled ffmpeg in /lib BF_FFMPEG = LIBDIR + '/ffmpeg' @@ -45,8 +74,8 @@ else: BF_FFMPEG_INC = '${BF_FFMPEG}' if USE_SDK==True: BF_FFMPEG_EXTRA = '-isysroot '+MACOSX_SDK+' -mmacosx-version-min='+MAC_MIN_VERS - BF_XVIDCORE_CONFIG = '--disable-assembly' # currently causes errors, even with yasm installed - BF_X264_CONFIG = '--disable-pthread' + BF_XVIDCORE_CONFIG = '--disable-assembly --disable-mmx' # currently causes errors, even with yasm installed + BF_X264_CONFIG = '--disable-pthread --disable-asm' if BF_PYTHON_VERSION=='3.1': # python 3.1 uses precompiled libraries in bf svn /lib by default @@ -75,10 +104,11 @@ else: BF_PYTHON_LINKFLAGS = ['-u','_PyMac_Error','-framework','System','-framework','Python'] if MAC_CUR_VER=='10.3' or MAC_CUR_VER=='10.4': BF_PYTHON_LINKFLAGS = ['-u', '__dummy']+BF_PYTHON_LINKFLAGS + -BF_QUIET = '1' -WITH_BF_OPENMP = '0' +WITH_BF_OPENMP = '0' # multithreading for fluids, cloth and smoke ( only works with ICC atm ) +WITH_BF_OPENAL = True #different lib must be used following version of gcc # for gcc 3.3 #BF_OPENAL = LIBDIR + '/openal' @@ -89,11 +119,11 @@ else : BF_OPENAL = LIBDIR + '/openal' WITH_BF_STATICOPENAL = False -BF_OPENAL_INC = '${BF_OPENAL}/include' -BF_OPENAL_LIB = 'openal' -BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' +BF_OPENAL_INC = '${BF_OPENAL}/include' # only headers from libdir needed for proper use of framework !!!! +#BF_OPENAL_LIB = 'openal' +#BF_OPENAL_LIBPATH = '${BF_OPENAL}/lib' # Warning, this static lib configuration is untested! users of this OS please confirm. -BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a' +#BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a' # Warning, this static lib configuration is untested! users of this OS please confirm. BF_CXX = '/usr' @@ -199,10 +229,13 @@ BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2' BF_FREETYPE_LIB = 'freetype' BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib' -WITH_BF_QUICKTIME = True # -DWITH_QUICKTIME +if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'ppc64': + WITH_BF_QUICKTIME = False # -DWITH_QUICKTIME ( disable for 64bit atm ) +else: + WITH_BF_QUICKTIME = True WITH_BF_ICONV = True -BF_ICONV = LIBDIR + "/iconv" +BF_ICONV = '/usr' BF_ICONV_INC = '${BF_ICONV}/include' BF_ICONV_LIB = 'iconv' #BF_ICONV_LIBPATH = '${BF_ICONV}/lib' @@ -213,12 +246,33 @@ BF_OPENGL_LIB = 'GL GLU' BF_OPENGL_LIBPATH = '/System/Library/Frameworks/OpenGL.framework/Libraries' BF_OPENGL_LINKFLAGS = ['-framework', 'OpenGL'] -CFLAGS = ['-pipe','-fPIC','-funsigned-char'] +#OpenCollada flags +WITH_BF_COLLADA = False + +############################################################################# +################### various compile settings and flags ################## +############################################################################# -CPPFLAGS = ['-fpascal-strings'] -CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fpascal-strings'] -CXXFLAGS = [ '-pipe','-fPIC','-funsigned-char', '-fpascal-strings'] -PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Carbon','-framework','AGL','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','QuickTime'] +BF_QUIET = '1' # suppress verbose output + +if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'ppc64': + ARCH_FLAGS = ['-m64'] +else: + ARCH_FLAGS = ['-m32'] + +CFLAGS = ['-pipe','-funsigned-char']+ARCH_FLAGS + +CPPFLAGS = ['-fpascal-strings']+ARCH_FLAGS +CCFLAGS = ['-pipe','-funsigned-char','-fpascal-strings']+ARCH_FLAGS +CXXFLAGS = ['-pipe','-funsigned-char', '-fpascal-strings']+ARCH_FLAGS + +if WITH_GHOST_COCOA==True: + PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Cocoa','-framework','Carbon','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']+ARCH_FLAGS +else: + PLATFORM_LINKFLAGS = ['-fexceptions','-framework','CoreServices','-framework','Foundation','-framework','IOKit','-framework','AppKit','-framework','Carbon','-framework','AGL','-framework','AudioUnit','-framework','AudioToolbox','-framework','CoreAudio','-framework','OpenAL']+ARCH_FLAGS + +if WITH_BF_QUICKTIME == True: + PLATFORM_LINKFLAGS = PLATFORM_LINKFLAGS+['-framework','QuickTime'] #note to build succesfully on 10.3.9 SDK you need to patch 10.3.9 by adding the SystemStubs.a lib from 10.4 LLIBS = ['stdc++', 'SystemStubs'] @@ -232,33 +286,34 @@ if MAC_MIN_VERS == '10.3': if USE_SDK==True: SDK_FLAGS=['-isysroot', MACOSX_SDK,'-mmacosx-version-min='+MAC_MIN_VERS] - PLATFORM_LINKFLAGS = ['-mmacosx-version-min='+MAC_MIN_VERS, '-Wl,-syslibroot,' + MACOSX_SDK]+PLATFORM_LINKFLAGS + PLATFORM_LINKFLAGS = ['-mmacosx-version-min='+MAC_MIN_VERS,'-Wl','-syslibroot '+MACOSX_SDK]+PLATFORM_LINKFLAGS CCFLAGS=SDK_FLAGS+CCFLAGS CXXFLAGS=SDK_FLAGS+CXXFLAGS -# you can add -mssse3 if gcc >= 4.2 -if MAC_PROC == 'i386': +if MACOSX_ARCHITECTURE == 'i386' or MACOSX_ARCHITECTURE == 'x86_64': REL_CFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3'] REL_CCFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3'] else: CFLAGS = CFLAGS+['-fno-strict-aliasing'] CCFLAGS = CCFLAGS+['-fno-strict-aliasing'] CXXFLAGS = CXXFLAGS+['-fno-strict-aliasing'] - REL_CFLAGS = ['-O2'] REL_CCFLAGS = ['-O2'] +# add -mssse3 for intel 64bit archs +if MACOSX_ARCHITECTURE == 'x86_64': + REL_CFLAGS = REL_CFLAGS+['-mssse3'] + REL_CCFLAGS = REL_CCFLAGS+['-mssse3'] + ##BF_DEPEND = True ## ##AR = ar ##ARFLAGS = ruv ##ARFLAGSQUIET = ru ## -CC = 'gcc' -CXX = 'g++' -C_WARN = ['-Wdeclaration-after-statement'] +#C_WARN = ['-Wdeclaration-after-statement'] -CC_WARN = ['-Wall', '-Wno-long-double'] +CC_WARN = ['-Wall'] ##FIX_STUBS_WARNINGS = -Wno-unused @@ -272,5 +327,9 @@ BF_PROFILE = False BF_DEBUG = False BF_DEBUG_CCFLAGS = ['-g'] +############################################################################# +################### Output directories ################## +############################################################################# + BF_BUILDDIR='../build/darwin' BF_INSTALLDIR='../install/darwin' diff --git a/config/linux2-config.py b/config/linux2-config.py index 026d0a200a5..dffc861fca8 100644 --- a/config/linux2-config.py +++ b/config/linux2-config.py @@ -151,6 +151,20 @@ BF_OPENGL_LIB = 'GL GLU X11 Xi' BF_OPENGL_LIBPATH = '/usr/X11R6/lib' BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a' +WITH_BF_COLLADA = False +BF_COLLADA = '#source/blender/collada' +BF_COLLADA_INC = '${BF_COLLADA}' +BF_COLLADA_LIB = 'bf_collada' +BF_OPENCOLLADA = '' +BF_OPENCOLLADA_LIB = 'OpenCollada' +BF_OPENCOLLADA_LIBPATH = '/usr/lib' +BF_PCRE = '' +BF_PCRE_LIB = 'pcre' +BF_PCRE_LIBPATH = '/usr/lib' +BF_EXPAT = '/usr' +BF_EXPAT_LIB = 'expat' +BF_EXPAT_LIBPATH = '/usr/lib' + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py index 6b10b410715..b519aa95ca7 100644 --- a/config/win32-mingw-config.py +++ b/config/win32-mingw-config.py @@ -126,6 +126,10 @@ BF_OPENGL_LIB = 'opengl32 glu32' BF_OPENGL_LIB_STATIC = [ '${BF_OPENGL}/lib/libGL.a', '${BF_OPENGL}/lib/libGLU.a', '${BF_OPENGL}/lib/libXmu.a', '${BF_OPENGL}/lib/libXext.a', '${BF_OPENGL}/lib/libX11.a', '${BF_OPENGL}/lib/libXi.a' ] + +# Disable Collada by default +WITH_BF_COLLADA = False + ## CC = 'gcc' CXX = 'g++' diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py index bfb8930553d..55c620ce819 100644 --- a/config/win32-vc-config.py +++ b/config/win32-vc-config.py @@ -138,6 +138,16 @@ BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib' WITH_BF_REDCODE = False BF_REDCODE_INC = '#extern' +WITH_BF_COLLADA = False +BF_COLLADA = '#source/blender/collada' +BF_COLLADA_INC = '${BF_COLLADA}' +BF_COLLADA_LIB = 'bf_collada' + +BF_OPENCOLLADA = LIBDIR + '/opencollada' +BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' +BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' diff --git a/config/win64-vc-config.py b/config/win64-vc-config.py index 5f088489b34..53df6d96bf8 100644 --- a/config/win64-vc-config.py +++ b/config/win64-vc-config.py @@ -151,6 +151,16 @@ BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib' WITH_BF_REDCODE = False BF_REDCODE_INC = '#extern' +WITH_BF_COLLADA = False +BF_COLLADA = '#source/blender/collada' +BF_COLLADA_INC = '${BF_COLLADA}' +BF_COLLADA_LIB = 'bf_collada' + +BF_OPENCOLLADA = LIBDIR + '/opencollada' +BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include' +BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver xml2 pcre' +BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib' + WITH_BF_STATICOPENGL = False BF_OPENGL_INC = '${BF_OPENGL}/include' BF_OPENGL_LIBINC = '${BF_OPENGL}/lib' diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp index 274c5f5bdc6..496fd996f8c 100644 --- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp +++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp @@ -202,7 +202,6 @@ void btConvexConvexAlgorithm ::processCollision (btCollisionObject* body0,btColl input.m_maximumDistanceSquared*= input.m_maximumDistanceSquared; } - input.m_stackAlloc = dispatchInfo.m_stackAllocator; input.m_transformA = body0->getWorldTransform(); input.m_transformB = body1->getWorldTransform(); diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h index 412aace2114..2989daeb44e 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h @@ -33,7 +33,7 @@ public: const btConvexShape* convexA,const btConvexShape* convexB, const btTransform& transA,const btTransform& transB, btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + class btIDebugDraw* debugDraw ) = 0; diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h index db797d5141f..b011bb9ae58 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h @@ -41,15 +41,13 @@ struct btDiscreteCollisionDetectorInterface struct ClosestPointInput { ClosestPointInput() - :m_maximumDistanceSquared(btScalar(1e30)), - m_stackAlloc(0) + :m_maximumDistanceSquared(btScalar(1e30)) { } btTransform m_transformA; btTransform m_transformB; btScalar m_maximumDistanceSquared; - btStackAlloc* m_stackAlloc; }; virtual ~btDiscreteCollisionDetectorInterface() {}; diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp index 05573c7cfce..55c23ee8549 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp @@ -25,7 +25,7 @@ bool btGjkEpaPenetrationDepthSolver::calcPenDepth( btSimplexSolverInterface& sim const btConvexShape* pConvexA, const btConvexShape* pConvexB, const btTransform& transformA, const btTransform& transformB, btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, - class btIDebugDraw* debugDraw, btStackAlloc* stackAlloc ) + class btIDebugDraw* debugDraw ) { (void)debugDraw; diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h index 68dbc566518..4db18628021 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h @@ -29,7 +29,7 @@ class btGjkEpaPenetrationDepthSolver : public btConvexPenetrationDepthSolver const btConvexShape* pConvexA, const btConvexShape* pConvexB, const btTransform& transformA, const btTransform& transformB, btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc ); + class btIDebugDraw* debugDraw ); private : diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp index 0856332d1ca..331d25623df 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp @@ -293,7 +293,7 @@ void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& m_minkowskiA,m_minkowskiB, localTransA,localTransB, m_cachedSeparatingAxis, tmpPointOnA, tmpPointOnB, - debugDraw,input.m_stackAlloc + debugDraw ); if (isValid2) diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp index 581b4258f03..1fdbb2457d1 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp @@ -71,11 +71,10 @@ bool btMinkowskiPenetrationDepthSolver::calcPenDepth(btSimplexSolverInterface& s const btConvexShape* convexA,const btConvexShape* convexB, const btTransform& transA,const btTransform& transB, btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + class btIDebugDraw* debugDraw ) { - (void)stackAlloc; (void)v; diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h index 23cbd57ac7e..e93e4e4bb4e 100644 --- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h @@ -28,7 +28,7 @@ public: const btConvexShape* convexA,const btConvexShape* convexB, const btTransform& transA,const btTransform& transB, btVector3& v, btVector3& pa, btVector3& pb, - class btIDebugDraw* debugDraw,btStackAlloc* stackAlloc + class btIDebugDraw* debugDraw ); }; diff --git a/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp b/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp index 47addbac45b..20d6975832b 100644 --- a/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp +++ b/extern/bullet2/src/BulletDynamics/Dynamics/Bullet-C-API.cpp @@ -365,10 +365,6 @@ double plNearestPoints(float p1[3], float p2[3], float p3[3], float q1[3], float btPointCollector gjkOutput; btGjkPairDetector::ClosestPointInput input; - btStackAlloc gStackAlloc(1024*1024*2); - - input.m_stackAlloc = &gStackAlloc; - btTransform tr; tr.setIdentity(); diff --git a/extern/glew/include/GL/glew.h b/extern/glew/include/GL/glew.h index 6b88e6eb4c9..1024a88e00f 100644 --- a/extern/glew/include/GL/glew.h +++ b/extern/glew/include/GL/glew.h @@ -208,7 +208,7 @@ extern "C" { #ifndef GL_VERSION_1_1 #define GL_VERSION_1_1 1 -#if defined(__APPLE__) +#if defined(__APPLE__) && !defined(__LP64__) typedef unsigned long GLenum; typedef unsigned long GLbitfield; typedef unsigned long GLuint; diff --git a/intern/bsp/SConscript b/intern/bsp/SConscript index 2ecc280f135..ff5a213d7b8 100644 --- a/intern/bsp/SConscript +++ b/intern/bsp/SConscript @@ -5,8 +5,5 @@ sources = env.Glob('intern/*.cpp') incs = 'intern ../container ../moto/include ../memutil' -if (env['OURPLATFORM'] == 'win32-mingw'): - env.BlenderLib ('blender_BSP', sources, Split(incs), [], libtype='core', priority=26 ) -else: - env.BlenderLib ('blender_BSP', sources, Split(incs), [], libtype='core', priority=20 ) +env.BlenderLib ('blender_BSP', sources, Split(incs), [], libtype='core', priority=200 ) diff --git a/intern/decimation/SConscript b/intern/decimation/SConscript index ef95a795928..2dd86c44cf1 100644 --- a/intern/decimation/SConscript +++ b/intern/decimation/SConscript @@ -5,4 +5,4 @@ sources = env.Glob('intern/*.cpp') incs = '. ../moto/include ../container ../memutil' -env.BlenderLib ('bf_decimation', sources, Split(incs) , [], libtype=['core'], priority = [10] ) +env.BlenderLib ('bf_decimation', sources, Split(incs) , [], libtype=['core'], priority = [200] ) diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript index 48009152699..490b45afc1f 100644 --- a/intern/ghost/SConscript +++ b/intern/ghost/SConscript @@ -7,6 +7,9 @@ Import ('env') window_system = env['OURPLATFORM'] sources = env.Glob('intern/*.cpp') +if window_system == 'darwin': + sources += env.Glob('intern/*.mm') + pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window'] @@ -19,9 +22,17 @@ elif window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64 sources.remove('intern' + os.sep + f + 'X11.cpp') sources.remove('intern' + os.sep + f + 'Carbon.cpp') elif window_system == 'darwin': - for f in pf: - sources.remove('intern' + os.sep + f + 'Win32.cpp') - sources.remove('intern' + os.sep + f + 'X11.cpp') + if env['WITH_GHOST_COCOA']: + for f in pf: + sources.remove('intern' + os.sep + f + 'Win32.cpp') + sources.remove('intern' + os.sep + f + 'X11.cpp') + sources.remove('intern' + os.sep + f + 'Carbon.cpp') + else: + for f in pf: + sources.remove('intern' + os.sep + f + 'Win32.cpp') + sources.remove('intern' + os.sep + f + 'X11.cpp') + sources.remove('intern' + os.sep + f + 'Cocoa.mm') + else: print "Unknown window system specified." Exit() @@ -30,3 +41,4 @@ incs = '. ../string ' + env['BF_OPENGL_INC'] if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'): incs = env['BF_WINTAB_INC'] + ' ' + incs env.BlenderLib ('bf_ghost', sources, Split(incs), defines=['_USE_MATH_DEFINES'], libtype=['intern','player'], priority = [40,15] ) + diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index b476ee8f0f2..46d8ecf6f94 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -372,133 +372,6 @@ static GHOST_TKey convertKey(int rawCode, unichar recvChar) return GHOST_kKeyUnknown;
}
-/* MacOSX returns a Roman charset with kEventParamKeyMacCharCodes
- * as defined here: http://developer.apple.com/documentation/mac/Text/Text-516.html
- * I am not sure how international this works...
- * For cross-platform convention, we'll use the Latin ascii set instead.
- * As defined at: http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
- *
- */
-static unsigned char convertRomanToLatin(unsigned char ascii)
-{
-
- if(ascii<128) return ascii;
-
- switch(ascii) {
- case 128: return 142;
- case 129: return 143;
- case 130: return 128;
- case 131: return 201;
- case 132: return 209;
- case 133: return 214;
- case 134: return 220;
- case 135: return 225;
- case 136: return 224;
- case 137: return 226;
- case 138: return 228;
- case 139: return 227;
- case 140: return 229;
- case 141: return 231;
- case 142: return 233;
- case 143: return 232;
- case 144: return 234;
- case 145: return 235;
- case 146: return 237;
- case 147: return 236;
- case 148: return 238;
- case 149: return 239;
- case 150: return 241;
- case 151: return 243;
- case 152: return 242;
- case 153: return 244;
- case 154: return 246;
- case 155: return 245;
- case 156: return 250;
- case 157: return 249;
- case 158: return 251;
- case 159: return 252;
- case 160: return 0;
- case 161: return 176;
- case 162: return 162;
- case 163: return 163;
- case 164: return 167;
- case 165: return 183;
- case 166: return 182;
- case 167: return 223;
- case 168: return 174;
- case 169: return 169;
- case 170: return 174;
- case 171: return 180;
- case 172: return 168;
- case 173: return 0;
- case 174: return 198;
- case 175: return 216;
- case 176: return 0;
- case 177: return 177;
- case 178: return 0;
- case 179: return 0;
- case 180: return 165;
- case 181: return 181;
- case 182: return 0;
- case 183: return 0;
- case 184: return 215;
- case 185: return 0;
- case 186: return 0;
- case 187: return 170;
- case 188: return 186;
- case 189: return 0;
- case 190: return 230;
- case 191: return 248;
- case 192: return 191;
- case 193: return 161;
- case 194: return 172;
- case 195: return 0;
- case 196: return 0;
- case 197: return 0;
- case 198: return 0;
- case 199: return 171;
- case 200: return 187;
- case 201: return 201;
- case 202: return 0;
- case 203: return 192;
- case 204: return 195;
- case 205: return 213;
- case 206: return 0;
- case 207: return 0;
- case 208: return 0;
- case 209: return 0;
- case 210: return 0;
-
- case 214: return 247;
-
- case 229: return 194;
- case 230: return 202;
- case 231: return 193;
- case 232: return 203;
- case 233: return 200;
- case 234: return 205;
- case 235: return 206;
- case 236: return 207;
- case 237: return 204;
- case 238: return 211;
- case 239: return 212;
- case 240: return 0;
- case 241: return 210;
- case 242: return 218;
- case 243: return 219;
- case 244: return 217;
- case 245: return 0;
- case 246: return 0;
- case 247: return 0;
- case 248: return 0;
- case 249: return 0;
- case 250: return 0;
-
-
- default: return 0;
- }
-
-}
#define FIRSTFILEBUFLG 512
static bool g_hasFirstFile = false;
@@ -827,7 +700,7 @@ GHOST_TSuccess GHOST_SystemCocoa::setCursorPosition(GHOST_TInt32 x, GHOST_TInt32 //Quartz Display Services uses the old coordinates (top left origin)
yf = screenRect.size.height -yf; - CGDisplayMoveCursorToPoint([[[windowScreen deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue], CGPointMake(xf, yf)); + CGDisplayMoveCursorToPoint((CGDirectDisplayID)[[[windowScreen deviceDescription] objectForKey:@"NSScreenNumber"] unsignedIntValue], CGPointMake(xf, yf)); return GHOST_kSuccess;
}
@@ -913,7 +786,7 @@ bool GHOST_SystemCocoa::processEvents(bool waitForEvent) case NSFlagsChanged:
handleKeyEvent(event);
- /* Support system-wide keyboard shortcuts, like Exposé, ...) =>included in always NSApp sendEvent */
+ /* Support system-wide keyboard shortcuts, like Exposé, ...) =>included in always NSApp sendEvent */ /* if (([event modifierFlags] & NSCommandKeyMask) || [event type] == NSFlagsChanged) {
[NSApp sendEvent:event];
}*/
@@ -1018,8 +891,8 @@ GHOST_TUns8 GHOST_SystemCocoa::handleQuitRequest() //Check open windows if some changes are not saved
if (m_windowManager->getAnyModifiedState())
{
- int shouldQuit = NSRunAlertPanel(@"Exit Blender", @"Some changes have not been saved. Do you really want to quit ?",
- @"Cancel", @"Quit anyway", nil);
+ int shouldQuit = NSRunAlertPanel(@"Exit Blender", @"Some changes have not been saved.\nDo you really want to quit ?", + @"Cancel", @"Quit Anyway", nil); if (shouldQuit == NSAlertAlternateReturn)
{
pushEvent( new GHOST_Event(getMilliSeconds(), GHOST_kEventQuit, NULL) );
@@ -1255,8 +1128,10 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) GHOST_IWindow* window = m_windowManager->getActiveWindow();
unsigned int modifiers;
NSString *characters;
+ NSData *convertedCharacters; GHOST_TKey keyCode;
unsigned char ascii;
+ NSString* charsIgnoringModifiers; /* Can happen, very rarely - seems to only be when command-H makes
* the window go away and we still get an HKey up.
@@ -1269,16 +1144,25 @@ GHOST_TSuccess GHOST_SystemCocoa::handleKeyEvent(void *eventPtr) switch ([event type]) {
case NSKeyDown:
case NSKeyUp:
- characters = [event characters];
- if ([characters length]) { //Check for dead keys
+ charsIgnoringModifiers = [event charactersIgnoringModifiers]; + if ([charsIgnoringModifiers length]>0) keyCode = convertKey([event keyCode],
- [[event charactersIgnoringModifiers] characterAtIndex:0]);
- ascii= convertRomanToLatin((char)[characters characterAtIndex:0]);
- } else {
+ [charsIgnoringModifiers characterAtIndex:0]); + else keyCode = convertKey([event keyCode],0);
- ascii= 0;
+ + + characters = [event characters]; + if ([characters length]>0) { //Check for dead keys + //Convert characters to iso latin 1 encoding + convertedCharacters = [characters dataUsingEncoding:NSISOLatin1StringEncoding]; + if ([convertedCharacters length]>0) + ascii =((char*)[convertedCharacters bytes])[0]; + else + ascii = 0; //Character not available in iso latin 1 encoding }
-
+ else + ascii= 0; if ((keyCode == GHOST_kKeyQ) && (m_modifierMask & NSCommandKeyMask))
break; //Cmd-Q is directly handled by Cocoa
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 2e89be40bcb..8a17d455695 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -132,8 +132,8 @@ GHOST_SystemWin32::GHOST_SystemWin32() : m_hasPerformanceCounter(false), m_freq(0), m_start(0), - m_seperateLeftRight(false), - m_seperateLeftRightInitialized(false) + m_separateLeftRight(false), + m_separateLeftRightInitialized(false) { m_displayManager = new GHOST_DisplayManagerWin32 (); GHOST_ASSERT(m_displayManager, "GHOST_SystemWin32::GHOST_SystemWin32(): m_displayManager==0\n"); @@ -274,7 +274,7 @@ GHOST_TSuccess GHOST_SystemWin32::getModifierKeys(GHOST_ModifierKeys& keys) cons It didn't work all that well on some newer hardware, and worked less well with the passage of time, so it was fully disabled in ME. */ - if (m_seperateLeftRight && m_seperateLeftRightInitialized) { + if (m_separateLeftRight && m_separateLeftRightInitialized) { bool down = HIBYTE(::GetKeyState(VK_LSHIFT)) != 0; keys.set(GHOST_kModifierKeyLeftShift, down); down = HIBYTE(::GetKeyState(VK_RSHIFT)) != 0; @@ -581,29 +581,29 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, case VK_SHIFT: case VK_CONTROL: case VK_MENU: - if (!system->m_seperateLeftRightInitialized) { + if (!system->m_separateLeftRightInitialized) { // Check whether this system supports seperate left and right keys switch (wParam) { case VK_SHIFT: - system->m_seperateLeftRight = + system->m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LSHIFT)) != 0) || (HIBYTE(::GetKeyState(VK_RSHIFT)) != 0) ? true : false; break; case VK_CONTROL: - system->m_seperateLeftRight = + system->m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LCONTROL)) != 0) || (HIBYTE(::GetKeyState(VK_RCONTROL)) != 0) ? true : false; break; case VK_MENU: - system->m_seperateLeftRight = + system->m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LMENU)) != 0) || (HIBYTE(::GetKeyState(VK_RMENU)) != 0) ? true : false; break; } - system->m_seperateLeftRightInitialized = true; + system->m_separateLeftRightInitialized = true; } system->processModifierKeys(window); // Bypass call to DefWindowProc diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index 9387b6cad50..6a12975a3dd 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -283,9 +283,9 @@ protected: /** High frequency timer variable. */ __int64 m_start; /** Stores the capability of this system to distinguish left and right modifier keys. */ - bool m_seperateLeftRight; + bool m_separateLeftRight; /** Stores the initialization state of the member m_leftRightDistinguishable. */ - bool m_seperateLeftRightInitialized; + bool m_separateLeftRightInitialized; }; diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index aac12e80893..9613ee64ef4 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -43,16 +43,6 @@ #include "GHOST_Debug.h"
-// Pixel Format Attributes for the windowed NSOpenGLContext
-static NSOpenGLPixelFormatAttribute pixelFormatAttrsWindow[] =
-{
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFAAccelerated,
- //NSOpenGLPFAAllowOfflineRenderers, // Removed to allow 10.4 builds, and 2 GPUs rendering is not used anyway
- NSOpenGLPFADepthSize, (NSOpenGLPixelFormatAttribute) 32,
- (NSOpenGLPixelFormatAttribute) 0
-};
-
#pragma mark Cocoa window delegate object
/* live resize ugly patch extern "C" { @@ -78,7 +68,7 @@ extern "C" { - (void)windowWillClose:(NSNotification *)notification;
- (void)windowDidBecomeKey:(NSNotification *)notification;
- (void)windowDidResignKey:(NSNotification *)notification;
-- (void)windowDidUpdate:(NSNotification *)notification;
+- (void)windowDidExpose:(NSNotification *)notification; - (void)windowDidResize:(NSNotification *)notification;
@end
@@ -101,13 +91,10 @@ extern "C" { - (void)windowDidResignKey:(NSNotification *)notification
{
- //The window is no more key when its own view becomes fullscreen
- //but ghost doesn't know the view/window difference, so hide this fact
- if (associatedWindow->getState() != GHOST_kWindowStateFullScreen)
systemCocoa->handleWindowEvent(GHOST_kEventWindowDeactivate, associatedWindow);
}
-- (void)windowDidUpdate:(NSNotification *)notification
+- (void)windowDidExpose:(NSNotification *)notification {
systemCocoa->handleWindowEvent(GHOST_kEventWindowUpdate, associatedWindow);
}
@@ -191,9 +178,12 @@ GHOST_WindowCocoa::GHOST_WindowCocoa( GHOST_TDrawingContextType type,
const bool stereoVisual
) :
- GHOST_Window(title, left, top, width, height, state, GHOST_kDrawingContextTypeNone),
+ GHOST_Window(title, left, top, width, height, state, GHOST_kDrawingContextTypeNone, stereoVisual), m_customCursor(0)
{
+ NSOpenGLPixelFormatAttribute pixelFormatAttrsWindow[40]; + int i; + m_systemCocoa = systemCocoa;
m_fullScreen = false;
@@ -225,6 +215,20 @@ GHOST_WindowCocoa::GHOST_WindowCocoa( setTitle(title);
+ // Pixel Format Attributes for the windowed NSOpenGLContext + i=0; + pixelFormatAttrsWindow[i++] = NSOpenGLPFADoubleBuffer; + pixelFormatAttrsWindow[i++] = NSOpenGLPFAAccelerated; + //pixelFormatAttrsWindow[i++] = NSOpenGLPFAAllowOfflineRenderers,; // Removed to allow 10.4 builds, and 2 GPUs rendering is not used anyway + + pixelFormatAttrsWindow[i++] = NSOpenGLPFADepthSize; + pixelFormatAttrsWindow[i++] = (NSOpenGLPixelFormatAttribute) 32; + + if (stereoVisual) pixelFormatAttrsWindow[i++] = NSOpenGLPFAStereo; + + pixelFormatAttrsWindow[i] = (NSOpenGLPixelFormatAttribute) 0; + + //Creates the OpenGL View inside the window
NSOpenGLPixelFormat *pixelFormat =
[[NSOpenGLPixelFormat alloc] initWithAttributes:pixelFormatAttrsWindow];
@@ -615,6 +619,7 @@ GHOST_TSuccess GHOST_WindowCocoa::setState(GHOST_TWindowState state) //Make window normal and resize it
[m_window setStyleMask:(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask)];
[m_window setFrame:[[m_window screen] visibleFrame] display:YES];
+ //TODO for 10.6 only : window title is forgotten after the style change [m_window makeFirstResponder:m_openGLView]; #else
//With 10.5, we need to create a new window to change its style to borderless
diff --git a/intern/moto/include/MT_assert.h b/intern/moto/include/MT_assert.h index 22f6b6a555c..b8f18fc52ff 100644 --- a/intern/moto/include/MT_assert.h +++ b/intern/moto/include/MT_assert.h @@ -76,7 +76,7 @@ abort(); #endif /* breakpoint */ -#if defined(WIN32) && !defined(__GNUC__) +#if defined(_WIN32) && !defined(__GNUC__) #define MT_assert(predicate) assert(predicate) #else diff --git a/projectfiles_vc9/blender/blender.sln b/projectfiles_vc9/blender/blender.sln index c85103c62ce..46dff6c41ca 100644 --- a/projectfiles_vc9/blender/blender.sln +++ b/projectfiles_vc9/blender/blender.sln @@ -7,6 +7,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blender", "blender.vcproj", {6E24BF09-9653-4166-A871-F65CC9E98A9B} = {6E24BF09-9653-4166-A871-F65CC9E98A9B}
{A90C4918-4B21-4277-93BD-AF65F30951D9} = {A90C4918-4B21-4277-93BD-AF65F30951D9}
{FB88301F-F725-401B-ACD7-D2ABBF333B71} = {FB88301F-F725-401B-ACD7-D2ABBF333B71}
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2} = {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}
{BAAE3F2B-BCF8-4E84-B8BA-CFB2D64945FE} = {BAAE3F2B-BCF8-4E84-B8BA-CFB2D64945FE}
{C66F722C-46BE-40C9-ABAE-2EAC7A697EB8} = {C66F722C-46BE-40C9-ABAE-2EAC7A697EB8}
{884D8731-654C-4C7F-9A75-8F37A305BE1E} = {884D8731-654C-4C7F-9A75-8F37A305BE1E}
@@ -293,6 +294,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "INT_build_install_all", ".. EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WM_windowmanager", "windowmanager\windowmanager.vcproj", "{884D8731-654C-4C7F-9A75-8F37A305BE1E}"
ProjectSection(ProjectDependencies) = postProject
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2} = {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}
{DFE7F3E3-E62A-4677-B666-DF0DDF70C359} = {DFE7F3E3-E62A-4677-B666-DF0DDF70C359}
EndProjectSection
EndProject
@@ -365,6 +367,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EXT_lzo", "..\..\extern\lzo EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BRE_raytrace", "render\BRE_raytrace.vcproj", "{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BF_collada", "collada\BF_collada.vcproj", "{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3D Plugin Debug|Win32 = 3D Plugin Debug|Win32
@@ -1602,6 +1606,26 @@ Global {37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Debug|Win32.Build.0 = Blender Debug|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Release|Win32.ActiveCfg = Blender Release|Win32
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Release|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3D Plugin Debug|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3D Plugin Debug|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3D Plugin Release|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3D Plugin Release|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3DPlugin Debug|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3DPlugin Debug|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3DPlugin Release|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.3DPlugin Release|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.ActiveCfg = Blender Debug|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.Build.0 = Blender Debug|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Release|Win32.ActiveCfg = Blender Release|Win32
+ {76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Release|Win32.Build.0 = Blender Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/projectfiles_vc9/blender/blender.vcproj b/projectfiles_vc9/blender/blender.vcproj index f508909c751..78a948cf4a1 100644 --- a/projectfiles_vc9/blender/blender.vcproj +++ b/projectfiles_vc9/blender/blender.vcproj @@ -74,12 +74,12 @@ <Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="libsamplerate.lib SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python31.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib libsndfile-1.lib"
+ AdditionalDependencies="libsamplerate.lib SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python31.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib libsndfile-1.lib OpenCOLLADABaseUtils.lib OpenCOLLADAFramework.lib OpenCOLLADAStreamWriter.lib OpenCOLLADASaxFrameworkLoader.lib pcre.lib UTF.lib GeneratedSaxParser.lib MathMLSolver.lib xml2.lib"
ShowProgress="0"
OutputFile="..\..\..\install\msvc_9\blender.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_9\libs\intern;..\..\..\build\msvc_9\libs\extern;..\..\..\lib\windows\ffmpeg\lib;..\..\..\lib\windows\samplerate\lib;..\..\..\lib\windows\sndfile\lib"
+ AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_9\libs\intern;..\..\..\build\msvc_9\libs\extern;..\..\..\lib\windows\ffmpeg\lib;..\..\..\lib\windows\samplerate\lib;..\..\..\lib\windows\sndfile\lib;..\..\..\lib\windows\opencollada\lib"
IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="msvcprt.lib;glut32.lib;libc.lib;libcd.lib;libcpd.lib;libcp.lib;libcmtd.lib;odbc32.lib;odbccp32.lib"
GenerateDebugInformation="true"
@@ -169,12 +169,12 @@ <Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386
"
- AdditionalDependencies="libsamplerate.lib SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib libsndfile-1.lib"
+ AdditionalDependencies="libsamplerate.lib SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib OpenAL32.lib wrap_oal.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib libsndfile-1.lib OpenCOLLADABaseUtils.lib OpenCOLLADAFramework.lib OpenCOLLADAStreamWriter.lib OpenCOLLADASaxFrameworkLoader.lib pcre.lib UTF.lib GeneratedSaxParser.lib MathMLSolver.lib xml2.lib"
ShowProgress="0"
OutputFile="..\..\..\install\msvc_9d\blender.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\lib\windows\ffmpeg\lib;..\..\..\build\msvc_9\libs\intern\debug;..\..\..\build\msvc_9\libs\extern\debug;..\..\..\lib\windows\samplerate\lib;..\..\..\lib\windows\sndfile\lib"
+ AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\lib\windows\ffmpeg\lib;..\..\..\build\msvc_9\libs\intern\debug;..\..\..\build\msvc_9\libs\extern\debug;..\..\..\lib\windows\samplerate\lib;..\..\..\lib\windows\sndfile\lib;..\..\..\lib\windows\opencollada\lib"
IgnoreDefaultLibraryNames="libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, odbc32.lib, odbccp32.lib"
GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\build\msvc_9\libs\debug\blender.pdb"
diff --git a/projectfiles_vc9/blender/collada/BF_collada.vcproj b/projectfiles_vc9/blender/collada/BF_collada.vcproj new file mode 100644 index 00000000000..2689ca1a0e0 --- /dev/null +++ b/projectfiles_vc9/blender/collada/BF_collada.vcproj @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="BF_collada"
+ ProjectGUID="{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}"
+ RootNamespace="BF_collada"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Blender Debug|Win32"
+ OutputDirectory="..\..\..\..\build\msvc_9\source\blender\collada\debug"
+ IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\collada\debug"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\opencollada\include\COLLADAStreamWriter\include;..\..\..\..\lib\windows\opencollada\include\COLLADABaseUtils\include;..\..\..\..\lib\windows\opencollada\include\COLLADAFramework\include;..\..\..\..\lib\windows\opencollada\include\COLLADASaxFrameworkLoader\include"
+ PreprocessorDefinitions="WIN32,_DEBUG,_LIB"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ DefaultCharIsUnsigned="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\collada\debug\BF_collada.pch"
+ AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\collada\debug\"
+ ObjectFile="..\..\..\..\build\msvc_9\source\blender\collada\debug\"
+ ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\collada\debug\"
+ WarningLevel="2"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1043"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="..\..\..\..\build\msvc_9\libs\debug\BF_collada.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Blender Release|Win32"
+ OutputDirectory="..\..\..\..\build\msvc_9\source\blender\collada"
+ IntermediateDirectory="..\..\..\..\build\msvc_9\source\blender\collada"
+ ConfigurationType="4"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\windowmanager;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\opencollada\include\COLLADAStreamWriter\include;..\..\..\..\lib\windows\opencollada\include\COLLADABaseUtils\include;..\..\..\..\lib\windows\opencollada\include\COLLADAFramework\include;..\..\..\..\lib\windows\opencollada\include\COLLADASaxFrameworkLoader\include"
+ PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ DefaultCharIsUnsigned="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\yafray\BF_collada.pch"
+ AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\collada\"
+ ObjectFile="..\..\..\..\build\msvc_9\source\blender\collada\"
+ ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\collada\"
+ WarningLevel="2"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1043"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="..\..\..\..\build\msvc_9\libs\BF_collada.lib"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="..\..\..\source\blender\collada\collada.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\collada\DocumentExporter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\collada\DocumentImporter.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="..\..\..\source\blender\collada\collada.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\collada\collada_internal.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\collada\DocumentExporter.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\collada\DocumentImporter.h"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj b/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj index 805ad1f1cf3..ad52b9f1fae 100644 --- a/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj +++ b/projectfiles_vc9/blender/windowmanager/windowmanager.vcproj @@ -43,8 +43,8 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include"
- PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
+ AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -113,8 +113,8 @@ Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
+ AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
MinimalRebuild="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="false"
diff --git a/release/datafiles/blenderbuttons b/release/datafiles/blenderbuttons Binary files differindex f9a4b934969..258e134675a 100644 --- a/release/datafiles/blenderbuttons +++ b/release/datafiles/blenderbuttons diff --git a/release/datafiles/datatoc.py b/release/datafiles/datatoc.py index 362d4ddc126..246040ab330 100755 --- a/release/datafiles/datatoc.py +++ b/release/datafiles/datatoc.py @@ -66,7 +66,7 @@ while size > 0: size -= 1 if size % 32 == 31: fpout.write("\n") - + fpout.write("%3d," % ord(fpin.read(1))) fpout.write("\n 0};\n\n") diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index f69c8a267e0..510d921d64b 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy from math import atan, pi, degrees @@ -697,8 +715,8 @@ IntProperty( attr="pov_radio_recursion_limit", class PovrayRender(bpy.types.RenderEngine): - __idname__ = 'POVRAY_RENDER' - __label__ = "Povray" + bl_idname = 'POVRAY_RENDER' + bl_label = "Povray" DELAY = 0.02 def _export(self, scene): @@ -826,33 +844,33 @@ class PovrayRender(bpy.types.RenderEngine): bpy.types.register(PovrayRender) # Use some of the existing buttons. -import buttons_render -buttons_render.RENDER_PT_render.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_render.RENDER_PT_dimensions.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_render.RENDER_PT_antialiasing.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_render.RENDER_PT_output.COMPAT_ENGINES.add('POVRAY_RENDER') -del buttons_render +import properties_render +properties_render.RENDER_PT_render.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_render.RENDER_PT_dimensions.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_render.RENDER_PT_antialiasing.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_render.RENDER_PT_output.COMPAT_ENGINES.add('POVRAY_RENDER') +del properties_render # Use only a subset of the world panels -import buttons_world -buttons_world.WORLD_PT_preview.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_world.WORLD_PT_context_world.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_world.WORLD_PT_world.COMPAT_ENGINES.add('POVRAY_RENDER') -buttons_world.WORLD_PT_mist.COMPAT_ENGINES.add('POVRAY_RENDER') -del buttons_world +import properties_world +properties_world.WORLD_PT_preview.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_world.WORLD_PT_context_world.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_world.WORLD_PT_world.COMPAT_ENGINES.add('POVRAY_RENDER') +properties_world.WORLD_PT_mist.COMPAT_ENGINES.add('POVRAY_RENDER') +del properties_world # Example of wrapping every class 'as is' -import buttons_material -for member in dir(buttons_material): - subclass = getattr(buttons_material, member) +import properties_material +for member in dir(properties_material): + subclass = getattr(properties_material, member) try: subclass.COMPAT_ENGINES.add('POVRAY_RENDER') except: pass -del buttons_material +del properties_material class RenderButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "render" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "render" # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here def poll(self, context): @@ -860,7 +878,7 @@ class RenderButtonsPanel(bpy.types.Panel): return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) class RENDER_PT_povray_radiosity(RenderButtonsPanel): - __label__ = "Radiosity" + bl_label = "Radiosity" COMPAT_ENGINES = set(['POVRAY_RENDER']) def draw_header(self, context): diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py index 5ca7d5629d5..a96abb50215 100644 --- a/release/scripts/io/export_3ds.py +++ b/release/scripts/io/export_3ds.py @@ -1,4 +1,22 @@ # coding: utf-8 +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + __author__ = ["Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"] __url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/") __version__ = "0.90a" @@ -1090,19 +1108,19 @@ def save_3ds(filename, context): # else: # Blender.Draw.PupMenu("Error%t|This script requires a full python installation") # # save_3ds('/test_b.3ds') - -class EXPORT_OT_3ds(bpy.types.Operator): +from bpy.props import * +class Export3DS(bpy.types.Operator): '''Export to 3DS file format (.3ds).''' - __idname__ = "export.3ds" - __label__ = 'Export 3DS' + bl_idname = "export.autodesk_3ds" + bl_label = 'Export 3DS' # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - __props__ = [ - # bpy.props.StringProperty(attr="filename", name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the 3DS file", maxlen= 1024, default= ""), - ] + + # filename = StringProperty(name="File Name", description="File name used for exporting the 3DS file", maxlen= 1024, default= ""), + path = StringProperty(name="File Path", description="File path used for exporting the 3DS file", maxlen= 1024, default= "") + def execute(self, context): save_3ds(self.path, context) @@ -1110,16 +1128,20 @@ class EXPORT_OT_3ds(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) def poll(self, context): # Poll isnt working yet print("Poll") return context.active_object != None -bpy.ops.add(EXPORT_OT_3ds) +bpy.ops.add(Export3DS) # Add to a menu import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.3ds", text="Autodesk 3DS...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".3ds") + self.layout.item_stringO(Export3DS.bl_idname, "path", default_path, text="Autodesk 3DS...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index d159c6588e5..ec2d2791b52 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + __author__ = "Campbell Barton" __url__ = ['www.blender.org', 'blenderartists.org'] __version__ = "1.2" @@ -219,14 +237,14 @@ def sane_groupname(data): return sane_name(data, sane_name_mapping_group) # FORCE_CWD - dont use the basepath, just add a ./ to the filename. # use when we know the file will be in the basepath. # ''' -# fname = bpy.sys.expandpath(fname_orig) +# fname = bpy.utils.expandpath(fname_orig) # # fname = Blender.sys.expandpath(fname_orig) # fname_strip = os.path.basename(fname) # # fname_strip = strip_path(fname) # if FORCE_CWD: # fname_rel = '.' + os.sep + fname_strip # else: -# fname_rel = bpy.sys.relpath(fname, basepath) +# fname_rel = bpy.utils.relpath(fname, basepath) # # fname_rel = Blender.sys.relpath(fname, basepath) # if fname_rel.startswith('//'): fname_rel = '.' + os.sep + fname_rel[2:] # return fname, fname_strip, fname_rel @@ -331,7 +349,7 @@ def write(filename, batch_objects = None, \ fbxpath = filename # get the path component of filename - tmp_exists = bpy.sys.exists(fbxpath) + tmp_exists = bpy.utils.exists(fbxpath) # tmp_exists = Blender.sys.exists(fbxpath) if tmp_exists != 2: # a file, we want a path @@ -345,7 +363,7 @@ def write(filename, batch_objects = None, \ # Draw.PupMenu('Error%t|Directory does not exist!') return - tmp_exists = bpy.sys.exists(fbxpath) + tmp_exists = bpy.utils.exists(fbxpath) # tmp_exists = Blender.sys.exists(fbxpath) if tmp_exists != 2: @@ -380,7 +398,7 @@ def write(filename, batch_objects = None, \ # path may alredy exist # TODO - might exist but be a file. unlikely but should probably account for it. - if bpy.sys.exists(new_fbxpath) == 0: + if bpy.utils.exists(new_fbxpath) == 0: # if Blender.sys.exists(new_fbxpath) == 0: os.mkdir(new_fbxpath) @@ -3332,44 +3350,44 @@ def write_ui(): # GLOBALS.clear() - -class EXPORT_OT_fbx(bpy.types.Operator): +from bpy.props import * +class ExportFBX(bpy.types.Operator): '''Selection to an ASCII Autodesk FBX''' - __idname__ = "export.fbx" - __label__ = "Export FBX" + bl_idname = "export.fbx" + bl_label = "Export FBX" # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the FBX file", maxlen= 1024, default= ""), - - bpy.props.BoolProperty(attr="EXP_OBS_SELECTED", name="Selected Objects", description="Export selected objects on visible layers", default=True), -# bpy.props.BoolProperty(attr="EXP_OBS_SCENE", name="Scene Objects", description="Export all objects in this scene", default=True), - bpy.props.FloatProperty(attr="_SCALE", name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0), - bpy.props.BoolProperty(attr="_XROT90", name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True), - bpy.props.BoolProperty(attr="_YROT90", name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False), - bpy.props.BoolProperty(attr="_ZROT90", name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False), - bpy.props.BoolProperty(attr="EXP_EMPTY", name="Empties", description="Export empty objects", default=True), - bpy.props.BoolProperty(attr="EXP_CAMERA", name="Cameras", description="Export camera objects", default=True), - bpy.props.BoolProperty(attr="EXP_LAMP", name="Lamps", description="Export lamp objects", default=True), - bpy.props.BoolProperty(attr="EXP_ARMATURE", name="Armatures", description="Export armature objects", default=True), - bpy.props.BoolProperty(attr="EXP_MESH", name="Meshes", description="Export mesh objects", default=True), - bpy.props.BoolProperty(attr="EXP_MESH_APPLY_MOD", name="Modifiers", description="Apply modifiers to mesh objects", default=True), - bpy.props.BoolProperty(attr="EXP_MESH_HQ_NORMALS", name="HQ Normals", description="Generate high quality normals", default=True), - bpy.props.BoolProperty(attr="EXP_IMAGE_COPY", name="Copy Image Files", description="Copy image files to the destination path", default=False), - # armature animation - bpy.props.BoolProperty(attr="ANIM_ENABLE", name="Enable Animation", description="Export keyframe animation", default=True), - bpy.props.BoolProperty(attr="ANIM_OPTIMIZE", name="Optimize Keyframes", description="Remove double keyframes", default=True), - bpy.props.FloatProperty(attr="ANIM_OPTIMIZE_PRECISSION", name="Precision", description="Tolerence for comparing double keyframes (higher for greater accuracy)", min=1, max=16, soft_min=1, soft_max=16, default=6.0), -# bpy.props.BoolProperty(attr="ANIM_ACTION_ALL", name="Current Action", description="Use actions currently applied to the armatures (use scene start/end frame)", default=True), - bpy.props.BoolProperty(attr="ANIM_ACTION_ALL", name="All Actions", description="Use all actions for armatures, if false, use current action", default=False), - # batch - bpy.props.BoolProperty(attr="BATCH_ENABLE", name="Enable Batch", description="Automate exporting multiple scenes or groups to files", default=False), - bpy.props.BoolProperty(attr="BATCH_GROUP", name="Group > File", description="Export each group as an FBX file, if false, export each scene as an FBX file", default=False), - bpy.props.BoolProperty(attr="BATCH_OWN_DIR", name="Own Dir", description="Create a dir for each exported file", default=True), - bpy.props.StringProperty(attr="BATCH_FILE_PREFIX", name="Prefix", description="Prefix each file with this name", maxlen= 1024, default=""), - ] + + path = StringProperty(name="File Path", description="File path used for exporting the FBX file", maxlen= 1024, default= "") + + EXP_OBS_SELECTED = BoolProperty(name="Selected Objects", description="Export selected objects on visible layers", default=True) +# EXP_OBS_SCENE = BoolProperty(name="Scene Objects", description="Export all objects in this scene", default=True) + _SCALE = FloatProperty(name="Scale", description="Scale all data, (Note! some imports dont support scaled armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0) + _XROT90 = BoolProperty(name="Rot X90", description="Rotate all objects 90 degrese about the X axis", default=True) + _YROT90 = BoolProperty(name="Rot Y90", description="Rotate all objects 90 degrese about the Y axis", default=False) + _ZROT90 = BoolProperty(name="Rot Z90", description="Rotate all objects 90 degrese about the Z axis", default=False) + EXP_EMPTY = BoolProperty(name="Empties", description="Export empty objects", default=True) + EXP_CAMERA = BoolProperty(name="Cameras", description="Export camera objects", default=True) + EXP_LAMP = BoolProperty(name="Lamps", description="Export lamp objects", default=True) + EXP_ARMATURE = BoolProperty(name="Armatures", description="Export armature objects", default=True) + EXP_MESH = BoolProperty(name="Meshes", description="Export mesh objects", default=True) + EXP_MESH_APPLY_MOD = BoolProperty(name="Modifiers", description="Apply modifiers to mesh objects", default=True) + EXP_MESH_HQ_NORMALS = BoolProperty(name="HQ Normals", description="Generate high quality normals", default=True) + EXP_IMAGE_COPY = BoolProperty(name="Copy Image Files", description="Copy image files to the destination path", default=False) + # armature animation + ANIM_ENABLE = BoolProperty(name="Enable Animation", description="Export keyframe animation", default=True) + ANIM_OPTIMIZE = BoolProperty(name="Optimize Keyframes", description="Remove double keyframes", default=True) + ANIM_OPTIMIZE_PRECISSION = FloatProperty(name="Precision", description="Tolerence for comparing double keyframes (higher for greater accuracy)", min=1, max=16, soft_min=1, soft_max=16, default=6.0) +# ANIM_ACTION_ALL = BoolProperty(name="Current Action", description="Use actions currently applied to the armatures (use scene start/end frame)", default=True) + ANIM_ACTION_ALL = BoolProperty(name="All Actions", description="Use all actions for armatures, if false, use current action", default=False) + # batch + BATCH_ENABLE = BoolProperty(name="Enable Batch", description="Automate exporting multiple scenes or groups to files", default=False) + BATCH_GROUP = BoolProperty(name="Group > File", description="Export each group as an FBX file, if false, export each scene as an FBX file", default=False) + BATCH_OWN_DIR = BoolProperty(name="Own Dir", description="Create a dir for each exported file", default=True) + BATCH_FILE_PREFIX = StringProperty(name="Prefix", description="Prefix each file with this name", maxlen= 1024, default="") + def poll(self, context): print("Poll") @@ -3411,11 +3429,11 @@ class EXPORT_OT_fbx(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(EXPORT_OT_fbx) +bpy.ops.add(ExportFBX) # if __name__ == "__main__": # bpy.ops.EXPORT_OT_ply(filename="/tmp/test.ply") @@ -3438,7 +3456,7 @@ bpy.ops.add(EXPORT_OT_fbx) # - bpy.data.remove_scene: line 366 # - bpy.sys.time move to bpy.sys.util? # - new scene creation, activation: lines 327-342, 368 -# - uses bpy.sys.expandpath, *.relpath - replace at least relpath +# - uses bpy.utils.expandpath, *.relpath - replace at least relpath # SMALL or COSMETICAL # - find a way to get blender version, and put it in bpy.util?, old was Blender.Get('version') @@ -3446,6 +3464,10 @@ bpy.ops.add(EXPORT_OT_fbx) # Add to a menu import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.fbx", text="Autodesk FBX...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".fbx") + self.layout.item_stringO(ExportFBX.bl_idname, "path", default_path, text="Autodesk FBX...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index 1336660aefc..2b3e1681449 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -1,3 +1,20 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### __author__ = "Bill L.Nieuwendorp" __bpydoc__ = """\ @@ -37,148 +54,148 @@ import os #from Blender import * #import BPyMessages try: - from struct import pack + from struct import pack except: - pack = None + pack = None def zero_file(filepath): - ''' - If a file fails, this replaces it with 1 char, better not remove it? - ''' - file = open(filepath, 'w') - file.write('\n') # apparently macosx needs some data in a blank file? - file.close() + ''' + If a file fails, this replaces it with 1 char, better not remove it? + ''' + file = open(filepath, 'w') + file.write('\n') # apparently macosx needs some data in a blank file? + file.close() def check_vertcount(mesh,vertcount): - ''' - check and make sure the vertcount is consistent throughout the frame range - ''' - if len(mesh.verts) != vertcount: - raise Exception('Error, number of verts has changed during animation, cannot export') - f.close() - zero_file(filepath) - return - - + ''' + check and make sure the vertcount is consistent throughout the frame range + ''' + if len(mesh.verts) != vertcount: + raise Exception('Error, number of verts has changed during animation, cannot export') + f.close() + zero_file(filepath) + return + + def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): - if not pack: - raise Exception('Error, this script requires the "pack" module') - - if ob.type != 'MESH': - raise Exception('Error, active object is not a mesh') - """ - Window.EditMode(0) - Blender.Window.WaitCursor(1) - - mesh_orig = Mesh.New() - mesh_orig.getFromObject(ob.name) - """ - orig_frame = sce.current_frame - sce.set_frame(PREF_STARTFRAME) - me = ob.create_mesh(True, 'PREVIEW') - - #Flip y and z - mat_flip= Mathutils.Matrix(\ - [1.0, 0.0, 0.0, 0.0],\ - [0.0, 0.0, 1.0, 0.0],\ - [0.0, 1.0, 0.0, 0.0],\ - [0.0, 0.0, 0.0, 1.0],\ - ) - - numverts = len(me.verts) - - numframes = PREF_ENDFRAME-PREF_STARTFRAME+1 - PREF_FPS= float(PREF_FPS) - f = open(filename, 'wb') #no Errors yet:Safe to create file - - # Write the header - f.write(pack(">2i", numframes, numverts)) - - # Write the frame times (should we use the time IPO??) - f.write( pack(">%df" % (numframes), *[frame/PREF_FPS for frame in range(numframes)]) ) # seconds - - #rest frame needed to keep frames in sync - """ - Blender.Set('curframe', PREF_STARTFRAME) - me_tmp.getFromObject(ob.name) - """ - - check_vertcount(me,numverts) - me.transform(mat_flip * ob.matrix) - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) - - for frame in range(PREF_STARTFRAME,PREF_ENDFRAME+1):#in order to start at desired frame - """ - Blender.Set('curframe', frame) - me_tmp.getFromObject(ob.name) - """ - - sce.set_frame(frame) - me = ob.create_mesh(True, 'PREVIEW') - check_vertcount(me,numverts) - me.transform(mat_flip * ob.matrix) - - # Write the vertex data - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) - - """ - me_tmp.verts= None - """ - f.close() - - print ('MDD Exported: %s frames:%d\n'% (filename, numframes-1)) - """ - Blender.Window.WaitCursor(0) - Blender.Set('curframe', orig_frame) - """ - sce.set_frame(orig_frame) - -class EXPORT_OT_mdd(bpy.types.Operator): - '''Animated mesh to MDD vertex keyframe file.''' - __idname__ = "export.mdd" - __label__ = "Export MDD" - - # get first scene to get min and max properties for frames, fps - - sce = bpy.data.scenes[bpy.data.scenes.keys()[0]] - minframe = sce.rna_type.properties["current_frame"].soft_min - maxframe = sce.rna_type.properties["current_frame"].soft_max - minfps = sce.render_data.rna_type.properties["fps"].soft_min - maxfps = sce.render_data.rna_type.properties["fps"].soft_max - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "tmp.mdd"), - bpy.props.IntProperty(attr="fps", name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25), - bpy.props.IntProperty(attr="start_frame", name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1), - bpy.props.IntProperty(attr="end_frame", name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250), - ] - - def poll(self, context): - return context.active_object != None - - def execute(self, context): - if not self.path: - raise Exception("filename not set") - write(self.path, context.scene, context.active_object, - self.start_frame, self.end_frame, self.fps ) - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self.__operator__) - return ('RUNNING_MODAL',) - -bpy.ops.add(EXPORT_OT_mdd) + """ + Blender.Window.WaitCursor(1) + + mesh_orig = Mesh.New() + mesh_orig.getFromObject(ob.name) + """ + + bpy.ops.object.mode_set(mode='OBJECT') + + orig_frame = sce.current_frame + sce.set_frame(PREF_STARTFRAME) + me = ob.create_mesh(True, 'PREVIEW') + + #Flip y and z + mat_flip= Mathutils.Matrix(\ + [1.0, 0.0, 0.0, 0.0],\ + [0.0, 0.0, 1.0, 0.0],\ + [0.0, 1.0, 0.0, 0.0],\ + [0.0, 0.0, 0.0, 1.0],\ + ) + + numverts = len(me.verts) + + numframes = PREF_ENDFRAME-PREF_STARTFRAME+1 + PREF_FPS= float(PREF_FPS) + f = open(filename, 'wb') #no Errors yet:Safe to create file + + # Write the header + f.write(pack(">2i", numframes, numverts)) + + # Write the frame times (should we use the time IPO??) + f.write( pack(">%df" % (numframes), *[frame/PREF_FPS for frame in range(numframes)]) ) # seconds + + #rest frame needed to keep frames in sync + """ + Blender.Set('curframe', PREF_STARTFRAME) + me_tmp.getFromObject(ob.name) + """ + + check_vertcount(me,numverts) + me.transform(mat_flip * ob.matrix) + f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + + for frame in range(PREF_STARTFRAME,PREF_ENDFRAME+1):#in order to start at desired frame + """ + Blender.Set('curframe', frame) + me_tmp.getFromObject(ob.name) + """ + + sce.set_frame(frame) + me = ob.create_mesh(True, 'PREVIEW') + check_vertcount(me,numverts) + me.transform(mat_flip * ob.matrix) + + # Write the vertex data + f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + + """ + me_tmp.verts= None + """ + f.close() + + print ('MDD Exported: %s frames:%d\n'% (filename, numframes-1)) + """ + Blender.Window.WaitCursor(0) + Blender.Set('curframe', orig_frame) + """ + sce.set_frame(orig_frame) + +from bpy.props import * + +class ExportMDD(bpy.types.Operator): + '''Animated mesh to MDD vertex keyframe file.''' + bl_idname = "export.mdd" + bl_label = "Export MDD" + + # get first scene to get min and max properties for frames, fps + + sce = bpy.data.scenes[bpy.data.scenes.keys()[0]] + minframe = sce.rna_type.properties["current_frame"].soft_min + maxframe = sce.rna_type.properties["current_frame"].soft_max + minfps = sce.render_data.rna_type.properties["fps"].soft_min + maxfps = sce.render_data.rna_type.properties["fps"].soft_max + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "tmp.mdd") + fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25) + start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1) + end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250) + + def poll(self, context): + ob = context.active_object + return (ob and ob.type=='MESH') + + def execute(self, context): + if not self.path: + raise Exception("filename not set") + write(self.path, context.scene, context.active_object, + self.start_frame, self.end_frame, self.fps ) + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + +bpy.ops.add(ExportMDD) # Add to a menu import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.mdd", text="Vertex Keyframe Animation (.mdd)...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".mdd") + self.layout.item_stringO(ExportMDD.bl_idname, "path", default_path, text="Vertex Keyframe Animation (.mdd)...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) if __name__=='__main__': - #if not pack: -# Draw.PupMenu('Error%t|This script requires a full python install') - #Blender.Window.FileSelector(mdd_export_ui, 'EXPORT MDD', sys.makename(ext='.mdd')) - bpy.ops.EXPORT_OT_mdd(path="/tmp/test.mdd") + #Blender.Window.FileSelector(mdd_export_ui, 'EXPORT MDD', sys.makename(ext='.mdd')) + bpy.ops.EXPORT_OT_mdd(path="/tmp/test.mdd") diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py index 1e8a152e91f..2c77cbd702a 100644 --- a/release/scripts/io/export_obj.py +++ b/release/scripts/io/export_obj.py @@ -1,4 +1,20 @@ -#!BPY +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### """ Name: 'Wavefront (.obj)...' @@ -207,11 +223,11 @@ def copy_images(dest_dir): copyCount = 0 # for bImage in uniqueImages.values(): -# image_path = bpy.sys.expandpath(bImage.filename) +# image_path = bpy.utils.expandpath(bImage.filename) # if bpy.sys.exists(image_path): # # Make a name for the target path. # dest_image_path = dest_dir + image_path.split('\\')[-1].split('/')[-1] -# if not bpy.sys.exists(dest_image_path): # Image isnt alredy there +# if not bpy.utils.exists(dest_image_path): # Image isnt alredy there # print('\tCopying "%s" > "%s"' % (image_path, dest_image_path)) # copy_file(image_path, dest_image_path) # copyCount+=1 @@ -913,44 +929,46 @@ Currently the exporter lacks these features: * multiple scene export (only active scene is written) * particles ''' -class EXPORT_OT_obj(bpy.types.Operator): + +from bpy.props import * + +class ExportOBJ(bpy.types.Operator): '''Save a Wavefront OBJ File''' - __idname__ = "export.obj" - __label__ = 'Export OBJ' + bl_idname = "export.obj" + bl_label = 'Export OBJ' # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the OBJ file", maxlen= 1024, default= ""), - - # context group - bpy.props.BoolProperty(attr="use_selection", name="Selection Only", description="", default= False), - bpy.props.BoolProperty(attr="use_all_scenes", name="All Scenes", description="", default= False), - bpy.props.BoolProperty(attr="use_animation", name="All Animation", description="", default= False), - - # object group - bpy.props.BoolProperty(attr="use_modifiers", name="Apply Modifiers", description="", default= True), - bpy.props.BoolProperty(attr="use_rotate90", name="Rotate X90", description="", default= True), - - # extra data group - bpy.props.BoolProperty(attr="use_edges", name="Edges", description="", default= True), - bpy.props.BoolProperty(attr="use_normals", name="Normals", description="", default= False), - bpy.props.BoolProperty(attr="use_hq_normals", name="High Quality Normals", description="", default= True), - bpy.props.BoolProperty(attr="use_uvs", name="UVs", description="", default= True), - bpy.props.BoolProperty(attr="use_materials", name="Materials", description="", default= True), - bpy.props.BoolProperty(attr="copy_images", name="Copy Images", description="", default= False), - bpy.props.BoolProperty(attr="use_triangles", name="Triangulate", description="", default= False), - bpy.props.BoolProperty(attr="use_vertex_groups", name="Polygroups", description="", default= False), - bpy.props.BoolProperty(attr="use_nurbs", name="Nurbs", description="", default= False), - - # grouping group - bpy.props.BoolProperty(attr="use_blen_objects", name="Objects as OBJ Objects", description="", default= True), - bpy.props.BoolProperty(attr="group_by_object", name="Objects as OBJ Groups ", description="", default= False), - bpy.props.BoolProperty(attr="group_by_material", name="Material Groups", description="", default= False), - bpy.props.BoolProperty(attr="keep_vertex_order", name="Keep Vertex Order", description="", default= False) - ] + path = StringProperty(name="File Path", description="File path used for exporting the OBJ file", maxlen= 1024, default= "") + + # context group + use_selection = BoolProperty(name="Selection Only", description="", default= False) + use_all_scenes = BoolProperty(name="All Scenes", description="", default= False) + use_animation = BoolProperty(name="All Animation", description="", default= False) + + # object group + use_modifiers = BoolProperty(name="Apply Modifiers", description="", default= True) + use_rotate90 = BoolProperty(name="Rotate X90", description="", default= True) + + # extra data group + use_edges = BoolProperty(name="Edges", description="", default= True) + use_normals = BoolProperty(name="Normals", description="", default= False) + use_hq_normals = BoolProperty(name="High Quality Normals", description="", default= True) + use_uvs = BoolProperty(name="UVs", description="", default= True) + use_materials = BoolProperty(name="Materials", description="", default= True) + copy_images = BoolProperty(name="Copy Images", description="", default= False) + use_triangles = BoolProperty(name="Triangulate", description="", default= False) + use_vertex_groups = BoolProperty(name="Polygroups", description="", default= False) + use_nurbs = BoolProperty(name="Nurbs", description="", default= False) + + # grouping group + use_blen_objects = BoolProperty(name="Objects as OBJ Objects", description="", default= True) + group_by_object = BoolProperty(name="Objects as OBJ Groups ", description="", default= False) + group_by_material = BoolProperty(name="Material Groups", description="", default= False) + keep_vertex_order = BoolProperty(name="Keep Vertex Order", description="", default= False) + def execute(self, context): @@ -977,17 +995,21 @@ class EXPORT_OT_obj(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) def poll(self, context): # Poll isnt working yet print("Poll") return context.active_object != None -bpy.ops.add(EXPORT_OT_obj) +bpy.ops.add(ExportOBJ) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.obj", text="Wavefront (.obj)...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".obj") + self.layout.item_stringO(ExportOBJ.bl_idname, "path", default_path, text="Wavefront (.obj)...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) if __name__ == "__main__": diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py index d74cc0e9d7e..99fa3233278 100644 --- a/release/scripts/io/export_ply.py +++ b/release/scripts/io/export_ply.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy __author__ = "Bruce Merry" @@ -231,21 +249,24 @@ def write(filename, scene, ob, \ Blender.Window.EditMode(1, '', 0) """ -class EXPORT_OT_ply(bpy.types.Operator): +from bpy.props import * + + +class ExportPLY(bpy.types.Operator): '''Export a single object as a stanford PLY with normals, colours and texture coordinates.''' - __idname__ = "export.ply" - __label__ = "Export PLY" + bl_idname = "export.ply" + bl_label = "Export PLY" # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= ""), - bpy.props.BoolProperty(attr="use_modifiers", name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True), - bpy.props.BoolProperty(attr="use_normals", name="Export Normals", description="Export Normals for smooth and hard shaded faces", default= True), - bpy.props.BoolProperty(attr="use_uvs", name="Export UVs", description="Exort the active UV layer", default= True), - bpy.props.BoolProperty(attr="use_colors", name="Export Vertex Colors", description="Exort the active vertex color layer", default= True) - ] + + path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") + use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True) + use_normals = BoolProperty(name="Export Normals", description="Export Normals for smooth and hard shaded faces", default= True) + use_uvs = BoolProperty(name="Export UVs", description="Exort the active UV layer", default= True) + use_colors = BoolProperty(name="Export Vertex Colors", description="Exort the active vertex color layer", default= True) + def poll(self, context): return context.active_object != None @@ -267,15 +288,19 @@ class EXPORT_OT_ply(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(EXPORT_OT_ply) +bpy.ops.add(ExportPLY) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.ply", text="Stanford (.ply)...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".ply") + self.layout.item_stringO(ExportPLY.bl_idname, "path", default_path, text="Stanford (.ply)...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) if __name__ == "__main__": - bpy.ops.EXPORT_OT_ply(path="/tmp/test.ply") + bpy.ops.export.ply(path="/tmp/test.ply") diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py index 2c6ca749757..c8c5f71f6ff 100644 --- a/release/scripts/io/export_x3d.py +++ b/release/scripts/io/export_x3d.py @@ -1,3 +1,20 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### __author__ = ("Bart", "Campbell Barton") __email__ = ["Bart, bart:neeneenee*de"] @@ -1196,21 +1213,21 @@ def x3d_export_ui(filename): # if __name__ == '__main__': # Blender.Window.FileSelector(x3d_export_ui,"Export X3D", Blender.Get('filename').replace('.blend', '.x3d')) -class EXPORT_OT_x3d(bpy.types.Operator): +from bpy.props import * + +class ExportX3D(bpy.types.Operator): '''Export selection to Extensible 3D file (.x3d)''' - __idname__ = "export.x3d" - __label__ = 'Export X3D' + bl_idname = "export.x3d" + bl_label = 'Export X3D' # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for exporting the X3D file", maxlen= 1024, default= ""), - - bpy.props.BoolProperty(attr="apply_modifiers", name="Apply Modifiers", description="Use transformed mesh data from each object.", default=True), - bpy.props.BoolProperty(attr="triangulate", name="Triangulate", description="Triangulate quads.", default=False), - bpy.props.BoolProperty(attr="compress", name="Compress", description="GZip the resulting file, requires a full python install.", default=False), - ] + path = StringProperty(name="File Path", description="File path used for exporting the X3D file", maxlen= 1024, default= "") + + apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object.", default=True) + triangulate = BoolProperty(name="Triangulate", description="Triangulate quads.", default=False) + compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install.", default=False) + def execute(self, context): x3d_export(self.path, context, self.apply_modifiers, self.triangulate, self.compress) @@ -1218,13 +1235,17 @@ class EXPORT_OT_x3d(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(EXPORT_OT_x3d) +bpy.ops.add(ExportX3D) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("export.x3d", text="X3D Extensible 3D (.x3d)...") + +def menu_func(self, context): + default_path = bpy.data.filename.replace(".blend", ".x3d") + self.layout.item_stringO(ExportX3D.bl_idname, "path", default_path, text="X3D Extensible 3D (.x3d)...") + menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) # NOTES diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py new file mode 100644 index 00000000000..dff9a3ac0c8 --- /dev/null +++ b/release/scripts/io/import_anim_bvh.py @@ -0,0 +1,881 @@ +import math + +# import Blender +import bpy +# import BPyMessages +import Mathutils +Vector= Mathutils.Vector +Euler= Mathutils.Euler +Matrix= Mathutils.Matrix +RotationMatrix= Mathutils.RotationMatrix +TranslationMatrix= Mathutils.TranslationMatrix + +# NASTY GLOBAL +ROT_STYLE = 'QUAT' + +DEG2RAD = 0.017453292519943295 + +class bvh_node_class(object): + __slots__=(\ + 'name',# bvh joint name + 'parent',# bvh_node_class type or None for no parent + 'children',# a list of children of this type. + 'rest_head_world',# worldspace rest location for the head of this node + 'rest_head_local',# localspace rest location for the head of this node + 'rest_tail_world',# # worldspace rest location for the tail of this node + 'rest_tail_local',# # worldspace rest location for the tail of this node + 'channels',# list of 6 ints, -1 for an unused channel, otherwise an index for the BVH motion data lines, lock triple then rot triple + 'rot_order',# a triple of indicies as to the order rotation is applied. [0,1,2] is x/y/z - [None, None, None] if no rotation. + 'anim_data',# a list one tuple's one for each frame. (locx, locy, locz, rotx, roty, rotz) + 'has_loc',# Conveinience function, bool, same as (channels[0]!=-1 or channels[1]!=-1 channels[2]!=-1) + 'has_rot',# Conveinience function, bool, same as (channels[3]!=-1 or channels[4]!=-1 channels[5]!=-1) + 'temp')# use this for whatever you want + + def __init__(self, name, rest_head_world, rest_head_local, parent, channels, rot_order): + self.name= name + self.rest_head_world= rest_head_world + self.rest_head_local= rest_head_local + self.rest_tail_world= None + self.rest_tail_local= None + self.parent= parent + self.channels= channels + self.rot_order= rot_order + + # convenience functions + self.has_loc= channels[0] != -1 or channels[1] != -1 or channels[2] != -1 + self.has_rot= channels[3] != -1 or channels[4] != -1 or channels[5] != -1 + + + self.children= [] + + # list of 6 length tuples: (lx,ly,lz, rx,ry,rz) + # even if the channels arnt used they will just be zero + # + self.anim_data= [(0,0,0,0,0,0)] + + + def __repr__(self): + return 'BVH name:"%s", rest_loc:(%.3f,%.3f,%.3f), rest_tail:(%.3f,%.3f,%.3f)' %\ + (self.name,\ + self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z,\ + self.rest_head_world.x, self.rest_head_world.y, self.rest_head_world.z) + + + +# Change the order rotation is applied. +MATRIX_IDENTITY_3x3 = Matrix([1,0,0],[0,1,0],[0,0,1]) +MATRIX_IDENTITY_4x4 = Matrix([1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]) + +def eulerRotate(x,y,z, rot_order): + + # Clamp all values between 0 and 360, values outside this raise an error. + mats=[RotationMatrix(math.radians(x%360),3,'x'), RotationMatrix(math.radians(y%360),3,'y'), RotationMatrix(math.radians(z%360),3,'z')] + # print rot_order + # Standard BVH multiplication order, apply the rotation in the order Z,X,Y + + #XXX, order changes??? + #eul = (mats[rot_order[2]]*(mats[rot_order[1]]* (mats[rot_order[0]]* MATRIX_IDENTITY_3x3))).toEuler() + eul = (MATRIX_IDENTITY_3x3*mats[rot_order[0]]*(mats[rot_order[1]]* (mats[rot_order[2]]))).toEuler() + + eul = math.degrees(eul.x), math.degrees(eul.y), math.degrees(eul.z) + + return eul + +def read_bvh(context, file_path, GLOBAL_SCALE=1.0): + # File loading stuff + # Open the file for importing + file = open(file_path, 'rU') + + # Seperate into a list of lists, each line a list of words. + file_lines = file.readlines() + # Non standard carrage returns? + if len(file_lines) == 1: + file_lines = file_lines[0].split('\r') + + # Split by whitespace. + file_lines =[ll for ll in [ l.split() for l in file_lines] if ll] + + + # Create Hirachy as empties + + if file_lines[0][0].lower() == 'hierarchy': + #print 'Importing the BVH Hierarchy for:', file_path + pass + else: + raise 'ERROR: This is not a BVH file' + + bvh_nodes= {None:None} + bvh_nodes_serial = [None] + + channelIndex = -1 + + + lineIdx = 0 # An index for the file. + while lineIdx < len(file_lines) -1: + #... + if file_lines[lineIdx][0].lower() == 'root' or file_lines[lineIdx][0].lower() == 'joint': + + # Join spaces into 1 word with underscores joining it. + if len(file_lines[lineIdx]) > 2: + file_lines[lineIdx][1] = '_'.join(file_lines[lineIdx][1:]) + file_lines[lineIdx] = file_lines[lineIdx][:2] + + # MAY NEED TO SUPPORT MULTIPLE ROOT's HERE!!!, Still unsure weather multiple roots are possible.?? + + # Make sure the names are unique- Object names will match joint names exactly and both will be unique. + name = file_lines[lineIdx][1] + + #print '%snode: %s, parent: %s' % (len(bvh_nodes_serial) * ' ', name, bvh_nodes_serial[-1]) + + lineIdx += 2 # Incriment to the next line (Offset) + rest_head_local = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + lineIdx += 1 # Incriment to the next line (Channels) + + # newChannel[Xposition, Yposition, Zposition, Xrotation, Yrotation, Zrotation] + # newChannel references indecies to the motiondata, + # if not assigned then -1 refers to the last value that will be added on loading at a value of zero, this is appended + # We'll add a zero value onto the end of the MotionDATA so this is always refers to a value. + my_channel = [-1, -1, -1, -1, -1, -1] + my_rot_order= [None, None, None] + rot_count= 0 + for channel in file_lines[lineIdx][2:]: + channel= channel.lower() + channelIndex += 1 # So the index points to the right channel + if channel == 'xposition': my_channel[0] = channelIndex + elif channel == 'yposition': my_channel[1] = channelIndex + elif channel == 'zposition': my_channel[2] = channelIndex + + elif channel == 'xrotation': + my_channel[3] = channelIndex + my_rot_order[rot_count]= 0 + rot_count+=1 + elif channel == 'yrotation': + my_channel[4] = channelIndex + my_rot_order[rot_count]= 1 + rot_count+=1 + elif channel == 'zrotation': + my_channel[5] = channelIndex + my_rot_order[rot_count]= 2 + rot_count+=1 + + channels = file_lines[lineIdx][2:] + + my_parent= bvh_nodes_serial[-1] # account for none + + + # Apply the parents offset accumletivly + if my_parent==None: + rest_head_world= Vector(rest_head_local) + else: + rest_head_world= my_parent.rest_head_world + rest_head_local + + bvh_node= bvh_nodes[name]= bvh_node_class(name, rest_head_world, rest_head_local, my_parent, my_channel, my_rot_order) + + # If we have another child then we can call ourselves a parent, else + bvh_nodes_serial.append(bvh_node) + + # Account for an end node + if file_lines[lineIdx][0].lower() == 'end' and file_lines[lineIdx][1].lower() == 'site': # There is somtimes a name after 'End Site' but we will ignore it. + lineIdx += 2 # Incriment to the next line (Offset) + rest_tail = Vector( GLOBAL_SCALE*float(file_lines[lineIdx][1]), GLOBAL_SCALE*float(file_lines[lineIdx][2]), GLOBAL_SCALE*float(file_lines[lineIdx][3]) ) + + bvh_nodes_serial[-1].rest_tail_world= bvh_nodes_serial[-1].rest_head_world + rest_tail + bvh_nodes_serial[-1].rest_tail_local= rest_tail + + + # Just so we can remove the Parents in a uniform way- End end never has kids + # so this is a placeholder + bvh_nodes_serial.append(None) + + if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0] == '}': # == ['}'] + bvh_nodes_serial.pop() # Remove the last item + + if len(file_lines[lineIdx]) == 1 and file_lines[lineIdx][0].lower() == 'motion': + #print '\nImporting motion data' + lineIdx += 3 # Set the cursor to the first frame + break + + lineIdx += 1 + + + # Remove the None value used for easy parent reference + del bvh_nodes[None] + # Dont use anymore + del bvh_nodes_serial + + bvh_nodes_list= bvh_nodes.values() + + while lineIdx < len(file_lines): + line= file_lines[lineIdx] + for bvh_node in bvh_nodes_list: + #for bvh_node in bvh_nodes_serial: + lx= ly= lz= rx= ry= rz= 0.0 + channels= bvh_node.channels + anim_data= bvh_node.anim_data + if channels[0] != -1: + lx= GLOBAL_SCALE * float( line[channels[0]] ) + + if channels[1] != -1: + ly= GLOBAL_SCALE * float( line[channels[1]] ) + + if channels[2] != -1: + lz= GLOBAL_SCALE * float( line[channels[2]] ) + + if channels[3] != -1 or channels[4] != -1 or channels[5] != -1: + rx, ry, rz = float( line[channels[3]] ), float( line[channels[4]] ), float( line[channels[5]] ) + + if ROT_STYLE != 'NATIVE': + rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order) + + #x,y,z = x/10.0, y/10.0, z/10.0 # For IPO's 36 is 360d + + # Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling. + # Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation. + + while anim_data[-1][3] - rx > 180: rx+=360 + while anim_data[-1][3] - rx < -180: rx-=360 + + while anim_data[-1][4] - ry > 180: ry+=360 + while anim_data[-1][4] - ry < -180: ry-=360 + + while anim_data[-1][5] - rz > 180: rz+=360 + while anim_data[-1][5] - rz < -180: rz-=360 + + # Done importing motion data # + anim_data.append( (lx, ly, lz, rx, ry, rz) ) + lineIdx += 1 + + # Assign children + for bvh_node in bvh_nodes.values(): + bvh_node_parent= bvh_node.parent + if bvh_node_parent: + bvh_node_parent.children.append(bvh_node) + + # Now set the tip of each bvh_node + for bvh_node in bvh_nodes.values(): + + if not bvh_node.rest_tail_world: + if len(bvh_node.children)==0: + # could just fail here, but rare BVH files have childless nodes + bvh_node.rest_tail_world = Vector(bvh_node.rest_head_world) + bvh_node.rest_tail_local = Vector(bvh_node.rest_head_local) + elif len(bvh_node.children)==1: + bvh_node.rest_tail_world= Vector(bvh_node.children[0].rest_head_world) + bvh_node.rest_tail_local= Vector(bvh_node.children[0].rest_head_local) + else: + # allow this, see above + #if not bvh_node.children: + # raise 'error, bvh node has no end and no children. bad file' + + # Removed temp for now + rest_tail_world= Vector(0,0,0) + rest_tail_local= Vector(0,0,0) + for bvh_node_child in bvh_node.children: + rest_tail_world += bvh_node_child.rest_head_world + rest_tail_local += bvh_node_child.rest_head_local + + bvh_node.rest_tail_world= rest_tail_world * (1.0/len(bvh_node.children)) + bvh_node.rest_tail_local= rest_tail_local * (1.0/len(bvh_node.children)) + + # Make sure tail isnt the same location as the head. + if (bvh_node.rest_tail_local-bvh_node.rest_head_local).length <= 0.001*GLOBAL_SCALE: + + bvh_node.rest_tail_local.y= bvh_node.rest_tail_local.y + GLOBAL_SCALE/10 + bvh_node.rest_tail_world.y= bvh_node.rest_tail_world.y + GLOBAL_SCALE/10 + + + + return bvh_nodes + + + +def bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP= False): + + if IMPORT_START_FRAME<1: + IMPORT_START_FRAME= 1 + + scn= context.scene + scn.objects.selected = [] + + objects= [] + + def add_ob(name): + ob = scn.objects.new('Empty') + objects.append(ob) + return ob + + # Add objects + for name, bvh_node in bvh_nodes.items(): + bvh_node.temp= add_ob(name) + + # Parent the objects + for bvh_node in bvh_nodes.values(): + bvh_node.temp.makeParent([ bvh_node_child.temp for bvh_node_child in bvh_node.children ], 1, 0) # ojbs, noninverse, 1 = not fast. + + # Offset + for bvh_node in bvh_nodes.values(): + # Make relative to parents offset + bvh_node.temp.loc= bvh_node.rest_head_local + + # Add tail objects + for name, bvh_node in bvh_nodes.items(): + if not bvh_node.children: + ob_end= add_ob(name + '_end') + bvh_node.temp.makeParent([ob_end], 1, 0) # ojbs, noninverse, 1 = not fast. + ob_end.loc= bvh_node.rest_tail_local + + + # Animate the data, the last used bvh_node will do since they all have the same number of frames + for current_frame in range(len(bvh_node.anim_data)): + Blender.Set('curframe', current_frame+IMPORT_START_FRAME) + + for bvh_node in bvh_nodes.values(): + lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame] + + rest_head_local= bvh_node.rest_head_local + bvh_node.temp.loc= rest_head_local.x+lx, rest_head_local.y+ly, rest_head_local.z+lz + + bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD + + bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) + + scn.update(1) + return objects + + + +def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP= False): + + if IMPORT_START_FRAME<1: + IMPORT_START_FRAME= 1 + + + # Add the new armature, + scn = context.scene +#XXX scn.objects.selected = [] + for ob in scn.objects: + ob.selected = False + + +#XXX arm_data= bpy.data.armatures.new() +#XXX arm_ob = scn.objects.new(arm_data) + bpy.ops.object.armature_add() + arm_ob= scn.objects[-1] + arm_data= arm_ob.data + + + + +#XXX scn.objects.context = [arm_ob] +#XXX scn.objects.active = arm_ob + arm_ob.selected= True + scn.objects.active= arm_ob + print(scn.objects.active) + + + # Put us into editmode +#XXX arm_data.makeEditable() + + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + bpy.ops.object.mode_set(mode='EDIT', toggle=False) + + + + # Get the average bone length for zero length bones, we may not use this. + average_bone_length= 0.0 + nonzero_count= 0 + for bvh_node in bvh_nodes.values(): + l= (bvh_node.rest_head_local-bvh_node.rest_tail_local).length + if l: + average_bone_length+= l + nonzero_count+=1 + + # Very rare cases all bones couldbe zero length??? + if not average_bone_length: + average_bone_length = 0.1 + else: + # Normal operation + average_bone_length = average_bone_length/nonzero_count + + +#XXX - sloppy operator code + + bpy.ops.armature.delete() + bpy.ops.armature.select_all_toggle() + bpy.ops.armature.delete() + + ZERO_AREA_BONES= [] + for name, bvh_node in bvh_nodes.items(): + # New editbone + bpy.ops.armature.bone_primitive_add(name="Bone") + +#XXX bone= bvh_node.temp= Blender.Armature.Editbone() + bone= bvh_node.temp= arm_data.edit_bones[-1] + + bone.name= name +# arm_data.bones[name]= bone + + bone.head= bvh_node.rest_head_world + bone.tail= bvh_node.rest_tail_world + + # ZERO AREA BONES. + if (bone.head-bone.tail).length < 0.001: + if bvh_node.parent: + ofs= bvh_node.parent.rest_head_local- bvh_node.parent.rest_tail_local + if ofs.length: # is our parent zero length also?? unlikely + bone.tail= bone.tail+ofs + else: + bone.tail.y= bone.tail.y+average_bone_length + else: + bone.tail.y= bone.tail.y+average_bone_length + + ZERO_AREA_BONES.append(bone.name) + + + for bvh_node in bvh_nodes.values(): + if bvh_node.parent: + # bvh_node.temp is the Editbone + + # Set the bone parent + bvh_node.temp.parent= bvh_node.parent.temp + + # Set the connection state + if not bvh_node.has_loc and\ + bvh_node.parent and\ + bvh_node.parent.temp.name not in ZERO_AREA_BONES and\ + bvh_node.parent.rest_tail_local == bvh_node.rest_head_local: + bvh_node.temp.connected= True + + # Replace the editbone with the editbone name, + # to avoid memory errors accessing the editbone outside editmode + for bvh_node in bvh_nodes.values(): + bvh_node.temp= bvh_node.temp.name + +#XXX arm_data.update() + + # Now Apply the animation to the armature + + # Get armature animation data + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + bpy.ops.object.mode_set(mode='POSE', toggle=False) + + pose= arm_ob.pose + pose_bones= pose.pose_channels + + + if ROT_STYLE=='NATIVE': + eul_order_lookup = {\ + (0,1,2):'XYZ', + (0,2,1):'XZY', + (1,0,2):'YXZ', + (1,2,0):'YZX', + (2,0,1):'ZXY', + (2,1,0):'ZYZ' + } + + for bvh_node in bvh_nodes.values(): + bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. + pose_bone= pose_bones[bone_name] + pose_bone.rotation_mode = eul_order_lookup[tuple(bvh_node.rot_order)] + + elif ROT_STYLE=='XYZ': + for pose_bone in pose_bones: + pose_bone.rotation_mode = 'XYZ' + else: + # Quats default + pass + + + bpy.ops.pose.select_all_toggle() # set + bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + + + + + + #for p in pose_bones: + # print(p) + + +#XXX action = Blender.Armature.NLA.NewAction("Action") +#XXX action.setActive(arm_ob) + + #bpy.ops.act.new() + #action = bpy.data.actions[-1] + + # arm_ob.animation_data.action = action + action = arm_ob.animation_data.action + + + + + #xformConstants= [ Blender.Object.Pose.LOC, Blender.Object.Pose.ROT ] + + # Replace the bvh_node.temp (currently an editbone) + # With a tuple (pose_bone, armature_bone, bone_rest_matrix, bone_rest_matrix_inv) + for bvh_node in bvh_nodes.values(): + bone_name= bvh_node.temp # may not be the same name as the bvh_node, could have been shortened. + pose_bone= pose_bones[bone_name] + rest_bone= arm_data.bones[bone_name] +#XXX bone_rest_matrix = rest_bone.matrix['ARMATURESPACE'].rotationPart() + bone_rest_matrix = rest_bone.matrix.rotationPart() + + + bone_rest_matrix_inv= Matrix(bone_rest_matrix) + bone_rest_matrix_inv.invert() + + bone_rest_matrix_inv.resize4x4() + bone_rest_matrix.resize4x4() + bvh_node.temp= (pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv) + + + # Make a dict for fast access without rebuilding a list all the time. + ''' + xformConstants_dict={ + (True,True): [Blender.Object.Pose.LOC, Blender.Object.Pose.ROT],\ + (False,True): [Blender.Object.Pose.ROT],\ + (True,False): [Blender.Object.Pose.LOC],\ + (False,False): [],\ + } + ''' + + # KEYFRAME METHOD, SLOW, USE IPOS DIRECT + + # Animate the data, the last used bvh_node will do since they all have the same number of frames + for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame) + # print current_frame + + #if current_frame==150: # debugging + # break + + # Dont neet to set the current frame + for bvh_node in bvh_nodes.values(): + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + lx,ly,lz,rx,ry,rz= bvh_node.anim_data[current_frame+1] + + if bvh_node.has_rot: + + if ROT_STYLE=='QUAT': + # Set the rotation, not so simple + bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() + + bone_rotation_matrix.resize4x4() + #XXX ORDER CHANGE??? + #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() # ORIGINAL + # pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() + # pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix).toQuat() # BAD + # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD + # pose_bone.rotation_quaternion= bone_rotation_matrix.toQuat() # NOT GOOD + + #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix_inv * bone_rest_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rest_matrix * bone_rotation_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat() + + #pose_bone.rotation_quaternion= ( bone_rest_matrix* bone_rest_matrix_inv * bone_rotation_matrix).toQuat() + #pose_bone.rotation_quaternion= (bone_rotation_matrix * bone_rest_matrix * bone_rest_matrix_inv).toQuat() + #pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix ).toQuat() + + pose_bone.rotation_quaternion= (bone_rest_matrix_inv * bone_rotation_matrix * bone_rest_matrix).toQuat() + + else: + bone_rotation_matrix= Euler(math.radians(rx), math.radians(ry), math.radians(rz)).toMatrix() + bone_rotation_matrix.resize4x4() + + eul= (bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toEuler() + + #pose_bone.rotation_euler = math.radians(rx), math.radians(ry), math.radians(rz) + pose_bone.rotation_euler = eul + + print("ROTATION" + str(Euler(math.radians(rx), math.radians(ry), math.radians(rz)))) + + if bvh_node.has_loc: + # Set the Location, simple too + + #XXX ORDER CHANGE + # pose_bone.location= (TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local ) * bone_rest_matrix_inv).translationPart() # WHY * 10? - just how pose works + # pose_bone.location= (bone_rest_matrix_inv * TranslationMatrix(Vector(lx, ly, lz) - bvh_node.rest_head_local )).translationPart() + # pose_bone.location= lx, ly, lz + pose_bone.location= Vector(lx, ly, lz) - bvh_node.rest_head_local + + +#XXX # TODO- add in 2.5 + if 0: + # Get the transform + xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] + + if xformConstants: + # Insert the keyframe from the loc/quat + pose_bone.insertKey(arm_ob, current_frame+IMPORT_START_FRAME, xformConstants, True ) + else: + + if bvh_node.has_loc: + pose_bone.keyframe_insert("location") + if bvh_node.has_rot: + if ROT_STYLE=='QUAT': + pose_bone.keyframe_insert("rotation_quaternion") + else: + pose_bone.keyframe_insert("rotation_euler") + + + + # bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ??? + bpy.ops.screen.frame_offset(delta=1) + + # First time, set the IPO's to linear +#XXX #TODO + if 0: + if current_frame==0: + for ipo in action.getAllChannelIpos().values(): + if ipo: + for cur in ipo: + cur.interpolation = Blender.IpoCurve.InterpTypes.LINEAR + if IMPORT_LOOP: + cur.extend = Blender.IpoCurve.ExtendTypes.CYCLIC + + + else: + for cu in action.fcurves: + for bez in cu.keyframe_points: + bez.interpolation = 'CONSTANT' + + # END KEYFRAME METHOD + + + """ + # IPO KEYFRAME SETTING + # Add in the IPOs by adding keyframes, AFAIK theres no way to add IPOs to an action so I do this :/ + for bvh_node in bvh_nodes.values(): + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + + # Get the transform + xformConstants= xformConstants_dict[bvh_node.has_loc, bvh_node.has_rot] + if xformConstants: + pose_bone.loc[:]= 0,0,0 + pose_bone.quat[:]= 0,0,1,0 + # Insert the keyframe from the loc/quat + pose_bone.insertKey(arm_ob, IMPORT_START_FRAME, xformConstants) + + + action_ipos= action.getAllChannelIpos() + + + for bvh_node in bvh_nodes.values(): + has_loc= bvh_node.has_loc + has_rot= bvh_node.has_rot + + if not has_rot and not has_loc: + # No animation data + continue + + ipo= action_ipos[bvh_node.temp[0].name] # posebones name as key + + if has_loc: + curve_xloc= ipo[Blender.Ipo.PO_LOCX] + curve_yloc= ipo[Blender.Ipo.PO_LOCY] + curve_zloc= ipo[Blender.Ipo.PO_LOCZ] + + curve_xloc.interpolation= \ + curve_yloc.interpolation= \ + curve_zloc.interpolation= \ + Blender.IpoCurve.InterpTypes.LINEAR + + + if has_rot: + curve_wquat= ipo[Blender.Ipo.PO_QUATW] + curve_xquat= ipo[Blender.Ipo.PO_QUATX] + curve_yquat= ipo[Blender.Ipo.PO_QUATY] + curve_zquat= ipo[Blender.Ipo.PO_QUATZ] + + curve_wquat.interpolation= \ + curve_xquat.interpolation= \ + curve_yquat.interpolation= \ + curve_zquat.interpolation= \ + Blender.IpoCurve.InterpTypes.LINEAR + + # Get the bone + pose_bone, bone, bone_rest_matrix, bone_rest_matrix_inv= bvh_node.temp + + + def pose_rot(anim_data): + bone_rotation_matrix= Euler(anim_data[3], anim_data[4], anim_data[5]).toMatrix() + bone_rotation_matrix.resize4x4() + return tuple((bone_rest_matrix * bone_rotation_matrix * bone_rest_matrix_inv).toQuat()) # qw,qx,qy,qz + + def pose_loc(anim_data): + return tuple((TranslationMatrix(Vector(anim_data[0], anim_data[1], anim_data[2])) * bone_rest_matrix_inv).translationPart()) + + + last_frame= len(bvh_node.anim_data)+IMPORT_START_FRAME-1 + + if has_loc: + pose_locations= [pose_loc(anim_key) for anim_key in bvh_node.anim_data] + + # Add the start at the end, we know the start is just 0,0,0 anyway + curve_xloc.append((last_frame, pose_locations[-1][0])) + curve_yloc.append((last_frame, pose_locations[-1][1])) + curve_zloc.append((last_frame, pose_locations[-1][2])) + + if len(pose_locations) > 1: + ox,oy,oz= pose_locations[0] + x,y,z= pose_locations[1] + + for i in range(1, len(pose_locations)-1): # from second frame to second last frame + + nx,ny,nz= pose_locations[i+1] + xset= yset= zset= True # we set all these by default + if abs((ox+nx)/2 - x) < 0.00001: xset= False + if abs((oy+ny)/2 - y) < 0.00001: yset= False + if abs((oz+nz)/2 - z) < 0.00001: zset= False + + if xset: curve_xloc.append((i+IMPORT_START_FRAME, x)) + if yset: curve_yloc.append((i+IMPORT_START_FRAME, y)) + if zset: curve_zloc.append((i+IMPORT_START_FRAME, z)) + + # Set the old and use the new + ox,oy,oz= x,y,z + x,y,z= nx,ny,nz + + + if has_rot: + pose_rotations= [pose_rot(anim_key) for anim_key in bvh_node.anim_data] + + # Add the start at the end, we know the start is just 0,0,0 anyway + curve_wquat.append((last_frame, pose_rotations[-1][0])) + curve_xquat.append((last_frame, pose_rotations[-1][1])) + curve_yquat.append((last_frame, pose_rotations[-1][2])) + curve_zquat.append((last_frame, pose_rotations[-1][3])) + + + if len(pose_rotations) > 1: + ow,ox,oy,oz= pose_rotations[0] + w,x,y,z= pose_rotations[1] + + for i in range(1, len(pose_rotations)-1): # from second frame to second last frame + + nw, nx,ny,nz= pose_rotations[i+1] + wset= xset= yset= zset= True # we set all these by default + if abs((ow+nw)/2 - w) < 0.00001: wset= False + if abs((ox+nx)/2 - x) < 0.00001: xset= False + if abs((oy+ny)/2 - y) < 0.00001: yset= False + if abs((oz+nz)/2 - z) < 0.00001: zset= False + + if wset: curve_wquat.append((i+IMPORT_START_FRAME, w)) + if xset: curve_xquat.append((i+IMPORT_START_FRAME, x)) + if yset: curve_yquat.append((i+IMPORT_START_FRAME, y)) + if zset: curve_zquat.append((i+IMPORT_START_FRAME, z)) + + # Set the old and use the new + ow,ox,oy,oz= w,x,y,z + w,x,y,z= nw,nx,ny,nz + + # IPO KEYFRAME SETTING + """ + +# XXX NOT NEEDED NOW? + # pose.update() + return arm_ob + + +#=============# +# TESTING # +#=============# + +#('/metavr/mocap/bvh/boxer.bvh') +#('/d/staggered_walk.bvh') +#('/metavr/mocap/bvh/dg-306-g.bvh') # Incompleate EOF +#('/metavr/mocap/bvh/wa8lk.bvh') # duplicate joint names, \r line endings. +#('/metavr/mocap/bvh/walk4.bvh') # 0 channels + +''' +import os +DIR = '/metavr/mocap/bvh/' +for f in ('/d/staggered_walk.bvh',): + #for f in os.listdir(DIR)[5:6]: + #for f in os.listdir(DIR): + if f.endswith('.bvh'): + s = Blender.Scene.New(f) + s.makeCurrent() + #file= DIR + f + file= f + print f + bvh_nodes= read_bvh(file, 1.0) + bvh_node_dict2armature(bvh_nodes, 1) +''' + +def load_bvh_ui(context, file, PREF_UI= False): + +#XXX if BPyMessages.Error_NoFile(file): +#XXX return + +#XXX Draw= Blender.Draw + + IMPORT_SCALE = 0.1 + IMPORT_START_FRAME = 1 + IMPORT_AS_ARMATURE = 1 + IMPORT_AS_EMPTIES = 0 + IMPORT_LOOP = 0 + + # Get USER Options + if PREF_UI: + pup_block = [\ + ('As Armature', IMPORT_AS_ARMATURE, 'Imports the BVH as an armature'),\ + ('As Empties', IMPORT_AS_EMPTIES, 'Imports the BVH as empties'),\ + ('Scale: ', IMPORT_SCALE, 0.001, 100.0, 'Scale the BVH, Use 0.01 when 1.0 is 1 metre'),\ + ('Start Frame: ', IMPORT_START_FRAME, 1, 30000, 'Frame to start BVH motion'),\ + ('Loop Animation', IMPORT_LOOP, 'Enable cyclic IPOs'),\ + ] + +#XXX if not Draw.PupBlock('BVH Import...', pup_block): +#XXX return + + # print('Attempting import BVH', file) + + if not IMPORT_AS_ARMATURE and not IMPORT_AS_EMPTIES: + raise('No import option selected') + +#XXX Blender.Window.WaitCursor(1) + # Get the BVH data and act on it. + import time + t1= time.time() + print('\tparsing bvh...', end= "") + bvh_nodes= read_bvh(context, file, IMPORT_SCALE) + print('%.4f' % (time.time()-t1)) + t1= time.time() + print('\timporting to blender...', end="") + if IMPORT_AS_ARMATURE: bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + if IMPORT_AS_EMPTIES: bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME, IMPORT_LOOP) + + print('Done in %.4f\n' % (time.time()-t1)) +#XXX Blender.Window.WaitCursor(0) + +def main(): + Blender.Window.FileSelector(load_bvh_ui, 'Import BVH', '*.bvh') + +from bpy.props import * + +class BvhImporter(bpy.types.Operator): + '''Load a Wavefront OBJ File.''' + bl_idname = "import_anim.bvh" + bl_label = "Import BVH" + + path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + + def execute(self, context): + # print("Selected: " + context.active_object.name) + + read_bvh(context, self.path) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + + +bpy.ops.add(BvhImporter) + + +import dynamic_menu +menu_func = lambda self, context: self.layout.itemO(BvhImporter.bl_idname, text="Motion Capture (.bvh)...") +menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) diff --git a/release/scripts/io/import_3ds.py b/release/scripts/io/import_scene_3ds.py index cbd9d8948ab..cd351ccb99e 100644 --- a/release/scripts/io/import_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -1,3 +1,20 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### __author__= ['Bob Holcomb', 'Richard L?rk?ng', 'Damien McGinnes', 'Campbell Barton', 'Mario Lapin'] __url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/") @@ -122,7 +139,7 @@ import os import time import struct -from import_obj import unpack_face_list, load_image +from import_scene_obj import unpack_face_list, load_image import bpy import Mathutils @@ -1121,22 +1138,22 @@ else: print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME) ''' +from bpy.props import * + -class IMPORT_OT_3ds(bpy.types.Operator): +class IMPORT_OT_autodesk_3ds(bpy.types.Operator): '''Import from 3DS file format (.3ds)''' - __idname__ = "import.3ds" - __label__ = 'Import 3DS' + bl_idname = "import_scene.autodesk_3ds" + bl_label = 'Import 3DS' # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. + + path = StringProperty(name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= ""), - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for importing the 3DS file", maxlen= 1024, default= ""), - -# bpy.props.FloatProperty(attr="size_constraint", name="Size Constraint", description="Scale the model by 10 until it reacehs the size constraint. Zero Disables.", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=10.0), -# bpy.props.BoolProperty(attr="search_images", name="Image Search", description="Search subdirectories for any assosiated images (Warning, may be slow)", default=True), -# bpy.props.BoolProperty(attr="apply_matrix", name="Transform Fix", description="Workaround for object transformations importing incorrectly", default=False), - ] +# size_constraint = FloatProperty(name="Size Constraint", description="Scale the model by 10 until it reacehs the size constraint. Zero Disables.", min=0.0, max=1000.0, soft_min=0.0, soft_max=1000.0, default=10.0), +# search_images = BoolProperty(name="Image Search", description="Search subdirectories for any assosiated images (Warning, may be slow)", default=True), +# apply_matrix = BoolProperty(name="Transform Fix", description="Workaround for object transformations importing incorrectly", default=False), def execute(self, context): load_3ds(self.path, context, 0.0, False, False) @@ -1144,13 +1161,13 @@ class IMPORT_OT_3ds(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) -bpy.ops.add(IMPORT_OT_3ds) +bpy.ops.add(IMPORT_OT_autodesk_3ds) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("import.3ds", text="3D Studio (.3ds)...") +menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) # NOTES: diff --git a/release/scripts/io/import_obj.py b/release/scripts/io/import_scene_obj.py index a557e4427d8..d1b29a3024d 100644 --- a/release/scripts/io/import_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -1,3 +1,20 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### __author__= "Campbell Barton", "Jiri Hnidek", "Paolo Ciccone" __url__= ['http://wiki.blender.org/index.php/Scripts/Manual/Import/wavefront_obj', 'blender.org', 'blenderartists.org'] @@ -1553,31 +1570,33 @@ else: print 'TOTAL TIME: %.6f' % (sys.time() - TIME) ''' +from bpy.props import * + class IMPORT_OT_obj(bpy.types.Operator): '''Load a Wavefront OBJ File.''' - __idname__ = "import.obj" - __label__ = "Import OBJ" + bl_idname = "import_scene.obj" + bl_label = "Import OBJ" # List of operator properties, the attributes will be assigned # to the class instance from the operator settings before calling. - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= ""), - - bpy.props.BoolProperty(attr="CREATE_SMOOTH_GROUPS", name="Smooth Groups", description="Surround smooth groups by sharp edges", default= True), - bpy.props.BoolProperty(attr="CREATE_FGONS", name="NGons as FGons", description="Import faces with more then 4 verts as fgons", default= True), - bpy.props.BoolProperty(attr="CREATE_EDGES", name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True), - bpy.props.BoolProperty(attr="SPLIT_OBJECTS", name="Object", description="Import OBJ Objects into Blender Objects", default= True), - bpy.props.BoolProperty(attr="SPLIT_GROUPS", name="Group", description="Import OBJ Groups into Blender Objects", default= True), - bpy.props.BoolProperty(attr="SPLIT_MATERIALS", name="Material", description="Import each material into a seperate mesh (Avoids > 16 per mesh error)", default= True), - # old comment: only used for user feedback - # disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj - # bpy.props.BoolProperty(attr="KEEP_VERT_ORDER", name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True), - bpy.props.BoolProperty(attr="ROTATE_X90", name="-X90", description="Rotate X 90.", default= True), - bpy.props.FloatProperty(attr="CLAMP_SIZE", name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.01, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0), - bpy.props.BoolProperty(attr="POLYGROUPS", name="Poly Groups", description="Import OBJ groups as vertex groups.", default= True), - bpy.props.BoolProperty(attr="IMAGE_SEARCH", name="Image Search", description="Search subdirs for any assosiated images (Warning, may be slow)", default= True), - ] + + path = StringProperty(name="File Path", description="File path used for importing the OBJ file", maxlen= 1024, default= "") + + CREATE_SMOOTH_GROUPS = BoolProperty(name="Smooth Groups", description="Surround smooth groups by sharp edges", default= True) + CREATE_FGONS = BoolProperty(name="NGons as FGons", description="Import faces with more then 4 verts as fgons", default= True) + CREATE_EDGES = BoolProperty(name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True) + SPLIT_OBJECTS = BoolProperty(name="Object", description="Import OBJ Objects into Blender Objects", default= True) + SPLIT_GROUPS = BoolProperty(name="Group", description="Import OBJ Groups into Blender Objects", default= True) + SPLIT_MATERIALS = BoolProperty(name="Material", description="Import each material into a seperate mesh (Avoids > 16 per mesh error)", default= True) + # old comment: only used for user feedback + # disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj + # KEEP_VERT_ORDER = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True) + ROTATE_X90 = BoolProperty(name="-X90", description="Rotate X 90.", default= True) + CLAMP_SIZE = FloatProperty(name="Clamp Scale", description="Clamp the size to this maximum (Zero to Disable)", min=0.01, max=1000.0, soft_min=0.0, soft_max=1000.0, default=0.0) + POLYGROUPS = BoolProperty(name="Poly Groups", description="Import OBJ groups as vertex groups.", default= True) + IMAGE_SEARCH = BoolProperty(name="Image Search", description="Search subdirs for any assosiated images (Warning, may be slow)", default= True) + def execute(self, context): # print("Selected: " + context.active_object.name) @@ -1599,7 +1618,7 @@ class IMPORT_OT_obj(bpy.types.Operator): def invoke(self, context, event): wm = context.manager - wm.add_fileselect(self.__operator__) + wm.add_fileselect(self) return ('RUNNING_MODAL',) @@ -1607,7 +1626,7 @@ bpy.ops.add(IMPORT_OT_obj) import dynamic_menu -menu_func = lambda self, context: self.layout.itemO("import.obj", text="Wavefront (.obj)...") +menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...") menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func) diff --git a/release/scripts/io/netrender/__init__.py b/release/scripts/io/netrender/__init__.py index 4a1dd2238e3..be3d25d83fe 100644 --- a/release/scripts/io/netrender/__init__.py +++ b/release/scripts/io/netrender/__init__.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + # This directory is a Python package. import model @@ -14,6 +32,7 @@ import ui import bpy -bpy.data.netrender_jobs = [] -bpy.data.netrender_slaves = [] -bpy.data.netrender_blacklist = []
\ No newline at end of file +bpy.netrender_jobs = [] +bpy.netrender_slaves = [] +bpy.netrender_blacklist = [] + diff --git a/release/scripts/io/netrender/balancing.py b/release/scripts/io/netrender/balancing.py index 637dd5ff92e..f093815d8a8 100644 --- a/release/scripts/io/netrender/balancing.py +++ b/release/scripts/io/netrender/balancing.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import time from netrender.utils import * diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py index d4a7b242cab..52643af7d73 100644 --- a/release/scripts/io/netrender/client.py +++ b/release/scripts/io/netrender/client.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy import sys, os, re import http, http.client, http.server, urllib @@ -28,7 +46,7 @@ def addPointCache(job, ob, point_cache, default_path): if name == "": name = "".join(["%02X" % ord(c) for c in ob.name]) - cache_path = bpy.sys.expandpath(point_cache.filepath) if point_cache.external else default_path + cache_path = bpy.utils.expandpath(point_cache.filepath) if point_cache.external else default_path index = "%02i" % point_cache.index @@ -93,14 +111,14 @@ def clientSendJob(conn, scene, anim = False): # LIBRARIES ########################### for lib in bpy.data.libraries: - job.addFile(bpy.sys.expandpath(lib_path)) + job.addFile(bpy.utils.expandpath(lib_path)) ########################### # IMAGES ########################### for image in bpy.data.images: if image.source == "FILE" and not image.packed_file: - job.addFile(bpy.sys.expandpath(image.filename)) + job.addFile(bpy.utils.expandpath(image.filename)) ########################### # FLUID + POINT CACHE @@ -111,7 +129,7 @@ def clientSendJob(conn, scene, anim = False): for object in bpy.data.objects: for modifier in object.modifiers: if modifier.type == 'FLUID_SIMULATION' and modifier.settings.type == "DOMAIN": - addFluidFiles(job, bpy.sys.expandpath(modifier.settings.path)) + addFluidFiles(job, bpy.utils.expandpath(modifier.settings.path)) elif modifier.type == "CLOTH": addPointCache(job, object, modifier.point_cache, default_path) elif modifier.type == "SOFT_BODY": @@ -159,8 +177,8 @@ def requestResult(conn, job_id, frame): @rnaType class NetworkRenderEngine(bpy.types.RenderEngine): - __idname__ = 'NET_RENDER' - __label__ = "Network Render" + bl_idname = 'NET_RENDER' + bl_label = "Network Render" def render(self, scene): if scene.network_render.mode == "RENDER_CLIENT": self.render_client(scene) @@ -235,3 +253,15 @@ class NetworkRenderEngine(bpy.types.RenderEngine): conn.close() +def compatible(module): + exec("import " + module) + module = eval(module) + for member in dir(module): + subclass = getattr(module, member) + try: subclass.COMPAT_ENGINES.add('NET_RENDER') + except: pass + del module + +compatible("properties_render") +compatible("properties_world") +compatible("properties_material") diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 1c83e758ce5..7abca023e50 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import sys, os import http, http.client, http.server, urllib, socket import subprocess, shutil, time, hashlib diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 545659e8dc4..2fc6cd66f93 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import re from netrender.utils import * diff --git a/release/scripts/io/netrender/model.py b/release/scripts/io/netrender/model.py index bef6f0e68af..cf13fe1e1fa 100644 --- a/release/scripts/io/netrender/model.py +++ b/release/scripts/io/netrender/model.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import sys, os import http, http.client, http.server, urllib import subprocess, shutil, time, hashlib diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py index e46b0c7b888..8f727ca96b3 100644 --- a/release/scripts/io/netrender/operators.py +++ b/release/scripts/io/netrender/operators.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy import sys, os import http, http.client, http.server, urllib, socket @@ -10,13 +28,8 @@ import netrender.model @rnaOperator class RENDER_OT_netclientanim(bpy.types.Operator): '''Start rendering an animation on network''' - __idname__ = "render.netclientanim" - __label__ = "Animation on network" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientanim" + bl_label = "Animation on network" def poll(self, context): return True @@ -41,13 +54,8 @@ class RENDER_OT_netclientanim(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientsend(bpy.types.Operator): '''Send Render Job to the Network''' - __idname__ = "render.netclientsend" - __label__ = "Send job" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientsend" + bl_label = "Send job" def poll(self, context): return True @@ -70,13 +78,8 @@ class RENDER_OT_netclientsend(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientstatus(bpy.types.Operator): '''Refresh the status of the current jobs''' - __idname__ = "render.netclientstatus" - __label__ = "Client Status" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientstatus" + bl_label = "Client Status" def poll(self, context): return True @@ -96,10 +99,10 @@ class RENDER_OT_netclientstatus(bpy.types.Operator): while(len(netsettings.jobs) > 0): netsettings.jobs.remove(0) - bpy.data.netrender_jobs = [] + bpy.netrender_jobs = [] for j in jobs: - bpy.data.netrender_jobs.append(j) + bpy.netrender_jobs.append(j) netsettings.jobs.add() job = netsettings.jobs[-1] @@ -115,13 +118,8 @@ class RENDER_OT_netclientstatus(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientblacklistslave(bpy.types.Operator): '''Operator documentation text, will be used for the operator tooltip and python docs.''' - __idname__ = "render.netclientblacklistslave" - __label__ = "Client Blacklist Slave" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientblacklistslave" + bl_label = "Client Blacklist Slave" def poll(self, context): return True @@ -132,8 +130,8 @@ class RENDER_OT_netclientblacklistslave(bpy.types.Operator): if netsettings.active_slave_index >= 0: # deal with data - slave = bpy.data.netrender_slaves.pop(netsettings.active_slave_index) - bpy.data.netrender_blacklist.append(slave) + slave = bpy.netrender_slaves.pop(netsettings.active_slave_index) + bpy.netrender_blacklist.append(slave) # deal with rna netsettings.slaves_blacklist.add() @@ -150,13 +148,8 @@ class RENDER_OT_netclientblacklistslave(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientwhitelistslave(bpy.types.Operator): '''Operator documentation text, will be used for the operator tooltip and python docs.''' - __idname__ = "render.netclientwhitelistslave" - __label__ = "Client Whitelist Slave" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientwhitelistslave" + bl_label = "Client Whitelist Slave" def poll(self, context): return True @@ -167,8 +160,8 @@ class RENDER_OT_netclientwhitelistslave(bpy.types.Operator): if netsettings.active_blacklisted_slave_index >= 0: # deal with data - slave = bpy.data.netrender_blacklist.pop(netsettings.active_blacklisted_slave_index) - bpy.data.netrender_slaves.append(slave) + slave = bpy.netrender_blacklist.pop(netsettings.active_blacklisted_slave_index) + bpy.netrender_slaves.append(slave) # deal with rna netsettings.slaves.add() @@ -186,13 +179,8 @@ class RENDER_OT_netclientwhitelistslave(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientslaves(bpy.types.Operator): '''Refresh status about available Render slaves''' - __idname__ = "render.netclientslaves" - __label__ = "Client Slaves" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientslaves" + bl_label = "Client Slaves" def poll(self, context): return True @@ -212,17 +200,17 @@ class RENDER_OT_netclientslaves(bpy.types.Operator): while(len(netsettings.slaves) > 0): netsettings.slaves.remove(0) - bpy.data.netrender_slaves = [] + bpy.netrender_slaves = [] for s in slaves: - for i in range(len(bpy.data.netrender_blacklist)): - slave = bpy.data.netrender_blacklist[i] + for i in range(len(bpy.netrender_blacklist)): + slave = bpy.netrender_blacklist[i] if slave.id == s.id: - bpy.data.netrender_blacklist[i] = s + bpy.netrender_blacklist[i] = s netsettings.slaves_blacklist[i].name = s.name break else: - bpy.data.netrender_slaves.append(s) + bpy.netrender_slaves.append(s) netsettings.slaves.add() slave = netsettings.slaves[-1] @@ -236,13 +224,8 @@ class RENDER_OT_netclientslaves(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientcancel(bpy.types.Operator): '''Cancel the selected network rendering job.''' - __idname__ = "render.netclientcancel" - __label__ = "Client Cancel" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientcancel" + bl_label = "Client Cancel" def poll(self, context): netsettings = context.scene.network_render @@ -253,7 +236,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator): conn = clientConnection(context.scene) if conn: - job = bpy.data.netrender_jobs[netsettings.active_job_index] + job = bpy.netrender_jobs[netsettings.active_job_index] conn.request("POST", "/cancel", headers={"job-id":job.id}) @@ -270,13 +253,8 @@ class RENDER_OT_netclientcancel(bpy.types.Operator): @rnaOperator class RENDER_OT_netclientcancelall(bpy.types.Operator): '''Cancel all running network rendering jobs.''' - __idname__ = "render.netclientcancelall" - __label__ = "Client Cancel All" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientcancelall" + bl_label = "Client Cancel All" def poll(self, context): return True @@ -302,13 +280,8 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator): @rnaOperator class netclientdownload(bpy.types.Operator): '''Download render results from the network''' - __idname__ = "render.netclientdownload" - __label__ = "Client Download" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientdownload" + bl_label = "Client Download" def poll(self, context): netsettings = context.scene.network_render @@ -321,7 +294,7 @@ class netclientdownload(bpy.types.Operator): conn = clientConnection(context.scene) if conn: - job = bpy.data.netrender_jobs[netsettings.active_job_index] + job = bpy.netrender_jobs[netsettings.active_job_index] for frame in job.frames: client.requestResult(conn, job.id, frame.number) @@ -352,13 +325,8 @@ class netclientdownload(bpy.types.Operator): @rnaOperator class netclientscan(bpy.types.Operator): '''Operator documentation text, will be used for the operator tooltip and python docs.''' - __idname__ = "render.netclientscan" - __label__ = "Client Scan" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientscan" + bl_label = "Client Scan" def poll(self, context): return True @@ -390,13 +358,8 @@ class netclientscan(bpy.types.Operator): @rnaOperator class netclientweb(bpy.types.Operator): '''Open new window with information about running rendering jobs''' - __idname__ = "render.netclientweb" - __label__ = "Open Master Monitor" - - # List of operator properties, the attributes will be assigned - # to the class instance from the operator settings before calling. - - __props__ = [] + bl_idname = "render.netclientweb" + bl_label = "Open Master Monitor" def poll(self, context): return True diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py index 15ca6faf297..882af76202b 100644 --- a/release/scripts/io/netrender/slave.py +++ b/release/scripts/io/netrender/slave.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import sys, os, platform import http, http.client, http.server, urllib import subprocess, time diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py index 7d7f3c29630..df75c175cae 100644 --- a/release/scripts/io/netrender/ui.py +++ b/release/scripts/io/netrender/ui.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy import sys, os import http, http.client, http.server, urllib @@ -18,9 +36,9 @@ DONE = 2 ERROR = 3 class RenderButtonsPanel(bpy.types.Panel): - __space_type__ = "PROPERTIES" - __region_type__ = "WINDOW" - __context__ = "render" + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "render" # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here def poll(self, context): @@ -30,7 +48,7 @@ class RenderButtonsPanel(bpy.types.Panel): # Setting panel, use in the scene for now. @rnaType class RENDER_PT_network_settings(RenderButtonsPanel): - __label__ = "Network Settings" + bl_label = "Network Settings" COMPAT_ENGINES = set(['NET_RENDER']) def draw(self, context): @@ -56,7 +74,7 @@ class RENDER_PT_network_settings(RenderButtonsPanel): @rnaType class RENDER_PT_network_job(RenderButtonsPanel): - __label__ = "Job Settings" + bl_label = "Job Settings" COMPAT_ENGINES = set(['NET_RENDER']) def poll(self, context): @@ -84,7 +102,7 @@ class RENDER_PT_network_job(RenderButtonsPanel): @rnaType class RENDER_PT_network_slaves(RenderButtonsPanel): - __label__ = "Slaves Status" + bl_label = "Slaves Status" COMPAT_ENGINES = set(['NET_RENDER']) def poll(self, context): @@ -104,14 +122,14 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): sub.itemO("render.netclientslaves", icon="ICON_FILE_REFRESH", text="") sub.itemO("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="") - if len(bpy.data.netrender_slaves) == 0 and len(netsettings.slaves) > 0: + if len(bpy.netrender_slaves) == 0 and len(netsettings.slaves) > 0: while(len(netsettings.slaves) > 0): netsettings.slaves.remove(0) if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0: layout.itemS() - slave = bpy.data.netrender_slaves[netsettings.active_slave_index] + slave = bpy.netrender_slaves[netsettings.active_slave_index] layout.itemL(text="Name: " + slave.name) layout.itemL(text="Address: " + slave.address[0]) @@ -120,7 +138,7 @@ class RENDER_PT_network_slaves(RenderButtonsPanel): @rnaType class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): - __label__ = "Slaves Blacklist" + bl_label = "Slaves Blacklist" COMPAT_ENGINES = set(['NET_RENDER']) def poll(self, context): @@ -139,14 +157,14 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): sub = row.column(align=True) sub.itemO("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="") - if len(bpy.data.netrender_blacklist) == 0 and len(netsettings.slaves_blacklist) > 0: + if len(bpy.netrender_blacklist) == 0 and len(netsettings.slaves_blacklist) > 0: while(len(netsettings.slaves_blacklist) > 0): netsettings.slaves_blacklist.remove(0) if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0: layout.itemS() - slave = bpy.data.netrender_blacklist[netsettings.active_blacklisted_slave_index] + slave = bpy.netrender_blacklist[netsettings.active_blacklisted_slave_index] layout.itemL(text="Name: " + slave.name) layout.itemL(text="Address: " + slave.address[0]) @@ -155,7 +173,7 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel): @rnaType class RENDER_PT_network_jobs(RenderButtonsPanel): - __label__ = "Jobs" + bl_label = "Jobs" COMPAT_ENGINES = set(['NET_RENDER']) def poll(self, context): @@ -177,14 +195,14 @@ class RENDER_PT_network_jobs(RenderButtonsPanel): sub.itemO("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="") sub.itemO("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="") - if len(bpy.data.netrender_jobs) == 0 and len(netsettings.jobs) > 0: + if len(bpy.netrender_jobs) == 0 and len(netsettings.jobs) > 0: while(len(netsettings.jobs) > 0): netsettings.jobs.remove(0) if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0: layout.itemS() - job = bpy.data.netrender_jobs[netsettings.active_job_index] + job = bpy.netrender_jobs[netsettings.active_job_index] layout.itemL(text="Name: %s" % job.name) layout.itemL(text="Length: %04i" % len(job)) diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index b10648b8d62..a16043dd3cb 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy import sys, os import re diff --git a/release/scripts/modules/autocomplete.py b/release/scripts/modules/autocomplete.py deleted file mode 100644 index 9dd489a178e..00000000000 --- a/release/scripts/modules/autocomplete.py +++ /dev/null @@ -1,211 +0,0 @@ - - -def execute(bcon): - ''' - This function has been taken from a BGE console autocomp I wrote a while ago - the dictionaty bcon is not needed but it means I can copy and paste from the old func - which works ok for now. - - 'bcon' dictionary keys, set by the caller - * 'cursor' - index of the editing character (int) - * 'edit_text' - text string for editing (string) - * 'scrollback' - text to add to the scrollback, options are added here. (text) - * 'namespace' - namespace, (dictionary) - - ''' - - - def is_delimiter(ch): - ''' - For skipping words - ''' - if ch == '_': - return False - if ch.isalnum(): - return False - - return True - - def is_delimiter_autocomp(ch): - ''' - When autocompleteing will earch back and - ''' - if ch in '._[] "\'': - return False - if ch.isalnum(): - return False - - return True - - - def do_autocomp(autocomp_prefix, autocomp_members): - ''' - return text to insert and a list of options - ''' - autocomp_members = [v for v in autocomp_members if v.startswith(autocomp_prefix)] - - print("AUTO: '%s'" % autocomp_prefix) - print("MEMBERS: '%s'" % str(autocomp_members)) - - if not autocomp_prefix: - return '', autocomp_members - elif len(autocomp_members) > 1: - # find a common string between all members after the prefix - # 'ge' [getA, getB, getC] --> 'get' - - # get the shortest member - min_len = min([len(v) for v in autocomp_members]) - - autocomp_prefix_ret = '' - - for i in range(len(autocomp_prefix), min_len): - char_soup = set() - for v in autocomp_members: - char_soup.add(v[i]) - - if len(char_soup) > 1: - break - else: - autocomp_prefix_ret += char_soup.pop() - - return autocomp_prefix_ret, autocomp_members - elif len(autocomp_members) == 1: - if autocomp_prefix == autocomp_members[0]: - # the variable matched the prefix exactly - # add a '.' so you can quickly continue. - # Could try add [] or other possible extensions rather then '.' too if we had the variable. - return '.', [] - else: - # finish off the of the word word - return autocomp_members[0][len(autocomp_prefix):], [] - else: - return '', [] - - - def BCon_PrevChar(bcon): - cursor = bcon['cursor']-1 - if cursor<0: - return None - - try: - return bcon['edit_text'][cursor] - except: - return None - - - def BCon_NextChar(bcon): - try: - return bcon['edit_text'][bcon['cursor']] - except: - return None - - def BCon_cursorLeft(bcon): - bcon['cursor'] -= 1 - if bcon['cursor'] < 0: - bcon['cursor'] = 0 - - def BCon_cursorRight(bcon): - bcon['cursor'] += 1 - if bcon['cursor'] > len(bcon['edit_text']): - bcon['cursor'] = len(bcon['edit_text']) - - def BCon_AddScrollback(bcon, text): - - bcon['scrollback'] = bcon['scrollback'] + text - - - def BCon_cursorInsertChar(bcon, ch): - if bcon['cursor']==0: - bcon['edit_text'] = ch + bcon['edit_text'] - elif bcon['cursor']==len(bcon['edit_text']): - bcon['edit_text'] = bcon['edit_text'] + ch - else: - bcon['edit_text'] = bcon['edit_text'][:bcon['cursor']] + ch + bcon['edit_text'][bcon['cursor']:] - - bcon['cursor'] - if bcon['cursor'] > len(bcon['edit_text']): - bcon['cursor'] = len(bcon['edit_text']) - BCon_cursorRight(bcon) - - - TEMP_NAME = '___tempname___' - - cursor_orig = bcon['cursor'] - - ch = BCon_PrevChar(bcon) - while ch != None and (not is_delimiter(ch)): - ch = BCon_PrevChar(bcon) - BCon_cursorLeft(bcon) - - if ch != None: - BCon_cursorRight(bcon) - - #print (cursor_orig, bcon['cursor']) - - cursor_base = bcon['cursor'] - - autocomp_prefix = bcon['edit_text'][cursor_base:cursor_orig] - - print("PREFIX:'%s'" % autocomp_prefix) - - # Get the previous word - if BCon_PrevChar(bcon)=='.': - BCon_cursorLeft(bcon) - ch = BCon_PrevChar(bcon) - while ch != None and is_delimiter_autocomp(ch)==False: - ch = BCon_PrevChar(bcon) - BCon_cursorLeft(bcon) - - cursor_new = bcon['cursor'] - - if ch != None: - cursor_new+=1 - - pytxt = bcon['edit_text'][cursor_new:cursor_base-1].strip() - print("AUTOCOMP EVAL: '%s'" % pytxt) - #try: - if pytxt: - bcon['console'].runsource(TEMP_NAME + '=' + pytxt, '<input>', 'single') - # print val - else: ##except: - val = None - - try: - val = bcon['namespace'][TEMP_NAME] - del bcon['namespace'][TEMP_NAME] - except: - val = None - - if val: - autocomp_members = dir(val) - - autocomp_prefix_ret, autocomp_members = do_autocomp(autocomp_prefix, autocomp_members) - - bcon['cursor'] = cursor_orig - for v in autocomp_prefix_ret: - BCon_cursorInsertChar(bcon, v) - cursor_orig = bcon['cursor'] - - if autocomp_members: - BCon_AddScrollback(bcon, ', '.join(autocomp_members)) - - del val - - else: - # Autocomp global namespace - autocomp_members = bcon['namespace'].keys() - - if autocomp_prefix: - autocomp_members = [v for v in autocomp_members if v.startswith(autocomp_prefix)] - - autocomp_prefix_ret, autocomp_members = do_autocomp(autocomp_prefix, autocomp_members) - - bcon['cursor'] = cursor_orig - for v in autocomp_prefix_ret: - BCon_cursorInsertChar(bcon, v) - cursor_orig = bcon['cursor'] - - if autocomp_members: - BCon_AddScrollback(bcon, ', '.join(autocomp_members)) - - bcon['cursor'] = cursor_orig
\ No newline at end of file diff --git a/release/scripts/modules/bpy_ext/Mesh.py b/release/scripts/modules/bpy_ext/Mesh.py new file mode 100644 index 00000000000..961ff83cc06 --- /dev/null +++ b/release/scripts/modules/bpy_ext/Mesh.py @@ -0,0 +1,72 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +def ord_ind(i1,i2): + if i1<i2: return i1,i2 + return i2,i1 + +def edge_key(ed): + v1, v2 = tuple(ed.verts) + return ord_ind(v1, v2) + +def face_edge_keys(face): + verts = tuple(face.verts) + if len(verts)==3: + return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0]) + + return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0]) + +def mesh_edge_keys(mesh): + return [edge_key for face in mesh.faces for edge_key in face.edge_keys()] + +def mesh_edge_face_count_dict(mesh, face_edge_keys=None): + + # Optional speedup + if face_edge_keys==None: + face_edge_keys = [face.edge_keys() for face in face_list] + + face_edge_count = {} + for face_keys in face_edge_keys: + for key in face_keys: + try: + face_edge_count[key] += 1 + except: + face_edge_count[key] = 1 + + + return face_edge_count + +def mesh_edge_face_count(mesh, face_edge_keys=None): + edge_face_count_dict = mesh.edge_face_count_dict(face_edge_keys) + return [edge_face_count_dict.get(ed.key(), 0) for ed in mesh.edges] + +import bpy + +# * Edge * +class_obj = bpy.types.MeshEdge +class_obj.key = edge_key + +# * Face * +class_obj = bpy.types.MeshFace +class_obj.edge_keys = face_edge_keys + +# * Mesh * +class_obj = bpy.types.Mesh +class_obj.edge_keys = mesh_edge_keys +class_obj.edge_face_count = mesh_edge_face_count +class_obj.edge_face_count_dict = mesh_edge_face_count_dict diff --git a/release/scripts/modules/bpy_ext/Object.py b/release/scripts/modules/bpy_ext/Object.py new file mode 100644 index 00000000000..59c2ca3ebda --- /dev/null +++ b/release/scripts/modules/bpy_ext/Object.py @@ -0,0 +1,22 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +class_obj = bpy.types.Object + +class_obj.getChildren = lambda self: [child for child in bpy.data.objects if child.parent == self] diff --git a/release/scripts/modules/bpy_ext/__init__.py b/release/scripts/modules/bpy_ext/__init__.py new file mode 100644 index 00000000000..435c545dc75 --- /dev/null +++ b/release/scripts/modules/bpy_ext/__init__.py @@ -0,0 +1,20 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy_ext.Object +import bpy_ext.Mesh diff --git a/release/scripts/modules/bpy_ops.py b/release/scripts/modules/bpy_ops.py index 639b9836b0c..8078816f982 100644 --- a/release/scripts/modules/bpy_ops.py +++ b/release/scripts/modules/bpy_ops.py @@ -1,326 +1,194 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8-80 compliant> + # for slightly faster access -from bpy.__ops__ import add as op_add -from bpy.__ops__ import remove as op_remove -from bpy.__ops__ import dir as op_dir -from bpy.__ops__ import call as op_call -from bpy.__ops__ import as_string as op_as_string -from bpy.__ops__ import get_rna as op_get_rna +from bpy.__ops__ import add as op_add +from bpy.__ops__ import remove as op_remove +from bpy.__ops__ import dir as op_dir +from bpy.__ops__ import call as op_call +from bpy.__ops__ import as_string as op_as_string +from bpy.__ops__ import get_rna as op_get_rna # Keep in sync with WM_types.h context_dict = { - 'INVOKE_DEFAULT':0, - 'INVOKE_REGION_WIN':1, - 'INVOKE_AREA':2, - 'INVOKE_SCREEN':3, - 'EXEC_DEFAULT':4, - 'EXEC_REGION_WIN':5, - 'EXEC_AREA':6, - 'EXEC_SCREEN':7, + 'INVOKE_DEFAULT': 0, + 'INVOKE_REGION_WIN': 1, + 'INVOKE_AREA': 2, + 'INVOKE_SCREEN': 3, + 'EXEC_DEFAULT': 4, + 'EXEC_REGION_WIN': 5, + 'EXEC_AREA': 6, + 'EXEC_SCREEN': 7, } + class bpy_ops(object): - ''' - Fake module like class. - - bpy.ops - ''' - def add(self, pyop): - op_add(pyop) - - def remove(self, pyop): - op_remove(pyop) - - def __getattr__(self, module): - ''' - gets a bpy.ops submodule - ''' - return bpy_ops_submodule(module) - - def __dir__(self): - - submodules = set() - - # add this classes functions - for id_name in dir(self.__class__): - if not id_name.startswith('__'): - submodules.add(id_name) - - for id_name in op_dir(): - id_split = id_name.split('_OT_', 1) - - if len(id_split) == 2: - submodules.add(id_split[0].lower()) - else: - submodules.add(id_split[0]) - - return list(submodules) - - def __repr__(self): - return "<module like class 'bpy.ops'>" + ''' + Fake module like class. + + bpy.ops + ''' + + def __getattr__(self, module): + ''' + gets a bpy.ops submodule + ''' + if module.startswith('__'): + raise AttributeError(module) + return bpy_ops_submodule(module) + + def add(self, pyop): + op_add(pyop) + + def remove(self, pyop): + op_remove(pyop) + + def __dir__(self): + + submodules = set() + + # add this classes functions + for id_name in dir(self.__class__): + if not id_name.startswith('__'): + submodules.add(id_name) + + for id_name in op_dir(): + id_split = id_name.split('_OT_', 1) + + if len(id_split) == 2: + submodules.add(id_split[0].lower()) + else: + submodules.add(id_split[0]) + + return list(submodules) + + def __repr__(self): + return "<module like class 'bpy.ops'>" class bpy_ops_submodule(object): - ''' - Utility class to fake submodules. - - eg. bpy.ops.object - ''' - __keys__ = ('module',) - - def __init__(self, module): - self.module = module - - def __getattr__(self, func): - ''' - gets a bpy.ops.submodule function - ''' - return bpy_ops_submodule_op(self.module, func) - - def __dir__(self): - - functions = set() - - module_upper = self.module.upper() - - for id_name in op_dir(): - id_split = id_name.split('_OT_', 1) - if len(id_split) == 2 and module_upper == id_split[0]: - functions.add(id_split[1]) - - return list(functions) - - def __repr__(self): - return "<module like class 'bpy.ops.%s'>" % self.module + ''' + Utility class to fake submodules. + + eg. bpy.ops.object + ''' + __keys__ = ('module',) + + def __init__(self, module): + self.module = module + + def __getattr__(self, func): + ''' + gets a bpy.ops.submodule function + ''' + if func.startswith('__'): + raise AttributeError(func) + return bpy_ops_submodule_op(self.module, func) + + def __dir__(self): + + functions = set() + + module_upper = self.module.upper() + + for id_name in op_dir(): + id_split = id_name.split('_OT_', 1) + if len(id_split) == 2 and module_upper == id_split[0]: + functions.add(id_split[1]) + + return list(functions) + + def __repr__(self): + return "<module like class 'bpy.ops.%s'>" % self.module + class bpy_ops_submodule_op(object): - ''' - Utility class to fake submodule operators. - - eg. bpy.ops.object.somefunc - ''' - __keys__ = ('module', 'func') - def __init__(self, module, func): - self.module = module - self.func = func - - def idname(self): - # submod.foo -> SUBMOD_OT_foo - return self.module.upper() + '_OT_' + self.func - - def __call__(self, *args, **kw): - - # Get the operator from blender - if len(args) > 1: - raise ValueError("only one argument for the execution context is supported ") - - if args: - try: - context = context_dict[args[0]] - except: - raise ValueError("Expected a single context argument in: " + str(list(context_dict.keys()))) - - return op_call(self.idname(), kw, context) - - else: - return op_call(self.idname(), kw) - - def get_rna(self): - ''' - currently only used for '__rna__' - ''' - return op_get_rna(self.idname()) - - - def __repr__(self): # useful display, repr(op) - return op_as_string(self.idname()) - - def __str__(self): # used for print(...) - return "<function bpy.ops.%s.%s at 0x%x'>" % (self.module, self.func, id(self)) + ''' + Utility class to fake submodule operators. -import bpy -bpy.ops = bpy_ops() + eg. bpy.ops.object.somefunc + ''' + + __keys__ = ('module', 'func') + + + def _get_doc(self): + return op_as_string(self.idname()) + + __doc__ = property(_get_doc) + + def __init__(self, module, func): + self.module = module + self.func = func + + def idname(self): + # submod.foo -> SUBMOD_OT_foo + return self.module.upper() + '_OT_' + self.func + + def __call__(self, *args, **kw): + + # Get the operator from blender + if len(args) > 2: + raise ValueError("1 or 2 args execution context is supported") + + C_dict = None + + if args: -# TODO, C macro's cant define settings :| - -class MESH_OT_delete_edgeloop(bpy.types.Operator): - '''Export a single object as a stanford PLY with normals, colours and texture coordinates.''' - __idname__ = "mesh.delete_edgeloop" - __label__ = "Delete Edge Loop" - - def execute(self, context): - bpy.ops.tfm.edge_slide(value=1.0) - bpy.ops.mesh.select_more() - bpy.ops.mesh.remove_doubles() - return ('FINISHED',) - -rna_path_prop = bpy.props.StringProperty(attr="path", name="Context Attributes", description="rna context string", maxlen= 1024, default= "") -rna_reverse_prop = bpy.props.BoolProperty(attr="reverse", name="Reverse", description="Cycle backwards", default= False) - -class NullPathMember: - pass - -def context_path_validate(context, path): - import sys - try: - value = eval("context.%s" % path) - except AttributeError: - if "'NoneType'" in str(sys.exc_info()[1]): - # One of the items in the rna path is None, just ignore this - value = NullPathMember - else: - # We have a real error in the rna path, dont ignore that - raise - - return value - - - -def execute_context_assign(self, context): - if context_path_validate(context, self.path) == NullPathMember: - return ('PASS_THROUGH',) - - exec("context.%s=self.value" % self.path) - return ('FINISHED',) - -class WM_OT_context_set_boolean(bpy.types.Operator): - '''Set a context value.''' - __idname__ = "wm.context_set_boolean" - __label__ = "Context Set" - __props__ = [rna_path_prop, bpy.props.BoolProperty(attr="value", name="Value", description="Assignment value", default= True)] - execute = execute_context_assign - -class WM_OT_context_set_int(bpy.types.Operator): # same as enum - '''Set a context value.''' - __idname__ = "wm.context_set_int" - __label__ = "Context Set" - __props__ = [rna_path_prop, bpy.props.IntProperty(attr="value", name="Value", description="Assignment value", default= 0)] - execute = execute_context_assign - -class WM_OT_context_set_float(bpy.types.Operator): # same as enum - '''Set a context value.''' - __idname__ = "wm.context_set_int" - __label__ = "Context Set" - __props__ = [rna_path_prop, bpy.props.FloatProperty(attr="value", name="Value", description="Assignment value", default= 0.0)] - execute = execute_context_assign - -class WM_OT_context_set_string(bpy.types.Operator): # same as enum - '''Set a context value.''' - __idname__ = "wm.context_set_string" - __label__ = "Context Set" - __props__ = [rna_path_prop, bpy.props.StringProperty(attr="value", name="Value", description="Assignment value", maxlen= 1024, default= "")] - execute = execute_context_assign - -class WM_OT_context_set_enum(bpy.types.Operator): - '''Set a context value.''' - __idname__ = "wm.context_set_enum" - __label__ = "Context Set" - __props__ = [rna_path_prop, bpy.props.StringProperty(attr="value", name="Value", description="Assignment value (as a string)", maxlen= 1024, default= "")] - execute = execute_context_assign - -class WM_OT_context_toggle(bpy.types.Operator): - '''Toggle a context value.''' - __idname__ = "wm.context_toggle" - __label__ = "Context Toggle" - __props__ = [rna_path_prop] - def execute(self, context): - - if context_path_validate(context, self.path) == NullPathMember: - return ('PASS_THROUGH',) - - exec("context.%s=not (context.%s)" % (self.path, self.path)) # security nuts will complain. - return ('FINISHED',) - -class WM_OT_context_toggle_enum(bpy.types.Operator): - '''Toggle a context value.''' - __idname__ = "wm.context_toggle_enum" - __label__ = "Context Toggle Values" - __props__ = [ - rna_path_prop, - bpy.props.StringProperty(attr="value_1", name="Value", description="Toggle enum", maxlen= 1024, default= ""), - bpy.props.StringProperty(attr="value_2", name="Value", description="Toggle enum", maxlen= 1024, default= "") - ] - def execute(self, context): - - if context_path_validate(context, self.path) == NullPathMember: - return ('PASS_THROUGH',) - - exec("context.%s = ['%s', '%s'][context.%s!='%s']" % (self.path, self.value_1, self.value_2, self.path, self.value_2)) # security nuts will complain. - return ('FINISHED',) - -class WM_OT_context_cycle_int(bpy.types.Operator): - '''Set a context value. Useful for cycling active material, vertex keys, groups' etc.''' - __idname__ = "wm.context_cycle_int" - __label__ = "Context Int Cycle" - __props__ = [rna_path_prop, rna_reverse_prop] - def execute(self, context): - - value = context_path_validate(context, self.path) - if value == NullPathMember: - return ('PASS_THROUGH',) - - self.value = value - if self.reverse: self.value -= 1 - else: self.value += 1 - execute_context_assign(self, context) - - if self.value != eval("context.%s" % self.path): - # relies on rna clamping int's out of the range - if self.reverse: self.value = (1<<32) - else: self.value = -(1<<32) - execute_context_assign(self, context) - - return ('FINISHED',) - -class WM_OT_context_cycle_enum(bpy.types.Operator): - '''Toggle a context value.''' - __idname__ = "wm.context_cycle_enum" - __label__ = "Context Enum Cycle" - __props__ = [rna_path_prop, rna_reverse_prop] - def execute(self, context): - - value = context_path_validate(context, self.path) - if value == NullPathMember: - return ('PASS_THROUGH',) - - orig_value = value - - # Have to get rna enum values - rna_struct_str, rna_prop_str = self.path.rsplit('.', 1) - i = rna_prop_str.find('[') - if i != -1: rna_prop_str = rna_prop_str[0:i] # just incse we get "context.foo.bar[0]" - - rna_struct = eval("context.%s.rna_type" % rna_struct_str) - - rna_prop = rna_struct.properties[rna_prop_str] - - if type(rna_prop) != bpy.types.EnumProperty: - raise Exception("expected an enum property") - - enums = rna_struct.properties[rna_prop_str].items.keys() - orig_index = enums.index(orig_value) - - # Have the info we need, advance to the next item - if self.reverse: - if orig_index==0: advance_enum = enums[-1] - else: advance_enum = enums[orig_index-1] - else: - if orig_index==len(enums)-1: advance_enum = enums[0] - else: advance_enum = enums[orig_index+1] - - # set the new value - exec("context.%s=advance_enum" % self.path) - return ('FINISHED',) - - -bpy.ops.add(MESH_OT_delete_edgeloop) - -bpy.ops.add(WM_OT_context_set_boolean) -bpy.ops.add(WM_OT_context_set_int) -bpy.ops.add(WM_OT_context_set_float) -bpy.ops.add(WM_OT_context_set_string) -bpy.ops.add(WM_OT_context_set_enum) -bpy.ops.add(WM_OT_context_toggle) -bpy.ops.add(WM_OT_context_toggle_enum) -bpy.ops.add(WM_OT_context_cycle_enum) -bpy.ops.add(WM_OT_context_cycle_int) + C_exec = 'EXEC_DEFAULT' + if len(args) == 2: + C_exec = args[0] + C_dict = args[1] + else: + if type(args[0]) != str: + C_dict = args[0] + else: + C_exec = args[0] + + try: + context = context_dict[C_exec] + except: + raise ValueError("Expected a single context argument in: " + \ + str(list(context_dict.keys()))) + + if len(args) == 2: + C_dict = args[1] + + return op_call(self.idname(), C_dict, kw, context) + + else: + return op_call(self.idname(), C_dict, kw) + + def get_rna(self): + ''' + currently only used for 'bl_rna' + ''' + return op_get_rna(self.idname()) + + def __repr__(self): # useful display, repr(op) + return op_as_string(self.idname()) + + def __str__(self): # used for print(...) + return "<function bpy.ops.%s.%s at 0x%x'>" % \ + (self.module, self.func, id(self)) + +import bpy +bpy.ops = bpy_ops() diff --git a/release/scripts/modules/bpy_sys.py b/release/scripts/modules/bpy_sys.py deleted file mode 100644 index e60e8b01d09..00000000000 --- a/release/scripts/modules/bpy_sys.py +++ /dev/null @@ -1,12 +0,0 @@ -import bpy -import os - -def expandpath(path): - if path.startswith("//"): - return os.path.join(os.path.dirname(bpy.data.filename), path[2:]) - - return path - -import types -bpy.sys = types.ModuleType("bpy.sys") -bpy.sys.expandpath = expandpath diff --git a/release/scripts/modules/bpy_utils.py b/release/scripts/modules/bpy_utils.py new file mode 100644 index 00000000000..dde01152dae --- /dev/null +++ b/release/scripts/modules/bpy_utils.py @@ -0,0 +1,30 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy +import os + +def expandpath(path): + if path.startswith("//"): + return os.path.join(os.path.dirname(bpy.data.filename), path[2:]) + + return path + +import types +bpy.utils = types.ModuleType("bpy.utils") +bpy.utils.expandpath = expandpath diff --git a/release/scripts/modules/console/__init__.py b/release/scripts/modules/console/__init__.py new file mode 100644 index 00000000000..eb32d78b1ef --- /dev/null +++ b/release/scripts/modules/console/__init__.py @@ -0,0 +1,16 @@ +# Copyright (c) 2009 www.stani.be (GPL license) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Package for console specific modules.""" diff --git a/release/scripts/modules/console/complete_import.py b/release/scripts/modules/console/complete_import.py new file mode 100644 index 00000000000..9166dee2bb2 --- /dev/null +++ b/release/scripts/modules/console/complete_import.py @@ -0,0 +1,180 @@ +# Copyright (c) 2009 Fernando Perez, www.stani.be (GPL license) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Original copyright (see docstring): +#***************************************************************************** +# Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu> +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#***************************************************************************** + +"""Completer for import statements + +Original code was from IPython/Extensions/ipy_completers.py. The following +changes have been made: +- ported to python3 +- pep8 polishing +- limit list of modules to prefix in case of "from w" +- sorted modules +- added sphinx documentation +""" + + +import os +import sys + +TIMEOUT_STORAGE = 3 # Time in secs after which the rootmodules will be stored +TIMEOUT_GIVEUP = 20 # Time in secs after which we give up + +ROOT_MODULES = None + + +def get_root_modules(): + """ + Returns a list containing the names of all the modules available in the + folders of the pythonpath. + + :returns: modules + :rtype: list + """ + global ROOT_MODULES + modules = [] + if not(ROOT_MODULES is None): + return ROOT_MODULES + from time import time + t = time() + store = False + for path in sys.path: + modules += module_list(path) + if time() - t >= TIMEOUT_STORAGE and not store: + # Caching the list of root modules, please wait! + store = True + if time() - t > TIMEOUT_GIVEUP: + # This is taking too long, we give up. + ROOT_MODULES = [] + return [] + + modules += sys.builtin_module_names + + modules = list(set(modules)) + if '__init__' in modules: + modules.remove('__init__') + modules = sorted(set(modules)) + if store: + ROOT_MODULES = modules + return modules + + +def module_list(path): + """ + Return the list containing the names of the modules available in + the given folder. + + :param path: folder path + :type path: str + :returns: modules + :rtype: list + """ + + if os.path.isdir(path): + folder_list = os.listdir(path) + elif path.endswith('.egg'): + from zipimport import zipimporter + try: + folder_list = [f for f in zipimporter(path)._files] + except: + folder_list = [] + else: + folder_list = [] + #folder_list = glob.glob(os.path.join(path,'*')) + folder_list = [p for p in folder_list \ + if os.path.exists(os.path.join(path, p, '__init__.py'))\ + or p[-3:] in ('.py', '.so')\ + or p[-4:] in ('.pyc', '.pyo', '.pyd')] + + folder_list = [os.path.basename(p).split('.')[0] for p in folder_list] + return folder_list + + +def complete(line): + """ + Returns a list containing the completion possibilities for an import line. + + :param line: + + incomplete line which contains an import statement:: + + import xml.d + from xml.dom import + + :type line: str + :returns: list of completion possibilities + :rtype: list + + >>> complete('import weak') + ['weakref'] + >>> complete('from weakref import C') + ['CallableProxyType'] + """ + import inspect + + def try_import(mod, only_modules=False): + + def is_importable(module, attr): + if only_modules: + return inspect.ismodule(getattr(module, attr)) + else: + return not(attr[:2] == '__' and attr[-2:] == '__') + + try: + m = __import__(mod) + except: + return [] + mods = mod.split('.') + for module in mods[1:]: + m = getattr(m, module) + if (not hasattr(m, '__file__')) or (not only_modules) or\ + (hasattr(m, '__file__') and '__init__' in m.__file__): + completion_list = [attr for attr in dir(m) + if is_importable(m, attr)] + else: + completion_list = [] + completion_list.extend(getattr(m, '__all__', [])) + if hasattr(m, '__file__') and '__init__' in m.__file__: + completion_list.extend(module_list(os.path.dirname(m.__file__))) + completion_list = list(set(completion_list)) + if '__init__' in completion_list: + completion_list.remove('__init__') + return completion_list + + def filter_prefix(names, prefix): + return [name for name in names if name.startswith(prefix)] + + words = line.split(' ') + if len(words) == 3 and words[0] == 'from': + return ['import '] + if len(words) < 3 and (words[0] in ['import', 'from']): + if len(words) == 1: + return get_root_modules() + mod = words[1].split('.') + if len(mod) < 2: + return filter_prefix(get_root_modules(), words[-1]) + completion_list = try_import('.'.join(mod[:-1]), True) + completion_list = ['.'.join(mod[:-1] + [el]) for el in completion_list] + return filter_prefix(completion_list, words[-1]) + if len(words) >= 3 and words[0] == 'from': + mod = words[1] + return filter_prefix(try_import(mod), words[-1]) diff --git a/release/scripts/modules/console/complete_namespace.py b/release/scripts/modules/console/complete_namespace.py new file mode 100644 index 00000000000..4aa0de558f2 --- /dev/null +++ b/release/scripts/modules/console/complete_namespace.py @@ -0,0 +1,186 @@ +# Copyright (c) 2009 www.stani.be (GPL license) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Autocomplete with the standard library""" + +import re +import rlcompleter + + +RE_INCOMPLETE_INDEX = re.compile('(.*?)\[[^\]]+$') + +TEMP = '__tEmP__' # only \w characters are allowed! +TEMP_N = len(TEMP) + + +def is_dict(obj): + """Returns whether obj is a dictionary""" + return hasattr(obj, 'keys') and hasattr(getattr(obj, 'keys'), '__call__') + + +def complete_names(word, namespace): + """Complete variable names or attributes + + :param word: word to be completed + :type word: str + :param namespace: namespace + :type namespace: dict + :returns: completion matches + :rtype: list of str + + >>> complete_names('fo', {'foo': 'bar'}) + ['foo', 'for', 'format('] + """ + # start completer + completer = rlcompleter.Completer(namespace) + # find matches with std library (don't try to implement this yourself) + completer.complete(word, 0) + return sorted(set(completer.matches)) + + +def complete_indices(word, namespace, obj=None, base=None): + """Complete a list or dictionary with its indices: + + * integer numbers for list + * any keys for dictionary + + :param word: word to be completed + :type word: str + :param namespace: namespace + :type namespace: dict + :param obj: object evaluated from base + :param base: substring which can be evaluated into an object + :type base: str + :returns: completion matches + :rtype: list of str + + >>> complete_indices('foo', {'foo': range(5)}) + ['foo[0]', 'foo[1]', 'foo[2]', 'foo[3]', 'foo[4]'] + >>> complete_indices('foo', {'foo': {'bar':0, 1:2}}) + ['foo[1]', "foo['bar']"] + >>> complete_indices("foo['b", {'foo': {'bar':0, 1:2}}, base='foo') + ["foo['bar']"] + """ + #FIXME: 'foo["b' + if base is None: + base = word + if obj is None: + try: + obj = eval(base, namespace) + except Exception: + return [] + if not hasattr(obj, '__getitem__'): + # obj is not a list or dictionary + return [] + if is_dict(obj): + # dictionary type + matches = ['%s[%r]' % (base, key) for key in sorted(obj.keys())] + else: + # list type + matches = ['%s[%d]' % (base, idx) for idx in range(len(obj))] + if word != base: + matches = [match for match in matches if match.startswith(word)] + return matches + + +def complete(word, namespace, private=True): + """Complete word within a namespace with the standard rlcompleter + module. Also supports index or key access []. + + :param word: word to be completed + :type word: str + :param namespace: namespace + :type namespace: dict + :param private: whether private attribute/methods should be returned + :type private: bool + :returns: completion matches + :rtype: list of str + + >>> complete('foo[1', {'foo': range(14)}) + ['foo[1]', 'foo[10]', 'foo[11]', 'foo[12]', 'foo[13]'] + >>> complete('foo[0]', {'foo': [range(5)]}) + ['foo[0][0]', 'foo[0][1]', 'foo[0][2]', 'foo[0][3]', 'foo[0][4]'] + >>> complete('foo[0].i', {'foo': [range(5)]}) + ['foo[0].index(', 'foo[0].insert('] + >>> complete('rlcompleter', {'rlcompleter': rlcompleter}) + ['rlcompleter.'] + """ + # + # if word is empty -> nothing to complete + if not word: + return [] + + re_incomplete_index = RE_INCOMPLETE_INDEX.search(word) + if re_incomplete_index: + # ignore incomplete index at the end, e.g 'a[1' -> 'a' + matches = complete_indices(word, namespace, + base=re_incomplete_index.group(1)) + + elif not('[' in word): + matches = complete_names(word, namespace) + + elif word[-1] == ']': + matches = [word] + + elif '.' in word: + # brackets are normally not allowed -> work around + + # remove brackets by using a temp var without brackets + obj, attr = word.rsplit('.', 1) + try: + # do not run the obj expression in the console + namespace[TEMP] = eval(obj, namespace) + except Exception: + return [] + matches = complete_names(TEMP + '.' + attr, namespace) + matches = [obj + match[TEMP_N:] for match in matches] + del namespace[TEMP] + + else: + # safety net, but when would this occur? + return [] + + if not matches: + return [] + + # add '.', '(' or '[' if no match has been found + elif len(matches) == 1 and matches[0] == word: + + # try to retrieve the object + try: + obj = eval(word, namespace) + except Exception: + return [] + # ignore basic types + if type(obj) in (bool, float, int, str): + return [] + # an extra char '[', '(' or '.' will be added + if hasattr(obj, '__getitem__'): + # list or dictionary + matches = complete_indices(word, namespace, obj) + elif hasattr(obj, '__call__'): + # callables + matches = [word + '('] + else: + # any other type + matches = [word + '.'] + + # separate public from private + public_matches = [match for match in matches if not('._' in match)] + if private: + private_matches = [match for match in matches if '._' in match] + return public_matches + private_matches + else: + return public_matches diff --git a/release/scripts/modules/console/intellisense.py b/release/scripts/modules/console/intellisense.py new file mode 100644 index 00000000000..686b3e7294b --- /dev/null +++ b/release/scripts/modules/console/intellisense.py @@ -0,0 +1,130 @@ +# Copyright (c) 2009 www.stani.be (GPL license) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""This module provides intellisense features such as: + +* autocompletion +* calltips + +It unifies all completion plugins and only loads them on demand. +""" + +# TODO: file complete if startswith quotes +import os +import re + +# regular expressions to find out which completer we need + +# line which starts with an import statement +RE_MODULE = re.compile('^import|from.+') + +# The following regular expression means an 'unquoted' word +RE_UNQUOTED_WORD = re.compile( + # don't start with a quote + '''(?:^|[^"'a-zA-Z0-9_])''' + # start with a \w = [a-zA-Z0-9_] + '''((?:\w+''' + # allow also dots and closed bracket pairs [] + '''(?:\w|[.]|\[.+?\])*''' + # allow empty string + '''|)''' + # allow an unfinished index at the end (including quotes) + '''(?:\[[^\]]*$)?)$''', + # allow unicode as theoretically this is possible + re.UNICODE) + + +def complete(line, cursor, namespace, private=True): + """Returns a list of possible completions: + + * name completion + * attribute completion (obj.attr) + * index completion for lists and dictionaries + * module completion (from/import) + + :param line: incomplete text line + :type line: str + :param cursor: current character position + :type cursor: int + :param namespace: namespace + :type namespace: dict + :param private: whether private variables should be listed + :type private: bool + :returns: list of completions, word + :rtype: list, str + + >>> complete('re.sr', 5, {'re': re}) + (['re.sre_compile', 're.sre_parse'], 're.sr') + """ + re_unquoted_word = RE_UNQUOTED_WORD.search(line[:cursor]) + if re_unquoted_word: + # unquoted word -> module or attribute completion + word = re_unquoted_word.group(1) + if RE_MODULE.match(line): + import complete_import + matches = complete_import.complete(line) + else: + import complete_namespace + matches = complete_namespace.complete(word, namespace, private) + else: + # for now we don't have completers for strings + # TODO: add file auto completer for strings + word = '' + matches = [] + return matches, word + + +def expand(line, cursor, namespace, private=True): + """This method is invoked when the user asks autocompletion, + e.g. when Ctrl+Space is clicked. + + :param line: incomplete text line + :type line: str + :param cursor: current character position + :type cursor: int + :param namespace: namespace + :type namespace: dict + :param private: whether private variables should be listed + :type private: bool + :returns: + + current expanded line, updated cursor position and scrollback + + :rtype: str, int, str + + >>> expand('os.path.isdir(', 14, {'os': os})[-1] + 'isdir(s)\\nReturn true if the pathname refers to an existing directory.' + >>> expand('abs(', 4, {})[-1] + 'abs(number) -> number\\nReturn the absolute value of the argument.' + """ + if line[:cursor].strip().endswith('('): + import complete_calltip + matches, word, scrollback = complete_calltip.complete(line, + cursor, namespace) + no_calltip = False + else: + matches, word = complete(line, cursor, namespace, private) + if len(matches) == 1: + scrollback = '' + else: + scrollback = ' '.join([m.split('.')[-1] for m in matches]) + no_calltip = True + prefix = os.path.commonprefix(matches)[len(word):] + if prefix: + line = line[:cursor] + prefix + line[cursor:] + cursor += len(prefix) + if no_calltip and prefix.endswith('('): + return expand(line, cursor, namespace, private) + return line, cursor, scrollback diff --git a/release/scripts/modules/dynamic_menu.py b/release/scripts/modules/dynamic_menu.py index ce51dc9937b..8d124f222a1 100644 --- a/release/scripts/modules/dynamic_menu.py +++ b/release/scripts/modules/dynamic_menu.py @@ -1,86 +1,104 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import bpy def collect_baseclasses(_class, bases): - - if _class is type or _class is object: - return bases - - bases.append(_class) - for _superclass in _class.__bases__: - collect_baseclasses(_superclass, bases) - - return bases + + if _class is type or _class is object: + return bases + + bases.append(_class) + for _superclass in _class.__bases__: + collect_baseclasses(_superclass, bases) + + return bases def collect_subclasses(_class, subs): - - if _class is type or _class is object: - return subs - - subs.append(_class) - for _subclass in _class.__subclasses__(): - collect_subclasses(_subclass, subs) - - return subs + + if _class is type or _class is object: + return subs + + subs.append(_class) + for _subclass in _class.__subclasses__(): + collect_subclasses(_subclass, subs) + + return subs class DynMenu(bpy.types.Menu): - - def draw(self, context): - ''' - This is a draw function that is used to call all subclasses draw functions - starting from the registered classes draw function and working down. - - DynMenu.setup() must be called first. - - Sort/group classes could be nice - ''' - - subclass_ls = [] - collect_subclasses(self.__class__, subclass_ls) - # print(subclass_ls) - - for subclass in subclass_ls: - # print("drawwing", subclass) # , dir(subclass)) - subclass.internal_draw(self, context) - # print("subclass.internal_draw", subclass.internal_draw) + + def draw(self, context): + ''' + This is a draw function that is used to call all subclasses draw functions + starting from the registered classes draw function and working down. + + DynMenu.setup() must be called first. + + Sort/group classes could be nice + ''' + + subclass_ls = [] + collect_subclasses(self.__class__, subclass_ls) + # print(subclass_ls) + + for subclass in subclass_ls: + # print("drawwing", subclass) # , dir(subclass)) + subclass.internal_draw(self, context) + # print("subclass.internal_draw", subclass.internal_draw) def setup(menu_class): - ''' - Setup subclasses (not needed when self.add() is used) - ''' - bases = collect_baseclasses(menu_class, []) - - # Incase 'DynMenu' isnt last - while bases[-1] is not DynMenu: - bases.pop() - bases.pop() # remove 'DynMenu' - - root_class = bases[-1] # this is the registered class - - for subclass in collect_subclasses(root_class, []): - #print(subclass) - - draw = getattr(subclass, 'draw', None) - if draw and not hasattr(subclass, 'internal_draw'): - # print("replace", subclass, draw) - try: - del subclass.draw - except: - pass - subclass.internal_draw = draw - - root_class.draw = DynMenu.draw + ''' + Setup subclasses (not needed when self.add() is used) + ''' + bases = collect_baseclasses(menu_class, []) + + # Incase 'DynMenu' isnt last + while bases[-1] is not DynMenu: + bases.pop() + bases.pop() # remove 'DynMenu' + + root_class = bases[-1] # this is the registered class + + for subclass in collect_subclasses(root_class, []): + #print(subclass) + + draw = getattr(subclass, 'draw', None) + if draw and not hasattr(subclass, 'internal_draw'): + # print("replace", subclass, draw) + try: + del subclass.draw + except: + pass + subclass.internal_draw = draw + + root_class.draw = DynMenu.draw def add(menu_class, func): - ''' - Add a single function directly without having to make a class - - important that the returned value should be stored in the module that called it. - ''' - - newclass = type('<menuclass>', (menu_class,), {}) - newclass.internal_draw = func - setup(menu_class) - return newclass + ''' + Add a single function directly without having to make a class + + important that the returned value should be stored in the module that called it. + ''' + + newclass = type('<menuclass>', (menu_class,), {}) + newclass.internal_draw = func + setup(menu_class) + return newclass ''' # so we dont need to import this module diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py new file mode 100644 index 00000000000..ddc4f0b9770 --- /dev/null +++ b/release/scripts/op/add_mesh_torus.py @@ -0,0 +1,139 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8-80 compliant> +import bpy +import Mathutils +from math import cos, sin, pi + + +def add_torus(major_rad, minor_rad, major_seg, minor_seg): + Vector = Mathutils.Vector + Quaternion = Mathutils.Quaternion + + PI_2 = pi * 2 + z_axis = (0, 0, 1) + + verts = [] + faces = [] + i1 = 0 + tot_verts = major_seg * minor_seg + for major_index in range(major_seg): + quat = Quaternion(z_axis, (major_index / major_seg) * PI_2) + + for minor_index in range(minor_seg): + angle = 2 * pi * minor_index / minor_seg + + vec = Vector(major_rad + (cos(angle) * minor_rad), 0.0, + (sin(angle) * minor_rad)) * quat + + verts.extend([vec.x, vec.y, vec.z]) + + if minor_index + 1 == minor_seg: + i2 = (major_index) * minor_seg + i3 = i1 + minor_seg + i4 = i2 + minor_seg + + else: + i2 = i1 + 1 + i3 = i1 + minor_seg + i4 = i3 + 1 + + if i2 >= tot_verts: + i2 = i2 - tot_verts + if i3 >= tot_verts: + i3 = i3 - tot_verts + if i4 >= tot_verts: + i4 = i4 - tot_verts + + # stupid eekadoodle + if i2: + faces.extend([i1, i3, i4, i2]) + else: + faces.extend([i2, i1, i3, i4]) + + i1 += 1 + + return verts, faces + +from bpy.props import * + + +class AddTorus(bpy.types.Operator): + '''Add a torus mesh.''' + bl_idname = "mesh.primitive_torus_add" + bl_label = "Add Torus" + bl_register = True + bl_undo = True + + major_radius = FloatProperty(name="Major Radius", + description="Number of segments for the main ring of the torus", + default=1.0, min=0.01, max=100.0) + minor_radius = FloatProperty(name="Minor Radius", + description="Number of segments for the minor ring of the torus", + default=0.25, min=0.01, max=100.0) + major_segments = IntProperty(name="Major Segments", + description="Number of segments for the main ring of the torus", + default=48, min=3, max=256) + minor_segments = IntProperty(name="Minor Segments", + description="Number of segments for the minor ring of the torus", + default=16, min=3, max=256) + + def execute(self, context): + + verts_loc, faces = add_torus(self.major_radius, + self.minor_radius, + self.major_segments, + self.minor_segments) + + mesh = bpy.data.add_mesh("Torus") + + mesh.add_geometry(int(len(verts_loc) / 3), 0, int(len(faces) / 4)) + mesh.verts.foreach_set("co", verts_loc) + mesh.faces.foreach_set("verts_raw", faces) + + scene = context.scene + + # ugh + for ob in scene.objects: + ob.selected = False + + mesh.update() + ob_new = bpy.data.add_object('MESH', "Torus") + ob_new.data = mesh + scene.add_object(ob_new) + scene.objects.active = ob_new + ob_new.selected = True + + ob_new.location = tuple(context.scene.cursor_location) + + return ('FINISHED',) + +# Register the operator +bpy.ops.add(AddTorus) + +# Add to a menu +import dynamic_menu + +menu_func = (lambda self, context: self.layout.itemO(AddTorus.bl_idname, + text="Torus", icon='ICON_MESH_DONUT')) + +menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func) + +if __name__ == "__main__": + bpy.ops.mesh.primitive_torus_add() diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py new file mode 100644 index 00000000000..8ea9ea03062 --- /dev/null +++ b/release/scripts/op/mesh.py @@ -0,0 +1,71 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy + +def main(context): + ob = context.active_object + bpy.ops.mesh.selection_type(type='FACE') + is_editmode = (ob.mode=='EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + + mesh = ob.data + + face_list = [face for face in mesh.faces] + face_edge_keys = [face.edge_keys() for face in face_list] + + edge_face_count = mesh.edge_face_count_dict(face_edge_keys) + + def test_interior(index): + for key in face_edge_keys[index]: + if edge_face_count[key] < 3: + return False + return True + + for index, face in enumerate(face_list): + if(test_interior(index)): + face.selected = True + else: + face.selected = False + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT', toggle=False) + +class MeshSelectInteriorFaces(bpy.types.Operator): + '''Select faces where all edges have more then 2 face users.''' + + bl_idname = "mesh.faces_select_interior" + bl_label = "Select Interior Faces" + bl_register = True + bl_undo = True + + def poll(self, context): + ob = context.active_object + return (ob and ob.type == 'MESH') + + def execute(self, context): + main(context) + return ('FINISHED',) + + +# Register the operator +bpy.ops.add(MeshSelectInteriorFaces) + +if __name__ == "__main__": + bpy.ops.mesh.faces_select_interior() diff --git a/release/scripts/op/mesh_skin.py b/release/scripts/op/mesh_skin.py new file mode 100644 index 00000000000..85df6463eb0 --- /dev/null +++ b/release/scripts/op/mesh_skin.py @@ -0,0 +1,648 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# import Blender +import time, functools +import bpy +# from Blender import Window +from Mathutils import MidpointVecs, Vector +from Mathutils import AngleBetweenVecs as _AngleBetweenVecs_ +# import BPyMessages + +# from Blender.Draw import PupMenu + +BIG_NUM = 1<<30 + +global CULL_METHOD +CULL_METHOD = 0 + +def AngleBetweenVecs(a1,a2): + import math + try: + return math.degrees(_AngleBetweenVecs_(a1,a2)) + except: + return 180.0 + +class edge(object): + __slots__ = 'v1', 'v2', 'co1', 'co2', 'length', 'removed', 'match', 'cent', 'angle', 'next', 'prev', 'normal', 'fake' + def __init__(self, v1,v2): + self.v1 = v1 + self.v2 = v2 + co1, co2= v1.co, v2.co + self.co1= co1 + self.co2= co2 + + # uv1 uv2 vcol1 vcol2 # Add later + self.length = (co1 - co2).length + self.removed = 0 # Have we been culled from the eloop + self.match = None # The other edge were making a face with + + self.cent= MidpointVecs(co1, co2) + self.angle= 0.0 + self.fake= False + +class edgeLoop(object): + __slots__ = 'centre', 'edges', 'normal', 'closed', 'backup_edges' + def __init__(self, loop, me, closed): # Vert loop + # Use next and prev, nextDist, prevDist + + # Get Loops centre. + fac= len(loop) + verts = me.verts + self.centre= functools.reduce(lambda a,b: a+verts[b].co/fac, loop, Vector()) + + # Convert Vert loop to Edges. + self.edges = [edge(verts[loop[vIdx-1]], verts[loop[vIdx]]) for vIdx in range(len(loop))] + + if not closed: + self.edges[0].fake = True # fake edge option + + self.closed = closed + + + # Assign linked list + for eIdx in range(len(self.edges)-1): + self.edges[eIdx].next = self.edges[eIdx+1] + self.edges[eIdx].prev = self.edges[eIdx-1] + # Now last + self.edges[-1].next = self.edges[0] + self.edges[-1].prev = self.edges[-2] + + + + # GENERATE AN AVERAGE NORMAL FOR THE WHOLE LOOP. + self.normal = Vector() + for e in self.edges: + n = (self.centre-e.co1).cross(self.centre-e.co2) + # Do we realy need tot normalize? + n.normalize() + self.normal += n + + # Generate the angle + va= e.cent - e.prev.cent + vb= e.next.cent - e.cent + + e.angle= AngleBetweenVecs(va, vb) + + # Blur the angles + #for e in self.edges: + # e.angle= (e.angle+e.next.angle)/2 + + # Blur the angles + #for e in self.edges: + # e.angle= (e.angle+e.prev.angle)/2 + + self.normal.normalize() + + # Generate a normal for each edge. + for e in self.edges: + + n1 = e.co1 + n2 = e.co2 + n3 = e.prev.co1 + + a = n1-n2 + b = n1-n3 + normal1 = a.cross(b) + normal1.normalize() + + n1 = e.co2 + n3 = e.next.co2 + n2 = e.co1 + + a = n1-n2 + b = n1-n3 + + normal2 = a.cross(b) + normal2.normalize() + + # Reuse normal1 var + normal1 += normal1 + normal2 + normal1.normalize() + + e.normal = normal1 + #print e.normal + + + + def backup(self): + # Keep a backup of the edges + self.backup_edges = self.edges[:] + + def restore(self): + self.edges = self.backup_edges[:] + for e in self.edges: + e.removed = 0 + + def reverse(self): + self.edges.reverse() + self.normal.negate() + + for e in self.edges: + e.normal.negate() + e.v1, e.v2 = e.v2, e.v1 + e.co1, e.co2 = e.co2, e.co1 + e.next, e.prev = e.prev, e.next + + + def removeSmallest(self, cullNum, otherLoopLen): + ''' + Removes N Smallest edges and backs up the loop, + this is so we can loop between 2 loops as if they are the same length, + backing up and restoring incase the loop needs to be skinned with another loop of a different length. + ''' + global CULL_METHOD + if CULL_METHOD == 1: # Shortest edge + eloopCopy = self.edges[:] + + # Length sort, smallest first + try: eloopCopy.sort(key = lambda e1: e1.length) + except: eloopCopy.sort(lambda e1, e2: cmp(e1.length, e2.length )) + + # Dont use atm + #eloopCopy.sort(lambda e1, e2: cmp(e1.angle*e1.length, e2.angle*e2.length)) # Length sort, smallest first + #eloopCopy.sort(lambda e1, e2: cmp(e1.angle, e2.angle)) # Length sort, smallest first + + remNum = 0 + for i, e in enumerate(eloopCopy): + if not e.fake: + e.removed = 1 + self.edges.remove( e ) # Remove from own list, still in linked list. + remNum += 1 + + if not remNum < cullNum: + break + + else: # CULL METHOD is even + + culled = 0 + + step = int(otherLoopLen / float(cullNum)) * 2 + + currentEdge = self.edges[0] + while culled < cullNum: + + # Get the shortest face in the next STEP + step_count= 0 + bestAng= 360.0 + smallestEdge= None + while step_count<=step or smallestEdge==None: + step_count+=1 + if not currentEdge.removed: # 0 or -1 will not be accepted + if currentEdge.angle<bestAng and not currentEdge.fake: + smallestEdge= currentEdge + bestAng= currentEdge.angle + + currentEdge = currentEdge.next + + # In that stepping length we have the smallest edge.remove it + smallestEdge.removed = 1 + self.edges.remove(smallestEdge) + + # Start scanning from the edge we found? - result is over fanning- no good. + #currentEdge= smallestEdge.next + + culled+=1 + + +# Returns face edges. +# face must have edge data. + +def mesh_faces_extend(me, faces, mat_idx = 0): + orig_facetot = len(me.faces) + new_facetot = len(faces) + me.add_geometry(0, 0, new_facetot) + tot = orig_facetot+new_facetot + me_faces = me.faces + i= 0 + while i < new_facetot: + + f = [v.index for v in faces[i]] + if len(f)==4 and f[3]==0: + f = f[1], f[2], f[3], f[0] + + mf = me_faces[orig_facetot+i] + mf.verts_raw = f + mf.material_index = mat_idx + i+=1 +# end utils + + +def getSelectedEdges(context, me, ob): + MESH_MODE= context.scene.tool_settings.mesh_selection_mode + + if MESH_MODE in ('EDGE', 'VERTEX'): + context.scene.tool_settings.mesh_selection_mode = 'EDGE' + edges= [ ed for ed in me.edges if ed.selected ] + # print len(edges), len(me.edges) + context.scene.tool_settings.mesh_selection_mode = MESH_MODE + return edges + + if MESH_MODE == 'FACE': + context.scene.tool_settings.mesh_selection_mode = 'EDGE' + # value is [edge, face_sel_user_in] + edge_dict= dict((ed.key(), [ed, 0]) for ed in me.edges) + + for f in me.faces: + if f.selected: + for edkey in f.edge_keys(): + edge_dict[edkey][1] += 1 + + context.scene.tool_settings.mesh_selection_mode = MESH_MODE + return [ ed_data[0] for ed_data in edge_dict.values() if ed_data[1] == 1 ] + + + +def getVertLoops(selEdges, me): + ''' + return a list of vert loops, closed and open [(loop, closed)...] + ''' + + mainVertLoops = [] + # second method + tot = len(me.verts) + vert_siblings = [[] for i in range(tot)] + vert_used = [False] * tot + + for ed in selEdges: + i1, i2 = ed.key() + vert_siblings[i1].append(i2) + vert_siblings[i2].append(i1) + + # find the first used vert and keep looping. + for i in range(tot): + if vert_siblings[i] and not vert_used[i]: + sbl = vert_siblings[i] # siblings + + if len(sbl) > 2: + return None + + vert_used[i] = True + + # do an edgeloop seek + if len(sbl) == 2: + contextVertLoop= [sbl[0], i, sbl[1]] # start the vert loop + vert_used[contextVertLoop[ 0]] = True + vert_used[contextVertLoop[-1]] = True + else: + contextVertLoop= [i, sbl[0]] + vert_used[contextVertLoop[ 1]] = True + + # Always seek up + ok = True + while ok: + ok = False + closed = False + sbl = vert_siblings[contextVertLoop[-1]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[-2] )] + if vert_used[next]: + closed = True + # break + else: + contextVertLoop.append( next ) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + # Seek down as long as the starting vert was not at the edge. + if not closed and len(vert_siblings[i]) == 2: + + ok = True + while ok: + ok = False + sbl = vert_siblings[contextVertLoop[0]] + if len(sbl) == 2: + next = sbl[not sbl.index( contextVertLoop[1] )] + if vert_used[next]: + closed = True + else: + contextVertLoop.insert(0, next) # get the vert that isnt the second last + vert_used[next] = True + ok = True + + mainVertLoops.append((contextVertLoop, closed)) + + + verts = me.verts + # convert from indicies to verts + # mainVertLoops = [([verts[i] for i in contextVertLoop], closed) for contextVertLoop, closed in mainVertLoops] + # print len(mainVertLoops) + return mainVertLoops + + + +def skin2EdgeLoops(eloop1, eloop2, me, ob, MODE): + + new_faces= [] # + + # Make sure e1 loops is bigger then e2 + if len(eloop1.edges) != len(eloop2.edges): + if len(eloop1.edges) < len(eloop2.edges): + eloop1, eloop2 = eloop2, eloop1 + + eloop1.backup() # were about to cull faces + CULL_FACES = len(eloop1.edges) - len(eloop2.edges) + eloop1.removeSmallest(CULL_FACES, len(eloop1.edges)) + else: + CULL_FACES = 0 + # First make sure poly vert loops are in sync with eachother. + + # The vector allong which we are skinning. + skinVector = eloop1.centre - eloop2.centre + + loopDist = skinVector.length + + # IS THE LOOP FLIPPED, IF SO FLIP BACK. we keep it flipped, its ok, + if eloop1.closed or eloop2.closed: + angleBetweenLoopNormals = AngleBetweenVecs(eloop1.normal, eloop2.normal) + if angleBetweenLoopNormals > 90: + eloop2.reverse() + + + DIR= eloop1.centre - eloop2.centre + + # if eloop2.closed: + bestEloopDist = BIG_NUM + bestOffset = 0 + # Loop rotation offset to test.1 + eLoopIdxs = list(range(len(eloop1.edges))) + for offset in range(len(eloop1.edges)): + totEloopDist = 0 # Measure this total distance for thsi loop. + + offsetIndexLs = eLoopIdxs[offset:] + eLoopIdxs[:offset] # Make offset index list + + + # e1Idx is always from 0uu to N, e2Idx is offset. + for e1Idx, e2Idx in enumerate(offsetIndexLs): + e1= eloop1.edges[e1Idx] + e2= eloop2.edges[e2Idx] + + + # Include fan connections in the measurement. + OK= True + while OK or e1.removed: + OK= False + + # Measure the vloop distance =============== + diff= ((e1.cent - e2.cent).length) #/ nangle1 + + ed_dir= e1.cent-e2.cent + a_diff= AngleBetweenVecs(DIR, ed_dir)/18 # 0 t0 18 + + totEloopDist += (diff * (1+a_diff)) / (1+loopDist) + + # Premeture break if where no better off + if totEloopDist > bestEloopDist: + break + + e1=e1.next + + if totEloopDist < bestEloopDist: + bestOffset = offset + bestEloopDist = totEloopDist + + # Modify V2 LS for Best offset + eloop2.edges = eloop2.edges[bestOffset:] + eloop2.edges[:bestOffset] + + else: + # Both are open loops, easier to calculate. + + + # Make sure the fake edges are at the start. + for i, edloop in enumerate((eloop1, eloop2)): + # print "LOOPO" + if edloop.edges[0].fake: + # alredy at the start + #print "A" + pass + elif edloop.edges[-1].fake: + # put the end at the start + edloop.edges.insert(0, edloop.edges.pop()) + #print "B" + + else: + for j, ed in enumerate(edloop.edges): + if ed.fake: + #print "C" + edloop.edges = edloop.edges = edloop.edges[j:] + edloop.edges[:j] + break + # print "DONE" + ed1, ed2 = eloop1.edges[0], eloop2.edges[0] + + if not ed1.fake or not ed2.fake: + raise "Error" + + # Find the join that isnt flipped (juts like detecting a bow-tie face) + a1 = (ed1.co1 - ed2.co1).length + (ed1.co2 - ed2.co2).length + a2 = (ed1.co1 - ed2.co2).length + (ed1.co2 - ed2.co1).length + + if a1 > a2: + eloop2.reverse() + # make the first edge the start edge still + eloop2.edges.insert(0, eloop2.edges.pop()) + + + + + for loopIdx in range(len(eloop2.edges)): + e1 = eloop1.edges[loopIdx] + e2 = eloop2.edges[loopIdx] + + # Remember the pairs for fan filling culled edges. + e1.match = e2; e2.match = e1 + + if not (e1.fake or e2.fake): + new_faces.append([e1.v1, e1.v2, e2.v2, e2.v1]) + + # FAN FILL MISSING FACES. + if CULL_FACES: + # Culled edges will be in eloop1. + FAN_FILLED_FACES = 0 + + contextEdge = eloop1.edges[0] # The larger of teh 2 + while FAN_FILLED_FACES < CULL_FACES: + while contextEdge.next.removed == 0: + contextEdge = contextEdge.next + + vertFanPivot = contextEdge.match.v2 + + while contextEdge.next.removed == 1: + #if not contextEdge.next.fake: + new_faces.append([contextEdge.next.v1, contextEdge.next.v2, vertFanPivot]) + + # Should we use another var?, this will work for now. + contextEdge.next.removed = 1 + + contextEdge = contextEdge.next + FAN_FILLED_FACES += 1 + + # may need to fan fill backwards 1 for non closed loops. + + eloop1.restore() # Add culled back into the list. + + return new_faces + +def main(context): + global CULL_METHOD + + ob = context.object + + is_editmode = (ob.mode=='EDIT') + if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) + if ob == None or ob.type != 'MESH': + raise Exception("BPyMessages.Error_NoMeshActive()") + return + + me = ob.data + + time1 = time.time() + selEdges = getSelectedEdges(context, me, ob) + vertLoops = getVertLoops(selEdges, me) # list of lists of edges. + if vertLoops == None: + raise Exception('Error%t|Selection includes verts that are a part of more then 1 loop') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + # print len(vertLoops) + + + if len(vertLoops) > 2: + choice = PupMenu('Loft '+str(len(vertLoops))+' edge loops%t|loop|segment') + if choice == -1: + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + + elif len(vertLoops) < 2: + raise Exception('Error%t|No Vertloops found!') + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + return + else: + choice = 2 + + + # The line below checks if any of the vert loops are differenyt in length. + if False in [len(v[0]) == len(vertLoops[0][0]) for v in vertLoops]: + CULL_METHOD = PupMenu('Small to large edge loop distrobution method%t|remove edges evenly|remove smallest edges') + if CULL_METHOD == -1: + if is_editmode: Window.EditMode(1) + return + + if CULL_METHOD ==1: # RESET CULL_METHOD + CULL_METHOD = 0 # shortest + else: + CULL_METHOD = 1 # even + + + time1 = time.time() + # Convert to special edge data. + edgeLoops = [] + for vloop, closed in vertLoops: + edgeLoops.append(edgeLoop(vloop, me, closed)) + + + # VERT LOOP ORDERING CODE + # "Build a worm" list - grow from Both ends + edgeOrderedList = [edgeLoops.pop()] + + # Find the closest. + bestSoFar = BIG_NUM + bestIdxSoFar = None + for edLoopIdx, edLoop in enumerate(edgeLoops): + l =(edgeOrderedList[-1].centre - edLoop.centre).length + if l < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l + + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + + # Now we have the 2 closest, append to either end- + # Find the closest. + while edgeLoops: + bestSoFar = BIG_NUM + bestIdxSoFar = None + first_or_last = 0 # Zero is first + for edLoopIdx, edLoop in enumerate(edgeLoops): + l1 =(edgeOrderedList[-1].centre - edLoop.centre).length + + if l1 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l1 + first_or_last = 1 # last + + l2 =(edgeOrderedList[0].centre - edLoop.centre).length + if l2 < bestSoFar: + bestIdxSoFar = edLoopIdx + bestSoFar = l2 + first_or_last = 0 # last + + if first_or_last: # add closest Last + edgeOrderedList.append( edgeLoops.pop(bestIdxSoFar) ) + else: # Add closest First + edgeOrderedList.insert(0, edgeLoops.pop(bestIdxSoFar) ) # First + + faces = [] + + for i in range(len(edgeOrderedList)-1): + faces.extend( skin2EdgeLoops(edgeOrderedList[i], edgeOrderedList[i+1], me, ob, 0) ) + if choice == 1 and len(edgeOrderedList) > 2: # Loop + faces.extend( skin2EdgeLoops(edgeOrderedList[0], edgeOrderedList[-1], me, ob, 0) ) + + # REMOVE SELECTED FACES. + MESH_MODE= ob.mode + if MESH_MODE == 'EDGE' or MESH_MODE == 'VERTEX': pass + elif MESH_MODE == 'FACE': + try: me.faces.delete(1, [ f for f in me.faces if f.sel ]) + except: pass + + if 1: # 2.5 + mesh_faces_extend(me, faces, ob.active_material_index) + me.update(calc_edges=True) + else: + me.faces.extend(faces, smooth = True) + + print('\nSkin done in %.4f sec.' % (time.time()-time1)) + + if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + + +class MESH_OT_skin(bpy.types.Operator): + '''Bridge face loops.''' + + bl_idname = "mesh.skin" + bl_label = "Add Torus" + bl_register = True + bl_undo = True + + ''' + loft_method = EnumProperty(attr="loft_method", items=[(), ()], description="", default= True) + + ''' + + def execute(self, context): + main(context) + return ('FINISHED',) + + +# Register the operator +bpy.ops.add(MESH_OT_skin) + +# Add to a menu +import dynamic_menu +menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_edit_mesh_faces, (lambda self, context: self.layout.itemO("mesh.skin", text="Bridge Faces")) ) + +if __name__ == "__main__": + bpy.ops.mesh.skin() diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py new file mode 100644 index 00000000000..454cb2f23ec --- /dev/null +++ b/release/scripts/op/uvcalc_smart_project.py @@ -0,0 +1,1146 @@ +# -------------------------------------------------------------------------- +# Smart Projection UV Projection Unwrapper v1.2 by Campbell Barton (AKA Ideasman) +# -------------------------------------------------------------------------- +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- + + +#from Blender import Object, Draw, Window, sys, Mesh, Geometry +from Mathutils import Matrix, Vector, RotationMatrix +import time +import Geometry +import bpy +from math import cos, degrees, radians + +DEG_TO_RAD = 0.017453292519943295 # pi/180.0 +SMALL_NUM = 0.000000001 +BIG_NUM = 1e15 + +global USER_FILL_HOLES +global USER_FILL_HOLES_QUALITY +USER_FILL_HOLES = None +USER_FILL_HOLES_QUALITY = None + +dict_matrix = {} + +def pointInTri2D(v, v1, v2, v3): + global dict_matrix + + key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y + + # Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face. + ''' + # BOUNDS CHECK + xmin= 1000000 + ymin= 1000000 + + xmax= -1000000 + ymax= -1000000 + + for i in (0,2,4): + x= key[i] + y= key[i+1] + + if xmax<x: xmax= x + if ymax<y: ymax= y + if xmin>x: xmin= x + if ymin>y: ymin= y + + x= v.x + y= v.y + + if x<xmin or x>xmax or y < ymin or y > ymax: + return False + # Done with bounds check + ''' + try: + mtx = dict_matrix[key] + if not mtx: + return False + except: + side1 = v2 - v1 + side2 = v3 - v1 + + nor = side1.cross(side2) + + l1 = [side1[0], side1[1], side1[2]] + l2 = [side2[0], side2[1], side2[2]] + l3 = [nor[0], nor[1], nor[2]] + + mtx = Matrix(l1, l2, l3) + + # Zero area 2d tri, even tho we throw away zerop area faces + # the projection UV can result in a zero area UV. + if not mtx.determinant(): + dict_matrix[key] = None + return False + + mtx.invert() + + dict_matrix[key] = mtx + + uvw = (v - v1) * mtx + return 0 <= uvw[0] and 0 <= uvw[1] and uvw[0] + uvw[1] <= 1 + + +def boundsIsland(faces): + minx = maxx = faces[0].uv[0][0] # Set initial bounds. + miny = maxy = faces[0].uv[0][1] + # print len(faces), minx, maxx, miny , maxy + for f in faces: + for uv in f.uv: + x= uv.x + y= uv.y + if x<minx: minx= x + if y<miny: miny= y + if x>maxx: maxx= x + if y>maxy: maxy= y + + return minx, miny, maxx, maxy + +""" +def boundsEdgeLoop(edges): + minx = maxx = edges[0][0] # Set initial bounds. + miny = maxy = edges[0][1] + # print len(faces), minx, maxx, miny , maxy + for ed in edges: + for pt in ed: + print 'ass' + x= pt[0] + y= pt[1] + if x<minx: x= minx + if y<miny: y= miny + if x>maxx: x= maxx + if y>maxy: y= maxy + + return minx, miny, maxx, maxy +""" + +# Turns the islands into a list of unpordered edges (Non internal) +# Onlt for UV's +# only returns outline edges for intersection tests. and unique points. + +def island2Edge(island): + + # Vert index edges + edges = {} + + unique_points= {} + + for f in island: + f_uvkey= map(tuple, f.uv) + + + for vIdx, edkey in enumerate(f.edge_keys): + unique_points[f_uvkey[vIdx]] = f.uv[vIdx] + + if f.v[vIdx].index > f.v[vIdx-1].index: + i1= vIdx-1; i2= vIdx + else: + i1= vIdx; i2= vIdx-1 + + try: edges[ f_uvkey[i1], f_uvkey[i2] ] *= 0 # sets eny edge with more then 1 user to 0 are not returned. + except: edges[ f_uvkey[i1], f_uvkey[i2] ] = (f.uv[i1] - f.uv[i2]).length, + + # If 2 are the same then they will be together, but full [a,b] order is not correct. + + # Sort by length + + + length_sorted_edges = [(Vector(key[0]), Vector(key[1]), value) for key, value in edges.items() if value != 0] + + try: length_sorted_edges.sort(key = lambda A: -A[2]) # largest first + except: length_sorted_edges.sort(lambda A, B: cmp(B[2], A[2])) + + # Its okay to leave the length in there. + #for e in length_sorted_edges: + # e.pop(2) + + # return edges and unique points + return length_sorted_edges, [v.__copy__().resize3D() for v in unique_points.values()] + +# ========================= NOT WORKING???? +# Find if a points inside an edge loop, un-orderd. +# pt is and x/y +# edges are a non ordered loop of edges. +# #offsets are the edge x and y offset. +""" +def pointInEdges(pt, edges): + # + x1 = pt[0] + y1 = pt[1] + + # Point to the left of this line. + x2 = -100000 + y2 = -10000 + intersectCount = 0 + for ed in edges: + xi, yi = lineIntersection2D(x1,y1, x2,y2, ed[0][0], ed[0][1], ed[1][0], ed[1][1]) + if xi != None: # Is there an intersection. + intersectCount+=1 + + return intersectCount % 2 +""" + +def pointInIsland(pt, island): + vec1 = Vector(); vec2 = Vector(); vec3 = Vector() + for f in island: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[1] + vec3.x, vec3.y = f.uv[2] + + if pointInTri2D(pt, vec1, vec2, vec3): + return True + + if len(f.v) == 4: + vec1.x, vec1.y = f.uv[0] + vec2.x, vec2.y = f.uv[2] + vec3.x, vec3.y = f.uv[3] + if pointInTri2D(pt, vec1, vec2, vec3): + return True + return False + + +# box is (left,bottom, right, top) +def islandIntersectUvIsland(source, target, SourceOffset): + # Is 1 point in the box, inside the vertLoops + edgeLoopsSource = source[6] # Pretend this is offset + edgeLoopsTarget = target[6] + + # Edge intersect test + for ed in edgeLoopsSource: + for seg in edgeLoopsTarget: + i = Geometry.LineIntersect2D(\ + seg[0], seg[1], SourceOffset+ed[0], SourceOffset+ed[1]) + if i: + return 1 # LINE INTERSECTION + + # 1 test for source being totally inside target + SourceOffset.resize3D() + for pv in source[7]: + if pointInIsland(pv+SourceOffset, target[0]): + return 2 # SOURCE INSIDE TARGET + + # 2 test for a part of the target being totaly inside the source. + for pv in target[7]: + if pointInIsland(pv-SourceOffset, source[0]): + return 3 # PART OF TARGET INSIDE SOURCE. + + return 0 # NO INTERSECTION + + + + +# Returns the X/y Bounds of a list of vectors. +def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1): + + # UV's will never extend this far. + minx = miny = BIG_NUM + maxx = maxy = -BIG_NUM + + for i, v in enumerate(vecs): + + # Do this allong the way + if mat != -1: + v = vecs[i] = v*mat + x= v.x + y= v.y + if x<minx: minx= x + if y<miny: miny= y + if x>maxx: maxx= x + if y>maxy: maxy= y + + # Spesific to this algo, bail out if we get bigger then the current area + if bestAreaSoFar != -1 and (maxx-minx) * (maxy-miny) > bestAreaSoFar: + return (BIG_NUM, None), None + w = maxx-minx + h = maxy-miny + return (w*h, w,h), vecs # Area, vecs + +# Takes a list of faces that make up a UV island and rotate +# until they optimally fit inside a square. +ROTMAT_2D_POS_90D = RotationMatrix( radians(90.0), 2) +ROTMAT_2D_POS_45D = RotationMatrix( radians(45.0), 2) + +RotMatStepRotation = [] +rot_angle = 22.5 #45.0/2 +while rot_angle > 0.1: + RotMatStepRotation.append([\ + RotationMatrix( radians(rot_angle), 2),\ + RotationMatrix( radians(-rot_angle), 2)]) + + rot_angle = rot_angle/2.0 + + +def optiRotateUvIsland(faces): + global currentArea + + # Bestfit Rotation + def best2dRotation(uvVecs, MAT1, MAT2): + global currentArea + + newAreaPos, newfaceProjectionGroupListPos =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT1, currentArea[0]) + + + # Why do I use newpos here? May as well give the best area to date for an early bailout + # some slight speed increase in this. + # If the new rotation is smaller then the existing, we can + # avoid copying a list and overwrite the old, crappy one. + + if newAreaPos[0] < currentArea[0]: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs, MAT2, newAreaPos[0]) # Reuse the old bigger list. + else: + newAreaNeg, newfaceProjectionGroupListNeg =\ + testNewVecLs2DRotIsBetter(uvVecs[:], MAT2, currentArea[0]) # Cant reuse, make a copy. + + + # Now from the 3 options we need to discover which to use + # we have cerrentArea/newAreaPos/newAreaNeg + bestArea = min(currentArea[0], newAreaPos[0], newAreaNeg[0]) + + if currentArea[0] == bestArea: + return uvVecs + elif newAreaPos[0] == bestArea: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + elif newAreaNeg[0] == bestArea: + uvVecs = newfaceProjectionGroupListNeg + currentArea = newAreaNeg + + return uvVecs + + + # Serialized UV coords to Vectors + uvVecs = [uv for f in faces for uv in f.uv] + + # Theres a small enough number of these to hard code it + # rather then a loop. + + # Will not modify anything + currentArea, dummy =\ + testNewVecLs2DRotIsBetter(uvVecs) + + + # Try a 45d rotation + newAreaPos, newfaceProjectionGroupListPos = testNewVecLs2DRotIsBetter(uvVecs[:], ROTMAT_2D_POS_45D, currentArea[0]) + + if newAreaPos[0] < currentArea[0]: + uvVecs = newfaceProjectionGroupListPos + currentArea = newAreaPos + # 45d done + + # Testcase different rotations and find the onfe that best fits in a square + for ROTMAT in RotMatStepRotation: + uvVecs = best2dRotation(uvVecs, ROTMAT[0], ROTMAT[1]) + + # Only if you want it, make faces verticle! + if currentArea[1] > currentArea[2]: + # Rotate 90d + # Work directly on the list, no need to return a value. + testNewVecLs2DRotIsBetter(uvVecs, ROTMAT_2D_POS_90D) + + + # Now write the vectors back to the face UV's + i = 0 # count the serialized uv/vectors + for f in faces: + #f.uv = [uv for uv in uvVecs[i:len(f)+i] ] + for j, k in enumerate(range(i, len(f.v)+i)): + f.uv[j][:] = uvVecs[k] + i += len(f.v) + + +# Takes an island list and tries to find concave, hollow areas to pack smaller islands into. +def mergeUvIslands(islandList): + global USER_FILL_HOLES + global USER_FILL_HOLES_QUALITY + + + # Pack islands to bottom LHS + # Sync with island + + #islandTotFaceArea = [] # A list of floats, each island area + #islandArea = [] # a list of tuples ( area, w,h) + + + decoratedIslandList = [] + + islandIdx = len(islandList) + while islandIdx: + islandIdx-=1 + minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) + w, h = maxx-minx, maxy-miny + + totFaceArea = 0 + offset= Vector(minx, miny) + for f in islandList[islandIdx]: + for uv in f.uv: + uv -= offset + + totFaceArea += f.area + + islandBoundsArea = w*h + efficiency = abs(islandBoundsArea - totFaceArea) + + # UV Edge list used for intersections as well as unique points. + edges, uniqueEdgePoints = island2Edge(islandList[islandIdx]) + + decoratedIslandList.append([islandList[islandIdx], totFaceArea, efficiency, islandBoundsArea, w,h, edges, uniqueEdgePoints]) + + + # Sort by island bounding box area, smallest face area first. + # no.. chance that to most simple edge loop first. + decoratedIslandListAreaSort =decoratedIslandList[:] + + decoratedIslandListAreaSort.sort(key = lambda A: A[3]) + + # sort by efficiency, Least Efficient first. + decoratedIslandListEfficSort = decoratedIslandList[:] + # decoratedIslandListEfficSort.sort(lambda A, B: cmp(B[2], A[2])) + + decoratedIslandListEfficSort.sort(key = lambda A: -A[2]) + + # ================================================== THESE CAN BE TWEAKED. + # This is a quality value for the number of tests. + # from 1 to 4, generic quality value is from 1 to 100 + USER_STEP_QUALITY = ((USER_FILL_HOLES_QUALITY - 1) / 25.0) + 1 + + # If 100 will test as long as there is enough free space. + # this is rarely enough, and testing takes a while, so lower quality speeds this up. + + # 1 means they have the same quality + USER_FREE_SPACE_TO_TEST_QUALITY = 1 + (((100 - USER_FILL_HOLES_QUALITY)/100.0) *5) + + #print 'USER_STEP_QUALITY', USER_STEP_QUALITY + #print 'USER_FREE_SPACE_TO_TEST_QUALITY', USER_FREE_SPACE_TO_TEST_QUALITY + + removedCount = 0 + + areaIslandIdx = 0 + ctrl = Window.Qual.CTRL + BREAK= False + while areaIslandIdx < len(decoratedIslandListAreaSort) and not BREAK: + sourceIsland = decoratedIslandListAreaSort[areaIslandIdx] + # Alredy packed? + if not sourceIsland[0]: + areaIslandIdx+=1 + else: + efficIslandIdx = 0 + while efficIslandIdx < len(decoratedIslandListEfficSort) and not BREAK: + + if Window.GetKeyQualifiers() & ctrl: + BREAK= True + break + + # Now we have 2 islands, is the efficience of the islands lowers theres an + # increasing likely hood that we can fit merge into the bigger UV island. + # this ensures a tight fit. + + # Just use figures we have about user/unused area to see if they might fit. + + targetIsland = decoratedIslandListEfficSort[efficIslandIdx] + + + if sourceIsland[0] == targetIsland[0] or\ + not targetIsland[0] or\ + not sourceIsland[0]: + pass + else: + + # ([island, totFaceArea, efficiency, islandArea, w,h]) + # Waisted space on target is greater then UV bounding island area. + + + # if targetIsland[3] > (sourceIsland[2]) and\ # + # print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass' + if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\ + targetIsland[4] > sourceIsland[4] and\ + targetIsland[5] > sourceIsland[5]: + + # DEBUG # print '%.10f %.10f' % (targetIsland[3], sourceIsland[1]) + + # These enough spare space lets move the box until it fits + + # How many times does the source fit into the target x/y + blockTestXUnit = targetIsland[4]/sourceIsland[4] + blockTestYUnit = targetIsland[5]/sourceIsland[5] + + boxLeft = 0 + + + # Distllllance we can move between whilst staying inside the targets bounds. + testWidth = targetIsland[4] - sourceIsland[4] + testHeight = targetIsland[5] - sourceIsland[5] + + # Increment we move each test. x/y + xIncrement = (testWidth / (blockTestXUnit * ((USER_STEP_QUALITY/50)+0.1))) + yIncrement = (testHeight / (blockTestYUnit * ((USER_STEP_QUALITY/50)+0.1))) + + # Make sure were not moving less then a 3rg of our width/height + if xIncrement<sourceIsland[4]/3: + xIncrement= sourceIsland[4] + if yIncrement<sourceIsland[5]/3: + yIncrement= sourceIsland[5] + + + boxLeft = 0 # Start 1 back so we can jump into the loop. + boxBottom= 0 #-yIncrement + + ##testcount= 0 + + while boxBottom <= testHeight: + # Should we use this? - not needed for now. + #if Window.GetKeyQualifiers() & ctrl: + # BREAK= True + # break + + ##testcount+=1 + #print 'Testing intersect' + Intersect = islandIntersectUvIsland(sourceIsland, targetIsland, Vector(boxLeft, boxBottom)) + #print 'Done', Intersect + if Intersect == 1: # Line intersect, dont bother with this any more + pass + + if Intersect == 2: # Source inside target + ''' + We have an intersection, if we are inside the target + then move us 1 whole width accross, + Its possible this is a bad idea since 2 skinny Angular faces + could join without 1 whole move, but its a lot more optimal to speed this up + since we have alredy tested for it. + + It gives about 10% speedup with minimal errors. + ''' + #print 'ass' + # Move the test allong its width + SMALL_NUM + #boxLeft += sourceIsland[4] + SMALL_NUM + boxLeft += sourceIsland[4] + elif Intersect == 0: # No intersection?? Place it. + # Progress + removedCount +=1 +#XXX Window.DrawProgressBar(0.0, 'Merged: %i islands, Ctrl to finish early.' % removedCount) + + # Move faces into new island and offset + targetIsland[0].extend(sourceIsland[0]) + offset= Vector(boxLeft, boxBottom) + + for f in sourceIsland[0]: + for uv in f.uv: + uv+= offset + + sourceIsland[0][:] = [] # Empty + + + # Move edge loop into new and offset. + # targetIsland[6].extend(sourceIsland[6]) + #while sourceIsland[6]: + targetIsland[6].extend( [ (\ + (e[0]+offset, e[1]+offset, e[2])\ + ) for e in sourceIsland[6] ] ) + + sourceIsland[6][:] = [] # Empty + + # Sort by edge length, reverse so biggest are first. + + try: targetIsland[6].sort(key = lambda A: A[2]) + except: targetIsland[6].sort(lambda B,A: cmp(A[2], B[2] )) + + + targetIsland[7].extend(sourceIsland[7]) + offset= Vector(boxLeft, boxBottom, 0) + for p in sourceIsland[7]: + p+= offset + + sourceIsland[7][:] = [] + + + # Decrement the efficiency + targetIsland[1]+=sourceIsland[1] # Increment totFaceArea + targetIsland[2]-=sourceIsland[1] # Decrement efficiency + # IF we ever used these again, should set to 0, eg + sourceIsland[2] = 0 # No area if anyone wants to know + + break + + + # INCREMENR NEXT LOCATION + if boxLeft > testWidth: + boxBottom += yIncrement + boxLeft = 0.0 + else: + boxLeft += xIncrement + ##print testcount + + efficIslandIdx+=1 + areaIslandIdx+=1 + + # Remove empty islands + i = len(islandList) + while i: + i-=1 + if not islandList[i]: + del islandList[i] # Can increment islands removed here. + +# Takes groups of faces. assumes face groups are UV groups. +def getUvIslands(faceGroups, me): + + # Get seams so we dont cross over seams + edge_seams = {} # shoudl be a set + for ed in me.edges: + if ed.seam: + edge_seams[ed.key] = None # dummy var- use sets! + # Done finding seams + + + islandList = [] + +#XXX Window.DrawProgressBar(0.0, 'Splitting %d projection groups into UV islands:' % len(faceGroups)) + #print '\tSplitting %d projection groups into UV islands:' % len(faceGroups), + # Find grouped faces + + faceGroupIdx = len(faceGroups) + + while faceGroupIdx: + faceGroupIdx-=1 + faces = faceGroups[faceGroupIdx] + + if not faces: + continue + + # Build edge dict + edge_users = {} + + for i, f in enumerate(faces): + for ed_key in f.edge_keys: + if ed_key in edge_seams: # DELIMIT SEAMS! ;) + edge_users[ed_key] = [] # so as not to raise an error + else: + try: edge_users[ed_key].append(i) + except: edge_users[ed_key] = [i] + + # Modes + # 0 - face not yet touched. + # 1 - added to island list, and need to search + # 2 - touched and searched - dont touch again. + face_modes = [0] * len(faces) # initialize zero - untested. + + face_modes[0] = 1 # start the search with face 1 + + newIsland = [] + + newIsland.append(faces[0]) + + + ok = True + while ok: + + ok = True + while ok: + ok= False + for i in range(len(faces)): + if face_modes[i] == 1: # search + for ed_key in faces[i].edge_keys: + for ii in edge_users[ed_key]: + if i != ii and face_modes[ii] == 0: + face_modes[ii] = ok = 1 # mark as searched + newIsland.append(faces[ii]) + + # mark as searched, dont look again. + face_modes[i] = 2 + + islandList.append(newIsland) + + ok = False + for i in range(len(faces)): + if face_modes[i] == 0: + newIsland = [] + newIsland.append(faces[i]) + + face_modes[i] = ok = 1 + break + # if not ok will stop looping + +#XXX Window.DrawProgressBar(0.1, 'Optimizing Rotation for %i UV Islands' % len(islandList)) + + for island in islandList: + optiRotateUvIsland(island) + + return islandList + + +def packIslands(islandList): + if USER_FILL_HOLES: +#XXX Window.DrawProgressBar(0.1, 'Merging Islands (Ctrl: skip merge)...') + mergeUvIslands(islandList) # Modify in place + + + # Now we have UV islands, we need to pack them. + + # Make a synchronised list with the islands + # so we can box pak the islands. + packBoxes = [] + + # Keep a list of X/Y offset so we can save time by writing the + # uv's and packed data in one pass. + islandOffsetList = [] + + islandIdx = 0 + + while islandIdx < len(islandList): + minx, miny, maxx, maxy = boundsIsland(islandList[islandIdx]) + + w, h = maxx-minx, maxy-miny + + if USER_ISLAND_MARGIN: + minx -= USER_ISLAND_MARGIN# *w + miny -= USER_ISLAND_MARGIN# *h + maxx += USER_ISLAND_MARGIN# *w + maxy += USER_ISLAND_MARGIN# *h + + # recalc width and height + w, h = maxx-minx, maxy-miny + + if w < 0.00001 or h < 0.00001: + del islandList[islandIdx] + islandIdx -=1 + continue + + '''Save the offset to be applied later, + we could apply to the UVs now and allign them to the bottom left hand area + of the UV coords like the box packer imagines they are + but, its quicker just to remember their offset and + apply the packing and offset in 1 pass ''' + islandOffsetList.append((minx, miny)) + + # Add to boxList. use the island idx for the BOX id. + packBoxes.append([0, 0, w, h]) + islandIdx+=1 + + # Now we have a list of boxes to pack that syncs + # with the islands. + + #print '\tPacking UV Islands...' +#XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) ) + + time1 = time.time() + packWidth, packHeight = Geometry.BoxPack2D(packBoxes) + + # print 'Box Packing Time:', time.time() - time1 + + #if len(pa ckedLs) != len(islandList): + # raise "Error packed boxes differes from original length" + + #print '\tWriting Packed Data to faces' +#XXX Window.DrawProgressBar(0.8, 'Writing Packed Data to faces') + + # Sort by ID, so there in sync again + islandIdx = len(islandList) + # Having these here avoids devide by 0 + if islandIdx: + + if USER_STRETCH_ASPECT: + # Maximize to uv area?? Will write a normalize function. + xfactor = 1.0 / packWidth + yfactor = 1.0 / packHeight + else: + # Keep proportions. + xfactor = yfactor = 1.0 / max(packWidth, packHeight) + + while islandIdx: + islandIdx -=1 + # Write the packed values to the UV's + + xoffset = packBoxes[islandIdx][0] - islandOffsetList[islandIdx][0] + yoffset = packBoxes[islandIdx][1] - islandOffsetList[islandIdx][1] + + for f in islandList[islandIdx]: # Offsetting the UV's so they fit in there packed box + for uv in f.uv: + uv.x= (uv.x+xoffset) * xfactor + uv.y= (uv.y+yoffset) * yfactor + + + +def VectoMat(vec): + a3 = vec.__copy__().normalize() + + up = Vector(0,0,1) + if abs(a3.dot(up)) == 1.0: + up = Vector(0,1,0) + + a1 = a3.cross(up).normalize() + a2 = a3.cross(a1) + return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]]) + + +class thickface(object): + __slost__= 'v', 'uv', 'no', 'area', 'edge_keys' + def __init__(self, face, uvface, mesh_verts): + self.v = [mesh_verts[i] for i in face.verts] + if len(self.v)==4: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4 + else: + self.uv = uvface.uv1, uvface.uv2, uvface.uv3 + + self.no = face.normal + self.area = face.area + self.edge_keys = face.edge_keys() + +global ob +ob = None +def main(context, island_margin, projection_limit): + global USER_FILL_HOLES + global USER_FILL_HOLES_QUALITY + global USER_STRETCH_ASPECT + global USER_ISLAND_MARGIN + +#XXX objects= bpy.data.scenes.active.objects + objects = context.selected_editable_objects + + + # we can will tag them later. + obList = [ob for ob in objects if ob.type == 'MESH'] + + # Face select object may not be selected. +#XXX ob = objects.active + ob= objects[0] + + if ob and ob.selected == 0 and ob.type == 'MESH': + # Add to the list + obList =[ob] + del objects + + if not obList: + raise('error, no selected mesh objects') + + # Create the variables. + USER_PROJECTION_LIMIT = projection_limit + USER_ONLY_SELECTED_FACES = (1) + USER_SHARE_SPACE = (1) # Only for hole filling. + USER_STRETCH_ASPECT = (1) # Only for hole filling. + USER_ISLAND_MARGIN = island_margin # Only for hole filling. + USER_FILL_HOLES = (0) + USER_FILL_HOLES_QUALITY = (50) # Only for hole filling. + USER_VIEW_INIT = (0) # Only for hole filling. + USER_AREA_WEIGHT = (1) # Only for hole filling. + + # Reuse variable + if len(obList) == 1: + ob = "Unwrap %i Selected Mesh" + else: + ob = "Unwrap %i Selected Meshes" + + # HACK, loop until mouse is lifted. + ''' + while Window.GetMouseButtons() != 0: + time.sleep(10) + ''' + +#XXX if not Draw.PupBlock(ob % len(obList), pup_block): +#XXX return +#XXX del ob + + # Convert from being button types + + USER_PROJECTION_LIMIT_CONVERTED = cos(USER_PROJECTION_LIMIT * DEG_TO_RAD) + USER_PROJECTION_LIMIT_HALF_CONVERTED = cos((USER_PROJECTION_LIMIT/2) * DEG_TO_RAD) + + + # Toggle Edit mode + is_editmode = (context.active_object.mode == 'EDIT') + if is_editmode: + bpy.ops.object.mode_set(mode='OBJECT') + # Assume face select mode! an annoying hack to toggle face select mode because Mesh dosent like faceSelectMode. + + if USER_SHARE_SPACE: + # Sort by data name so we get consistant results + obList.sort(key = lambda ob: ob.data.name) + collected_islandList= [] + +#XXX Window.WaitCursor(1) + + time1 = time.time() + + # Tag as False se we dont operate on teh same mesh twice. +#XXX bpy.data.meshes.tag = False + for me in bpy.data.meshes: + me.tag = False + + + for ob in obList: + me = ob.data + + if me.tag or me.library: + continue + + # Tag as used + me.tag = True + + if len(me.uv_textures)==0: # Mesh has no UV Coords, dont bother. + me.add_uv_texture() + + uv_layer = me.active_uv_texture.data + me_verts = list(me.verts) + + if USER_ONLY_SELECTED_FACES: + meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.selected] + #else: + # meshFaces = map(thickface, me.faces) + + if not meshFaces: + continue + +#XXX Window.DrawProgressBar(0.1, 'SmartProj UV Unwrapper, mapping "%s", %i faces.' % (me.name, len(meshFaces))) + + # ======= + # Generate a projection list from face normals, this is ment to be smart :) + + # make a list of face props that are in sync with meshFaces + # Make a Face List that is sorted by area. + # meshFaces = [] + + # meshFaces.sort( lambda a, b: cmp(b.area , a.area) ) # Biggest first. + meshFaces.sort( key = lambda a: -a.area ) + + # remove all zero area faces + while meshFaces and meshFaces[-1].area <= SMALL_NUM: + # Set their UV's to 0,0 + for uv in meshFaces[-1].uv: + uv.zero() + meshFaces.pop() + + # Smallest first is slightly more efficient, but if the user cancels early then its better we work on the larger data. + + # Generate Projection Vecs + # 0d is 1.0 + # 180 IS -0.59846 + + + # Initialize projectVecs + if USER_VIEW_INIT: + # Generate Projection + projectVecs = [Vector(Window.GetViewVector()) * ob.matrixWorld.copy().invert().rotationPart()] # We add to this allong the way + else: + projectVecs = [] + + newProjectVec = meshFaces[0].no + newProjectMeshFaces = [] # Popping stuffs it up. + + + # Predent that the most unique angke is ages away to start the loop off + mostUniqueAngle = -1.0 + + # This is popped + tempMeshFaces = meshFaces[:] + + + + # This while only gathers projection vecs, faces are assigned later on. + while 1: + # If theres none there then start with the largest face + + # add all the faces that are close. + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + # Use half the angle limit so we dont overweight faces towards this + # normal and hog all the faces. + if newProjectVec.dot(tempMeshFaces[fIdx].no) > USER_PROJECTION_LIMIT_HALF_CONVERTED: + newProjectMeshFaces.append(tempMeshFaces.pop(fIdx)) + + # Add the average of all these faces normals as a projectionVec + averageVec = Vector(0,0,0) + if USER_AREA_WEIGHT: + for fprop in newProjectMeshFaces: + averageVec += (fprop.no * fprop.area) + else: + for fprop in newProjectMeshFaces: + averageVec += fprop.no + + if averageVec.x != 0 or averageVec.y != 0 or averageVec.z != 0: # Avoid NAN + projectVecs.append(averageVec.normalize()) + + + # Get the next vec! + # Pick the face thats most different to all existing angles :) + mostUniqueAngle = 1.0 # 1.0 is 0d. no difference. + mostUniqueIndex = 0 # dummy + + for fIdx in range(len(tempMeshFaces)-1, -1, -1): + angleDifference = -1.0 # 180d difference. + + # Get the closest vec angle we are to. + for p in projectVecs: + temp_angle_diff= p.dot(tempMeshFaces[fIdx].no) + + if angleDifference < temp_angle_diff: + angleDifference= temp_angle_diff + + if angleDifference < mostUniqueAngle: + # We have a new most different angle + mostUniqueIndex = fIdx + mostUniqueAngle = angleDifference + + if mostUniqueAngle < USER_PROJECTION_LIMIT_CONVERTED: + #print 'adding', mostUniqueAngle, USER_PROJECTION_LIMIT, len(newProjectMeshFaces) + # Now weight the vector to all its faces, will give a more direct projection + # if the face its self was not representive of the normal from surrounding faces. + + newProjectVec = tempMeshFaces[mostUniqueIndex].no + newProjectMeshFaces = [tempMeshFaces.pop(mostUniqueIndex)] + + + else: + if len(projectVecs) >= 1: # Must have at least 2 projections + break + + + # If there are only zero area faces then its possible + # there are no projectionVecs + if not len(projectVecs): + Draw.PupMenu('error, no projection vecs where generated, 0 area faces can cause this.') + return + + faceProjectionGroupList =[[] for i in range(len(projectVecs)) ] + + # MAP and Arrange # We know there are 3 or 4 faces here + + for fIdx in range(len(meshFaces)-1, -1, -1): + fvec = meshFaces[fIdx].no + i = len(projectVecs) + + # Initialize first + bestAng = fvec.dot(projectVecs[0]) + bestAngIdx = 0 + + # Cycle through the remaining, first alredy done + while i-1: + i-=1 + + newAng = fvec.dot(projectVecs[i]) + if newAng > bestAng: # Reverse logic for dotvecs + bestAng = newAng + bestAngIdx = i + + # Store the area for later use. + faceProjectionGroupList[bestAngIdx].append(meshFaces[fIdx]) + + # Cull faceProjectionGroupList, + + + # Now faceProjectionGroupList is full of faces that face match the project Vecs list + for i in range(len(projectVecs)): + # Account for projectVecs having no faces. + if not faceProjectionGroupList[i]: + continue + + # Make a projection matrix from a unit length vector. + MatProj = VectoMat(projectVecs[i]) + + # Get the faces UV's from the projected vertex. + for f in faceProjectionGroupList[i]: + f_uv = f.uv + for j, v in enumerate(f.v): + # XXX - note, between Mathutils in 2.4 and 2.5 the order changed. + f_uv[j][:] = (v.co * MatProj)[:2] + + + if USER_SHARE_SPACE: + # Should we collect and pack later? + islandList = getUvIslands(faceProjectionGroupList, me) + collected_islandList.extend(islandList) + + else: + # Should we pack the islands for this 1 object? + islandList = getUvIslands(faceProjectionGroupList, me) + packIslands(islandList) + + + # update the mesh here if we need to. + + # We want to pack all in 1 go, so pack now + if USER_SHARE_SPACE: +#XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...") + packIslands(collected_islandList) + + print("Smart Projection time: %.2f" % (time.time() - time1)) + # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1)) + + if is_editmode: + bpy.ops.object.mode_set(mode='EDIT') + +#XXX Window.DrawProgressBar(1.0, "") +#XXX Window.WaitCursor(0) +#XXX Window.RedrawAll() + +""" + pup_block = [\ + 'Projection',\ +* ('Angle Limit:', USER_PROJECTION_LIMIT, 1, 89, ''),\ + ('Selected Faces Only', USER_ONLY_SELECTED_FACES, 'Use only selected faces from all selected meshes.'),\ + ('Init from view', USER_VIEW_INIT, 'The first projection will be from the view vector.'),\ + ('Area Weight', USER_AREA_WEIGHT, 'Weight projections vector by face area.'),\ + '',\ + '',\ + '',\ + 'UV Layout',\ + ('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\ + ('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\ +* ('Island Margin:', USER_ISLAND_MARGIN, 0.0, 0.5, ''),\ + 'Fill in empty areas',\ + ('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\ + ('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\ + ] +""" + +from bpy.props import * +class SmartProject(bpy.types.Operator): + '''This script projection unwraps the selected faces of a mesh. it operates on all selected mesh objects, and can be used unwrap selected faces, or all faces.''' + bl_idname = "uv.smart_project" + bl_label = "Smart UV Project" + + bl_register = True + bl_undo = True + + angle_limit = FloatProperty(name="Angle Limit", + description="lower for more projection groups, higher for less distortion.", + default=66.0, min=1.0, max=89.0) + + island_margin = FloatProperty(name="Island Margin", + description="Margin to reduce bleed from adjacent islands.", + default=0.0, min=0.0, max=1.0) + + def poll(self, context): + return context.active_object != None + + def execute(self, context): + main(context, self.island_margin, self.angle_limit) + return ('FINISHED',) + +bpy.ops.add(SmartProject) + +# Add to a menu +import dynamic_menu + +menu_func = (lambda self, context: self.layout.itemO(SmartProject.bl_idname, + text="Smart Project")) + +menu_item = dynamic_menu.add(bpy.types.VIEW3D_MT_uv_map, menu_func) + +if __name__ == '__main__': + bpy.ops.uv.smart_project() + diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py new file mode 100644 index 00000000000..7d32c153d04 --- /dev/null +++ b/release/scripts/op/vertexpaint_dirt.py @@ -0,0 +1,178 @@ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# Script copyright (C) Campbell J Barton +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- + +# History +# +# Originally written by Campbell Barton aka ideasman42 +# +# 2009-11-01: * 2.5 port by Keith "Wahooney" Boshoff +# * Replaced old method with my own, speed is similar (about 0.001 sec on Suzanne) +# but results are far more accurate +# + +import bpy +import Mathutils +import math +import time + +from Mathutils import Vector +from bpy.props import * + +def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only): +## Window.WaitCursor(1) + + #BPyMesh.meshCalcNormals(me) + + vert_tone = [0.0] * len(me.verts) + + min_tone =180.0 + max_tone =0.0 + + # create lookup table for each vertex's connected vertices (via edges) + con = [] + + con = [[] for i in range(len(me.verts))] + + # add connected verts + for e in me.edges: + con[e.verts[0]].append(e.verts[1]) + con[e.verts[1]].append(e.verts[0]) + + for v in me.verts: + vec = Vector() + no = v.normal + co = v.co + + # get the direction of the vectors between the vertex and it's connected vertices + for c in con[v.index]: + vec += Vector(me.verts[c].co - co).normalize() + + # normalize the vector by dividing by the number of connected verts + vec /= len(con[v.index]) + + # angle is the acos of the dot product between vert and connected verts normals + ang = math.acos(no.dot(vec)) + + # enforce min/max + ang = max(clamp_dirt, ang) + + if not dirt_only: + ang = min(clamp_clean, ang) + + vert_tone[v.index] = ang + + # blur tones + for i in range(blur_iterations): + # backup the original tones + orig_vert_tone = list(vert_tone) + + # use connected verts look up for blurring + for j, c in enumerate(con): + for v in c: + vert_tone[j] += blur_strength * orig_vert_tone[v] + + vert_tone[j] /= len(c) * blur_strength + 1 + + min_tone = min(vert_tone) + max_tone = max(vert_tone) + + # debug information + # print(min_tone * 2 * math.pi) + # print(max_tone * 2 * math.pi) + # print(clamp_clean) + # print(clamp_dirt) + + tone_range = max_tone-min_tone + + if not tone_range: + return + + active_col_layer = None + + if len(me.vertex_colors): + for lay in me.vertex_colors: + if lay.active: + active_col_layer = lay.data + else: + bpy.ops.mesh.vertex_color_add() + me.vertex_colors[0].active = True + active_col_layer = me.vertex_colors[0].data + + if not active_col_layer: + return("CANCELLED", ) + + for i, f in enumerate(me.faces): + if not me.use_paint_mask or f.selected: + + f_col = active_col_layer[i] + + f_col = [f_col.color1, f_col.color2, f_col.color3, f_col.color4] + + for j, v in enumerate(f.verts): + col = f_col[j] + tone = vert_tone[me.verts[v].index] + tone = (tone-min_tone)/tone_range + + if dirt_only: + tone = min(tone, 0.5) + tone *= 2 + + col[0] = tone*col[0] + col[1] = tone*col[1] + col[2] = tone*col[2] + +## Window.WaitCursor(0) + +class VertexPaintDirt(bpy.types.Operator): + + bl_idname = "mesh.vertex_paint_dirt" + bl_label = "Dirty Vertex Colors" + bl_register = True + bl_undo = True + + blur_strength = FloatProperty(name = "Blur Strength", description = "Blur strength per iteration", default = 1.0, min = 0.01, max = 1.0) + blur_iterations = IntProperty(name = "Blur Iterations", description = "Number times to blur the colors. (higher blurs more)", default = 1, min = 0, max = 40) + clean_angle = FloatProperty(name = "Highlight Angle", description = "Less then 90 limits the angle used in the tonal range", default = 180.0, min = 0.0, max = 180.0) + dirt_angle = FloatProperty(name = "Dirt Angle", description = "Less then 90 limits the angle used in the tonal range", default = 0.0, min = 0.0, max = 180.0) + dirt_only = BoolProperty(name= "Dirt Only", description = "Dont calculate cleans for convex areas", default = False) + + def execute(self, context): + sce = context.scene + ob = context.object + + if not ob or ob.type != 'MESH': + print('Error, no active mesh object, aborting.') + return('CANCELLED',) + + me = ob.data + + t = time.time() + + applyVertexDirt(me, self.blur_iterations, self.blur_strength, math.radians(self.dirt_angle), math.radians(self.clean_angle), self.dirt_only) + + print('Dirt calculated in %.6f' % (time.time()-t)) + + return('FINISHED',) + +bpy.ops.add(VertexPaintDirt) + +if __name__ == "__main__": + bpy.ops.mesh.vertex_paint_dirt() diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py new file mode 100644 index 00000000000..e65002ee0c0 --- /dev/null +++ b/release/scripts/op/wm.py @@ -0,0 +1,378 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8-80 compliant> + +import bpy + +from bpy.props import * + +class MESH_OT_delete_edgeloop(bpy.types.Operator): + '''Export a single object as a stanford PLY with normals, + colours and texture coordinates.''' + bl_idname = "mesh.delete_edgeloop" + bl_label = "Delete Edge Loop" + + def execute(self, context): + bpy.ops.tfm.edge_slide(value=1.0) + bpy.ops.mesh.select_more() + bpy.ops.mesh.remove_doubles() + return ('FINISHED',) + +rna_path_prop = StringProperty(name="Context Attributes", + description="rna context string", maxlen=1024, default="") + +rna_reverse_prop = BoolProperty(name="Reverse", + description="Cycle backwards", default=False) + +class NullPathMember: + pass + + +def context_path_validate(context, path): + import sys + try: + value = eval("context.%s" % path) + except AttributeError: + if "'NoneType'" in str(sys.exc_info()[1]): + # One of the items in the rna path is None, just ignore this + value = NullPathMember + else: + # We have a real error in the rna path, dont ignore that + raise + + return value + + +def execute_context_assign(self, context): + if context_path_validate(context, self.path) == NullPathMember: + return ('PASS_THROUGH',) + + exec("context.%s=self.value" % self.path) + return ('FINISHED',) + + +class WM_OT_context_set_boolean(bpy.types.Operator): + '''Set a context value.''' + bl_idname = "wm.context_set_boolean" + bl_label = "Context Set" + + path = rna_path_prop + value = BoolProperty(name="Value", + description="Assignment value", default=True) + + execute = execute_context_assign + + +class WM_OT_context_set_int(bpy.types.Operator): # same as enum + '''Set a context value.''' + bl_idname = "wm.context_set_int" + bl_label = "Context Set" + + path = rna_path_prop + value = IntProperty(name="Value", description="Assign value", default=0) + + execute = execute_context_assign + + +class WM_OT_context_set_float(bpy.types.Operator): # same as enum + '''Set a context value.''' + bl_idname = "wm.context_set_int" + bl_label = "Context Set" + + path = rna_path_prop + value = FloatProperty(name="Value", + description="Assignment value", default=0.0) + + execute = execute_context_assign + + +class WM_OT_context_set_string(bpy.types.Operator): # same as enum + '''Set a context value.''' + bl_idname = "wm.context_set_string" + bl_label = "Context Set" + + path = rna_path_prop + value = StringProperty(name="Value", + description="Assign value", maxlen=1024, default="") + + execute = execute_context_assign + + +class WM_OT_context_set_enum(bpy.types.Operator): + '''Set a context value.''' + bl_idname = "wm.context_set_enum" + bl_label = "Context Set" + + path = rna_path_prop + value = StringProperty(name="Value", + description="Assignment value (as a string)", + maxlen=1024, default="") + + execute = execute_context_assign + + +class WM_OT_context_toggle(bpy.types.Operator): + '''Toggle a context value.''' + bl_idname = "wm.context_toggle" + bl_label = "Context Toggle" + path = rna_path_prop + + def execute(self, context): + + if context_path_validate(context, self.path) == NullPathMember: + return ('PASS_THROUGH',) + + exec("context.%s=not (context.%s)" % (self.path, self.path)) + return ('FINISHED',) + + +class WM_OT_context_toggle_enum(bpy.types.Operator): + '''Toggle a context value.''' + bl_idname = "wm.context_toggle_enum" + bl_label = "Context Toggle Values" + + path = rna_path_prop + value_1 = StringProperty(name="Value", \ + description="Toggle enum", maxlen=1024, default="") + + value_2 = StringProperty(name="Value", \ + description="Toggle enum", maxlen=1024, default="") + + def execute(self, context): + + if context_path_validate(context, self.path) == NullPathMember: + return ('PASS_THROUGH',) + + exec("context.%s = ['%s', '%s'][context.%s!='%s']" % \ + (self.path, self.value_1, self.value_2, self.path, self.value_2)) + + return ('FINISHED',) + + +class WM_OT_context_cycle_int(bpy.types.Operator): + '''Set a context value. Useful for cycling active material, + vertex keys, groups' etc.''' + bl_idname = "wm.context_cycle_int" + bl_label = "Context Int Cycle" + path = rna_path_prop + reverse = rna_reverse_prop + + def execute(self, context): + + value = context_path_validate(context, self.path) + if value == NullPathMember: + return ('PASS_THROUGH',) + + self.value = value + if self.reverse: + self.value -= 1 + else: + self.value += 1 + execute_context_assign(self, context) + + if self.value != eval("context.%s" % self.path): + # relies on rna clamping int's out of the range + if self.reverse: + self.value = (1 << 32) + else: + self.value = - (1 << 32) + execute_context_assign(self, context) + + return ('FINISHED',) + + +class WM_OT_context_cycle_enum(bpy.types.Operator): + '''Toggle a context value.''' + bl_idname = "wm.context_cycle_enum" + bl_label = "Context Enum Cycle" + + path = rna_path_prop + reverse = rna_reverse_prop + + def execute(self, context): + + value = context_path_validate(context, self.path) + if value == NullPathMember: + return ('PASS_THROUGH',) + + orig_value = value + + # Have to get rna enum values + rna_struct_str, rna_prop_str = self.path.rsplit('.', 1) + i = rna_prop_str.find('[') + + # just incse we get "context.foo.bar[0]" + if i != -1: + rna_prop_str = rna_prop_str[0:i] + + rna_struct = eval("context.%s.rna_type" % rna_struct_str) + + rna_prop = rna_struct.properties[rna_prop_str] + + if type(rna_prop) != bpy.types.EnumProperty: + raise Exception("expected an enum property") + + enums = rna_struct.properties[rna_prop_str].items.keys() + orig_index = enums.index(orig_value) + + # Have the info we need, advance to the next item + if self.reverse: + if orig_index == 0: + advance_enum = enums[-1] + else: + advance_enum = enums[orig_index-1] + else: + if orig_index == len(enums) - 1: + advance_enum = enums[0] + else: + advance_enum = enums[orig_index + 1] + + # set the new value + exec("context.%s=advance_enum" % self.path) + return ('FINISHED',) + +doc_id = StringProperty(name="Doc ID", + description="ID for the documentation", maxlen=1024, default="") + +doc_new = StringProperty(name="Doc New", + description="", maxlen=1024, default="") + + +class WM_OT_doc_view(bpy.types.Operator): + '''Load online reference docs''' + bl_idname = "wm.doc_view" + bl_label = "View Documentation" + + doc_id = doc_id + _prefix = 'http://www.blender.org/documentation/250PythonDoc' + + def _nested_class_string(self, class_string): + ls = [] + class_obj = getattr(bpy.types, class_string, None).bl_rna + while class_obj: + ls.insert(0, class_obj) + class_obj = class_obj.nested + return '.'.join([class_obj.identifier for class_obj in ls]) + + def execute(self, context): + id_split = self.doc_id.split('.') + if len(id_split) == 1: # rna, class + url = '%s/bpy.types.%s-class.html' % (self._prefix, id_split[0]) + elif len(id_split) == 2: # rna, class.prop + class_name, class_prop = id_split + + if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop): + url = '%s/bpy.ops.%s-module.html#%s' % \ + (self._prefix, class_name, class_prop) + else: + # It so happens that epydoc nests these + class_name_full = self._nested_class_string(class_name) + url = '%s/bpy.types.%s-class.html#%s' % \ + (self._prefix, class_name_full, class_prop) + + else: + return ('PASS_THROUGH',) + + import webbrowser + webbrowser.open(url) + + return ('FINISHED',) + + +class WM_OT_doc_edit(bpy.types.Operator): + '''Load online reference docs''' + bl_idname = "wm.doc_edit" + bl_label = "Edit Documentation" + + doc_id = doc_id + doc_new = doc_new + + _url = "http://www.mindrones.com/blender/svn/xmlrpc.php" + + def _send_xmlrpc(self, data_dict): + print("sending data:", data_dict) + + import xmlrpc.client + user = 'blenderuser' + pwd = 'blender>user' + + docblog = xmlrpc.client.ServerProxy(self._url) + docblog.metaWeblog.newPost(1, user, pwd, data_dict, 1) + + def execute(self, context): + + class_name, class_prop = self.doc_id.split('.') + + if not self.doc_new: + return ('RUNNING_MODAL',) + + # check if this is an operator + op_name = class_name.upper() + '_OT_' + class_prop + op_class = getattr(bpy.types, op_name, None) + + # Upload this to the web server + upload = {} + + if op_class: + rna = op_class.bl_rna + doc_orig = rna.description + if doc_orig == self.doc_new: + return ('RUNNING_MODAL',) + + print("op - old:'%s' -> new:'%s'" % (doc_orig, self.doc_new)) + upload["title"] = 'OPERATOR %s:%s' % (self.doc_id, doc_orig) + upload["description"] = self.doc_new + + self._send_xmlrpc(upload) + + else: + rna = getattr(bpy.types, class_name).bl_rna + doc_orig = rna.properties[class_prop].description + if doc_orig == self.doc_new: + return ('RUNNING_MODAL',) + + print("rna - old:'%s' -> new:'%s'" % (doc_orig, self.doc_new)) + upload["title"] = 'RNA %s:%s' % (self.doc_id, doc_orig) + + upload["description"] = self.doc_new + + self._send_xmlrpc(upload) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.invoke_props_popup(self, event) + return ('RUNNING_MODAL',) + + +bpy.ops.add(MESH_OT_delete_edgeloop) + +bpy.ops.add(WM_OT_context_set_boolean) +bpy.ops.add(WM_OT_context_set_int) +bpy.ops.add(WM_OT_context_set_float) +bpy.ops.add(WM_OT_context_set_string) +bpy.ops.add(WM_OT_context_set_enum) +bpy.ops.add(WM_OT_context_toggle) +bpy.ops.add(WM_OT_context_toggle_enum) +bpy.ops.add(WM_OT_context_cycle_enum) +bpy.ops.add(WM_OT_context_cycle_int) + +bpy.ops.add(WM_OT_doc_view) +bpy.ops.add(WM_OT_doc_edit) diff --git a/release/scripts/templates/gamelogic.py b/release/scripts/templates/gamelogic.py new file mode 100644 index 00000000000..203a693de5a --- /dev/null +++ b/release/scripts/templates/gamelogic.py @@ -0,0 +1,96 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# This script must be assigned to a python controller +# where it can access the object that owns it and the sensors/actuators that it connects to. + +# GameLogic has been added to the global namespace no need to import + +# for keyboard event comparison +# import GameKeys + +# support for Vector(), Matrix() types and advanced functions like AngleBetweenVecs(v1,v2) and RotationMatrix(...) +# import Mathutils + +# for functions like getWindowWidth(), getWindowHeight() +# import Rasterizer + +def main(): + cont = GameLogic.getCurrentController() + + # The KX_GameObject that owns this controller. + own = cont.owner + + # for scripts that deal with spacial logic + own_pos = own.worldPosition + + + # Some example functions, remove to write your own script. + # check for a positive sensor, will run on any object without errors. + print 'Logic info for KX_GameObject', own.name + input = False + + for sens in cont.sensors: + # The sensor can be on another object, we may want to use it + own_sens = sens.owner + print ' sensor:', sens.name, + if sens.positive: + print '(true)' + input = True + else: + print '(false)' + + for actu in cont.actuators: + # The actuator can be on another object, we may want to use it + own_actu = actu.owner + print ' actuator:', actu.name + + # This runs the actuator or turns it off + # note that actuators will continue to run unless explicitly turned off. + if input: + cont.activate(actu) + else: + cont.deactivate(actu) + + # Its also good practice to get sensors and actuators by name + # rather then index so any changes to their order wont break the script. + + # sens_key = cont.sensors['key_sensor'] + # actu_motion = cont.actuators['motion'] + + + # Loop through all other objects in the scene + sce = GameLogic.getCurrentScene() + print 'Scene Objects:', sce.name + for ob in sce.objects: + print ' ', ob.name, ob.worldPosition + + + # Example where collision objects are checked for their properties + # adding to our objects "life" property + """ + actu_collide = cont.sensors['collision_sens'] + for ob in actu_collide.objectHitList: + # Check to see the object has this property + if ob.has_key('life'): + own['life'] += ob['life'] + ob['life'] = 0 + print own['life'] + """ + +main() diff --git a/release/scripts/templates/gamelogic_basic.py b/release/scripts/templates/gamelogic_basic.py new file mode 100644 index 00000000000..b3fe0a4a6ca --- /dev/null +++ b/release/scripts/templates/gamelogic_basic.py @@ -0,0 +1,32 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +def main(): + + cont = GameLogic.getCurrentController() + own = cont.owner + + sens = cont.sensors['mySensor'] + actu = cont.actuators['myActuator'] + + if sens.positive: + cont.activate(actu) + else: + cont.deactivate(actu) + +main() diff --git a/release/scripts/templates/gamelogic_module.py b/release/scripts/templates/gamelogic_module.py new file mode 100644 index 00000000000..c19ec7d9116 --- /dev/null +++ b/release/scripts/templates/gamelogic_module.py @@ -0,0 +1,44 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# This module can be accessed by a python controller with +# its execution method set to 'Module' +# * Set the module string to "gamelogic_module.main" (without quotes) +# * When renaming the script it MUST have a .py extension +# * External text modules are supported as long as they are at +# the same location as the blendfile or one of its libraries. + +import GameLogic + +# variables defined here will only be set once when the +# module is first imported. Set object spesific vars +# inside the function if you intend to use the module +# with multiple objects. + +def main(cont): + own = cont.owner + + sens = cont.sensors['mySensor'] + actu = cont.actuators['myActuator'] + + if sens.positive: + cont.activate(actu) + else: + cont.deactivate(actu) + +# dont call main(GameLogic.getCurrentController()), the py controller will diff --git a/release/scripts/templates/operator.py b/release/scripts/templates/operator.py new file mode 100644 index 00000000000..7eb21ad4f8b --- /dev/null +++ b/release/scripts/templates/operator.py @@ -0,0 +1,76 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +import bpy + +def write_some_data(context, path, use_some_setting): + print("running write_some_data...") + pass + +from bpy.props import * + +class ExportSomeData(bpy.types.Operator): + '''This appiers in the tooltip of the operator and in the generated docs.''' + bl_idname = "export.some_data" # this is important since its how bpy.ops.export.some_data is constructed + bl_label = "Export Some Data" + + # List of operator properties, the attributes will be assigned + # to the class instance from the operator settings before calling. + + # TODO, add better example props + path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "") + use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default= True) + + def poll(self, context): + return context.active_object != None + + def execute(self, context): + + # # Bug, currently isnt working + #if not self.is_property_set("path"): + # raise Exception("filename not set") + + write_some_data(self.path, context, self.use_setting) + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + + if True: + # File selector + wm.add_fileselect(self) # will run self.execute() + return ('RUNNING_MODAL',) + elif 0: + # Redo popup + wm.invoke_props_popup(self, event) # + return ('RUNNING_MODAL',) + elif 0: + return self.execute(context) + + +bpy.ops.add(ExportSomeData) + +# Only needed if you want to add into a dynamic menu +import dynamic_menu +menu_func = lambda self, context: self.layout.itemO("export.some_data", text="Example Exporter...") +menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) + +# Use for running this script directly +if __name__ == "__main__": + bpy.ops.export.some_data(path="/tmp/test.ply") diff --git a/release/scripts/templates/operator_simple.py b/release/scripts/templates/operator_simple.py new file mode 100644 index 00000000000..6e166a3e970 --- /dev/null +++ b/release/scripts/templates/operator_simple.py @@ -0,0 +1,38 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +def main(context): + for ob in context.scene.objects: + print(ob) + +class SimpleOperator(bpy.types.Operator): + '''''' + bl_idname = "object.simple_operator" + bl_label = "Simple Object Operator" + + def poll(self, context): + return context.active_object != None + + def execute(self, context): + main(context) + return ('FINISHED',) + +bpy.ops.add(SimpleOperator) + +if __name__ == "__main__": + bpy.ops.object.simple_operator() diff --git a/release/scripts/ui/buttons_data_armature.py b/release/scripts/ui/buttons_data_armature.py deleted file mode 100644 index 0fb00b03961..00000000000 --- a/release/scripts/ui/buttons_data_armature.py +++ /dev/null @@ -1,183 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.armature - -class DATA_PT_context_arm(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - arm = context.armature - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif arm: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_skeleton(DataButtonsPanel): - __label__ = "Skeleton" - - def draw(self, context): - layout = self.layout - - ob = context.object - arm = context.armature - space = context.space_data - - layout.itemR(arm, "pose_position", expand=True) - - split = layout.split() - - col = split.column() - col.itemL(text="Layers:") - col.itemR(arm, "layer", text="") - col.itemL(text="Protected Layers:") - col.itemR(arm, "layer_protection", text="") - - col = split.column() - col.itemL(text="Deform:") - col.itemR(arm, "deform_vertexgroups", text="Vertex Groups") - col.itemR(arm, "deform_envelope", text="Envelopes") - col.itemR(arm, "deform_quaternion", text="Quaternion") - col.itemR(arm, "deform_bbone_rest", text="B-Bones Rest") - -class DATA_PT_display(DataButtonsPanel): - __label__ = "Display" - - def draw(self, context): - layout = self.layout - - arm = context.armature - - layout.row().itemR(arm, "drawtype", expand=True) - - flow = layout.column_flow() - flow.itemR(arm, "draw_names", text="Names") - flow.itemR(arm, "draw_axes", text="Axes") - flow.itemR(arm, "draw_custom_bone_shapes", text="Shapes") - flow.itemR(arm, "draw_group_colors", text="Colors") - flow.itemR(arm, "delay_deform", text="Delay Refresh") - -class DATA_PT_bone_groups(DataButtonsPanel): - __label__ = "Bone Groups" - - def poll(self, context): - return (context.object and context.object.type=='ARMATURE' and context.object.pose) - - def draw(self, context): - layout = self.layout - - ob = context.object - pose = ob.pose - - row = layout.row() - row.template_list(pose, "bone_groups", pose, "active_bone_group_index", rows=2) - - col = row.column(align=True) - col.active = (ob.proxy == None) - col.itemO("pose.group_add", icon='ICON_ZOOMIN', text="") - col.itemO("pose.group_remove", icon='ICON_ZOOMOUT', text="") - - group = pose.active_bone_group - if group: - col = layout.column() - col.active= (ob.proxy == None) - col.itemR(group, "name") - - split = layout.split(0.5) - split.active= (ob.proxy == None) - split.itemR(group, "color_set") - if group.color_set: - split.template_triColorSet(group, "colors") - - row = layout.row(align=True) - row.active = (ob.proxy == None) - - row.itemO("pose.group_assign", text="Assign") - row.itemO("pose.group_remove", text="Remove") #row.itemO("pose.bone_group_remove_from", text="Remove") - #row.itemO("object.bone_group_select", text="Select") - #row.itemO("object.bone_group_deselect", text="Deselect") - -class DATA_PT_paths(DataButtonsPanel): - __label__ = "Paths" - - def draw(self, context): - layout = self.layout - - arm = context.armature - - layout.itemR(arm, "paths_type", expand=True) - - split = layout.split() - - col = split.column() - sub = col.column(align=True) - if (arm.paths_type == 'CURRENT_FRAME'): - sub.itemR(arm, "path_before_current", text="Before") - sub.itemR(arm, "path_after_current", text="After") - elif (arm.paths_type == 'RANGE'): - sub.itemR(arm, "path_start_frame", text="Start") - sub.itemR(arm, "path_end_frame", text="End") - - sub.itemR(arm, "path_size", text="Step") - col.row().itemR(arm, "paths_location", expand=True) - - col = split.column() - col.itemL(text="Display:") - col.itemR(arm, "paths_show_frame_numbers", text="Frame Numbers") - col.itemR(arm, "paths_highlight_keyframes", text="Keyframes") - col.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers") - - layout.itemS() - - row = layout.row() - row.itemO("pose.paths_calculate", text="Calculate Paths") - row.itemO("pose.paths_clear", text="Clear Paths") - -class DATA_PT_ghost(DataButtonsPanel): - __label__ = "Ghost" - - def draw(self, context): - layout = self.layout - - arm = context.armature - - layout.itemR(arm, "ghost_type", expand=True) - - split = layout.split() - - col = split.column() - - sub = col.column(align=True) - if arm.ghost_type == 'RANGE': - sub.itemR(arm, "ghost_start_frame", text="Start") - sub.itemR(arm, "ghost_end_frame", text="End") - sub.itemR(arm, "ghost_size", text="Step") - elif arm.ghost_type == 'CURRENT_FRAME': - sub.itemR(arm, "ghost_step", text="Range") - sub.itemR(arm, "ghost_size", text="Step") - - col = split.column() - col.itemL(text="Display:") - col.itemR(arm, "ghost_only_selected", text="Selected Only") - -bpy.types.register(DATA_PT_context_arm) -bpy.types.register(DATA_PT_skeleton) -bpy.types.register(DATA_PT_display) -bpy.types.register(DATA_PT_bone_groups) -bpy.types.register(DATA_PT_paths) -bpy.types.register(DATA_PT_ghost) diff --git a/release/scripts/ui/buttons_data_bone.py b/release/scripts/ui/buttons_data_bone.py deleted file mode 100644 index e8041cc7393..00000000000 --- a/release/scripts/ui/buttons_data_bone.py +++ /dev/null @@ -1,233 +0,0 @@ - -import bpy - -class BoneButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "bone" - - def poll(self, context): - return (context.bone or context.edit_bone) - -class BONE_PT_context_bone(BoneButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - bone = context.bone - if not bone: - bone = context.edit_bone - - row = layout.row() - row.itemL(text="", icon='ICON_BONE_DATA') - row.itemR(bone, "name", text="") - -class BONE_PT_transform(BoneButtonsPanel): - __label__ = "Transform" - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - if not bone: - bone = context.edit_bone - - row = layout.row() - row.column().itemR(bone, "head") - row.column().itemR(bone, "tail") - - col = row.column() - sub = col.column(align=True) - sub.itemL(text="Roll:") - sub.itemR(bone, "roll", text="") - sub.itemL() - sub.itemR(bone, "locked") - - else: - pchan = ob.pose.pose_channels[context.bone.name] - - - - row = layout.row() - col = row.column() - col.itemR(pchan, "location") - col.active = not (bone.parent and bone.connected) - - col = row.column() - if pchan.rotation_mode == 'QUATERNION': - col.itemR(pchan, "rotation_quaternion", text="Rotation") - elif pchan.rotation_mode == 'AXIS_ANGLE': - #col.itemL(text="Rotation") - #col.itemR(pchan, "rotation_angle", text="Angle") - #col.itemR(pchan, "rotation_axis", text="Axis") - col.itemR(pchan, "rotation_axis_angle", text="Rotation") - else: - col.itemR(pchan, "rotation_euler", text="Rotation") - - row.column().itemR(pchan, "scale") - - layout.itemR(pchan, "rotation_mode") - -class BONE_PT_transform_locks(BoneButtonsPanel): - __label__ = "Transform Locks" - __default_closed__ = True - - def poll(self, context): - return context.bone - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - pchan = ob.pose.pose_channels[context.bone.name] - - row = layout.row() - col = row.column() - col.itemR(pchan, "lock_location") - col.active = not (bone.parent and bone.connected) - - col = row.column() - if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): - col.itemR(pchan, "lock_rotations_4d", text="Lock Rotation") - if pchan.lock_rotations_4d: - col.itemR(pchan, "lock_rotation_w", text="W") - col.itemR(pchan, "lock_rotation", text="") - else: - col.itemR(pchan, "lock_rotation", text="Rotation") - - row.column().itemR(pchan, "lock_scale") - -class BONE_PT_relations(BoneButtonsPanel): - __label__ = "Relations" - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - arm = context.armature - - if not bone: - bone = context.edit_bone - pchan = None - else: - pchan = ob.pose.pose_channels[context.bone.name] - - split = layout.split() - - col = split.column() - col.itemL(text="Layers:") - col.itemR(bone, "layer", text="") - - col.itemS() - - if ob and pchan: - col.itemL(text="Bone Group:") - col.item_pointerR(pchan, "bone_group", ob.pose, "bone_groups", text="") - - col = split.column() - col.itemL(text="Parent:") - if context.bone: - col.itemR(bone, "parent", text="") - else: - col.item_pointerR(bone, "parent", arm, "edit_bones", text="") - - sub = col.column() - sub.active = bone.parent != None - sub.itemR(bone, "connected") - sub.itemR(bone, "hinge", text="Inherit Rotation") - sub.itemR(bone, "inherit_scale", text="Inherit Scale") - - -class BONE_PT_display(BoneButtonsPanel): - __label__ = "Display" - - def poll(self, context): - return context.bone - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - arm = context.armature - - if not bone: - bone = context.edit_bone - pchan = None - else: - pchan = ob.pose.pose_channels[context.bone.name] - - if ob and pchan: - - split = layout.split() - - col = split.column() - - col.itemR(bone, "draw_wire", text="Wireframe") - col.itemR(bone, "hidden", text="Hide") - - col = split.column() - - col.itemL(text="Custom Shape:") - col.itemR(pchan, "custom_shape", text="") - - -class BONE_PT_deform(BoneButtonsPanel): - __label__ = "Deform" - __default_closed__ = True - - def draw_header(self, context): - bone = context.bone - - if not bone: - bone = context.edit_bone - - self.layout.itemR(bone, "deform", text="") - - def draw(self, context): - layout = self.layout - - bone = context.bone - - if not bone: - bone = context.edit_bone - - layout.active = bone.deform - - split = layout.split() - - col = split.column() - col.itemL(text="Envelope:") - - sub = col.column(align=True) - sub.itemR(bone, "envelope_distance", text="Distance") - sub.itemR(bone, "envelope_weight", text="Weight") - col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply") - - sub = col.column(align=True) - sub.itemL(text="Radius:") - sub.itemR(bone, "head_radius", text="Head") - sub.itemR(bone, "tail_radius", text="Tail") - - col = split.column() - col.itemL(text="Curved Bones:") - - sub = col.column(align=True) - sub.itemR(bone, "bbone_segments", text="Segments") - sub.itemR(bone, "bbone_in", text="Ease In") - sub.itemR(bone, "bbone_out", text="Ease Out") - - col.itemL(text="Offset:") - col.itemR(bone, "cyclic_offset") - - -bpy.types.register(BONE_PT_context_bone) -bpy.types.register(BONE_PT_transform) -bpy.types.register(BONE_PT_transform_locks) -bpy.types.register(BONE_PT_relations) -bpy.types.register(BONE_PT_display) -bpy.types.register(BONE_PT_deform) diff --git a/release/scripts/ui/buttons_data_camera.py b/release/scripts/ui/buttons_data_camera.py deleted file mode 100644 index 19d7dfef852..00000000000 --- a/release/scripts/ui/buttons_data_camera.py +++ /dev/null @@ -1,98 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.camera - -class DATA_PT_context_camera(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - cam = context.camera - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif cam: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_camera(DataButtonsPanel): - __label__ = "Lens" - - def draw(self, context): - layout = self.layout - - cam = context.camera - - layout.itemR(cam, "type", expand=True) - - row = layout.row() - if cam.type == 'PERSP': - if cam.lens_unit == 'MILLIMETERS': - row.itemR(cam, "lens", text="Angle") - elif cam.lens_unit == 'DEGREES': - row.itemR(cam, "angle") - row.itemR(cam, "lens_unit", text="") - - elif cam.type == 'ORTHO': - row.itemR(cam, "ortho_scale") - - layout.itemR(cam, "panorama") - - split = layout.split() - - col = split.column(align=True) - col.itemL(text="Shift:") - col.itemR(cam, "shift_x", text="X") - col.itemR(cam, "shift_y", text="Y") - - col = split.column(align=True) - col.itemL(text="Clipping:") - col.itemR(cam, "clip_start", text="Start") - col.itemR(cam, "clip_end", text="End") - - layout.itemL(text="Depth of Field:") - - row = layout.row() - row.itemR(cam, "dof_object", text="") - row.itemR(cam, "dof_distance", text="Distance") - -class DATA_PT_camera_display(DataButtonsPanel): - __label__ = "Display" - - def draw(self, context): - layout = self.layout - - cam = context.camera - - split = layout.split() - - col = split.column() - col.itemR(cam, "show_limits", text="Limits") - col.itemR(cam, "show_mist", text="Mist") - col.itemR(cam, "show_title_safe", text="Title Safe") - col.itemR(cam, "show_name", text="Name") - - col = split.column() - col.itemR(cam, "draw_size", text="Size") - col.itemS() - col.itemR(cam, "show_passepartout", text="Passepartout") - sub = col.column() - sub.active = cam.show_passepartout - sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True) - -bpy.types.register(DATA_PT_context_camera) -bpy.types.register(DATA_PT_camera) -bpy.types.register(DATA_PT_camera_display) diff --git a/release/scripts/ui/buttons_data_curve.py b/release/scripts/ui/buttons_data_curve.py deleted file mode 100644 index c715cfb5d93..00000000000 --- a/release/scripts/ui/buttons_data_curve.py +++ /dev/null @@ -1,227 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return (context.object and context.object.type in ('CURVE', 'SURFACE') and context.curve) - -class DataButtonsPanelCurve(DataButtonsPanel): - ''' - Same as above but for curves only - ''' - def poll(self, context): - return (context.object and context.object.type == 'CURVE' and context.curve) - -class DataButtonsPanelActive(DataButtonsPanel): - ''' - Same as above but for curves only - ''' - def poll(self, context): - curve = context.curve - return (curve and curve.active_spline) - -class DATA_PT_context_curve(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - curve = context.curve - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif curve: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_shape_curve(DataButtonsPanel): - __label__ = "Shape" - - def draw(self, context): - layout = self.layout - - ob = context.object - curve = context.curve - space = context.space_data - is_surf = (ob.type == 'SURFACE') - - if not is_surf: - row = layout.row() - row.itemR(curve, "dimensions", expand=True) - - split = layout.split() - - col = split.column() - - if not is_surf: - sub = col.column() - sub.active = (curve.dimensions=='2D') - sub.itemL(text="Caps:") - row = sub.row() - row.itemR(curve, "front") - row.itemR(curve, "back") - - col.itemL(text="Textures:") -# col.itemR(curve, "uv_orco") - col.itemR(curve, "auto_texspace") - - col = split.column() - col.itemL(text="Resolution:") - sub = col.column(align=True) - sub.itemR(curve, "resolution_u", text="Preview U") - sub.itemR(curve, "render_resolution_u", text="Render U") - - if is_surf: - sub = col.column(align=True) - sub.itemR(curve, "resolution_v", text="Preview V") - sub.itemR(curve, "render_resolution_v", text="Render V") - - # XXX - put somewhere nicer. - row= layout.row() - row.itemR(curve, "twist_mode") - row.itemR(curve, "twist_smooth") # XXX - may not be kept - - -# col.itemL(text="Display:") -# col.itemL(text="HANDLES") -# col.itemL(text="NORMALS") -# col.itemR(curve, "vertex_normal_flip") - -class DATA_PT_geometry_curve(DataButtonsPanel): - __label__ = "Geometry" - - def draw(self, context): - layout = self.layout - - curve = context.curve - - split = layout.split() - - col = split.column() - col.itemL(text="Modification:") - col.itemR(curve, "width") - col.itemR(curve, "extrude") - col.itemL(text="Taper Object:") - col.itemR(curve, "taper_object", text="") - - col = split.column() - col.itemL(text="Bevel:") - col.itemR(curve, "bevel_depth", text="Depth") - col.itemR(curve, "bevel_resolution", text="Resolution") - col.itemL(text="Bevel Object:") - col.itemR(curve, "bevel_object", text="") - -class DATA_PT_pathanim(DataButtonsPanelCurve): - __label__ = "Path Animation" - - def draw_header(self, context): - curve = context.curve - - self.layout.itemR(curve, "use_path", text="") - - def draw(self, context): - layout = self.layout - - curve = context.curve - - layout.active = curve.use_path - - split = layout.split() - - col = split.column() - col.itemR(curve, "path_length", text="Frames") - col.itemR(curve, "use_path_follow") - - col = split.column() - col.itemR(curve, "use_stretch") - col.itemR(curve, "use_radius") - col.itemR(curve, "use_time_offset", text="Offset Children") - -class DATA_PT_active_spline(DataButtonsPanelActive): - __label__ = "Active Spline" - - def draw(self, context): - layout = self.layout - - ob = context.object - curve = context.curve - act_spline = curve.active_spline - is_surf = (ob.type == 'SURFACE') - is_poly = (act_spline.type == 'POLY') - - split = layout.split() - - if is_poly: - # These settings are below but its easier to have - # poly's set aside since they use so few settings - col = split.column() - col.itemL(text="Cyclic:") - col.itemR(act_spline, "smooth") - col = split.column() - col.itemR(act_spline, "cyclic_u", text="U") - - else: - col = split.column() - col.itemL(text="Cyclic:") - if act_spline.type == 'NURBS': - col.itemL(text="Bezier:") - col.itemL(text="Endpoint:") - col.itemL(text="Order:") - - col.itemL(text="Resolution:") - - col = split.column() - col.itemR(act_spline, "cyclic_u", text="U") - - if act_spline.type == 'NURBS': - sub = col.column() - # sub.active = (not act_spline.cyclic_u) - sub.itemR(act_spline, "bezier_u", text="U") - sub.itemR(act_spline, "endpoint_u", text="U") - - sub = col.column() - sub.itemR(act_spline, "order_u", text="U") - col.itemR(act_spline, "resolution_u", text="U") - - if is_surf: - col = split.column() - col.itemR(act_spline, "cyclic_v", text="V") - - # its a surface, assume its a nurb. - sub = col.column() - sub.active = (not act_spline.cyclic_v) - sub.itemR(act_spline, "bezier_v", text="V") - sub.itemR(act_spline, "endpoint_v", text="V") - sub = col.column() - sub.itemR(act_spline, "order_v", text="V") - sub.itemR(act_spline, "resolution_v", text="V") - - - if not is_surf: - split = layout.split() - col = split.column() - col.active = (curve.dimensions=='3D') - - col.itemL(text="Interpolation:") - col.itemR(act_spline, "tilt_interpolation", text="Tilt") - col.itemR(act_spline, "radius_interpolation", text="Radius") - - split = layout.split() - col = split.column() - col.itemR(act_spline, "smooth") - - -bpy.types.register(DATA_PT_context_curve) -bpy.types.register(DATA_PT_shape_curve) -bpy.types.register(DATA_PT_geometry_curve) -bpy.types.register(DATA_PT_pathanim) -bpy.types.register(DATA_PT_active_spline) diff --git a/release/scripts/ui/buttons_data_empty.py b/release/scripts/ui/buttons_data_empty.py deleted file mode 100644 index eda6cced0ae..00000000000 --- a/release/scripts/ui/buttons_data_empty.py +++ /dev/null @@ -1,23 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return (context.object and context.object.type == 'EMPTY') - -class DATA_PT_empty(DataButtonsPanel): - __label__ = "Empty" - - def draw(self, context): - layout = self.layout - - ob = context.object - - layout.itemR(ob, "empty_draw_type", text="Display") - layout.itemR(ob, "empty_draw_size", text="Size") - -bpy.types.register(DATA_PT_empty) diff --git a/release/scripts/ui/buttons_data_lamp.py b/release/scripts/ui/buttons_data_lamp.py deleted file mode 100644 index 4e495d158eb..00000000000 --- a/release/scripts/ui/buttons_data_lamp.py +++ /dev/null @@ -1,312 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.lamp - -class DATA_PT_preview(DataButtonsPanel): - __label__ = "Preview" - - def draw(self, context): - self.layout.template_preview(context.lamp) - -class DATA_PT_context_lamp(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - lamp = context.lamp - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif lamp: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_lamp(DataButtonsPanel): - __label__ = "Lamp" - - def draw(self, context): - layout = self.layout - - lamp = context.lamp - - layout.itemR(lamp, "type", expand=True) - - split = layout.split() - - col = split.column() - sub = col.column() - sub.itemR(lamp, "color", text="") - sub.itemR(lamp, "energy") - - if lamp.type in ('POINT', 'SPOT'): - sub.itemL(text="Falloff:") - sub.itemR(lamp, "falloff_type", text="") - sub.itemR(lamp, "distance") - - if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED': - col.itemL(text="Attenuation Factors:") - sub = col.column(align=True) - sub.itemR(lamp, "linear_attenuation", slider=True, text="Linear") - sub.itemR(lamp, "quadratic_attenuation", slider=True, text="Quadratic") - - col.itemR(lamp, "sphere") - - if lamp.type == 'AREA': - col.itemR(lamp, "distance") - col.itemR(lamp, "gamma") - - col = split.column() - col.itemR(lamp, "negative") - col.itemR(lamp, "layer", text="This Layer Only") - col.itemR(lamp, "specular") - col.itemR(lamp, "diffuse") - -class DATA_PT_sunsky(DataButtonsPanel): - __label__ = "Sky & Atmosphere" - - def poll(self, context): - lamp = context.lamp - return (lamp and lamp.type == 'SUN') - - def draw(self, context): - layout = self.layout - - lamp = context.lamp.sky - - layout.itemR(lamp, "sky") - - row = layout.row() - row.active = lamp.sky or lamp.atmosphere - row.itemR(lamp, "atmosphere_turbidity", text="Turbidity") - - split = layout.split() - - col = split.column() - col.active = lamp.sky - col.itemL(text="Blending:") - sub = col.column() - sub.itemR(lamp, "sky_blend_type", text="") - sub.itemR(lamp, "sky_blend", text="Factor") - - col.itemL(text="Color Space:") - sub = col.column() - sub.row().itemR(lamp, "sky_color_space", expand=True) - sub.itemR(lamp, "sky_exposure", text="Exposure") - - col = split.column() - col.active = lamp.sky - col.itemL(text="Horizon:") - sub = col.column() - sub.itemR(lamp, "horizon_brightness", text="Brightness") - sub.itemR(lamp, "spread", text="Spread") - - col.itemL(text="Sun:") - sub = col.column() - sub.itemR(lamp, "sun_brightness", text="Brightness") - sub.itemR(lamp, "sun_size", text="Size") - sub.itemR(lamp, "backscattered_light", slider=True,text="Back Light") - - layout.itemS() - - layout.itemR(lamp, "atmosphere") - - split = layout.split() - - col = split.column() - col.active = lamp.atmosphere - col.itemL(text="Intensity:") - col.itemR(lamp, "sun_intensity", text="Sun") - col.itemR(lamp, "atmosphere_distance_factor", text="Distance") - - col = split.column() - col.active = lamp.atmosphere - col.itemL(text="Scattering:") - sub = col.column(align=True) - sub.itemR(lamp, "atmosphere_inscattering", slider=True, text="Inscattering") - sub.itemR(lamp, "atmosphere_extinction", slider=True ,text="Extinction") - -class DATA_PT_shadow(DataButtonsPanel): - __label__ = "Shadow" - - def poll(self, context): - lamp = context.lamp - return (lamp and lamp.type in ('POINT','SUN', 'SPOT', 'AREA')) - - def draw(self, context): - layout = self.layout - - lamp = context.lamp - - layout.itemR(lamp, "shadow_method", expand=True) - - if lamp.shadow_method != 'NOSHADOW': - split = layout.split() - - col = split.column() - col.itemR(lamp, "shadow_color", text="") - - col = split.column() - col.itemR(lamp, "shadow_layer", text="This Layer Only") - col.itemR(lamp, "only_shadow") - - if lamp.shadow_method == 'RAY_SHADOW': - col = layout.column() - col.itemL(text="Sampling:") - col.row().itemR(lamp, "shadow_ray_sampling_method", expand=True) - - if lamp.type in ('POINT', 'SUN', 'SPOT'): - split = layout.split() - - col = split.column() - col.itemR(lamp, "shadow_soft_size", text="Soft Size") - - col.itemR(lamp, "shadow_ray_samples", text="Samples") - if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': - col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") - col = split.column() - - elif lamp.type == 'AREA': - split = layout.split() - - col = split.column() - sub = split.column(align=True) - if lamp.shape == 'SQUARE': - col.itemR(lamp, "shadow_ray_samples_x", text="Samples") - elif lamp.shape == 'RECTANGLE': - col.itemR(lamp, "shadow_ray_samples_x", text="Samples X") - col.itemR(lamp, "shadow_ray_samples_y", text="Samples Y") - - if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': - col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") - - elif lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED': - sub.itemR(lamp, "umbra") - sub.itemR(lamp, "dither") - sub.itemR(lamp, "jitter") - - elif lamp.shadow_method == 'BUFFER_SHADOW': - col = layout.column() - col.itemL(text="Buffer Type:") - col.row().itemR(lamp, "shadow_buffer_type", expand=True) - - if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'): - split = layout.split() - - col = split.column() - col.itemL(text="Filter Type:") - col.itemR(lamp, "shadow_filter_type", text="") - sub = col.column(align=True) - sub.itemR(lamp, "shadow_buffer_soft", text="Soft") - sub.itemR(lamp, "shadow_buffer_bias", text="Bias") - - col = split.column() - col.itemL(text="Sample Buffers:") - col.itemR(lamp, "shadow_sample_buffers", text="") - sub = col.column(align=True) - sub.itemR(lamp, "shadow_buffer_size", text="Size") - sub.itemR(lamp, "shadow_buffer_samples", text="Samples") - if lamp.shadow_buffer_type == 'DEEP': - col.itemR(lamp, "compression_threshold") - - elif lamp.shadow_buffer_type == 'IRREGULAR': - layout.itemR(lamp, "shadow_buffer_bias", text="Bias") - - row = layout.row() - row.itemR(lamp, "auto_clip_start", text="Autoclip Start") - sub = row.row() - sub.active = not lamp.auto_clip_start - sub.itemR(lamp, "shadow_buffer_clip_start", text="Clip Start") - - row = layout.row() - row.itemR(lamp, "auto_clip_end", text="Autoclip End") - sub = row.row() - sub.active = not lamp.auto_clip_end - sub.itemR(lamp, "shadow_buffer_clip_end", text=" Clip End") - -class DATA_PT_area(DataButtonsPanel): - __label__ = "Area Shape" - - def poll(self, context): - lamp = context.lamp - return (lamp and lamp.type == 'AREA') - - def draw(self, context): - layout = self.layout - - lamp = context.lamp - - split = layout.split() - - col = split.column() - col.row().itemR(lamp, "shape", expand=True) - - sub = col.column(align=True) - if (lamp.shape == 'SQUARE'): - sub.itemR(lamp, "size") - elif (lamp.shape == 'RECTANGLE'): - sub.itemR(lamp, "size", text="Size X") - sub.itemR(lamp, "size_y", text="Size Y") - -class DATA_PT_spot(DataButtonsPanel): - __label__ = "Spot Shape" - - def poll(self, context): - lamp = context.lamp - return (lamp and lamp.type == 'SPOT') - - def draw(self, context): - layout = self.layout - - lamp = context.lamp - - split = layout.split() - - col = split.column() - sub = col.column() - sub.itemR(lamp, "spot_size", text="Size") - sub.itemR(lamp, "spot_blend", text="Blend", slider=True) - col.itemR(lamp, "square") - - col = split.column() - col.itemR(lamp, "halo") - sub = col.column(align=True) - sub.active = lamp.halo - sub.itemR(lamp, "halo_intensity", text="Intensity") - if lamp.shadow_method == 'BUFFER_SHADOW': - sub.itemR(lamp, "halo_step", text="Step") - -class DATA_PT_falloff_curve(DataButtonsPanel): - __label__ = "Falloff Curve" - __default_closed__ = True - - def poll(self, context): - lamp = context.lamp - - return (lamp and lamp.type in ('POINT', 'SPOT') and lamp.falloff_type == 'CUSTOM_CURVE') - - def draw(self, context): - lamp = context.lamp - - self.layout.template_curve_mapping(lamp, "falloff_curve") - -bpy.types.register(DATA_PT_context_lamp) -bpy.types.register(DATA_PT_preview) -bpy.types.register(DATA_PT_lamp) -bpy.types.register(DATA_PT_falloff_curve) -bpy.types.register(DATA_PT_area) -bpy.types.register(DATA_PT_spot) -bpy.types.register(DATA_PT_shadow) -bpy.types.register(DATA_PT_sunsky) diff --git a/release/scripts/ui/buttons_data_lattice.py b/release/scripts/ui/buttons_data_lattice.py deleted file mode 100644 index bc977860330..00000000000 --- a/release/scripts/ui/buttons_data_lattice.py +++ /dev/null @@ -1,56 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.lattice - -class DATA_PT_context_lattice(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - lat = context.lattice - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif lat: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_lattice(DataButtonsPanel): - __label__ = "Lattice" - - def draw(self, context): - layout = self.layout - - lat = context.lattice - - row = layout.row() - row.itemR(lat, "points_u") - row.itemR(lat, "interpolation_type_u", expand=True) - - row = layout.row() - row.itemR(lat, "points_v") - row.itemR(lat, "interpolation_type_v", expand=True) - - row = layout.row() - row.itemR(lat, "points_w") - row.itemR(lat, "interpolation_type_w", expand=True) - - row = layout.row() - row.itemO("lattice.make_regular") - row.itemR(lat, "outside") - -bpy.types.register(DATA_PT_context_lattice) -bpy.types.register(DATA_PT_lattice) diff --git a/release/scripts/ui/buttons_data_mesh.py b/release/scripts/ui/buttons_data_mesh.py deleted file mode 100644 index 77c6f834073..00000000000 --- a/release/scripts/ui/buttons_data_mesh.py +++ /dev/null @@ -1,242 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.mesh - -class DATA_PT_context_mesh(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - mesh = context.mesh - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif mesh: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_normals(DataButtonsPanel): - __label__ = "Normals" - - def draw(self, context): - layout = self.layout - - mesh = context.mesh - - split = layout.split() - - col = split.column() - col.itemR(mesh, "autosmooth") - sub = col.column() - sub.active = mesh.autosmooth - sub.itemR(mesh, "autosmooth_angle", text="Angle") - - col = split.column() - col.itemR(mesh, "vertex_normal_flip") - col.itemR(mesh, "double_sided") - -class DATA_PT_settings(DataButtonsPanel): - __label__ = "Settings" - - def draw(self, context): - layout = self.layout - - mesh = context.mesh - - split = layout.split() - - col = split.column() - col.itemR(mesh, "texture_mesh") - -class DATA_PT_vertex_groups(DataButtonsPanel): - __label__ = "Vertex Groups" - - def poll(self, context): - return (context.object and context.object.type in ('MESH', 'LATTICE')) - - def draw(self, context): - layout = self.layout - - ob = context.object - group = ob.active_vertex_group - - rows = 2 - if group: - rows= 5 - - row = layout.row() - row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows) - - col = row.column(align=True) - col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") - - col.itemO("object.vertex_group_copy", icon='ICON_COPY_ID', text="") - if ob.data.users > 1: - col.itemO("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="") - - if group: - row = layout.row() - row.itemR(group, "name") - - if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0: - row = layout.row() - - sub = row.row(align=True) - sub.itemO("object.vertex_group_assign", text="Assign") - sub.itemO("object.vertex_group_remove_from", text="Remove") - - sub = row.row(align=True) - sub.itemO("object.vertex_group_select", text="Select") - sub.itemO("object.vertex_group_deselect", text="Deselect") - - layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight") - -class DATA_PT_shape_keys(DataButtonsPanel): - __label__ = "Shape Keys" - - def poll(self, context): - return (context.object and context.object.type in ('MESH', 'LATTICE', 'CURVE', 'SURFACE')) - - def draw(self, context): - layout = self.layout - - ob = context.object - key = ob.data.shape_keys - kb = ob.active_shape_key - - enable_edit = ob.mode != 'EDIT' - enable_edit_value = False - - if ob.shape_key_lock == False: - if enable_edit or (ob.type == 'MESH' and ob.shape_key_edit_mode): - enable_edit_value = True - - row = layout.row() - - rows = 2 - if kb: - rows= 5 - row.template_list(key, "keys", ob, "active_shape_key_index", rows=rows) - - col = row.column() - - subcol = col.column(align=True) - subcol.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="") - subcol.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") - - if kb: - col.itemS() - - subcol = col.column(align=True) - subcol.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="") - subcol.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="") - - split = layout.split(percentage=0.4) - sub = split.row() - sub.enabled = enable_edit - sub.itemR(key, "relative") - - sub = split.row() - sub.alignment = 'RIGHT' - - subrow = sub.row(align=True) - subrow.active= enable_edit_value - subrow.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") - subrow.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="") - subrow.itemO("object.shape_key_clear", icon='ICON_X', text="") - - sub.itemO("object.shape_key_mirror", icon='ICON_MOD_MIRROR', text="") - - sub.itemR(ob, "shape_key_edit_mode", text="") - - row = layout.row() - row.itemR(kb, "name") - - if key.relative: - if ob.active_shape_key_index != 0: - row = layout.row() - row.active = enable_edit_value - row.itemR(kb, "value") - - split = layout.split() - sub = split.column(align=True) - sub.active = enable_edit_value - sub.itemL(text="Range:") - sub.itemR(kb, "slider_min", text="Min") - sub.itemR(kb, "slider_max", text="Max") - - sub = split.column(align=True) - sub.active = enable_edit_value - sub.itemL(text="Blend:") - sub.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="") - sub.item_pointerR(kb, "relative_key", key, "keys", text="") - - else: - row = layout.row() - row.active = enable_edit_value - row.itemR(key, "slurph") - -class DATA_PT_uv_texture(DataButtonsPanel): - __label__ = "UV Texture" - - def draw(self, context): - layout = self.layout - - me = context.mesh - - row = layout.row() - col = row.column() - - col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2) - - col = row.column(align=True) - col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") - col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") - - lay = me.active_uv_texture - if lay: - layout.itemR(lay, "name") - -class DATA_PT_vertex_colors(DataButtonsPanel): - __label__ = "Vertex Colors" - - def draw(self, context): - layout = self.layout - - me = context.mesh - - row = layout.row() - col = row.column() - - col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2) - - col = row.column(align=True) - col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") - col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") - - lay = me.active_vertex_color - if lay: - layout.itemR(lay, "name") - -bpy.types.register(DATA_PT_context_mesh) -bpy.types.register(DATA_PT_normals) -bpy.types.register(DATA_PT_settings) -bpy.types.register(DATA_PT_vertex_groups) -bpy.types.register(DATA_PT_shape_keys) -bpy.types.register(DATA_PT_uv_texture) -bpy.types.register(DATA_PT_vertex_colors) - diff --git a/release/scripts/ui/buttons_data_metaball.py b/release/scripts/ui/buttons_data_metaball.py deleted file mode 100644 index 757546fdf8a..00000000000 --- a/release/scripts/ui/buttons_data_metaball.py +++ /dev/null @@ -1,106 +0,0 @@ -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return context.meta_ball - -class DATA_PT_context_metaball(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - mball = context.meta_ball - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif mball: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_metaball(DataButtonsPanel): - __label__ = "Metaball" - - def draw(self, context): - layout = self.layout - - mball = context.meta_ball - - split = layout.split() - - col = split.column() - col.itemL(text="Resolution:") - sub = col.column(align=True) - sub.itemR(mball, "wire_size", text="View") - sub.itemR(mball, "render_size", text="Render") - - col = split.column() - col.itemL(text="Settings:") - col.itemR(mball, "threshold", text="Threshold") - - layout.itemL(text="Update:") - layout.itemR(mball, "flag", expand=True) - -class DATA_PT_metaball_element(DataButtonsPanel): - __label__ = "Active Element" - - def poll(self, context): - return (context.meta_ball and context.meta_ball.active_element) - - def draw(self, context): - layout = self.layout - - metaelem = context.meta_ball.active_element - - split = layout.split(percentage=0.3) - split.itemL(text="Type:") - split.itemR(metaelem, "type", text="") - - split = layout.split() - - col = split.column() - col.itemL(text="Settings:") - col.itemR(metaelem, "stiffness", text="Stiffness") - col.itemR(metaelem, "negative", text="Negative") - col.itemR(metaelem, "hide", text="Hide") - - if metaelem.type == 'BALL': - col = split.column(align=True) - - elif metaelem.type == 'CUBE': - col = split.column(align=True) - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - col.itemR(metaelem, "size_y", text="Y") - col.itemR(metaelem, "size_z", text="Z") - - elif metaelem.type == 'TUBE': - col = split.column(align=True) - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - - elif metaelem.type == 'PLANE': - col = split.column(align=True) - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - col.itemR(metaelem, "size_y", text="Y") - - elif metaelem.type == 'ELLIPSOID': - col = split.column(align=True) - col.itemL(text="Size:") - col.itemR(metaelem, "size_x", text="X") - col.itemR(metaelem, "size_y", text="Y") - col.itemR(metaelem, "size_z", text="Z") - -bpy.types.register(DATA_PT_context_metaball) -bpy.types.register(DATA_PT_metaball) -bpy.types.register(DATA_PT_metaball_element) diff --git a/release/scripts/ui/buttons_data_modifier.py b/release/scripts/ui/buttons_data_modifier.py deleted file mode 100644 index 754e8ce106e..00000000000 --- a/release/scripts/ui/buttons_data_modifier.py +++ /dev/null @@ -1,449 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "modifier" - -class DATA_PT_modifiers(DataButtonsPanel): - __label__ = "Modifiers" - - def draw(self, context): - layout = self.layout - - ob = context.object - - row = layout.row() - row.item_menu_enumO("object.modifier_add", "type") - row.itemL() - - for md in ob.modifiers: - box = layout.template_modifier(md) - if box: - # match enum type to our functions, avoids a lookup table. - getattr(self, md.type)(box, ob, md) - - # the mt.type enum is (ab)used for a lookup on function names - # ...to avoid lengthy if statements - # so each type must have a function here. - - def ARMATURE(self, layout, ob, md): - layout.itemR(md, "object") - - split = layout.split(percentage=0.5) - split.itemL(text="Vertex Group:") - sub = split.split(percentage=0.7) - sub.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") - subsub = sub.row() - subsub.active = md.vertex_group - subsub.itemR(md, "invert") - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemL(text="Bind To:") - col.itemR(md, "use_vertex_groups", text="Vertex Groups") - col.itemR(md, "use_bone_envelopes", text="Bone Envelopes") - - col = split.column() - col.itemL(text="Deformation:") - col.itemR(md, "quaternion") - col.itemR(md, "multi_modifier") - - def ARRAY(self, layout, ob, md): - layout.itemR(md, "fit_type") - if md.fit_type == 'FIXED_COUNT': - layout.itemR(md, "count") - elif md.fit_type == 'FIT_LENGTH': - layout.itemR(md, "length") - elif md.fit_type == 'FIT_CURVE': - layout.itemR(md, "curve") - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemR(md, "constant_offset") - sub = col.column() - sub.active = md.constant_offset - sub.itemR(md, "constant_offset_displacement", text="") - - col.itemS() - - col.itemR(md, "merge_adjacent_vertices", text="Merge") - sub = col.column() - sub.active = md.merge_adjacent_vertices - sub.itemR(md, "merge_end_vertices", text="First Last") - sub.itemR(md, "merge_distance", text="Distance") - - col = split.column() - col.itemR(md, "relative_offset") - sub = col.column() - sub.active = md.relative_offset - sub.itemR(md, "relative_offset_displacement", text="") - - col.itemS() - - col.itemR(md, "add_offset_object") - sub = col.column() - sub.active = md.add_offset_object - sub.itemR(md, "offset_object", text="") - - layout.itemS() - - col = layout.column() - col.itemR(md, "start_cap") - col.itemR(md, "end_cap") - - def BEVEL(self, layout, ob, md): - row = layout.row() - row.itemR(md, "width") - row.itemR(md, "only_vertices") - - layout.itemL(text="Limit Method:") - layout.row().itemR(md, "limit_method", expand=True) - if md.limit_method == 'ANGLE': - layout.itemR(md, "angle") - elif md.limit_method == 'WEIGHT': - layout.row().itemR(md, "edge_weight_method", expand=True) - - def BOOLEAN(self, layout, ob, md): - layout.itemR(md, "operation") - layout.itemR(md, "object") - - def BUILD(self, layout, ob, md): - split = layout.split() - - col = split.column() - col.itemR(md, "start") - col.itemR(md, "length") - - col = split.column() - col.itemR(md, "randomize") - sub = col.column() - sub.active = md.randomize - sub.itemR(md, "seed") - - def CAST(self, layout, ob, md): - layout.itemR(md, "cast_type") - layout.itemR(md, "object") - if md.object: - layout.itemR(md, "use_transform") - - flow = layout.column_flow() - flow.itemR(md, "x") - flow.itemR(md, "y") - flow.itemR(md, "z") - flow.itemR(md, "factor") - flow.itemR(md, "radius") - flow.itemR(md, "size") - - layout.itemR(md, "from_radius") - - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - - def CLOTH(self, layout, ob, md): - layout.itemL(text="See Cloth panel.") - - def COLLISION(self, layout, ob, md): - layout.itemL(text="See Collision panel.") - - def CURVE(self, layout, ob, md): - layout.itemR(md, "object") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "deform_axis") - - def DECIMATE(self, layout, ob, md): - layout.itemR(md, "ratio") - layout.itemR(md, "face_count") - - def DISPLACE(self, layout, ob, md): - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "texture") - layout.itemR(md, "midlevel") - layout.itemR(md, "strength") - layout.itemR(md, "direction") - layout.itemR(md, "texture_coordinates") - if md.texture_coordinates == 'OBJECT': - layout.itemR(md, "texture_coordinate_object", text="Object") - elif md.texture_coordinates == 'UV' and ob.type == 'MESH': - layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") - - def EDGE_SPLIT(self, layout, ob, md): - split = layout.split() - - col = split.column() - col.itemR(md, "use_edge_angle", text="Edge Angle") - sub = col.column() - sub.active = md.use_edge_angle - sub.itemR(md, "split_angle") - - col = split.column() - col.itemR(md, "use_sharp", text="Sharp Edges") - - def EXPLODE(self, layout, ob, md): - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "protect") - - flow = layout.column_flow(2) - flow.itemR(md, "split_edges") - flow.itemR(md, "unborn") - flow.itemR(md, "alive") - flow.itemR(md, "dead") - - layout.itemO("object.explode_refresh", text="Refresh"); - - def FLUID_SIMULATION(self, layout, ob, md): - layout.itemL(text="See Fluid panel.") - - def HOOK(self, layout, ob, md): - col = layout.column() - col.itemR(md, "object") - if md.object and md.object.type == 'ARMATURE': - layout.item_pointerR(md, "subtarget", md.object.data, "bones", text="Bone") - - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - - split = layout.split() - split.itemR(md, "falloff") - split.itemR(md, "force", slider=True) - - layout.itemS() - - row = layout.row() - row.itemO("object.hook_reset", text="Reset") - row.itemO("object.hook_recenter", text="Recenter") - - if ob.mode == 'EDIT': - row = layout.row() - row.itemO("object.hook_select", text="Select") - row.itemO("object.hook_assign", text="Assign") - - def LATTICE(self, layout, ob, md): - layout.itemR(md, "object") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - - def MASK(self, layout, ob, md): - layout.itemR(md, "mode") - if md.mode == 'ARMATURE': - layout.itemR(md, "armature") - elif md.mode == 'VERTEX_GROUP': - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "inverse") - - def MESH_DEFORM(self, layout, ob, md): - layout.itemR(md, "object") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "invert") - - layout.itemS() - - if md.is_bound: - layout.itemO("object.meshdeform_bind", text="Unbind") - else: - layout.itemO("object.meshdeform_bind", text="Bind") - row = layout.row() - row.itemR(md, "precision") - row.itemR(md, "dynamic") - - def MIRROR(self, layout, ob, md): - layout.itemR(md, "merge_limit") - split = layout.split() - - col = split.column() - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") - - col = split.column() - col.itemL(text="Textures:") - col.itemR(md, "mirror_u") - col.itemR(md, "mirror_v") - - col = split.column() - col.itemR(md, "clip", text="Do Clipping") - col.itemR(md, "mirror_vertex_groups", text="Vertex Group") - - layout.itemR(md, "mirror_object") - - def MULTIRES(self, layout, ob, md): - layout.itemR(md, "subdivision_type") - - row = layout.row() - row.itemO("object.multires_subdivide", text="Subdivide") - row.itemO("object.multires_higher_levels_delete", text="Delete Higher") - - layout.itemR(md, "level") - - def PARTICLE_INSTANCE(self, layout, ob, md): - layout.itemR(md, "object") - layout.itemR(md, "particle_system_number") - - flow = layout.column_flow() - flow.itemR(md, "normal") - flow.itemR(md, "children") - flow.itemR(md, "size") - flow.itemR(md, "path") - if md.path: - flow.itemR(md, "keep_shape") - flow.itemR(md, "unborn") - flow.itemR(md, "alive") - flow.itemR(md, "dead") - flow.itemL(md, "") - if md.path: - flow.itemR(md, "axis", text="") - - if md.path: - row = layout.row() - row.itemR(md, "position", slider=True) - row.itemR(md, "random_position", text = "Random", slider=True) - - def PARTICLE_SYSTEM(self, layout, ob, md): - layout.itemL(text="See Particle panel.") - - def SHRINKWRAP(self, layout, ob, md): - layout.itemR(md, "target") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "offset") - layout.itemR(md, "subsurf_levels") - layout.itemR(md, "mode") - if md.mode == 'PROJECT': - layout.itemR(md, "subsurf_levels") - layout.itemR(md, "auxiliary_target") - - row = layout.row() - row.itemR(md, "x") - row.itemR(md, "y") - row.itemR(md, "z") - - flow = layout.column_flow() - flow.itemR(md, "negative") - flow.itemR(md, "positive") - flow.itemR(md, "cull_front_faces") - flow.itemR(md, "cull_back_faces") - elif md.mode == 'NEAREST_SURFACEPOINT': - layout.itemR(md, "keep_above_surface") - - def SIMPLE_DEFORM(self, layout, ob, md): - layout.itemR(md, "mode") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "origin") - layout.itemR(md, "relative") - layout.itemR(md, "factor") - layout.itemR(md, "limits") - if md.mode in ('TAPER', 'STRETCH'): - layout.itemR(md, "lock_x_axis") - layout.itemR(md, "lock_y_axis") - - def SMOKE(self, layout, ob, md): - layout.itemL(text="See Smoke panel.") - - def SMOOTH(self, layout, ob, md): - split = layout.split() - - col = split.column() - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "z") - - col = split.column() - col.itemR(md, "factor") - col.itemR(md, "repeat") - - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - - def SOFT_BODY(self, layout, ob, md): - layout.itemL(text="See Soft Body panel.") - - def SUBSURF(self, layout, ob, md): - layout.row().itemR(md, "subdivision_type", expand=True) - - flow = layout.column_flow() - flow.itemR(md, "levels", text="Preview") - flow.itemR(md, "render_levels", text="Render") - flow.itemR(md, "optimal_draw", text="Optimal Display") - flow.itemR(md, "subsurf_uv") - - def SURFACE(self, layout, ob, md): - layout.itemL(text="See Fields panel.") - - def UV_PROJECT(self, layout, ob, md): - if ob.type == 'MESH': - layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") - layout.itemR(md, "image") - layout.itemR(md, "override_image") - - split = layout.split() - - col = split.column() - col.itemL(text="Aspect Ratio:") - - sub = col.column(align=True) - sub.itemR(md, "horizontal_aspect_ratio", text="Horizontal") - sub.itemR(md, "vertical_aspect_ratio", text="Vertical") - - col = split.column() - col.itemL(text="Projectors:") - - sub = col.column(align=True) - sub.itemR(md, "num_projectors", text="Number") - for proj in md.projectors: - sub.itemR(proj, "object", text="") - - def WAVE(self, layout, ob, md): - split = layout.split() - - col = split.column() - col.itemL(text="Motion:") - col.itemR(md, "x") - col.itemR(md, "y") - col.itemR(md, "cyclic") - - col = split.column() - col.itemR(md, "normals") - sub = col.column() - sub.active = md.normals - sub.itemR(md, "x_normal", text="X") - sub.itemR(md, "y_normal", text="Y") - sub.itemR(md, "z_normal", text="Z") - - split = layout.split() - - col = split.column() - col.itemL(text="Time:") - sub = col.column(align=True) - sub.itemR(md, "time_offset", text="Offset") - sub.itemR(md, "lifetime", text="Life") - col.itemR(md, "damping_time", text="Damping") - - col = split.column() - col.itemL(text="Position:") - sub = col.column(align=True) - sub.itemR(md, "start_position_x", text="X") - sub.itemR(md, "start_position_y", text="Y") - col.itemR(md, "falloff_radius", text="Falloff") - - layout.itemS() - - layout.itemR(md, "start_position_object") - layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") - layout.itemR(md, "texture") - layout.itemR(md, "texture_coordinates") - if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH': - layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") - elif md.texture_coordinates == 'OBJECT': - layout.itemR(md, "texture_coordinates_object") - - layout.itemS() - - flow = layout.column_flow() - flow.itemR(md, "speed", slider=True) - flow.itemR(md, "height", slider=True) - flow.itemR(md, "width", slider=True) - flow.itemR(md, "narrowness", slider=True) - -bpy.types.register(DATA_PT_modifiers) diff --git a/release/scripts/ui/buttons_data_text.py b/release/scripts/ui/buttons_data_text.py deleted file mode 100644 index 0d46d5f8a0d..00000000000 --- a/release/scripts/ui/buttons_data_text.py +++ /dev/null @@ -1,179 +0,0 @@ - -import bpy - -class DataButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "data" - - def poll(self, context): - return (context.object and context.object.type == 'TEXT' and context.curve) - -class DATA_PT_context_text(DataButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - curve = context.curve - space = context.space_data - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "data") - split.itemS() - elif curve: - split.template_ID(space, "pin_id") - split.itemS() - -class DATA_PT_shape_text(DataButtonsPanel): - __label__ = "Shape Text" - - def draw(self, context): - layout = self.layout - - ob = context.object - curve = context.curve - space = context.space_data - - split = layout.split() - - col = split.column() - col.itemL(text="Caps:") - row = col.row() - row .itemR(curve, "front") - row .itemR(curve, "back") - # col = split.column() - col.itemL(text="Textures:") - col.itemR(curve, "uv_orco") - col.itemR(curve, "auto_texspace") - - col = split.column() - col.itemL(text="Resolution:") - sub = col.column(align=True) - sub.itemR(curve, "resolution_u", text="Preview") - sub.itemR(curve, "render_resolution_u", text="Render") - - # resolution_v is not used for text - - sub = col.column(align=True) - col.itemL(text="Display:") - col.itemR(curve, "fast", text="Fast Editing") - -class DATA_PT_geometry_text(DataButtonsPanel): - __label__ = "Geometry" - - def draw(self, context): - layout = self.layout - - curve = context.curve - - split = layout.split() - - col = split.column() - col.itemL(text="Modification:") - col.itemR(curve, "width") - col.itemR(curve, "extrude") - col.itemL(text="Taper Object:") - col.itemR(curve, "taper_object", text="") - - col = split.column() - col.itemL(text="Bevel:") - col.itemR(curve, "bevel_depth", text="Depth") - col.itemR(curve, "bevel_resolution", text="Resolution") - col.itemL(text="Bevel Object:") - col.itemR(curve, "bevel_object", text="") - -class DATA_PT_font(DataButtonsPanel): - __label__ = "Font" - - def draw(self, context): - layout = self.layout - - text = context.curve - char = context.curve.edit_format - - layout.itemR(text, "font") - - row = layout.row() - row.itemR(text, "text_size", text="Size") - row.itemR(text, "shear") - - split = layout.split() - - col = split.column() - col.itemL(text="Object Font:") - col.itemR(text, "family", text="") - - col = split.column() - col.itemL(text="Text on Curve:") - col.itemR(text, "text_on_curve", text="") - - split = layout.split() - - col = split.column() - col.itemL(text="Character:") - col.itemR(char, "bold") - col.itemR(char, "italic") - col.itemR(char, "underline") -# col.itemR(char, "style") -# col.itemR(char, "wrap") - - col = split.column(align=True) - col.itemL(text="Underline:") - col.itemR(text, "ul_position", text="Position") - col.itemR(text, "ul_height", text="Thickness") - -class DATA_PT_paragraph(DataButtonsPanel): - __label__ = "Paragraph" - - def draw(self, context): - layout = self.layout - - text = context.curve - - layout.itemL(text="Align:") - layout.itemR(text, "spacemode", expand=True) - - split = layout.split() - - col = split.column(align=True) - col.itemL(text="Spacing:") - col.itemR(text, "spacing", text="Character") - col.itemR(text, "word_spacing", text="Word") - col.itemR(text, "line_dist", text="Line") - - col = split.column(align=True) - col.itemL(text="Offset:") - col.itemR(text, "offset_x", text="X") - col.itemR(text, "offset_y", text="Y") - -class DATA_PT_textboxes(DataButtonsPanel): - __label__ = "Text Boxes" - - def draw(self, context): - layout = self.layout - - text = context.curve - - for box in text.textboxes: - split = layout.box().split() - - col = split.column(align=True) - col.itemL(text="Dimensions:") - col.itemR(box, "width", text="Width") - col.itemR(box, "height", text="Height") - - col = split.column(align=True) - col.itemL(text="Offset:") - col.itemR(box, "x", text="X") - col.itemR(box, "y", text="Y") - -bpy.types.register(DATA_PT_context_text) -bpy.types.register(DATA_PT_shape_text) -bpy.types.register(DATA_PT_geometry_text) -bpy.types.register(DATA_PT_font) -bpy.types.register(DATA_PT_paragraph) -bpy.types.register(DATA_PT_textboxes) diff --git a/release/scripts/ui/buttons_game.py b/release/scripts/ui/buttons_game.py deleted file mode 100644 index bf25289333f..00000000000 --- a/release/scripts/ui/buttons_game.py +++ /dev/null @@ -1,416 +0,0 @@ - -import bpy - -class PhysicsButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - ob = context.active_object - rd = context.scene.render_data - return ob and ob.game and (rd.engine == 'BLENDER_GAME') - -class PHYSICS_PT_game_physics(PhysicsButtonsPanel): - __label__ = "Physics" - - def draw(self, context): - layout = self.layout - - ob = context.active_object - game = ob.game - soft = ob.game.soft_body - - layout.itemR(game, "physics_type") - layout.itemS() - - #if game.physics_type == 'DYNAMIC': - if game.physics_type in ('DYNAMIC', 'RIGID_BODY'): - split = layout.split() - - col = split.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") # out of place but useful - - col = split.column() - col.itemR(game, "material_physics") - col.itemR(game, "rotate_from_normal") - col.itemR(game, "no_sleeping") - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemL(text="Attributes:") - col.itemR(game, "mass") - col.itemR(game, "radius") - col.itemR(game, "form_factor") - - col = split.column() - sub = col.column() - sub.active = (game.physics_type == 'RIGID_BODY') - sub.itemR(game, "anisotropic_friction") - subsub = sub.column() - subsub.active = game.anisotropic_friction - subsub.itemR(game, "friction_coefficients", text="", slider=True) - - split = layout.split() - - col = split.column() - col.itemL(text="Velocity:") - sub = col.column(align=True) - sub.itemR(game, "minimum_velocity", text="Minimum") - sub.itemR(game, "maximum_velocity", text="Maximum") - - col = split.column() - col.itemL(text="Damping:") - sub = col.column(align=True) - sub.itemR(game, "damping", text="Translation", slider=True) - sub.itemR(game, "rotation_damping", text="Rotation", slider=True) - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemL(text="Lock Translation:") - col.itemR(game, "lock_x_axis", text="X") - col.itemR(game, "lock_y_axis", text="Y") - col.itemR(game, "lock_z_axis", text="Z") - - col = split.column() - col.itemL(text="Lock Rotation:") - col.itemR(game, "lock_x_rot_axis", text="X") - col.itemR(game, "lock_y_rot_axis", text="Y") - col.itemR(game, "lock_z_rot_axis", text="Z") - - elif game.physics_type == 'SOFT_BODY': - col = layout.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemL(text="Attributes:") - col.itemR(game, "mass") - col.itemR(soft, "welding") - col.itemR(soft, "position_iterations") - col.itemR(soft, "linstiff", slider=True) - col.itemR(soft, "dynamic_friction", slider=True) - col.itemR(soft, "margin", slider=True) - col.itemR(soft, "bending_const", text="Bending Constraints") - - col = split.column() - col.itemR(soft, "shape_match") - sub = col.column() - sub.active = soft.shape_match - sub.itemR(soft, "threshold", slider=True) - - col.itemS() - - col.itemL(text="Cluster Collision:") - col.itemR(soft, "cluster_rigid_to_softbody") - col.itemR(soft, "cluster_soft_to_softbody") - sub = col.column() - sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody) - sub.itemR(soft, "cluster_iterations", text="Iterations") - - elif game.physics_type == 'STATIC': - col = layout.column() - col.itemR(game, "actor") - col.itemR(game, "ghost") - col.itemR(ob, "restrict_render", text="Invisible") - - elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'): - layout.itemR(ob, "restrict_render", text="Invisible") - -class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): - __label__ = "Collision Bounds" - - def poll(self, context): - game = context.object.game - rd = context.scene.render_data - return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine == 'BLENDER_GAME') - - def draw_header(self, context): - game = context.active_object.game - - self.layout.itemR(game, "use_collision_bounds", text="") - - def draw(self, context): - layout = self.layout - - game = context.active_object.game - - layout.active = game.use_collision_bounds - layout.itemR(game, "collision_bounds", text="Bounds") - - row = layout.row() - row.itemR(game, "collision_compound", text="Compound") - row.itemR(game, "collision_margin", text="Margin", slider=True) - -bpy.types.register(PHYSICS_PT_game_physics) -bpy.types.register(PHYSICS_PT_game_collision_bounds) - -class RenderButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "render" - - def poll(self, context): - rd = context.scene.render_data - return (rd.engine == 'BLENDER_GAME') - -class RENDER_PT_game(RenderButtonsPanel): - __label__ = "Game" - - def draw(self, context): - layout = self.layout - - row = layout.row() - row.itemO("view3d.game_start", text="Start") - row.itemL() - -class RENDER_PT_game_player(RenderButtonsPanel): - __label__ = "Standalone Player" - - def draw(self, context): - layout = self.layout - - gs = context.scene.game_data - - layout.itemR(gs, "fullscreen") - - split = layout.split() - - col = split.column() - col.itemL(text="Resolution:") - sub = col.column(align=True) - sub.itemR(gs, "resolution_x", slider=False, text="X") - sub.itemR(gs, "resolution_y", slider=False, text="Y") - - col = split.column() - col.itemL(text="Quality:") - sub = col.column(align=True) - sub.itemR(gs, "depth", text="Bit Depth", slider=False) - sub.itemR(gs, "frequency", text="FPS", slider=False) - - # framing: - col = layout.column() - col.itemL(text="Framing:") - col.row().itemR(gs, "framing_type", expand=True) - if gs.framing_type == 'LETTERBOX': - col.itemR(gs, "framing_color", text="") - -class RENDER_PT_game_stereo(RenderButtonsPanel): - __label__ = "Stereo" - - def draw(self, context): - layout = self.layout - - gs = context.scene.game_data - stereo_mode = gs.stereo - - # stereo options: - layout.itemR(gs, "stereo", expand=True) - - # stereo: - if stereo_mode == 'STEREO': - layout.itemR(gs, "stereo_mode") - layout.itemL(text="To do: Focal Length") - layout.itemL(text="To do: Eye Separation") - - # dome: - elif stereo_mode == 'DOME': - layout.itemR(gs, "dome_mode", text="Dome Type") - - dome_type = gs.dome_mode - - split=layout.split() - - if dome_type == 'FISHEYE' or \ - dome_type == 'TRUNCATED_REAR' or \ - dome_type == 'TRUNCATED_FRONT': - - col=split.column() - col.itemR(gs, "dome_angle", slider=True) - col.itemR(gs, "dome_tilt") - - col=split.column() - col.itemR(gs, "dome_tesselation", text="Tesselation") - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) - - elif dome_type == 'PANORAM_SPH': - col=split.column() - col.itemR(gs, "dome_tesselation", text="Tesselation") - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) - - else: # cube map - col=split.column() - col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) - - layout.itemR(gs, "dome_text") - -class RENDER_PT_game_shading(RenderButtonsPanel): - __label__ = "Shading" - - def draw(self, context): - layout = self.layout - - gs = context.scene.game_data - layout.itemR(gs, "material_mode", expand=True) - - if gs.material_mode == 'GLSL': - split = layout.split() - - col = split.column() - col.itemR(gs, "glsl_lights", text="Lights") - col.itemR(gs, "glsl_shaders", text="Shaders") - col.itemR(gs, "glsl_shadows", text="Shadows") - - col = split.column() - col.itemR(gs, "glsl_ramps", text="Ramps") - col.itemR(gs, "glsl_nodes", text="Nodes") - col.itemR(gs, "glsl_extra_textures", text="Extra Textures") - -class RENDER_PT_game_performance(RenderButtonsPanel): - __label__ = "Performance" - - def draw(self, context): - layout = self.layout - - gs = context.scene.game_data - - split = layout.split() - - col = split.column() - col.itemL(text="Show:") - col.itemR(gs, "show_debug_properties", text="Debug Properties") - col.itemR(gs, "show_framerate_profile", text="Framerate and Profile") - col.itemR(gs, "show_physics_visualization", text="Physics Visualization") - col.itemR(gs, "deprecation_warnings") - - col = split.column() - col.itemL(text="Render:") - col.itemR(gs, "all_frames") - col.itemR(gs, "display_lists") - -class RENDER_PT_game_sound(RenderButtonsPanel): - __label__ = "Sound" - - def draw(self, context): - layout = self.layout - - scene = context.scene - - layout.itemR(scene, "distance_model") - layout.itemR(scene, "speed_of_sound", text="Speed") - layout.itemR(scene, "doppler_factor") - -bpy.types.register(RENDER_PT_game) -bpy.types.register(RENDER_PT_game_player) -bpy.types.register(RENDER_PT_game_stereo) -bpy.types.register(RENDER_PT_game_shading) -bpy.types.register(RENDER_PT_game_performance) -bpy.types.register(RENDER_PT_game_sound) - -class WorldButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "world" - - def poll(self, context): - rd = context.scene.render_data - return (rd.engine == 'BLENDER_GAME') - -class WORLD_PT_game_context_world(WorldButtonsPanel): - __show_header__ = False - - def poll(self, context): - rd = context.scene.render_data - return (context.scene) and (rd.use_game_engine) - - def draw(self, context): - layout = self.layout - - scene = context.scene - world = context.world - space = context.space_data - - split = layout.split(percentage=0.65) - - if scene: - split.template_ID(scene, "world", new="world.new") - elif world: - split.template_ID(space, "pin_id") - -class WORLD_PT_game_world(WorldButtonsPanel): - __label__ = "World" - - def draw(self, context): - layout = self.layout - - world = context.world - - row = layout.row() - row.column().itemR(world, "horizon_color") - row.column().itemR(world, "ambient_color") - - layout.itemR(world.mist, "enabled", text="Mist") - - row = layout.column_flow() - row.active = world.mist.enabled - row.itemR(world.mist, "start") - row.itemR(world.mist, "depth") - -class WORLD_PT_game_physics(WorldButtonsPanel): - __label__ = "Physics" - - def draw(self, context): - layout = self.layout - - gs = context.scene.game_data - - layout.itemR(gs, "physics_engine") - if gs.physics_engine != 'NONE': - layout.itemR(gs, "physics_gravity", text="Gravity") - - split = layout.split() - - col = split.column() - col.itemL(text="Physics Steps:") - sub = col.column(align=True) - sub.itemR(gs, "physics_step_max", text="Max") - sub.itemR(gs, "physics_step_sub", text="Substeps") - col.itemR(gs, "fps", text="FPS") - - col = split.column() - col.itemL(text="Logic Steps:") - col.itemR(gs, "logic_step_max", text="Max") - - col = layout.column() - col.itemR(gs, "use_occlusion_culling", text="Occlusion Culling") - sub = col.column() - sub.active = gs.use_occlusion_culling - sub.itemR(gs, "occlusion_culling_resolution", text="Resolution") - - else: - split = layout.split() - - col = split.column() - col.itemL(text="Physics Steps:") - col.itemR(gs, "fps", text="FPS") - - col = split.column() - col.itemL(text="Logic Steps:") - col.itemR(gs, "logic_step_max", text="Max") - -bpy.types.register(WORLD_PT_game_context_world) -bpy.types.register(WORLD_PT_game_world) -bpy.types.register(WORLD_PT_game_physics) diff --git a/release/scripts/ui/buttons_material.py b/release/scripts/ui/buttons_material.py deleted file mode 100644 index 9499478a029..00000000000 --- a/release/scripts/ui/buttons_material.py +++ /dev/null @@ -1,750 +0,0 @@ - -import bpy - -def active_node_mat(mat): - # TODO, 2.4x has a pipeline section, for 2.5 we need to communicate - # which settings from node-materials are used - if mat: - mat_node = mat.active_node_material - if mat_node: - return mat_node - else: - return mat - - return None - - -class MaterialButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "material" - # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (engine in self.COMPAT_ENGINES) - -class MATERIAL_PT_preview(MaterialButtonsPanel): - __label__ = "Preview" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def draw(self, context): - self.layout.template_preview(context.material) - -class MATERIAL_PT_context_material(MaterialButtonsPanel): - __show_header__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - # An exception, dont call the parent poll func because - # this manages materials for all engine types - - engine = context.scene.render_data.engine - return (context.material or context.object) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = context.material - ob = context.object - slot = context.material_slot - space = context.space_data - - if ob: - row = layout.row() - - row.template_list(ob, "materials", ob, "active_material_index", rows=2) - - col = row.column(align=True) - col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") - col.itemO("object.material_slot_copy", icon='ICON_COPY_ID', text="") - - if ob.mode == 'EDIT': - row = layout.row(align=True) - row.itemO("object.material_slot_assign", text="Assign") - row.itemO("object.material_slot_select", text="Select") - row.itemO("object.material_slot_deselect", text="Deselect") - - split = layout.split(percentage=0.65) - - if ob: - split.template_ID(ob, "active_material", new="material.new") - row = split.row() - if slot: - row.itemR(slot, "link", text="") - else: - row.itemL() - elif mat: - split.template_ID(space, "pin_id") - split.itemS() - - if mat: - layout.itemR(mat, "type", expand=True) - -class MATERIAL_PT_shading(MaterialButtonsPanel): - __label__ = "Shading" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - if mat.type in ('SURFACE', 'WIRE'): - split = layout.split() - - col = split.column() - sub = col.column() - sub.active = not mat.shadeless - sub.itemR(mat, "emit") - sub.itemR(mat, "ambient") - sub = col.column() - sub.itemR(mat, "translucency") - - col = split.column() - col.itemR(mat, "shadeless") - sub = col.column() - sub.active = not mat.shadeless - sub.itemR(mat, "tangent_shading") - sub.itemR(mat, "cubic") - - elif mat.type == 'HALO': - layout.itemR(mat, "alpha") - -class MATERIAL_PT_strand(MaterialButtonsPanel): - __label__ = "Strand" - __default_closed__ = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = context.material # dont use node material - tan = mat.strand - - split = layout.split() - - col = split.column(align=True) - col.itemL(text="Size:") - col.itemR(tan, "root_size", text="Root") - col.itemR(tan, "tip_size", text="Tip") - col.itemR(tan, "min_size", text="Minimum") - col.itemR(tan, "blender_units") - sub = col.column() - sub.active = (not mat.shadeless) - sub.itemR(tan, "tangent_shading") - col.itemR(tan, "shape") - - col = split.column() - col.itemL(text="Shading:") - col.itemR(tan, "width_fade") - ob = context.object - if ob and ob.type == 'MESH': col.item_pointerR(tan, "uv_layer", ob.data, "uv_textures", text="") - else: col.itemR(tan, "uv_layer", text="") - col.itemS() - sub = col.column() - sub.active = (not mat.shadeless) - sub.itemR(tan, "surface_diffuse") - sub = col.column() - sub.active = tan.surface_diffuse - sub.itemR(tan, "blend_distance", text="Distance") - -class MATERIAL_PT_physics(MaterialButtonsPanel): - __label__ = "Physics" - COMPAT_ENGINES = set(['BLENDER_GAME']) - - def draw(self, context): - layout = self.layout - - phys = context.material.physics # dont use node material - - split = layout.split() - - col = split.column() - col.itemR(phys, "distance") - col.itemR(phys, "friction") - col.itemR(phys, "align_to_normal") - - col = split.column() - col.itemR(phys, "force", slider=True) - col.itemR(phys, "elasticity", slider=True) - col.itemR(phys, "damp", slider=True) - -class MATERIAL_PT_options(MaterialButtonsPanel): - __label__ = "Options" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - split = layout.split() - - col = split.column() - col.itemR(mat, "traceable") - col.itemR(mat, "full_oversampling") - col.itemR(mat, "sky") - col.itemR(mat, "exclude_mist") - col.itemR(mat, "invert_z") - sub = col.row() - sub.itemR(mat, "z_offset") - sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY' - sub = col.column(align=True) - sub.itemL(text="Light Group:") - sub.itemR(mat, "light_group", text="") - row = sub.row() - row.active = mat.light_group - row.itemR(mat, "light_group_exclusive", text="Exclusive") - - col = split.column() - col.itemR(mat, "face_texture") - sub = col.column() - sub.active = mat.face_texture - sub.itemR(mat, "face_texture_alpha") - col.itemS() - col.itemR(mat, "vertex_color_paint") - col.itemR(mat, "vertex_color_light") - col.itemR(mat, "object_color") - -class MATERIAL_PT_shadow(MaterialButtonsPanel): - __label__ = "Shadow" - __default_closed__ = True - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - split = layout.split() - - col = split.column() - col.itemR(mat, "shadows", text="Receive") - col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent") - col.itemR(mat, "only_shadow", text="Shadows Only") - col.itemR(mat, "cast_shadows_only", text="Cast Only") - col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha") - - col = split.column() - col.itemR(mat, "cast_buffer_shadows") - sub = col.column() - sub.active = mat.cast_buffer_shadows - sub.itemR(mat, "shadow_buffer_bias", text="Buffer Bias") - col.itemR(mat, "ray_shadow_bias", text="Auto Ray Bias") - sub = col.column() - sub.active = (not mat.ray_shadow_bias) - sub.itemR(mat, "shadow_ray_bias", text="Ray Bias") - -class MATERIAL_PT_diffuse(MaterialButtonsPanel): - __label__ = "Diffuse" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - split = layout.split() - - col = split.column() - col.itemR(mat, "diffuse_color", text="") - sub = col.column() - sub.active = (not mat.shadeless) - sub.itemR(mat, "diffuse_intensity", text="Intensity") - - col = split.column() - col.active = (not mat.shadeless) - col.itemR(mat, "diffuse_shader", text="") - col.itemR(mat, "use_diffuse_ramp", text="Ramp") - - col = layout.column() - col.active = (not mat.shadeless) - if mat.diffuse_shader == 'OREN_NAYAR': - col.itemR(mat, "roughness") - elif mat.diffuse_shader == 'MINNAERT': - col.itemR(mat, "darkness") - elif mat.diffuse_shader == 'TOON': - row = col.row() - row.itemR(mat, "diffuse_toon_size", text="Size") - row.itemR(mat, "diffuse_toon_smooth", text="Smooth") - elif mat.diffuse_shader == 'FRESNEL': - row = col.row() - row.itemR(mat, "diffuse_fresnel", text="Fresnel") - row.itemR(mat, "diffuse_fresnel_factor", text="Factor") - - if mat.use_diffuse_ramp: - layout.itemS() - layout.template_color_ramp(mat, "diffuse_ramp", expand=True) - layout.itemS() - row = layout.row() - split = row.split(percentage=0.3) - split.itemL(text="Input:") - split.itemR(mat, "diffuse_ramp_input", text="") - split = row.split(percentage=0.3) - split.itemL(text="Blend:") - split.itemR(mat, "diffuse_ramp_blend", text="") - row = layout.row() - row.itemR(mat, "diffuse_ramp_factor", text="Factor") - -class MATERIAL_PT_specular(MaterialButtonsPanel): - __label__ = "Specular" - COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - layout.active = (not mat.shadeless) - - split = layout.split() - - col = split.column() - col.itemR(mat, "specular_color", text="") - col.itemR(mat, "specular_intensity", text="Intensity") - - col = split.column() - col.itemR(mat, "specular_shader", text="") - col.itemR(mat, "use_specular_ramp", text="Ramp") - - col = layout.column() - if mat.specular_shader in ('COOKTORR', 'PHONG'): - col.itemR(mat, "specular_hardness", text="Hardness") - elif mat.specular_shader == 'BLINN': - row = col.row() - row.itemR(mat, "specular_hardness", text="Hardness") - row.itemR(mat, "specular_ior", text="IOR") - elif mat.specular_shader == 'WARDISO': - col.itemR(mat, "specular_slope", text="Slope") - elif mat.specular_shader == 'TOON': - row = col.row() - row.itemR(mat, "specular_toon_size", text="Size") - row.itemR(mat, "specular_toon_smooth", text="Smooth") - - if mat.use_specular_ramp: - layout.itemS() - layout.template_color_ramp(mat, "specular_ramp", expand=True) - layout.itemS() - row = layout.row() - split = row.split(percentage=0.3) - split.itemL(text="Input:") - split.itemR(mat, "specular_ramp_input", text="") - split = row.split(percentage=0.3) - split.itemL(text="Blend:") - split.itemR(mat, "specular_ramp_blend", text="") - row = layout.row() - row.itemR(mat, "specular_ramp_factor", text="Factor") - -class MATERIAL_PT_sss(MaterialButtonsPanel): - __label__ = "Subsurface Scattering" - __default_closed__ = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw_header(self, context): - mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - - self.layout.active = (not mat.shadeless) - self.layout.itemR(sss, "enabled", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - - layout.active = sss.enabled - - split = layout.split() - split.active = (not mat.shadeless) - - col = split.column() - col.itemR(sss, "ior") - col.itemR(sss, "scale") - col.itemR(sss, "color", text="") - col.itemR(sss, "radius", text="RGB Radius") - - col = split.column() - sub = col.column(align=True) - sub.itemL(text="Blend:") - sub.itemR(sss, "color_factor", text="Color") - sub.itemR(sss, "texture_factor", text="Texture") - sub.itemL(text="Scattering Weight:") - sub.itemR(sss, "front") - sub.itemR(sss, "back") - col.itemS() - col.itemR(sss, "error_tolerance", text="Error") - -class MATERIAL_PT_mirror(MaterialButtonsPanel): - __label__ = "Mirror" - __default_closed__ = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw_header(self, context): - raym = active_node_mat(context.material).raytrace_mirror - - self.layout.itemR(raym, "enabled", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - raym = mat.raytrace_mirror - - layout.active = raym.enabled - - split = layout.split() - - col = split.column() - col.itemR(raym, "reflect_factor") - col.itemR(mat, "mirror_color", text="") - - col = split.column() - col.itemR(raym, "fresnel") - sub = col.column() - sub.active = raym.fresnel > 0 - sub.itemR(raym, "fresnel_factor", text="Blend") - - split = layout.split() - - col = split.column() - col.itemS() - col.itemR(raym, "distance", text="Max Dist") - col.itemR(raym, "depth") - col.itemS() - sub = col.split(percentage=0.4) - sub.itemL(text="Fade To:") - sub.itemR(raym, "fade_to", text="") - - col = split.column() - col.itemL(text="Gloss:") - col.itemR(raym, "gloss_factor", text="Amount") - sub = col.column() - sub.active = raym.gloss_factor < 1.0 - sub.itemR(raym, "gloss_threshold", text="Threshold") - sub.itemR(raym, "gloss_samples", text="Samples") - sub.itemR(raym, "gloss_anisotropic", text="Anisotropic") - -class MATERIAL_PT_transp(MaterialButtonsPanel): - __label__= "Transparency" - __default_closed__ = True - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = active_node_mat(context.material) - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) - - def draw_header(self, context): - mat = active_node_mat(context.material) - - self.layout.itemR(mat, "transparency", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - rayt = mat.raytrace_transparency - - row = layout.row() - row.active = mat.transparency and (not mat.shadeless) - row.itemR(mat, "transparency_method", expand=True) - - split = layout.split() - - col = split.column() - col.itemR(mat, "alpha") - row = col.row() - row.active = mat.transparency and (not mat.shadeless) - row.itemR(mat, "specular_alpha", text="Specular") - - col = split.column() - col.active = (not mat.shadeless) - col.itemR(rayt, "fresnel") - sub = col.column() - sub.active = rayt.fresnel > 0 - sub.itemR(rayt, "fresnel_factor", text="Blend") - - if mat.transparency_method == 'RAYTRACE': - layout.itemS() - split = layout.split() - split.active = mat.transparency - - col = split.column() - col.itemR(rayt, "ior") - col.itemR(rayt, "filter") - col.itemR(rayt, "falloff") - col.itemR(rayt, "limit") - col.itemR(rayt, "depth") - - col = split.column() - col.itemL(text="Gloss:") - col.itemR(rayt, "gloss_factor", text="Amount") - sub = col.column() - sub.active = rayt.gloss_factor < 1.0 - sub.itemR(rayt, "gloss_threshold", text="Threshold") - sub.itemR(rayt, "gloss_samples", text="Samples") - -class MATERIAL_PT_halo(MaterialButtonsPanel): - __label__= "Halo" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = context.material # dont use node material - halo = mat.halo - - split = layout.split() - - col = split.column() - col.itemR(mat, "diffuse_color", text="") - col.itemR(halo, "size") - col.itemR(halo, "hardness") - col.itemR(halo, "add") - col.itemL(text="Options:") - col.itemR(halo, "texture") - col.itemR(halo, "vertex_normal") - col.itemR(halo, "xalpha") - col.itemR(halo, "shaded") - col.itemR(halo, "soft") - - col = split.column() - col.itemR(halo, "ring") - sub = col.column() - sub.active = halo.ring - sub.itemR(halo, "rings") - sub.itemR(mat, "mirror_color", text="") - col.itemS() - col.itemR(halo, "lines") - sub = col.column() - sub.active = halo.lines - sub.itemR(halo, "line_number", text="Lines") - sub.itemR(mat, "specular_color", text="") - col.itemS() - col.itemR(halo, "star") - sub = col.column() - sub.active = halo.star - sub.itemR(halo, "star_tips") - -class MATERIAL_PT_flare(MaterialButtonsPanel): - __label__= "Flare" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) - - def draw_header(self, context): - halo = context.material.halo - - self.layout.itemR(halo, "flare_mode", text="") - - def draw(self, context): - layout = self.layout - - mat = context.material # dont use node material - halo = mat.halo - - layout.active = halo.flare_mode - - split = layout.split() - - col = split.column() - col.itemR(halo, "flare_size", text="Size") - col.itemR(halo, "flare_boost", text="Boost") - col.itemR(halo, "flare_seed", text="Seed") - col = split.column() - col.itemR(halo, "flares_sub", text="Subflares") - col.itemR(halo, "flare_subsize", text="Subsize") - -bpy.types.register(MATERIAL_PT_context_material) -bpy.types.register(MATERIAL_PT_preview) -bpy.types.register(MATERIAL_PT_diffuse) -bpy.types.register(MATERIAL_PT_specular) -bpy.types.register(MATERIAL_PT_shading) -bpy.types.register(MATERIAL_PT_transp) -bpy.types.register(MATERIAL_PT_mirror) -bpy.types.register(MATERIAL_PT_sss) -bpy.types.register(MATERIAL_PT_halo) -bpy.types.register(MATERIAL_PT_flare) -bpy.types.register(MATERIAL_PT_physics) -bpy.types.register(MATERIAL_PT_strand) -bpy.types.register(MATERIAL_PT_options) -bpy.types.register(MATERIAL_PT_shadow) - -# Volumetrics -class VolumeButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "material" - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'VOLUME') and (engine in self.COMPAT_ENGINES) - -class MATERIAL_PT_volume_density(VolumeButtonsPanel): - __label__ = "Density" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - vol = context.material.volume # dont use node material - - split = layout.split() - row = split.row() - row.itemR(vol, "density") - row.itemR(vol, "density_scale") - - -class MATERIAL_PT_volume_shading(VolumeButtonsPanel): - __label__ = "Shading" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - vol = context.material.volume # dont use node material - - split = layout.split() - - col = split.column() - col.itemR(vol, "scattering") - col.itemR(vol, "asymmetry") - col.itemR(vol, "transmission_color") - - col = split.column() - sub = col.column(align=True) - sub.itemR(vol, "emission") - sub.itemR(vol, "emission_color", text="") - sub = col.column(align=True) - sub.itemR(vol, "reflection") - sub.itemR(vol, "reflection_color", text="") - -class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): - __label__ = "Lighting" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - vol = context.material.volume # dont use node material - - split = layout.split() - - col = split.column() - col.itemR(vol, "lighting_mode", text="") - - col = split.column() - - if vol.lighting_mode == 'SHADED': - col.itemR(vol, "external_shadows") - col.itemR(vol, "light_cache") - sub = col.column() - sub.active = vol.light_cache - sub.itemR(vol, "cache_resolution") - elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'): - sub = col.column() - sub.enabled = True - sub.active = False - sub.itemR(vol, "light_cache") - col.itemR(vol, "cache_resolution") - - sub = col.column(align=True) - sub.itemR(vol, "ms_diffusion") - sub.itemR(vol, "ms_spread") - sub.itemR(vol, "ms_intensity") - - -class MATERIAL_PT_volume_transp(VolumeButtonsPanel): - __label__= "Transparency" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - mat = context.material # dont use node material - - layout.itemR(mat, "transparency_method", expand=True) - -class MATERIAL_PT_volume_integration(VolumeButtonsPanel): - __label__ = "Integration" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - vol = context.material.volume # dont use node material - - split = layout.split() - - col = split.column() - col.itemL(text="Step Calculation:") - col.itemR(vol, "step_calculation", text="") - col = col.column(align=True) - col.itemR(vol, "step_size") - - col = split.column() - col.itemL() - col.itemR(vol, "depth_cutoff") - -bpy.types.register(MATERIAL_PT_volume_density) -bpy.types.register(MATERIAL_PT_volume_shading) -bpy.types.register(MATERIAL_PT_volume_lighting) -bpy.types.register(MATERIAL_PT_volume_transp) -bpy.types.register(MATERIAL_PT_volume_integration) diff --git a/release/scripts/ui/buttons_object.py b/release/scripts/ui/buttons_object.py deleted file mode 100644 index 98ac462f2d4..00000000000 --- a/release/scripts/ui/buttons_object.py +++ /dev/null @@ -1,223 +0,0 @@ - -import bpy - -class ObjectButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "object" - -class OBJECT_PT_context_object(ObjectButtonsPanel): - __show_header__ = False - - def draw(self, context): - layout = self.layout - - ob = context.object - - row = layout.row() - row.itemL(text="", icon='ICON_OBJECT_DATA') - row.itemR(ob, "name", text="") - -class OBJECT_PT_transform(ObjectButtonsPanel): - __label__ = "Transform" - - def draw(self, context): - layout = self.layout - - ob = context.object - - row = layout.row() - - row.column().itemR(ob, "location") - if ob.rotation_mode == 'QUATERNION': - row.column().itemR(ob, "rotation_quaternion", text="Rotation") - elif ob.rotation_mode == 'AXIS_ANGLE': - #row.column().itemL(text="Rotation") - #row.column().itemR(pchan, "rotation_angle", text="Angle") - #row.column().itemR(pchan, "rotation_axis", text="Axis") - row.column().itemR(ob, "rotation_axis_angle", text="Rotation") - else: - row.column().itemR(ob, "rotation_euler", text="Rotation") - - row.column().itemR(ob, "scale") - - layout.itemR(ob, "rotation_mode") - -class OBJECT_PT_transform_locks(ObjectButtonsPanel): - __label__ = "Transform Locks" - __default_closed__ = True - - def draw(self, context): - layout = self.layout - - ob = context.object - - row = layout.row() - - col = row.column() - col.itemR(ob, "lock_location") - - col = row.column() - if ob.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): - col.itemR(ob, "lock_rotations_4d", text="Lock Rotation") - if ob.lock_rotations_4d: - col.itemR(ob, "lock_rotation_w", text="W") - col.itemR(ob, "lock_rotation", text="") - else: - col.itemR(ob, "lock_rotation", text="Rotation") - - row.column().itemR(ob, "lock_scale") - -class OBJECT_PT_relations(ObjectButtonsPanel): - __label__ = "Relations" - - def draw(self, context): - layout = self.layout - - ob = context.object - - split = layout.split() - - col = split.column() - col.itemR(ob, "layers") - col.itemS() - col.itemR(ob, "pass_index") - - col = split.column() - col.itemL(text="Parent:") - col.itemR(ob, "parent", text="") - - sub = col.column() - split = sub.split(percentage=0.3) - split.itemL(text="Type:") - split.itemR(ob, "parent_type", text="") - parent = ob.parent - if parent and ob.parent_type == 'BONE' and parent.type == 'ARMATURE': - sub.item_pointerR(ob, "parent_bone", parent.data, "bones", text="") - sub.active = parent != None - -class OBJECT_PT_groups(ObjectButtonsPanel): - __label__ = "Groups" - - def draw(self, context): - layout = self.layout - - ob = context.object - - split = layout.split() - split.item_menu_enumO("object.group_add", "group", text="Add to Group") - split.itemL() - - for group in bpy.data.groups: - if ob.name in group.objects: - col = layout.column(align=True) - - col.set_context_pointer("group", group) - - row = col.box().row() - row.itemR(group, "name", text="") - row.itemO("object.group_remove", text="", icon='VICON_X') - - split = col.box().split() - split.column().itemR(group, "layer", text="Dupli") - split.column().itemR(group, "dupli_offset", text="") - -class OBJECT_PT_display(ObjectButtonsPanel): - __label__ = "Display" - - def draw(self, context): - layout = self.layout - - ob = context.object - - split = layout.split() - col = split.column() - col.itemR(ob, "max_draw_type", text="Type") - col = split.column() - row = col.row() - row.itemR(ob, "draw_bounds", text="Bounds") - row.itemR(ob, "draw_bounds_type", text="") - - flow = layout.column_flow() - flow.itemR(ob, "draw_name", text="Name") - flow.itemR(ob, "draw_axis", text="Axis") - flow.itemR(ob, "draw_wire", text="Wire") - flow.itemR(ob, "draw_texture_space", text="Texture Space") - flow.itemR(ob, "x_ray", text="X-Ray") - flow.itemR(ob, "draw_transparent", text="Transparency") - -class OBJECT_PT_duplication(ObjectButtonsPanel): - __label__ = "Duplication" - - def draw(self, context): - layout = self.layout - - ob = context.object - - layout.itemR(ob, "dupli_type", expand=True) - - if ob.dupli_type == 'FRAMES': - split = layout.split() - - col = split.column(align=True) - col.itemR(ob, "dupli_frames_start", text="Start") - col.itemR(ob, "dupli_frames_end", text="End") - - col = split.column(align=True) - col.itemR(ob, "dupli_frames_on", text="On") - col.itemR(ob, "dupli_frames_off", text="Off") - - layout.itemR(ob, "dupli_frames_no_speed", text="No Speed") - - elif ob.dupli_type == 'VERTS': - layout.itemR(ob, "dupli_verts_rotation", text="Rotation") - - elif ob.dupli_type == 'FACES': - row = layout.row() - row.itemR(ob, "dupli_faces_scale", text="Scale") - row.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale") - - elif ob.dupli_type == 'GROUP': - layout.itemR(ob, "dupli_group", text="Group") - -class OBJECT_PT_animation(ObjectButtonsPanel): - __label__ = "Animation" - - def draw(self, context): - layout = self.layout - - ob = context.object - - split = layout.split() - - col = split.column() - col.itemL(text="Time Offset:") - col.itemR(ob, "time_offset_edit", text="Edit") - row = col.row() - row.itemR(ob, "time_offset_particle", text="Particle") - row.active = len(ob.particle_systems) != 0 - row = col.row() - row.itemR(ob, "time_offset_parent", text="Parent") - row.active = ob.parent != None - row = col.row() - row.itemR(ob, "slow_parent") - row.active = ob.parent != None - col.itemR(ob, "time_offset", text="Offset") - - col = split.column() - col.itemL(text="Track:") - col.itemR(ob, "track", text="") - col.itemR(ob, "track_axis", text="Axis") - col.itemR(ob, "up_axis", text="Up Axis") - row = col.row() - row.itemR(ob, "track_override_parent", text="Override Parent") - row.active = ob.parent != None - -bpy.types.register(OBJECT_PT_context_object) -bpy.types.register(OBJECT_PT_transform) -bpy.types.register(OBJECT_PT_transform_locks) -bpy.types.register(OBJECT_PT_relations) -bpy.types.register(OBJECT_PT_groups) -bpy.types.register(OBJECT_PT_display) -bpy.types.register(OBJECT_PT_duplication) -bpy.types.register(OBJECT_PT_animation) diff --git a/release/scripts/ui/buttons_object_constraint.py b/release/scripts/ui/buttons_object_constraint.py deleted file mode 100644 index 63fe27f2e4b..00000000000 --- a/release/scripts/ui/buttons_object_constraint.py +++ /dev/null @@ -1,746 +0,0 @@ - -import bpy - -class ConstraintButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "constraint" - - def draw_constraint(self, context, con): - layout = self.layout - - box = layout.template_constraint(con) - - if box: - # match enum type to our functions, avoids a lookup table. - getattr(self, con.type)(context, box, con) - - # show/key buttons here are most likely obsolete now, with - # keyframing functionality being part of every button - if con.type not in ('RIGID_BODY_JOINT', 'NULL'): - box.itemR(con, "influence") - - def space_template(self, layout, con, target=True, owner=True): - if target or owner: - row = layout.row() - - row.itemL(text="Convert:") - - if target: - row.itemR(con, "target_space", text="") - - if target and owner: - row.itemL(icon='ICON_ARROW_LEFTRIGHT') - - if owner: - row.itemR(con, "owner_space", text="") - - def target_template(self, layout, con, subtargets=True): - layout.itemR(con, "target") # XXX limiting settings for only 'curves' or some type of object - - if con.target and subtargets: - if con.target.type == 'ARMATURE': - layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="Bone") - - if con.type == 'COPY_LOCATION': - row = layout.row() - row.itemL(text="Head/Tail:") - row.itemR(con, "head_tail", text="") - elif con.target.type in ('MESH', 'LATTICE'): - layout.item_pointerR(con, "subtarget", con.target, "vertex_groups", text="Vertex Group") - - def ik_template(self, layout, con): - # only used for iTaSC - layout.itemR(con, "pole_target") - - if con.pole_target and con.pole_target.type == 'ARMATURE': - layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") - - if con.pole_target: - row = layout.row() - row.itemL() - row.itemR(con, "pole_angle") - - split = layout.split(percentage=0.33) - col = split.column() - col.itemR(con, "tail") - col.itemR(con, "stretch") - - col = split.column() - col.itemR(con, "chain_length") - col.itemR(con, "targetless") - - def CHILD_OF(self, context, layout, con): - self.target_template(layout, con) - - split = layout.split() - - col = split.column() - col.itemL(text="Location:") - col.itemR(con, "locationx", text="X") - col.itemR(con, "locationy", text="Y") - col.itemR(con, "locationz", text="Z") - - col = split.column() - col.itemL(text="Rotation:") - col.itemR(con, "rotationx", text="X") - col.itemR(con, "rotationy", text="Y") - col.itemR(con, "rotationz", text="Z") - - col = split.column() - col.itemL(text="Scale:") - col.itemR(con, "sizex", text="X") - col.itemR(con, "sizey", text="Y") - col.itemR(con, "sizez", text="Z") - - row = layout.row() - row.itemO("constraint.childof_set_inverse") - row.itemO("constraint.childof_clear_inverse") - - def TRACK_TO(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row() - row.itemL(text="To:") - row.itemR(con, "track", expand=True) - - row = layout.row() - #row.itemR(con, "up", text="Up", expand=True) # XXX: up and expand don't play nice together - row.itemR(con, "up", text="Up") - row.itemR(con, "target_z") - - self.space_template(layout, con) - - def IK(self, context, layout, con): - if context.object.pose.ik_solver == "ITASC": - layout.itemR(con, "ik_type") - getattr(self, "IK_"+con.ik_type)(context, layout, con) - else: - # Legacy IK constraint - self.target_template(layout, con) - layout.itemR(con, "pole_target") - - if con.pole_target and con.pole_target.type == 'ARMATURE': - layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") - - if con.pole_target: - row = layout.row() - row.itemL() - row.itemR(con, "pole_angle") - - split = layout.split() - col = split.column() - col.itemR(con, "tail") - col.itemR(con, "stretch") - - col = split.column() - col.itemR(con, "iterations") - col.itemR(con, "chain_length") - - split = layout.split() - col = split.column() - col.itemL() - col.itemR(con, "targetless") - col.itemR(con, "rotation") - - col = split.column() - col.itemL(text="Weight:") - col.itemR(con, "weight", text="Position", slider=True) - sub = col.column() - sub.active = con.rotation - sub.itemR(con, "orient_weight", text="Rotation", slider=True) - - def IK_COPY_POSE(self, context, layout, con): - self.target_template(layout, con) - self.ik_template(layout, con) - - row = layout.row() - row.itemL(text="Axis Ref:") - row.itemR(con, "axis_reference", expand=True) - split = layout.split(percentage=0.33) - split.row().itemR(con, "position") - row = split.row() - row.itemR(con, "weight", text="Weight", slider=True) - row.active = con.position - split = layout.split(percentage=0.33) - row = split.row() - row.itemL(text="Lock:") - row = split.row() - row.itemR(con, "pos_lock_x", text="X") - row.itemR(con, "pos_lock_y", text="Y") - row.itemR(con, "pos_lock_z", text="Z") - split.active = con.position - - split = layout.split(percentage=0.33) - split.row().itemR(con, "rotation") - row = split.row() - row.itemR(con, "orient_weight", text="Weight", slider=True) - row.active = con.rotation - split = layout.split(percentage=0.33) - row = split.row() - row.itemL(text="Lock:") - row = split.row() - row.itemR(con, "rot_lock_x", text="X") - row.itemR(con, "rot_lock_y", text="Y") - row.itemR(con, "rot_lock_z", text="Z") - split.active = con.rotation - - def IK_DISTANCE(self, context, layout, con): - self.target_template(layout, con) - self.ik_template(layout, con) - - layout.itemR(con, "limit_mode") - row = layout.row() - row.itemR(con, "weight", text="Weight", slider=True) - row.itemR(con, "distance", text="Distance", slider=True) - - def FOLLOW_PATH(self, context, layout, con): - self.target_template(layout, con) - - split = layout.split() - - col = split.column() - col.itemR(con, "use_curve_follow") - col.itemR(con, "use_curve_radius") - - col = split.column() - col.itemR(con, "use_fixed_position") - if con.use_fixed_position: - col.itemR(con, "offset_factor", text="Offset") - else: - col.itemR(con, "offset") - - row = layout.row() - row.itemL(text="Forward:") - row.itemR(con, "forward", expand=True) - - row = layout.row() - row.itemR(con, "up", text="Up") - row.itemL() - - def LIMIT_ROTATION(self, context, layout, con): - - split = layout.split() - - col = split.column() - col.itemR(con, "use_limit_x") - sub = col.column() - sub.active = con.use_limit_x - sub.itemR(con, "minimum_x", text="Min") - sub.itemR(con, "maximum_x", text="Max") - - col = split.column() - col.itemR(con, "use_limit_y") - sub = col.column() - sub.active = con.use_limit_y - sub.itemR(con, "minimum_y", text="Min") - sub.itemR(con, "maximum_y", text="Max") - - col = split.column() - col.itemR(con, "use_limit_z") - sub = col.column() - sub.active = con.use_limit_z - sub.itemR(con, "minimum_z", text="Min") - sub.itemR(con, "maximum_z", text="Max") - - row = layout.row() - row.itemR(con, "limit_transform") - row.itemL() - - row = layout.row() - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") - - def LIMIT_LOCATION(self, context, layout, con): - split = layout.split() - - col = split.column() - col.itemR(con, "use_minimum_x") - sub = col.column() - sub.active = con.use_minimum_x - sub.itemR(con, "minimum_x", text="") - col.itemR(con, "use_maximum_x") - sub = col.column() - sub.active = con.use_maximum_x - sub.itemR(con, "maximum_x", text="") - - col = split.column() - col.itemR(con, "use_minimum_y") - sub = col.column() - sub.active = con.use_minimum_y - sub.itemR(con, "minimum_y", text="") - col.itemR(con, "use_maximum_y") - sub = col.column() - sub.active = con.use_maximum_y - sub.itemR(con, "maximum_y", text="") - - col = split.column() - col.itemR(con, "use_minimum_z") - sub = col.column() - sub.active = con.use_minimum_z - sub.itemR(con, "minimum_z", text="") - col.itemR(con, "use_maximum_z") - sub = col.column() - sub.active = con.use_maximum_z - sub.itemR(con, "maximum_z", text="") - - row = layout.row() - row.itemR(con, "limit_transform") - row.itemL() - - row = layout.row() - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") - - def LIMIT_SCALE(self, context, layout, con): - split = layout.split() - - col = split.column() - col.itemR(con, "use_minimum_x") - sub = col.column() - sub.active = con.use_minimum_x - sub.itemR(con, "minimum_x", text="") - col.itemR(con, "use_maximum_x") - sub = col.column() - sub.active = con.use_maximum_x - sub.itemR(con, "maximum_x", text="") - - col = split.column() - col.itemR(con, "use_minimum_y") - sub = col.column() - sub.active = con.use_minimum_y - sub.itemR(con, "minimum_y", text="") - col.itemR(con, "use_maximum_y") - sub = col.column() - sub.active = con.use_maximum_y - sub.itemR(con, "maximum_y", text="") - - col = split.column() - col.itemR(con, "use_minimum_z") - sub = col.column() - sub.active = con.use_minimum_z - sub.itemR(con, "minimum_z", text="") - col.itemR(con, "use_maximum_z") - sub = col.column() - sub.active = con.use_maximum_z - sub.itemR(con, "maximum_z", text="") - - row = layout.row() - row.itemR(con, "limit_transform") - row.itemL() - - row = layout.row() - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") - - def COPY_ROTATION(self, context, layout, con): - self.target_template(layout, con) - - split = layout.split() - - col = split.column() - col.itemR(con, "rotate_like_x", text="X") - sub = col.column() - sub.active = con.rotate_like_x - sub.itemR(con, "invert_x", text="Invert") - - col = split.column() - col.itemR(con, "rotate_like_y", text="Y") - sub = col.column() - sub.active = con.rotate_like_y - sub.itemR(con, "invert_y", text="Invert") - - col = split.column() - col.itemR(con, "rotate_like_z", text="Z") - sub = col.column() - sub.active = con.rotate_like_z - sub.itemR(con, "invert_z", text="Invert") - - layout.itemR(con, "offset") - - self.space_template(layout, con) - - def COPY_LOCATION(self, context, layout, con): - self.target_template(layout, con) - - split = layout.split() - - col = split.column() - col.itemR(con, "locate_like_x", text="X") - sub = col.column() - sub.active = con.locate_like_x - sub.itemR(con, "invert_x", text="Invert") - - col = split.column() - col.itemR(con, "locate_like_y", text="Y") - sub = col.column() - sub.active = con.locate_like_y - sub.itemR(con, "invert_y", text="Invert") - - col = split.column() - col.itemR(con, "locate_like_z", text="Z") - sub = col.column() - sub.active = con.locate_like_z - sub.itemR(con, "invert_z", text="Invert") - - layout.itemR(con, "offset") - - self.space_template(layout, con) - - def COPY_SCALE(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row(align=True) - row.itemR(con, "size_like_x", text="X") - row.itemR(con, "size_like_y", text="Y") - row.itemR(con, "size_like_z", text="Z") - - layout.itemR(con, "offset") - - self.space_template(layout, con) - - #def SCRIPT(self, context, layout, con): - - def ACTION(self, context, layout, con): - self.target_template(layout, con) - - layout.itemR(con, "action") - layout.itemR(con, "transform_channel") - - split = layout.split() - - col = split.column(align=True) - col.itemR(con, "start_frame", text="Start") - col.itemR(con, "end_frame", text="End") - - col = split.column(align=True) - col.itemR(con, "minimum", text="Min") - col.itemR(con, "maximum", text="Max") - - row = layout.row() - row.itemL(text="Convert:") - row.itemR(con, "owner_space", text="") - - def LOCKED_TRACK(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row() - row.itemL(text="To:") - row.itemR(con, "track", expand=True) - - row = layout.row() - row.itemL(text="Lock:") - row.itemR(con, "locked", expand=True) - - def LIMIT_DISTANCE(self, context, layout, con): - self.target_template(layout, con) - - col = layout.column(align=True); - col.itemR(con, "distance") - col.itemO("constraint.limitdistance_reset") - - row = layout.row() - row.itemL(text="Clamp Region:") - row.itemR(con, "limit_mode", text="") - - def STRETCH_TO(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row() - row.itemR(con, "original_length", text="Rest Length") - row.itemO("constraint.stretchto_reset", text="Reset") - - col = layout.column() - col.itemR(con, "bulge", text="Volume Variation") - - row = layout.row() - row.itemL(text="Volume:") - row.itemR(con, "volume", expand=True) - row.itemL(text="Plane:") - row.itemR(con, "keep_axis", expand=True) - - def FLOOR(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row() - row.itemR(con, "sticky") - row.itemR(con, "use_rotation") - - layout.itemR(con, "offset") - - row = layout.row() - row.itemL(text="Min/Max:") - row.itemR(con, "floor_location", expand=True) - - def RIGID_BODY_JOINT(self, context, layout, con): - self.target_template(layout, con) - - layout.itemR(con, "pivot_type") - layout.itemR(con, "child") - - row = layout.row() - row.itemR(con, "disable_linked_collision", text="No Collision") - row.itemR(con, "draw_pivot", text="Display Pivot") - - split = layout.split() - - col = split.column(align=True) - col.itemL(text="Pivot:") - col.itemR(con, "pivot_x", text="X") - col.itemR(con, "pivot_y", text="Y") - col.itemR(con, "pivot_z", text="Z") - - col = split.column(align=True) - col.itemL(text="Axis:") - col.itemR(con, "axis_x", text="X") - col.itemR(con, "axis_y", text="Y") - col.itemR(con, "axis_z", text="Z") - - #Missing: Limit arrays (not wrapped in RNA yet) - - def CLAMP_TO(self, context, layout, con): - self.target_template(layout, con) - - row = layout.row() - row.itemL(text="Main Axis:") - row.itemR(con, "main_axis", expand=True) - - row = layout.row() - row.itemR(con, "cyclic") - - def TRANSFORM(self, context, layout, con): - self.target_template(layout, con) - - layout.itemR(con, "extrapolate_motion", text="Extrapolate") - - split = layout.split() - - col = split.column() - col.itemL(text="Source:") - col.row().itemR(con, "map_from", expand=True) - - sub = col.row(align=True) - sub.itemL(text="X:") - sub.itemR(con, "from_min_x", text="") - sub.itemR(con, "from_max_x", text="") - - sub = col.row(align=True) - sub.itemL(text="Y:") - sub.itemR(con, "from_min_y", text="") - sub.itemR(con, "from_max_y", text="") - - sub = col.row(align=True) - sub.itemL(text="Z:") - sub.itemR(con, "from_min_z", text="") - sub.itemR(con, "from_max_z", text="") - - split = layout.split() - - col = split.column() - col.itemL(text="Destination:") - col.row().itemR(con, "map_to", expand=True) - - sub = col.row(align=True) - sub.itemR(con, "map_to_x_from", text="") - sub.itemR(con, "to_min_x", text="") - sub.itemR(con, "to_max_x", text="") - - sub = col.row(align=True) - sub.itemR(con, "map_to_y_from", text="") - sub.itemR(con, "to_min_y", text="") - sub.itemR(con, "to_max_y", text="") - - sub = col.row(align=True) - sub.itemR(con, "map_to_z_from", text="") - sub.itemR(con, "to_min_z", text="") - sub.itemR(con, "to_max_z", text="") - - self.space_template(layout, con) - - def SHRINKWRAP (self, context, layout, con): - self.target_template(layout, con) - - layout.itemR(con, "distance") - layout.itemR(con, "shrinkwrap_type") - - if con.shrinkwrap_type == 'PROJECT': - row = layout.row(align=True) - row.itemR(con, "axis_x") - row.itemR(con, "axis_y") - row.itemR(con, "axis_z") - -class OBJECT_PT_constraints(ConstraintButtonsPanel): - __label__ = "Constraints" - __context__ = "constraint" - - def poll(self, context): - return (context.object) - - def draw(self, context): - layout = self.layout - ob = context.object - - row = layout.row() - row.item_menu_enumO("object.constraint_add", "type") - row.itemL(); - - for con in ob.constraints: - self.draw_constraint(context, con) - -class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): - __label__ = "Inverse Kinematics" - __default_closed__ = True - __context__ = "bone_constraint" - - def poll(self, context): - ob = context.object - bone = context.bone - - if ob and bone: - pchan = ob.pose.pose_channels[bone.name] - return pchan.has_ik - - return False - - def draw(self, context): - layout = self.layout - - ob = context.object - bone = context.bone - pchan = ob.pose.pose_channels[bone.name] - - row = layout.row() - row.itemR(ob.pose, "ik_solver") - - split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_x", text="X") - row = split.row() - row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True) - row.active = pchan.ik_dof_x - - split = layout.split(percentage=0.25) - row = split.row() - row.itemR(pchan, "ik_limit_x", text="Limit") - row.active = pchan.ik_dof_x - row = split.row(align=True) - row.itemR(pchan, "ik_min_x", text="") - row.itemR(pchan, "ik_max_x", text="") - row.active = pchan.ik_dof_x and pchan.ik_limit_x - - split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_y", text="Y") - row = split.row() - row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True) - row.active = pchan.ik_dof_y - - split = layout.split(percentage=0.25) - row = split.row() - row.itemR(pchan, "ik_limit_y", text="Limit") - row.active = pchan.ik_dof_y - row = split.row(align=True) - row.itemR(pchan, "ik_min_y", text="") - row.itemR(pchan, "ik_max_y", text="") - row.active = pchan.ik_dof_y and pchan.ik_limit_y - - split = layout.split(percentage=0.25) - split.itemR(pchan, "ik_dof_z", text="Z") - row = split.row() - row.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True) - row.active = pchan.ik_dof_z - - split = layout.split(percentage=0.25) - row = split.row() - row.itemR(pchan, "ik_limit_z", text="Limit") - row.active = pchan.ik_dof_z - row = split.row(align=True) - row.itemR(pchan, "ik_min_z", text="") - row.itemR(pchan, "ik_max_z", text="") - row.active = pchan.ik_dof_z and pchan.ik_limit_z - split = layout.split() - split.itemR(pchan, "ik_stretch", text="Stretch", slider=True) - split.itemL() - - if ob.pose.ik_solver == "ITASC": - row = layout.row() - row.itemR(pchan, "ik_rot_control", text="Control Rotation") - row.itemR(pchan, "ik_rot_weight", text="Weight", slider=True) - # not supported yet - #row = layout.row() - #row.itemR(pchan, "ik_lin_control", text="Joint Size") - #row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True) - -class BONE_PT_iksolver_itasc(ConstraintButtonsPanel): - __label__ = "iTaSC parameters" - __default_closed__ = True - __context__ = "bone_constraint" - - def poll(self, context): - ob = context.object - bone = context.bone - - if ob and bone: - pchan = ob.pose.pose_channels[bone.name] - return pchan.has_ik and ob.pose.ik_solver == "ITASC" and ob.pose.ik_param - - return False - - def draw(self, context): - layout = self.layout - - ob = context.object - itasc = ob.pose.ik_param - - layout.itemR(itasc, "mode", expand=True) - simulation = itasc.mode == "SIMULATION" - if simulation: - layout.itemL(text="Reiteration:") - layout.itemR(itasc, "reiteration", expand=True) - - flow = layout.column_flow() - flow.itemR(itasc, "precision", text="Prec") - flow.itemR(itasc, "num_iter", text="Iter") - flow.active = not simulation or itasc.reiteration != "NEVER" - - if simulation: - layout.itemR(itasc, "auto_step") - row = layout.row() - if itasc.auto_step: - row.itemR(itasc, "min_step", text="Min") - row.itemR(itasc, "max_step", text="Max") - else: - row.itemR(itasc, "num_step") - - layout.itemR(itasc, "solver") - if simulation: - layout.itemR(itasc, "feedback") - layout.itemR(itasc, "max_velocity") - if itasc.solver == "DLS": - row = layout.row() - row.itemR(itasc, "dampmax", text="Damp", slider=True) - row.itemR(itasc, "dampeps", text="Eps", slider=True) - -class BONE_PT_constraints(ConstraintButtonsPanel): - __label__ = "Constraints" - __context__ = "bone_constraint" - - def poll(self, context): - ob = context.object - return (ob and ob.type == 'ARMATURE' and context.bone) - - def draw(self, context): - layout = self.layout - - ob = context.object - pchan = ob.pose.pose_channels[context.bone.name] - - row = layout.row() - row.item_menu_enumO("pose.constraint_add", "type") - row.itemL(); - - for con in pchan.constraints: - self.draw_constraint(context, con) - -bpy.types.register(OBJECT_PT_constraints) -bpy.types.register(BONE_PT_iksolver_itasc) -bpy.types.register(BONE_PT_inverse_kinematics) -bpy.types.register(BONE_PT_constraints) diff --git a/release/scripts/ui/buttons_particle.py b/release/scripts/ui/buttons_particle.py deleted file mode 100644 index dcc93bd9c75..00000000000 --- a/release/scripts/ui/buttons_particle.py +++ /dev/null @@ -1,953 +0,0 @@ - -import bpy - -from buttons_physics_common import point_cache_ui -from buttons_physics_common import effector_weights_ui -from buttons_physics_common import basic_force_field_settings_ui -from buttons_physics_common import basic_force_field_falloff_ui - -def particle_panel_enabled(context, psys): - return psys.point_cache.baked==False and psys.edited==False and (not context.particle_system_editable) - -def particle_panel_poll(context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - return psys.settings.type in ('EMITTER', 'REACTOR', 'HAIR') - - -class ParticleButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "particle" - - def poll(self, context): - return particle_panel_poll(context) - -class PARTICLE_PT_particles(ParticleButtonsPanel): - __show_header__ = False - - def poll(self, context): - return (context.particle_system or context.object) - - def draw(self, context): - layout = self.layout - ob = context.object - psys = context.particle_system - - if ob: - row = layout.row() - - row.template_list(ob, "particle_systems", ob, "active_particle_system_index", rows=2) - - col = row.column(align=True) - col.itemO("object.particle_system_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.particle_system_remove", icon='ICON_ZOOMOUT', text="") - - if psys and not psys.settings: - split = layout.split(percentage=0.32) - col = split.column() - col.itemL(text="Name:") - col.itemL(text="Settings:") - - col = split.column() - col.itemR(psys, "name", text="") - col.template_ID(psys, "settings", new="particle.new") - elif psys: - part = psys.settings - - split = layout.split(percentage=0.32) - col = split.column() - col.itemL(text="Name:") - if part.type in ('EMITTER', 'REACTOR', 'HAIR'): - col.itemL(text="Settings:") - col.itemL(text="Type:") - - col = split.column() - col.itemR(psys, "name", text="") - if part.type in ('EMITTER', 'REACTOR', 'HAIR'): - col.template_ID(psys, "settings", new="particle.new") - - #row = layout.row() - #row.itemL(text="Viewport") - #row.itemL(text="Render") - - if part: - if part.type not in ('EMITTER', 'REACTOR', 'HAIR'): - layout.itemL(text="No settings for fluid particles") - return - - row=col.row() - row.enabled = particle_panel_enabled(context, psys) - row.itemR(part, "type", text="") - row.itemR(psys, "seed") - - split = layout.split(percentage=0.65) - if part.type=='HAIR': - if psys.edited==True: - split.itemO("particle.edited_clear", text="Free Edit") - else: - split.itemL(text="") - row = split.row() - row.enabled = particle_panel_enabled(context, psys) - row.itemR(part, "hair_step") - if psys.edited==True: - if psys.global_hair: - layout.itemO("particle.connect_hair") - layout.itemL(text="Hair is disconnected.") - else: - layout.itemO("particle.disconnect_hair") - layout.itemL(text="") - elif part.type=='REACTOR': - split.enabled = particle_panel_enabled(context, psys) - split.itemR(psys, "reactor_target_object") - split.itemR(psys, "reactor_target_particle_system", text="Particle System") - -class PARTICLE_PT_emission(ParticleButtonsPanel): - __label__ = "Emission" - - def poll(self, context): - if particle_panel_poll(context): - return not context.particle_system.point_cache.external - else: - return False - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.enabled = particle_panel_enabled(context, psys) and not psys.multiple_caches - - row = layout.row() - row.active = part.distribution != 'GRID' - row.itemR(part, "amount") - - if part.type != 'HAIR': - split = layout.split() - - col = split.column(align=True) - col.itemR(part, "start") - col.itemR(part, "end") - - col = split.column(align=True) - col.itemR(part, "lifetime") - col.itemR(part, "random_lifetime", slider=True) - - layout.row().itemL(text="Emit From:") - - row = layout.row() - row.itemR(part, "emit_from", expand=True) - row = layout.row() - row.itemR(part, "trand") - if part.distribution!='GRID': - row.itemR(part, "even_distribution") - - if part.emit_from=='FACE' or part.emit_from=='VOLUME': - row = layout.row() - row.itemR(part, "distribution", expand=True) - - row = layout.row() - - if part.distribution=='JIT': - row.itemR(part, "userjit", text="Particles/Face") - row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True) - elif part.distribution=='GRID': - row.itemR(part, "grid_resolution") - -class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): - __label__ = "Hair dynamics" - __default_closed__ = True - - def poll(self, context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - return psys.settings.type == 'HAIR' - - def draw_header(self, context): - #cloth = context.cloth.collision_settings - - #self.layout.active = cloth_panel_enabled(context.cloth) - #self.layout.itemR(cloth, "enable_collision", text="") - psys = context.particle_system - self.layout.itemR(psys, "hair_dynamics", text="") - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - cloth = psys.cloth.settings - - layout.enabled = psys.hair_dynamics - - split = layout.split() - - col = split.column() - col.itemL(text="Material:") - sub = col.column(align=True) - sub.itemR(cloth, "pin_stiffness", text="Stiffness") - sub.itemR(cloth, "mass") - sub.itemR(cloth, "bending_stiffness", text="Bending") - sub.itemR(cloth, "internal_friction", slider="True") - - col = split.column() - - col.itemL(text="Damping:") - sub = col.column(align=True) - sub.itemR(cloth, "spring_damping", text="Spring") - sub.itemR(cloth, "air_damping", text="Air") - - col.itemL(text="Quality:") - col.itemR(cloth, "quality", text="Steps",slider=True) - -class PARTICLE_PT_cache(ParticleButtonsPanel): - __label__ = "Cache" - __default_closed__ = True - - def poll(self, context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - phystype = psys.settings.physics_type - if phystype == 'NO' or phystype == 'KEYED': - return False - return psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics) - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - - point_cache_ui(self, psys.point_cache, particle_panel_enabled(context, psys), not psys.hair_dynamics, 0) - -class PARTICLE_PT_velocity(ParticleButtonsPanel): - __label__ = "Velocity" - - def poll(self, context): - if particle_panel_poll(context): - psys = context.particle_system - return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external - else: - return False - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.enabled = particle_panel_enabled(context, psys) - - split = layout.split() - - sub = split.column() - sub.itemL(text="Emitter Geometry:") - sub.itemR(part, "normal_factor") - subsub = sub.column(align=True) - subsub.itemR(part, "tangent_factor") - subsub.itemR(part, "tangent_phase", slider=True) - - sub = split.column() - sub.itemL(text="Emitter Object") - sub.itemR(part, "object_aligned_factor", text="") - - layout.row().itemL(text="Other:") - split = layout.split() - sub = split.column() - if part.emit_from=='PARTICLE': - sub.itemR(part, "particle_factor") - else: - sub.itemR(part, "object_factor", slider=True) - sub = split.column() - sub.itemR(part, "random_factor") - - #if part.type=='REACTOR': - # sub.itemR(part, "reactor_factor") - # sub.itemR(part, "reaction_shape", slider=True) - -class PARTICLE_PT_rotation(ParticleButtonsPanel): - __label__ = "Rotation" - - def poll(self, context): - if particle_panel_poll(context): - psys = context.particle_system - return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external - else: - return False - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.enabled = particle_panel_enabled(context, psys) - - split = layout.split() - split.itemL(text="Initial Rotation:") - split.itemR(part, "rotation_dynamic") - split = layout.split() - - sub = split.column(align=True) - sub.itemR(part, "rotation_mode", text="") - sub.itemR(part, "random_rotation_factor", slider=True, text="Random") - - sub = split.column(align=True) - sub.itemR(part, "phase_factor", slider=True) - sub.itemR(part, "random_phase_factor", text="Random", slider=True) - - layout.row().itemL(text="Angular Velocity:") - layout.row().itemR(part, "angular_velocity_mode", expand=True) - split = layout.split() - - sub = split.column() - - sub.itemR(part, "angular_velocity_factor", text="") - -class PARTICLE_PT_physics(ParticleButtonsPanel): - __label__ = "Physics" - - def poll(self, context): - if particle_panel_poll(context): - return not context.particle_system.point_cache.external - else: - return False - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.enabled = particle_panel_enabled(context, psys) - - row = layout.row() - row.itemR(part, "physics_type", expand=True) - if part.physics_type != 'NO': - row = layout.row() - col = row.column(align=True) - col.itemR(part, "particle_size") - col.itemR(part, "random_size", slider=True) - col = row.column(align=True) - col.itemR(part, "mass") - col.itemR(part, "sizemass", text="Multiply mass with size") - - if part.physics_type == 'NEWTON': - split = layout.split() - sub = split.column() - - sub.itemL(text="Forces:") - sub.itemR(part, "brownian_factor") - sub.itemR(part, "drag_factor", slider=True) - sub.itemR(part, "damp_factor", slider=True) - sub = split.column() - sub.itemR(part, "size_deflect") - sub.itemR(part, "die_on_collision") - sub.itemR(part, "integrator") - sub.itemR(part, "time_tweak") - - elif part.physics_type == 'KEYED': - split = layout.split() - sub = split.column() - - row = layout.row() - col = row.column() - col.active = not psys.keyed_timing - col.itemR(part, "keyed_loops", text="Loops") - row.itemR(psys, "keyed_timing", text="Use Timing") - - layout.itemL(text="Keys:") - elif part.physics_type=='BOIDS': - boids = part.boids - - - row = layout.row() - row.itemR(boids, "allow_flight") - row.itemR(boids, "allow_land") - row.itemR(boids, "allow_climb") - - split = layout.split() - - sub = split.column() - col = sub.column(align=True) - col.active = boids.allow_flight - col.itemR(boids, "air_max_speed") - col.itemR(boids, "air_min_speed", slider="True") - col.itemR(boids, "air_max_acc", slider="True") - col.itemR(boids, "air_max_ave", slider="True") - col.itemR(boids, "air_personal_space") - row = col.row() - row.active = (boids.allow_land or boids.allow_climb) and boids.allow_flight - row.itemR(boids, "landing_smoothness") - - sub = split.column() - col = sub.column(align=True) - col.active = boids.allow_land or boids.allow_climb - col.itemR(boids, "land_max_speed") - col.itemR(boids, "land_jump_speed") - col.itemR(boids, "land_max_acc", slider="True") - col.itemR(boids, "land_max_ave", slider="True") - col.itemR(boids, "land_personal_space") - col.itemR(boids, "land_stick_force") - - row = layout.row() - - col = row.column(align=True) - col.itemL(text="Battle:") - col.itemR(boids, "health") - col.itemR(boids, "strength") - col.itemR(boids, "aggression") - col.itemR(boids, "accuracy") - col.itemR(boids, "range") - - col = row.column() - col.itemL(text="Misc:") - col.itemR(boids, "banking", slider=True) - col.itemR(boids, "height", slider=True) - - if part.physics_type=='KEYED' or part.physics_type=='BOIDS': - if part.physics_type=='BOIDS': - layout.itemL(text="Relations:") - - row = layout.row() - row.template_list(psys, "targets", psys, "active_particle_target_index") - - col = row.column() - subrow = col.row() - subcol = subrow.column(align=True) - subcol.itemO("particle.new_target", icon='ICON_ZOOMIN', text="") - subcol.itemO("particle.remove_target", icon='ICON_ZOOMOUT', text="") - subrow = col.row() - subcol = subrow.column(align=True) - subcol.itemO("particle.target_move_up", icon='VICON_MOVE_UP', text="") - subcol.itemO("particle.target_move_down", icon='VICON_MOVE_DOWN', text="") - - key = psys.active_particle_target - if key: - row = layout.row() - if part.physics_type=='KEYED': - col = row.column() - #doesn't work yet - #col.red_alert = key.valid - col.itemR(key, "object", text="") - col.itemR(key, "system", text="System") - col = row.column(); - col.active = psys.keyed_timing - col.itemR(key, "time") - col.itemR(key, "duration") - else: - subrow = row.row() - #doesn't work yet - #subrow.red_alert = key.valid - subrow.itemR(key, "object", text="") - subrow.itemR(key, "system", text="System") - - layout.itemR(key, "mode", expand=True) - -class PARTICLE_PT_boidbrain(ParticleButtonsPanel): - __label__ = "Boid Brain" - - def poll(self, context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - if psys.point_cache.external: return False - return psys.settings.physics_type=='BOIDS' - - def draw(self, context): - boids = context.particle_system.settings.boids - layout = self.layout - - layout.enabled = particle_panel_enabled(context, context.particle_system) - - # Currently boids can only use the first state so these are commented out for now. - #row = layout.row() - #row.template_list(boids, "states", boids, "active_boid_state_index", compact="True") - #col = row.row() - #subrow = col.row(align=True) - #subrow.itemO("boid.state_add", icon='ICON_ZOOMIN', text="") - #subrow.itemO("boid.state_del", icon='ICON_ZOOMOUT', text="") - #subrow = row.row(align=True) - #subrow.itemO("boid.state_move_up", icon='VICON_MOVE_UP', text="") - #subrow.itemO("boid.state_move_down", icon='VICON_MOVE_DOWN', text="") - - state = boids.active_boid_state - - #layout.itemR(state, "name", text="State name") - - row = layout.row() - row.itemR(state, "ruleset_type") - if state.ruleset_type=='FUZZY': - row.itemR(state, "rule_fuzziness", slider=True) - else: - row.itemL(text="") - - row = layout.row() - row.template_list(state, "rules", state, "active_boid_rule_index") - - col = row.column() - subrow = col.row() - subcol = subrow.column(align=True) - subcol.item_menu_enumO("boid.rule_add", "type", icon='ICON_ZOOMIN', text="") - subcol.itemO("boid.rule_del", icon='ICON_ZOOMOUT', text="") - subrow = col.row() - subcol = subrow.column(align=True) - subcol.itemO("boid.rule_move_up", icon='VICON_MOVE_UP', text="") - subcol.itemO("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="") - - rule = state.active_boid_rule - - if rule: - row = layout.row() - row.itemR(rule, "name", text="") - #somebody make nice icons for boids here please! -jahka - row.itemR(rule, "in_air", icon='VICON_MOVE_UP', text="") - row.itemR(rule, "on_land", icon='VICON_MOVE_DOWN', text="") - - row = layout.row() - - if rule.type == 'GOAL': - row.itemR(rule, "object") - row = layout.row() - row.itemR(rule, "predict") - elif rule.type == 'AVOID': - row.itemR(rule, "object") - row = layout.row() - row.itemR(rule, "predict") - row.itemR(rule, "fear_factor") - elif rule.type == 'FOLLOW_PATH': - row.itemL(text="Not yet functional.") - elif rule.type == 'AVOID_COLLISION': - row.itemR(rule, "boids") - row.itemR(rule, "deflectors") - row.itemR(rule, "look_ahead") - elif rule.type == 'FOLLOW_LEADER': - row.itemR(rule, "object", text="") - row.itemR(rule, "distance") - row = layout.row() - row.itemR(rule, "line") - subrow = row.row() - subrow.active = rule.line - subrow.itemR(rule, "queue_size") - elif rule.type == 'AVERAGE_SPEED': - row.itemR(rule, "speed", slider=True) - row.itemR(rule, "wander", slider=True) - row.itemR(rule, "level", slider=True) - elif rule.type == 'FIGHT': - row.itemR(rule, "distance") - row.itemR(rule, "flee_distance") - - -class PARTICLE_PT_render(ParticleButtonsPanel): - __label__ = "Render" - - def poll(self, context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - return True; - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - row = layout.row() - row.itemR(part, "material") - row.itemR(psys, "parent"); - - split = layout.split() - - sub = split.column() - sub.itemR(part, "emitter"); - sub.itemR(part, "parent"); - sub = split.column() - sub.itemR(part, "unborn"); - sub.itemR(part, "died"); - - row = layout.row() - row.itemR(part, "ren_as", expand=True) - - split = layout.split() - - sub = split.column() - - if part.ren_as == 'LINE': - sub.itemR(part, "line_length_tail") - sub.itemR(part, "line_length_head") - sub = split.column() - sub.itemR(part, "velocity_length") - elif part.ren_as == 'PATH': - - if (part.type!='HAIR' and part.physics_type!='KEYED' and psys.point_cache.baked==False): - box = layout.box() - box.itemL(text="Baked or keyed particles needed for correct rendering.") - return - - sub.itemR(part, "render_strand") - colsub = sub.column() - colsub.active = part.render_strand == False - colsub.itemR(part, "render_adaptive") - colsub = sub.column() - colsub.active = part.render_adaptive or part.render_strand == True - colsub.itemR(part, "adaptive_angle") - colsub = sub.column() - colsub.active = part.render_adaptive == True and part.render_strand == False - colsub.itemR(part, "adaptive_pix") - sub.itemR(part, "hair_bspline") - sub.itemR(part, "render_step", text="Steps") - sub = split.column() - - sub.itemL(text="Timing:") - sub.itemR(part, "abs_path_time") - sub.itemR(part, "path_start", text="Start", slider= not part.abs_path_time) - sub.itemR(part, "path_end", text="End", slider= not part.abs_path_time) - sub.itemR(part, "random_length", text="Random", slider=True) - - row = layout.row() - col = row.column() - - if part.type=='HAIR' and part.render_strand==True and part.child_type=='FACES': - layout.itemR(part, "enable_simplify") - if part.enable_simplify==True: - row = layout.row() - row.itemR(part, "simplify_refsize") - row.itemR(part, "simplify_rate") - row.itemR(part, "simplify_transition") - row = layout.row() - row.itemR(part, "viewport") - subrow = row.row() - subrow.active = part.viewport==True - subrow.itemR(part, "simplify_viewport") - - - elif part.ren_as == 'OBJECT': - sub.itemR(part, "dupli_object") - sub.itemR(part, "use_global_dupli") - elif part.ren_as == 'GROUP': - sub.itemR(part, "dupli_group") - split = layout.split() - sub = split.column() - sub.itemR(part, "whole_group") - colsub = sub.column() - colsub.active = part.whole_group == False - colsub.itemR(part, "use_group_count") - - sub = split.column() - colsub = sub.column() - colsub.active = part.whole_group == False - colsub.itemR(part, "use_global_dupli") - colsub.itemR(part, "rand_group") - - if part.use_group_count and not part.whole_group: - row = layout.row() - row.template_list(part, "dupliweights", part, "active_dupliweight_index") - - col = row.column() - subrow = col.row() - subcol = subrow.column(align=True) - subcol.itemO("particle.dupliob_copy", icon='ICON_ZOOMIN', text="") - subcol.itemO("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="") - subcol.itemO("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="") - subcol.itemO("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="") - - weight = part.active_dupliweight - if weight: - row = layout.row() - row.itemR(weight, "count") - - elif part.ren_as == 'BILLBOARD': - sub.itemL(text="Align:") - - row = layout.row() - row.itemR(part, "billboard_align", expand=True) - row.itemR(part, "billboard_lock", text="Lock") - row = layout.row() - row.itemR(part, "billboard_object") - - row = layout.row() - col = row.column(align=True) - col.itemL(text="Tilt:") - col.itemR(part, "billboard_tilt", text="Angle", slider=True) - col.itemR(part, "billboard_random_tilt", slider=True) - col = row.column() - col.itemR(part, "billboard_offset") - - row = layout.row() - row.itemR(psys, "billboard_normal_uv") - row = layout.row() - row.itemR(psys, "billboard_time_index_uv") - - row = layout.row() - row.itemL(text="Split uv's:") - row.itemR(part, "billboard_uv_split", text="Number of splits") - row = layout.row() - row.itemR(psys, "billboard_split_uv") - row = layout.row() - row.itemL(text="Animate:") - row.itemR(part, "billboard_animation", expand=True) - row.itemL(text="Offset:") - row.itemR(part, "billboard_split_offset", expand=True) - if part.ren_as == 'HALO' or part.ren_as == 'LINE' or part.ren_as=='BILLBOARD': - row = layout.row() - col = row.column() - col.itemR(part, "trail_count") - if part.trail_count > 1: - col.itemR(part, "abs_path_time", text="Length in frames") - col = row.column() - col.itemR(part, "path_end", text="Length", slider=not part.abs_path_time) - col.itemR(part, "random_length", text="Random", slider=True) - else: - col = row.column() - col.itemL(text="") - -class PARTICLE_PT_draw(ParticleButtonsPanel): - __label__ = "Display" - __default_closed__ = True - - def poll(self, context): - psys = context.particle_system - if psys==None: return False - if psys.settings==None: return False - return True; - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - row = layout.row() - row.itemR(part, "draw_as", expand=True) - - if part.draw_as=='NONE' or (part.ren_as=='NONE' and part.draw_as=='RENDER'): - return - - path = (part.ren_as=='PATH' and part.draw_as=='RENDER') or part.draw_as=='PATH' - - if path and part.type!='HAIR' and part.physics_type!='KEYED' and psys.point_cache.baked==False: - box = layout.box() - box.itemL(text="Baked or keyed particles needed for correct drawing.") - return - - row = layout.row() - row.itemR(part, "display", slider=True) - if part.draw_as!='RENDER' or part.ren_as=='HALO': - row.itemR(part, "draw_size") - else: - row.itemL(text="") - - row = layout.row() - col = row.column() - col.itemR(part, "show_size") - col.itemR(part, "velocity") - col.itemR(part, "num") - if part.physics_type == 'BOIDS': - col.itemR(part, "draw_health") - - col = row.column() - col.itemR(part, "material_color", text="Use material color") - - if (path): - col.itemR(part, "draw_step") - else: - subcol = col.column() - subcol.active = part.material_color==False - #subcol.itemL(text="color") - #subcol.itemL(text="Override material color") - -class PARTICLE_PT_children(ParticleButtonsPanel): - __label__ = "Children" - __default_closed__ = True - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.row().itemR(part, "child_type", expand=True) - - if part.child_type=='NONE': - return - - row = layout.row() - - col = row.column(align=True) - col.itemR(part, "child_nbr", text="Display") - col.itemR(part, "rendered_child_nbr", text="Render") - - col = row.column(align=True) - - if part.child_type=='FACES': - col.itemR(part, "virtual_parents", slider=True) - else: - col.itemR(part, "child_radius", text="Radius") - col.itemR(part, "child_roundness", text="Roundness", slider=True) - - col = row.column(align=True) - col.itemR(part, "child_size", text="Size") - col.itemR(part, "child_random_size", text="Random") - - layout.row().itemL(text="Effects:") - - row = layout.row() - - col = row.column(align=True) - col.itemR(part, "clump_factor", slider=True) - col.itemR(part, "clumppow", slider=True) - - col = row.column(align=True) - col.itemR(part, "rough_endpoint") - col.itemR(part, "rough_end_shape") - - row = layout.row() - - col = row.column(align=True) - col.itemR(part, "rough1") - col.itemR(part, "rough1_size") - - col = row.column(align=True) - col.itemR(part, "rough2") - col.itemR(part, "rough2_size") - col.itemR(part, "rough2_thres", slider=True) - - row = layout.row() - col = row.column(align=True) - col.itemR(part, "child_length", slider=True) - col.itemR(part, "child_length_thres", slider=True) - - col = row.column(align=True) - col.itemL(text="Space reserved for") - col.itemL(text="hair parting controls") - - layout.row().itemL(text="Kink:") - layout.row().itemR(part, "kink", expand=True) - - split = layout.split() - - sub = split.column() - sub.itemR(part, "kink_amplitude") - sub.itemR(part, "kink_frequency") - sub = split.column() - sub.itemR(part, "kink_shape", slider=True) - -class PARTICLE_PT_field_weights(ParticleButtonsPanel): - __label__ = "Field Weights" - __default_closed__ = True - - def draw(self, context): - part = context.particle_system.settings - effector_weights_ui(self, part.effector_weights) - - if part.type == 'HAIR': - self.layout.itemR(part.effector_weights, "do_growing_hair") - -class PARTICLE_PT_force_fields(ParticleButtonsPanel): - __label__ = "Force Field Settings" - __default_closed__ = True - - def draw(self, context): - layout = self.layout - part = context.particle_system.settings - - layout.itemR(part, "self_effect") - - split = layout.split(percentage=0.2) - split.itemL(text="Type 1:") - split.itemR(part.force_field_1, "type",text="") - basic_force_field_settings_ui(self, part.force_field_1) - basic_force_field_falloff_ui(self, part.force_field_1) - - if part.force_field_1.type != 'NONE': - layout.itemL(text="") - - split = layout.split(percentage=0.2) - split.itemL(text="Type 2:") - split.itemR(part.force_field_2, "type",text="") - basic_force_field_settings_ui(self, part.force_field_2) - basic_force_field_falloff_ui(self, part.force_field_2) - -class PARTICLE_PT_vertexgroups(ParticleButtonsPanel): - __label__ = "Vertexgroups" - __default_closed__ = True - - def draw(self, context): - layout = self.layout - - psys = context.particle_system - part = psys.settings - - layout.itemL(text="Nothing here yet.") - - #row = layout.row() - #row.itemL(text="Vertex Group") - #row.itemL(text="Negate") - - - #row = layout.row() - #row.itemR(psys, "vertex_group_density") - #row.itemR(psys, "vertex_group_density_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_velocity") - #row.itemR(psys, "vertex_group_velocity_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_length") - #row.itemR(psys, "vertex_group_length_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_clump") - #row.itemR(psys, "vertex_group_clump_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_kink") - #row.itemR(psys, "vertex_group_kink_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_roughness1") - #row.itemR(psys, "vertex_group_roughness1_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_roughness2") - #row.itemR(psys, "vertex_group_roughness2_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_roughness_end") - #row.itemR(psys, "vertex_group_roughness_end_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_size") - #row.itemR(psys, "vertex_group_size_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_tangent") - #row.itemR(psys, "vertex_group_tangent_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_rotation") - #row.itemR(psys, "vertex_group_rotation_negate", text="") - - #row = layout.row() - #row.itemR(psys, "vertex_group_field") - #row.itemR(psys, "vertex_group_field_negate", text="") - -bpy.types.register(PARTICLE_PT_particles) -bpy.types.register(PARTICLE_PT_hair_dynamics) -bpy.types.register(PARTICLE_PT_cache) -bpy.types.register(PARTICLE_PT_emission) -bpy.types.register(PARTICLE_PT_velocity) -bpy.types.register(PARTICLE_PT_rotation) -bpy.types.register(PARTICLE_PT_physics) -bpy.types.register(PARTICLE_PT_boidbrain) -bpy.types.register(PARTICLE_PT_render) -bpy.types.register(PARTICLE_PT_draw) -bpy.types.register(PARTICLE_PT_children) -bpy.types.register(PARTICLE_PT_field_weights) -bpy.types.register(PARTICLE_PT_force_fields) -bpy.types.register(PARTICLE_PT_vertexgroups) diff --git a/release/scripts/ui/buttons_physics_cloth.py b/release/scripts/ui/buttons_physics_cloth.py deleted file mode 100644 index e25497b3713..00000000000 --- a/release/scripts/ui/buttons_physics_cloth.py +++ /dev/null @@ -1,186 +0,0 @@ - -import bpy - -from buttons_physics_common import point_cache_ui -from buttons_physics_common import effector_weights_ui - -def cloth_panel_enabled(md): - return md.point_cache.baked==False - -class PhysicButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - ob = context.object - rd = context.scene.render_data - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) - -class PHYSICS_PT_cloth(PhysicButtonsPanel): - __label__ = "Cloth" - - def draw(self, context): - layout = self.layout - - md = context.cloth - ob = context.object - - split = layout.split() - split.operator_context = 'EXEC_DEFAULT' - - if md: - # remove modifier + settings - split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") - else: - # add modifier - split.item_enumO("object.modifier_add", "type", 'CLOTH', text="Add") - split.itemL() - - if md: - cloth = md.settings - - layout.active = cloth_panel_enabled(md) - - split = layout.split() - - col = split.column() - col.itemL(text="Material:") - sub = col.column(align=True) - sub.itemR(cloth, "mass") - sub.itemR(cloth, "structural_stiffness", text="Structural") - sub.itemR(cloth, "bending_stiffness", text="Bending") - - col.itemR(cloth, "pin_cloth", text="Pin") - sub = col.column(align=True) - sub.active = cloth.pin_cloth - sub.itemR(cloth, "pin_stiffness", text="Stiffness") - sub.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="") - - col = split.column() - - col.itemL(text="Damping:") - sub = col.column(align=True) - sub.itemR(cloth, "spring_damping", text="Spring") - sub.itemR(cloth, "air_damping", text="Air") - - col.itemL(text="Presets...") - col.itemL(text="TODO!") - - col.itemL(text="Quality:") - col.itemR(cloth, "quality", text="Steps",slider=True) - - # Disabled for now - """ - if cloth.mass_vertex_group: - layout.itemL(text="Goal:") - - col = layout.column_flow() - col.itemR(cloth, "goal_default", text="Default") - col.itemR(cloth, "goal_spring", text="Stiffness") - col.itemR(cloth, "goal_friction", text="Friction") - """ - -class PHYSICS_PT_cloth_cache(PhysicButtonsPanel): - __label__ = "Cloth Cache" - __default_closed__ = True - - def poll(self, context): - return context.cloth - - def draw(self, context): - md = context.cloth - point_cache_ui(self, md.point_cache, cloth_panel_enabled(md), 0, 0) - -class PHYSICS_PT_cloth_collision(PhysicButtonsPanel): - __label__ = "Cloth Collision" - __default_closed__ = True - - def poll(self, context): - return context.cloth - - def draw_header(self, context): - cloth = context.cloth.collision_settings - - self.layout.active = cloth_panel_enabled(context.cloth) - self.layout.itemR(cloth, "enable_collision", text="") - - def draw(self, context): - layout = self.layout - - cloth = context.cloth.collision_settings - md = context.cloth - - layout.active = cloth.enable_collision and cloth_panel_enabled(md) - - split = layout.split() - - col = split.column() - col.itemR(cloth, "collision_quality", slider=True, text="Quality") - col.itemR(cloth, "min_distance", slider=True, text="Distance") - col.itemR(cloth, "friction") - - col = split.column() - col.itemR(cloth, "enable_self_collision", text="Self Collision") - sub = col.column() - sub.active = cloth.enable_self_collision - sub.itemR(cloth, "self_collision_quality", slider=True, text="Quality") - sub.itemR(cloth, "self_min_distance", slider=True, text="Distance") - -class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel): - __label__ = "Cloth Stiffness Scaling" - __default_closed__ = True - - def poll(self, context): - return context.cloth - - def draw_header(self, context): - cloth = context.cloth.settings - - self.layout.active = cloth_panel_enabled(context.cloth) - self.layout.itemR(cloth, "stiffness_scaling", text="") - - def draw(self, context): - layout = self.layout - - md = context.cloth - ob = context.object - cloth = context.cloth.settings - - layout.active = cloth.stiffness_scaling and cloth_panel_enabled(md) - - split = layout.split() - - col = split.column() - col.itemL(text="Structural Stiffness:") - sub = col.column(align=True) - sub.itemR(cloth, "structural_stiffness_max", text="Max") - sub.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="") - - col = split.column() - col.itemL(text="Bending Stiffness:") - sub = col.column(align=True) - sub.itemR(cloth, "bending_stiffness_max", text="Max") - sub.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="") - -class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel): - __label__ = "Cloth Field Weights" - __default_closed__ = True - - def poll(self, context): - return (context.cloth) - - def draw(self, context): - cloth = context.cloth.settings - effector_weights_ui(self, cloth.effector_weights) - -bpy.types.register(PHYSICS_PT_cloth) -bpy.types.register(PHYSICS_PT_cloth_cache) -bpy.types.register(PHYSICS_PT_cloth_collision) -bpy.types.register(PHYSICS_PT_cloth_stiffness) -bpy.types.register(PHYSICS_PT_cloth_field_weights) diff --git a/release/scripts/ui/buttons_physics_common.py b/release/scripts/ui/buttons_physics_common.py deleted file mode 100644 index 17ac1b2bbaa..00000000000 --- a/release/scripts/ui/buttons_physics_common.py +++ /dev/null @@ -1,154 +0,0 @@ -import bpy - -def point_cache_ui(self, cache, enabled, particles, smoke): - layout = self.layout - layout.set_context_pointer("PointCache", cache) - - row = layout.row() - row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2 ) - col = row.column(align=True) - col.itemO("ptcache.add_new", icon='ICON_ZOOMIN', text="") - col.itemO("ptcache.remove", icon='ICON_ZOOMOUT', text="") - - row = layout.row() - row.itemL(text="File Name:") - if particles: - row.itemR(cache, "external") - - if cache.external: - split = layout.split(percentage=0.80) - split.itemR(cache, "name", text="") - split.itemR(cache, "index", text="") - - layout.itemL(text="File Path:") - layout.itemR(cache, "filepath", text="") - - layout.itemL(text=cache.info) - else: - layout.itemR(cache, "name", text="") - - if not particles: - row = layout.row() - row.enabled = enabled - row.itemR(cache, "start_frame") - row.itemR(cache, "end_frame") - - row = layout.row() - - if cache.baked == True: - row.itemO("ptcache.free_bake", text="Free Bake") - else: - row.item_booleanO("ptcache.bake", "bake", True, text="Bake") - - sub = row.row() - sub.enabled = (cache.frames_skipped or cache.outdated) and enabled - sub.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame") - - row = layout.row() - row.enabled = enabled - row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake") - if not smoke: - row.itemR(cache, "step"); - - if not smoke: - row = layout.row() - sub = row.row() - sub.enabled = enabled - sub.itemR(cache, "quick_cache") - row.itemR(cache, "disk_cache") - - layout.itemL(text=cache.info) - - layout.itemS() - - row = layout.row() - row.item_booleanO("ptcache.bake_all", "bake", True, text="Bake All Dynamics") - row.itemO("ptcache.free_bake_all", text="Free All Bakes") - layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") - -def effector_weights_ui(self, weights): - layout = self.layout - - layout.itemR(weights, "group") - - split = layout.split() - split.itemR(weights, "gravity", slider=True) - split.itemR(weights, "all", slider=True) - - layout.itemS() - - flow = layout.column_flow() - flow.itemR(weights, "force", slider=True) - flow.itemR(weights, "vortex", slider=True) - flow.itemR(weights, "magnetic", slider=True) - flow.itemR(weights, "wind", slider=True) - flow.itemR(weights, "curveguide", slider=True) - flow.itemR(weights, "texture", slider=True) - flow.itemR(weights, "harmonic", slider=True) - flow.itemR(weights, "charge", slider=True) - flow.itemR(weights, "lennardjones", slider=True) - flow.itemR(weights, "turbulence", slider=True) - flow.itemR(weights, "drag", slider=True) - flow.itemR(weights, "boid", slider=True) - -def basic_force_field_settings_ui(self, field): - layout = self.layout - split = layout.split() - - if not field or field.type == 'NONE': - return - - col = split.column() - - if field.type == 'DRAG': - col.itemR(field, "linear_drag", text="Linear") - else: - col.itemR(field, "strength") - - if field.type == 'TURBULENCE': - col.itemR(field, "size") - col.itemR(field, "flow") - elif field.type == 'HARMONIC': - col.itemR(field, "harmonic_damping", text="Damping") - elif field.type == 'VORTEX' and field.shape != 'POINT': - col.itemR(field, "inflow") - elif field.type == 'DRAG': - col.itemR(field, "quadratic_drag", text="Quadratic") - else: - col.itemR(field, "flow") - - col = split.column() - col.itemR(field, "noise") - col.itemR(field, "seed") - if field.type == 'TURBULENCE': - col.itemR(field, "global_coordinates", text="Global") - - row = layout.row() - row.itemL(text="Effect point:") - row.itemR(field, "do_location") - row.itemR(field, "do_rotation") - - -def basic_force_field_falloff_ui(self, field): - layout = self.layout - split = layout.split(percentage=0.35) - - if not field or field.type == 'NONE': - return - - col = split.column() - col.itemR(field, "z_direction", text="") - col.itemR(field, "use_min_distance", text="Use Minimum") - col.itemR(field, "use_max_distance", text="Use Maximum") - col.itemR(field, "do_absorption") - - col = split.column() - col.itemR(field, "falloff_power", text="Power") - - sub = col.column() - sub.active = field.use_min_distance - sub.itemR(field, "minimum_distance", text="Distance") - - sub = col.column() - sub.active = field.use_max_distance - sub.itemR(field, "maximum_distance", text="Distance")
\ No newline at end of file diff --git a/release/scripts/ui/buttons_physics_field.py b/release/scripts/ui/buttons_physics_field.py deleted file mode 100644 index 9aec0404ab1..00000000000 --- a/release/scripts/ui/buttons_physics_field.py +++ /dev/null @@ -1,200 +0,0 @@ - -import bpy - -from buttons_physics_common import basic_force_field_settings_ui -from buttons_physics_common import basic_force_field_falloff_ui - -class PhysicButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - rd = context.scene.render_data - return (context.object) and (not rd.use_game_engine) - -class PHYSICS_PT_field(PhysicButtonsPanel): - __label__ = "Force Fields" - - def draw(self, context): - layout = self.layout - - ob = context.object - field = ob.field - - split = layout.split(percentage=0.2) - split.itemL(text="Type:") - split.itemR(field, "type",text="") - - if field.type not in ('NONE', 'GUIDE', 'TEXTURE'): - split = layout.split(percentage=0.2) - #split = layout.row() - split.itemL(text="Shape:") - split.itemR(field, "shape", text="") - - split = layout.split() - - if field.type == 'NONE': - return # nothing to draw - elif field.type == 'GUIDE': - col = split.column() - col.itemR(field, "guide_minimum") - col.itemR(field, "guide_free") - col.itemR(field, "falloff_power") - col.itemR(field, "guide_path_add") - - col = split.column() - col.itemL(text="Clumping:") - col.itemR(field, "guide_clump_amount") - col.itemR(field, "guide_clump_shape") - - row = layout.row() - row.itemR(field, "use_max_distance") - sub = row.row() - sub.active = field.use_max_distance - sub.itemR(field, "maximum_distance") - - layout.itemS() - - layout.itemR(field, "guide_kink_type") - if (field.guide_kink_type != "NONE"): - layout.itemR(field, "guide_kink_axis") - - flow = layout.column_flow() - flow.itemR(field, "guide_kink_frequency") - flow.itemR(field, "guide_kink_shape") - flow.itemR(field, "guide_kink_amplitude") - elif field.type == 'TEXTURE': - col = split.column() - col.itemR(field, "strength") - col.itemR(field, "texture", text="") - col.itemR(field, "texture_mode", text="") - col.itemR(field, "texture_nabla") - - col = split.column() - col.itemR(field, "use_coordinates") - col.itemR(field, "root_coordinates") - col.itemR(field, "force_2d") - else : - basic_force_field_settings_ui(self, field) - - if field.type not in ('NONE', 'GUIDE'): - - layout.itemL(text="Falloff:") - layout.itemR(field, "falloff_type", expand=True) - - basic_force_field_falloff_ui(self, field) - - if field.falloff_type == 'CONE': - layout.itemS() - - split = layout.split(percentage=0.35) - - col = split.column() - col.itemL(text="Angular:") - col.itemR(field, "use_radial_min", text="Use Minimum") - col.itemR(field, "use_radial_max", text="Use Maximum") - - col = split.column() - col.itemR(field, "radial_falloff", text="Power") - - sub = col.column() - sub.active = field.use_radial_min - sub.itemR(field, "radial_minimum", text="Angle") - - sub = col.column() - sub.active = field.use_radial_max - sub.itemR(field, "radial_maximum", text="Angle") - - elif field.falloff_type == 'TUBE': - layout.itemS() - - split = layout.split(percentage=0.35) - - col = split.column() - col.itemL(text="Radial:") - col.itemR(field, "use_radial_min", text="Use Minimum") - col.itemR(field, "use_radial_max", text="Use Maximum") - - col = split.column() - col.itemR(field, "radial_falloff", text="Power") - - sub = col.column() - sub.active = field.use_radial_min - sub.itemR(field, "radial_minimum", text="Distance") - - sub = col.column() - sub.active = field.use_radial_max - sub.itemR(field, "radial_maximum", text="Distance") - -class PHYSICS_PT_collision(PhysicButtonsPanel): - __label__ = "Collision" - #__default_closed__ = True - - def poll(self, context): - ob = context.object - rd = context.scene.render_data - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) - - def draw(self, context): - layout = self.layout - - md = context.collision - - split = layout.split() - split.operator_context = 'EXEC_DEFAULT' - - if md: - # remove modifier + settings - split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") - col = split.column() - - #row = split.row(align=True) - #row.itemR(md, "render", text="") - #row.itemR(md, "realtime", text="") - - coll = md.settings - - else: - # add modifier - split.item_enumO("object.modifier_add", "type", 'COLLISION', text="Add") - split.itemL() - - coll = None - - if coll: - settings = context.object.collision - - layout.active = settings.enabled - - split = layout.split() - - col = split.column() - col.itemL(text="Particle:") - col.itemR(settings, "permeability", slider=True) - col.itemL(text="Particle Damping:") - sub = col.column(align=True) - sub.itemR(settings, "damping_factor", text="Factor", slider=True) - sub.itemR(settings, "random_damping", text="Random", slider=True) - - col.itemL(text="Soft Body and Cloth:") - sub = col.column(align=True) - sub.itemR(settings, "outer_thickness", text="Outer", slider=True) - sub.itemR(settings, "inner_thickness", text="Inner", slider=True) - - layout.itemL(text="Force Fields:") - layout.itemR(settings, "absorption", text="Absorption") - - col = split.column() - col.itemL(text="") - col.itemR(settings, "kill_particles") - col.itemL(text="Particle Friction:") - sub = col.column(align=True) - sub.itemR(settings, "friction_factor", text="Factor", slider=True) - sub.itemR(settings, "random_friction", text="Random", slider=True) - col.itemL(text="Soft Body Damping:") - col.itemR(settings, "damping", text="Factor", slider=True) - -bpy.types.register(PHYSICS_PT_field) -bpy.types.register(PHYSICS_PT_collision) diff --git a/release/scripts/ui/buttons_physics_fluid.py b/release/scripts/ui/buttons_physics_fluid.py deleted file mode 100644 index e178a831ddd..00000000000 --- a/release/scripts/ui/buttons_physics_fluid.py +++ /dev/null @@ -1,257 +0,0 @@ - -import bpy - -class PhysicButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - ob = context.object - rd = context.scene.render_data - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) - -class PHYSICS_PT_fluid(PhysicButtonsPanel): - __label__ = "Fluid" - - def draw(self, context): - layout = self.layout - - md = context.fluid - ob = context.object - - split = layout.split() - split.operator_context = 'EXEC_DEFAULT' - - if md: - # remove modifier + settings - split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") - - fluid = md.settings - - else: - # add modifier - split.item_enumO("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add") - split.itemL() - - fluid = None - - - if fluid: - layout.itemR(fluid, "type") - - if fluid.type == 'DOMAIN': - layout.itemO("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM') - split = layout.split() - - col = split.column() - col.itemL(text="Resolution:") - col.itemR(fluid, "resolution", text="Final") - col.itemL(text="Render Display:") - col.itemR(fluid, "render_display_mode", text="") - col.itemL(text="Time:") - sub = col.column(align=True) - sub.itemR(fluid, "start_time", text="Start") - sub.itemR(fluid, "end_time", text="End") - - col = split.column() - col.itemL(text="Required Memory: " + fluid.memory_estimate) - col.itemR(fluid, "preview_resolution", text="Preview") - col.itemL(text="Viewport Display:") - col.itemR(fluid, "viewport_display_mode", text="") - col.itemL() - col.itemR(fluid, "generate_speed_vectors") - col.itemR(fluid, "reverse_frames") - - layout.itemR(fluid, "path", text="") - - elif fluid.type == 'FLUID': - split = layout.split() - - col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") - - col = split.column() - col.itemL(text="Initial Velocity:") - col.itemR(fluid, "initial_velocity", text="") - - elif fluid.type == 'OBSTACLE': - split = layout.split() - - col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") - - col = split.column() - col.itemL(text="Slip Type:") - col.itemR(fluid, "slip_type", text="") - if fluid.slip_type == 'PARTIALSLIP': - col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") - - col.itemL(text="Impact:") - col.itemR(fluid, "impact_factor", text="Factor") - - elif fluid.type == 'INFLOW': - split = layout.split() - - col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") - col.itemR(fluid, "local_coordinates") - - col = split.column() - col.itemL(text="Inflow Velocity:") - col.itemR(fluid, "inflow_velocity", text="") - - elif fluid.type == 'OUTFLOW': - split = layout.split() - - col = split.column() - col.itemL(text="Volume Initialization:") - col.itemR(fluid, "volume_initialization", text="") - col.itemR(fluid, "export_animated_mesh") - - split.column() - - elif fluid.type == 'PARTICLE': - split = layout.split(percentage=0.5) - - col = split.column() - col.itemL(text="Influence:") - col.itemR(fluid, "particle_influence", text="Size") - col.itemR(fluid, "alpha_influence", text="Alpha") - - col = split.column() - col.itemL(text="Type:") - col.itemR(fluid, "drops") - col.itemR(fluid, "floats") - col = split.column() - col.itemL() - col.itemR(fluid, "tracer") - - layout.itemR(fluid, "path", text="") - - elif fluid.type == 'CONTROL': - split = layout.split() - - col = split.column() - col.itemL(text="") - col.itemR(fluid, "quality", slider=True) - col.itemR(fluid, "reverse_frames") - - col = split.column() - col.itemL(text="Time:") - sub = col.column(align=True) - sub.itemR(fluid, "start_time", text="Start") - sub.itemR(fluid, "end_time", text="End") - - split = layout.split() - - col = split.column() - col.itemL(text="Attraction Force:") - sub = col.column(align=True) - sub.itemR(fluid, "attraction_strength", text="Strength") - sub.itemR(fluid, "attraction_radius", text="Radius") - - col = split.column() - col.itemL(text="Velocity Force:") - sub = col.column(align=True) - sub.itemR(fluid, "velocity_strength", text="Strength") - sub.itemR(fluid, "velocity_radius", text="Radius") - -class PHYSICS_PT_domain_gravity(PhysicButtonsPanel): - __label__ = "Domain World" - __default_closed__ = True - - def poll(self, context): - md = context.fluid - return md and (md.settings.type == 'DOMAIN') - - def draw(self, context): - layout = self.layout - - fluid = context.fluid.settings - - split = layout.split() - - col = split.column() - col.itemL(text="Gravity:") - col.itemR(fluid, "gravity", text="") - col.itemL(text="Real World Size:") - col.itemR(fluid, "real_world_size", text="Metres") - - col = split.column() - col.itemL(text="Viscosity Presets:") - sub = col.column(align=True) - sub.itemR(fluid, "viscosity_preset", text="") - - if fluid.viscosity_preset == 'MANUAL': - sub.itemR(fluid, "viscosity_base", text="Base") - sub.itemR(fluid, "viscosity_exponent", text="Exponent", slider=True) - else: - sub.itemL() - sub.itemL() - - col.itemL(text="Optimization:") - sub = col.column(align=True) - sub.itemR(fluid, "grid_levels", slider=True) - sub.itemR(fluid, "compressibility", slider=True) - -class PHYSICS_PT_domain_boundary(PhysicButtonsPanel): - __label__ = "Domain Boundary" - __default_closed__ = True - - def poll(self, context): - md = context.fluid - return md and (md.settings.type == 'DOMAIN') - - def draw(self, context): - layout = self.layout - - fluid = context.fluid.settings - - split = layout.split() - - col = split.column() - col.itemL(text="Slip Type:") - sub = col.column(align=True) - sub.itemR(fluid, "slip_type", text="") - if fluid.slip_type == 'PARTIALSLIP': - sub.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") - - col = split.column() - col.itemL(text="Surface:") - sub = col.column(align=True) - sub.itemR(fluid, "surface_smoothing", text="Smoothing") - sub.itemR(fluid, "surface_subdivisions", text="Subdivisions") - -class PHYSICS_PT_domain_particles(PhysicButtonsPanel): - __label__ = "Domain Particles" - __default_closed__ = True - - def poll(self, context): - md = context.fluid - return md and (md.settings.type == 'DOMAIN') - - def draw(self, context): - layout = self.layout - - fluid = context.fluid.settings - - col = layout.column(align=True) - col.itemR(fluid, "tracer_particles") - col.itemR(fluid, "generate_particles") - -bpy.types.register(PHYSICS_PT_fluid) -bpy.types.register(PHYSICS_PT_domain_gravity) -bpy.types.register(PHYSICS_PT_domain_boundary) -bpy.types.register(PHYSICS_PT_domain_particles) diff --git a/release/scripts/ui/buttons_physics_smoke.py b/release/scripts/ui/buttons_physics_smoke.py deleted file mode 100644 index b1523148a30..00000000000 --- a/release/scripts/ui/buttons_physics_smoke.py +++ /dev/null @@ -1,193 +0,0 @@ - -import bpy - -from buttons_physics_common import point_cache_ui -from buttons_physics_common import effector_weights_ui - -class PhysicButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - ob = context.object - rd = context.scene.render_data - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) - -class PHYSICS_PT_smoke(PhysicButtonsPanel): - __label__ = "Smoke" - - def draw(self, context): - layout = self.layout - - md = context.smoke - ob = context.object - - split = layout.split() - split.operator_context = 'EXEC_DEFAULT' - - if md: - # remove modifier + settings - split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") - - else: - # add modifier - split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add") - split.itemL() - - if md: - layout.itemR(md, "smoke_type", expand=True) - - if md.smoke_type == 'TYPE_DOMAIN': - - domain = md.domain_settings - - split = layout.split() - - col = split.column() - col.itemL(text="Resolution:") - col.itemR(domain, "maxres", text="Divisions") - - col = split.column() - col.itemL(text="Behavior:") - col.itemR(domain, "alpha") - col.itemR(domain, "beta") - col.itemR(domain, "dissolve_smoke", text="Dissolve") - sub = col.column() - sub.active = domain.dissolve_smoke - sub.itemR(domain, "dissolve_speed", text="Time") - sub.itemR(domain, "dissolve_smoke_log", text="Slow") - - elif md.smoke_type == 'TYPE_FLOW': - - flow = md.flow_settings - - split = layout.split() - - col = split.column() - col.itemR(flow, "outflow") - col.itemL(text="Particle System:") - col.item_pointerR(flow, "psys", ob, "particle_systems", text="") - - if md.flow_settings.outflow: - col = split.column() - else: - col = split.column() - col.itemL(text="Behavior:") - col.itemR(flow, "temperature") - col.itemR(flow, "density") - - #elif md.smoke_type == 'TYPE_COLL': - # layout.itemS() - -class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): - __label__ = "Smoke Groups" - __default_closed__ = True - - def poll(self, context): - md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') - - def draw(self, context): - layout = self.layout - - group = context.smoke.domain_settings - - split = layout.split() - - col = split.column() - col.itemL(text="Flow Group:") - col.itemR(group, "fluid_group", text="") - - #col.itemL(text="Effector Group:") - #col.itemR(group, "eff_group", text="") - - col = split.column() - col.itemL(text="Collision Group:") - col.itemR(group, "coll_group", text="") - -class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): - __label__ = "Smoke Cache" - __default_closed__ = True - - def poll(self, context): - md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') - - def draw(self, context): - layout = self.layout - - md = context.smoke.domain_settings - cache = md.point_cache_low - - point_cache_ui(self, cache, cache.baked==False, 0, 1) - -class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): - __label__ = "Smoke High Resolution" - __default_closed__ = True - - def poll(self, context): - md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') - - def draw_header(self, context): - high = context.smoke.domain_settings - - self.layout.itemR(high, "highres", text="") - - def draw(self, context): - layout = self.layout - - md = context.smoke.domain_settings - - split = layout.split() - - col = split.column() - col.itemL(text="Resolution:") - col.itemR(md, "amplify", text="Divisions") - - col = split.column() - col.itemL(text="Noise Method:") - col.row().itemR(md, "noise_type", text="") - col.itemR(md, "strength") - col.itemR(md, "viewhighres") - -class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): - __label__ = "Smoke High Resolution Cache" - __default_closed__ = True - - def poll(self, context): - md = context.smoke - return md and (md.smoke_type == 'TYPE_DOMAIN') and md.domain_settings.highres - - def draw(self, context): - layout = self.layout - - md = context.smoke.domain_settings - cache = md.point_cache_high - - point_cache_ui(self, cache, cache.baked==False, 0, 1) - -class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel): - __label__ = "Smoke Field Weights" - __default_closed__ = True - - def poll(self, context): - smoke = context.smoke - return (smoke and smoke.smoke_type == 'TYPE_DOMAIN') - - def draw(self, context): - domain = context.smoke.domain_settings - effector_weights_ui(self, domain.effector_weights) - -bpy.types.register(PHYSICS_PT_smoke) -bpy.types.register(PHYSICS_PT_smoke_field_weights) -bpy.types.register(PHYSICS_PT_smoke_cache) -bpy.types.register(PHYSICS_PT_smoke_highres) -bpy.types.register(PHYSICS_PT_smoke_groups) -bpy.types.register(PHYSICS_PT_smoke_cache_highres) diff --git a/release/scripts/ui/buttons_physics_softbody.py b/release/scripts/ui/buttons_physics_softbody.py deleted file mode 100644 index cd66df00044..00000000000 --- a/release/scripts/ui/buttons_physics_softbody.py +++ /dev/null @@ -1,244 +0,0 @@ - -import bpy - -from buttons_physics_common import point_cache_ui -from buttons_physics_common import effector_weights_ui - -def softbody_panel_enabled(md): - return md.point_cache.baked==False - -class PhysicButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "physics" - - def poll(self, context): - ob = context.object - rd = context.scene.render_data - return (ob and ob.type == 'MESH') and (not rd.use_game_engine) - -class PHYSICS_PT_softbody(PhysicButtonsPanel): - __label__ = "Soft Body" - - def draw(self, context): - layout = self.layout - - md = context.soft_body - ob = context.object - - split = layout.split() - split.operator_context = "EXEC_DEFAULT" - - if md: - # remove modifier + settings - split.set_context_pointer("modifier", md) - split.itemO("object.modifier_remove", text="Remove") - - row = split.row(align=True) - row.itemR(md, "render", text="") - row.itemR(md, "realtime", text="") - else: - # add modifier - split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add") - split.itemL("") - - if md: - softbody = md.settings - - # General - split = layout.split() - split.enabled = softbody_panel_enabled(md) - - col = split.column() - col.itemL(text="Object:") - col.itemR(softbody, "mass") - col.itemR(softbody, "friction") - - col = split.column() - col.itemL(text="Simulation:") - col.itemR(softbody, "speed") - -class PHYSICS_PT_softbody_cache(PhysicButtonsPanel): - __label__ = "Soft Body Cache" - __default_closed__ = True - - def poll(self, context): - return context.soft_body - - def draw(self, context): - md = context.soft_body - point_cache_ui(self, md.point_cache, softbody_panel_enabled(md), 0, 0) - -class PHYSICS_PT_softbody_goal(PhysicButtonsPanel): - __label__ = "Soft Body Goal" - __default_closed__ = True - - def poll(self, context): - return context.soft_body - - def draw_header(self, context): - softbody = context.soft_body.settings - - self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "use_goal", text="") - - def draw(self, context): - layout = self.layout - - md = context.soft_body - softbody = md.settings - ob = context.object - - layout.active = softbody.use_goal and softbody_panel_enabled(md) - - split = layout.split() - - # Goal - split = layout.split() - - col = split.column() - col.itemL(text="Goal Strengths:") - col.itemR(softbody, "goal_default", text="Default") - sub = col.column(align=True) - sub.itemR(softbody, "goal_min", text="Minimum") - sub.itemR(softbody, "goal_max", text="Maximum") - - col = split.column() - col.itemL(text="Goal Settings:") - col.itemR(softbody, "goal_spring", text="Stiffness") - col.itemR(softbody, "goal_friction", text="Damping") - - layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group") - -class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): - __label__ = "Soft Body Edges" - __default_closed__ = True - - def poll(self, context): - return context.soft_body - - def draw_header(self, context): - softbody = context.soft_body.settings - - self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "use_edges", text="") - - def draw(self, context): - layout = self.layout - - md = context.soft_body - softbody = md.settings - ob = context.object - - layout.active = softbody.use_edges and softbody_panel_enabled(md) - - split = layout.split() - - col = split.column() - col.itemL(text="Springs:") - col.itemR(softbody, "pull") - col.itemR(softbody, "push") - col.itemR(softbody, "damp") - col.itemR(softbody, "plastic") - col.itemR(softbody, "bending") - col.itemR(softbody, "spring_length", text="Length") - - col = split.column() - col.itemR(softbody, "stiff_quads") - sub = col.column() - sub.active = softbody.stiff_quads - sub.itemR(softbody, "shear") - - col.itemR(softbody, "new_aero", text="Aero") - sub = col.column() - sub.enabled = softbody.new_aero - sub.itemR(softbody, "aero", text="Factor") - - col.itemL(text="Collision:") - col.itemR(softbody, "edge_collision", text="Edge") - col.itemR(softbody, "face_collision", text="Face") - -class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): - __label__ = "Soft Body Collision" - __default_closed__ = True - - def poll(self, context): - return context.soft_body - - def draw_header(self, context): - softbody = context.soft_body.settings - - self.layout.active = softbody_panel_enabled(context.soft_body) - self.layout.itemR(softbody, "self_collision", text="") - - def draw(self, context): - layout = self.layout - - md = context.soft_body - softbody = md.settings - ob = context.object - - layout.active = softbody.self_collision and softbody_panel_enabled(md) - - layout.itemL(text="Collision Type:") - layout.itemR(softbody, "collision_type", expand=True) - - col = layout.column(align=True) - col.itemL(text="Ball:") - col.itemR(softbody, "ball_size", text="Size") - col.itemR(softbody, "ball_stiff", text="Stiffness") - col.itemR(softbody, "ball_damp", text="Dampening") - -class PHYSICS_PT_softbody_solver(PhysicButtonsPanel): - __label__ = "Soft Body Solver" - __default_closed__ = True - - def poll(self, context): - return context.soft_body - - def draw(self, context): - layout = self.layout - - md = context.soft_body - softbody = md.settings - ob = context.object - - layout.active = softbody_panel_enabled(md) - - # Solver - split = layout.split() - - col = split.column(align=True) - col.itemL(text="Step Size:") - col.itemR(softbody, "minstep") - col.itemR(softbody, "maxstep") - col.itemR(softbody, "auto_step", text="Auto-Step") - - col = split.column() - col.itemR(softbody, "error_limit") - col.itemL(text="Helpers:") - col.itemR(softbody, "choke") - col.itemR(softbody, "fuzzy") - - layout.itemL(text="Diagnostics:") - layout.itemR(softbody, "diagnose") - -class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel): - __label__ = "Soft Body Field Weights" - __default_closed__ = True - - def poll(self, context): - return (context.soft_body) - - def draw(self, context): - md = context.soft_body - softbody = md.settings - effector_weights_ui(self, softbody.effector_weights) - -bpy.types.register(PHYSICS_PT_softbody) -bpy.types.register(PHYSICS_PT_softbody_cache) -bpy.types.register(PHYSICS_PT_softbody_goal) -bpy.types.register(PHYSICS_PT_softbody_edge) -bpy.types.register(PHYSICS_PT_softbody_collision) -bpy.types.register(PHYSICS_PT_softbody_solver) -bpy.types.register(PHYSICS_PT_softbody_field_weights) diff --git a/release/scripts/ui/buttons_scene.py b/release/scripts/ui/buttons_scene.py deleted file mode 100644 index 54f47791d59..00000000000 --- a/release/scripts/ui/buttons_scene.py +++ /dev/null @@ -1,137 +0,0 @@ - -import bpy - -class SceneButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "scene" - - def poll(self, context): - return context.scene - -class SCENE_PT_scene(SceneButtonsPanel): - __label__ = "Scene" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - scene = context.scene - - layout.itemR(scene, "camera") - layout.itemR(scene, "set", text="Background") - -class SCENE_PT_unit(SceneButtonsPanel): - __label__ = "Units" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - unit = context.scene.unit_settings - - col = layout.column() - col.row().itemR(unit, "system", expand=True) - - row = layout.row() - row.active = (unit.system != 'NONE') - row.itemR(unit, "scale_length", text="Scale") - row.itemR(unit, "use_separate") - -class SCENE_PT_keying_sets(SceneButtonsPanel): - __label__ = "Keying Sets" - - def draw(self, context): - layout = self.layout - - scene = context.scene - - row = layout.row() - - col = row.column() - col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2) - - col = row.column(align=True) - col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="") - col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="") - - ks = scene.active_keying_set - if ks: - row = layout.row() - - col = row.column() - col.itemR(ks, "name") - col.itemR(ks, "absolute") - - col = row.column() - col.itemL(text="Keyframing Settings:") - col.itemR(ks, "insertkey_needed", text="Needed") - col.itemR(ks, "insertkey_visual", text="Visual") - -class SCENE_PT_keying_set_paths(SceneButtonsPanel): - __label__ = "Active Keying Set" - - def poll(self, context): - return (context.scene != None) and (context.scene.active_keying_set != None) - - def draw(self, context): - layout = self.layout - - scene = context.scene - ks = scene.active_keying_set - - row = layout.row() - row.itemL(text="Paths:") - - row = layout.row() - - col = row.column() - col.template_list(ks, "paths", ks, "active_path_index", rows=2) - - col = row.column(align=True) - col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="") - col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="") - - ksp = ks.active_path - if ksp: - col = layout.column() - col.itemL(text="Target:") - col.template_any_ID(ksp, "id", "id_type") - col.template_path_builder(ksp, "rna_path", ksp.id) - - - row = layout.row() - - col = row.column() - col.itemL(text="Array Target:") - col.itemR(ksp, "entire_array") - if ksp.entire_array == False: - col.itemR(ksp, "array_index") - - col = row.column() - col.itemL(text="F-Curve Grouping:") - col.itemR(ksp, "grouping") - if ksp.grouping == 'NAMED': - col.itemR(ksp, "group") - -class SCENE_PT_physics(SceneButtonsPanel): - __label__ = "Gravity" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw_header(self, context): - self.layout.itemR(context.scene, "use_gravity", text="") - - def draw(self, context): - layout = self.layout - - scene = context.scene - - layout.active = scene.use_gravity - - layout.itemR(scene, "gravity", text="") - -bpy.types.register(SCENE_PT_scene) -bpy.types.register(SCENE_PT_unit) -bpy.types.register(SCENE_PT_keying_sets) -bpy.types.register(SCENE_PT_keying_set_paths) -bpy.types.register(SCENE_PT_physics) diff --git a/release/scripts/ui/buttons_texture.py b/release/scripts/ui/buttons_texture.py deleted file mode 100644 index 1680a80bb6c..00000000000 --- a/release/scripts/ui/buttons_texture.py +++ /dev/null @@ -1,793 +0,0 @@ - -import bpy - -def active_node_mat(mat): - if mat: - mat_node = mat.active_node_material - if mat_node: - return mat_node - else: - return mat - - return None - -def context_tex_datablock(context): - - idblock = active_node_mat(context.material) - if idblock: return idblock - - idblock = context.lamp - if idblock: return idblock - - idblock = context.world - if idblock: return idblock - - idblock = context.brush - return idblock - -class TextureButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "texture" - - def poll(self, context): - tex = context.texture - return (tex and (tex.type != 'NONE' or tex.use_nodes)) - -class TEXTURE_PT_preview(TextureButtonsPanel): - __label__ = "Preview" - - def draw(self, context): - layout = self.layout - - tex = context.texture - slot = context.texture_slot - - idblock = context_tex_datablock(context) - - if idblock: - layout.template_preview(tex, parent=idblock, slot=slot) - else: - layout.template_preview(tex, slot=slot) - -class TEXTURE_PT_context_texture(TextureButtonsPanel): - __show_header__ = False - - def poll(self, context): - return (context.material or context.world or context.lamp or context.brush or context.texture) - - def draw(self, context): - layout = self.layout - - tex = context.texture - - idblock = context_tex_datablock(context) - - space = context.space_data - - if idblock: - row = layout.row() - - row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2) - - col = row.column(align=True) - col.item_enumO("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP') - col.item_enumO("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN') - - - split = layout.split(percentage=0.65) - - if idblock: - split.template_ID(idblock, "active_texture", new="texture.new") - elif tex: - split.template_ID(space, "pin_id") - - if (not space.pin_id) and ( - context.sculpt_object or - context.vertex_paint_object or - context.weight_paint_object or - context.texture_paint_object - ): - split.itemR(space, "brush_texture", text="Brush", toggle=True) - - if tex: - layout.itemR(tex, "use_nodes") - - split = layout.split(percentage=0.2) - - if tex.use_nodes: - slot = context.texture_slot - - if slot: - split.itemL(text="Output:") - split.itemR(slot, "output_node", text="") - - else: - split.itemL(text="Type:") - split.itemR(tex, "type", text="") - -class TEXTURE_PT_colors(TextureButtonsPanel): - __label__ = "Colors" - __default_closed__ = True - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "use_color_ramp", text="Ramp") - if tex.use_color_ramp: - layout.template_color_ramp(tex, "color_ramp", expand=True) - - split = layout.split() - - col = split.column() - col.itemL(text="RGB Multiply:") - sub = col.column(align=True) - sub.itemR(tex, "factor_red", text="R") - sub.itemR(tex, "factor_green", text="G") - sub.itemR(tex, "factor_blue", text="B") - - col = split.column() - col.itemL(text="Adjust:") - col.itemR(tex, "brightness") - col.itemR(tex, "contrast") - -# Texture Slot Panels # - -class TextureSlotPanel(TextureButtonsPanel): - def poll(self, context): - return ( - context.texture_slot and - TextureButtonsPanel.poll(self, context) - ) - -class TEXTURE_PT_mapping(TextureSlotPanel): - __label__ = "Mapping" - - def draw(self, context): - layout = self.layout - - idblock = context_tex_datablock(context) - - tex = context.texture_slot - textype = context.texture - - if type(idblock) != bpy.types.Brush: - split = layout.split(percentage=0.3) - col = split.column() - col.itemL(text="Coordinates:") - col = split.column() - col.itemR(tex, "texture_coordinates", text="") - - if tex.texture_coordinates == 'ORCO': - """ - ob = context.object - if ob and ob.type == 'MESH': - split = layout.split(percentage=0.3) - split.itemL(text="Mesh:") - split.itemR(ob.data, "texco_mesh", text="") - """ - elif tex.texture_coordinates == 'UV': - split = layout.split(percentage=0.3) - split.itemL(text="Layer:") - ob = context.object - if ob and ob.type == 'MESH': split.item_pointerR(tex, "uv_layer", ob.data, "uv_textures", text="") - else: split.itemR(tex, "uv_layer", text="") - elif tex.texture_coordinates == 'OBJECT': - split = layout.split(percentage=0.3) - split.itemL(text="Object:") - split.itemR(tex, "object", text="") - - if type(idblock) == bpy.types.Brush: - layout.itemR(tex, "map_mode", expand=True) - - row = layout.row() - row.active = tex.map_mode in ('FIXED', 'TILED') - row.itemR(tex, "angle") - - row = layout.row() - row.active = tex.map_mode in ('TILED', '3D') - row.column().itemR(tex, "size") - else: - if type(idblock) == bpy.types.Material: - split = layout.split(percentage=0.3) - split.itemL(text="Projection:") - split.itemR(tex, "mapping", text="") - - split = layout.split() - - col = split.column() - if tex.texture_coordinates in ('ORCO', 'UV'): - col.itemR(tex, "from_dupli") - elif tex.texture_coordinates == 'OBJECT': - col.itemR(tex, "from_original") - else: - col.itemL() - - col = split.column() - row = col.row() - row.itemR(tex, "x_mapping", text="") - row.itemR(tex, "y_mapping", text="") - row.itemR(tex, "z_mapping", text="") - - # any non brush - row = layout.row() - row.column().itemR(tex, "offset") - row.column().itemR(tex, "size") - - -class TEXTURE_PT_influence(TextureSlotPanel): - __label__ = "Influence" - def poll(self, context): - return context.texture_slot - - - def draw(self, context): - - layout = self.layout - - idblock = context_tex_datablock(context) - - textype = context.texture - tex = context.texture_slot - - def factor_but(layout, active, toggle, factor, name): - row = layout.row(align=True) - row.itemR(tex, toggle, text="") - sub = row.row() - sub.active = active - sub.itemR(tex, factor, text=name, slider=True) - - if type(idblock) == bpy.types.Material: - if idblock.type in ('SURFACE', 'HALO', 'WIRE'): - split = layout.split() - - col = split.column() - col.itemL(text="Diffuse:") - factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity") - factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color") - factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha") - factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency") - - col.itemL(text="Specular:") - factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity") - factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color") - factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness") - - col = split.column() - col.itemL(text="Shading:") - factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient") - factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit") - factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror") - factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror") - - col.itemL(text="Geometry:") - factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal") - factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp") - factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace") - - #sub = col.column() - #sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror - #sub.itemR(tex, "default_value", text="Amount", slider=True) - elif idblock.type == 'VOLUME': - split = layout.split() - - col = split.column() - factor_but(col, tex.map_density, "map_density", "density_factor", "Density") - factor_but(col, tex.map_emission, "map_emission", "emission_factor", "Emission") - factor_but(col, tex.map_scattering, "map_scattering", "scattering_factor", "Scattering") - factor_but(col, tex.map_reflection, "map_reflection", "reflection_factor", "Reflection") - - col = split.column() - col.itemL(text=" ") - factor_but(col, tex.map_alpha, "map_coloremission", "coloremission_factor", "Emission Color") - factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color") - factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color") - - elif type(idblock) == bpy.types.Lamp: - row = layout.row() - factor_but(row, tex.map_color, "map_color", "color_factor", "Color") - factor_but(row, tex.map_shadow, "map_shadow", "shadow_factor", "Shadow") - - elif type(idblock) == bpy.types.World: - split = layout.split() - - col = split.column() - factor_but(col, tex.map_blend, "map_blend", "blend_factor", "Blend") - factor_but(col, tex.map_horizon, "map_horizon", "horizon_factor", "Horizon") - - col = split.column() - factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up") - factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down") - - layout.itemS() - - split = layout.split() - - col = split.column() - col.itemR(tex, "blend_type", text="Blend") - col.itemR(tex, "rgb_to_intensity") - sub = col.column() - sub.active = tex.rgb_to_intensity - sub.itemR(tex, "color", text="") - - col = split.column() - col.itemR(tex, "negate", text="Negative") - col.itemR(tex, "stencil") - - if type(idblock) in (bpy.types.Material, bpy.types.World): - col.itemR(tex, "default_value", text="DVar", slider=True) - -# Texture Type Panels # - -class TextureTypePanel(TextureButtonsPanel): - def poll(self, context): - tex = context.texture - return (tex and tex.type == self.tex_type and not tex.use_nodes) - -class TEXTURE_PT_clouds(TextureTypePanel): - __label__ = "Clouds" - tex_type = 'CLOUDS' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "stype", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) - layout.itemR(tex, "noise_basis", text="Basis") - - flow = layout.column_flow() - flow.itemR(tex, "noise_size", text="Size") - flow.itemR(tex, "noise_depth", text="Depth") - flow.itemR(tex, "nabla", text="Nabla") - -class TEXTURE_PT_wood(TextureTypePanel): - __label__ = "Wood" - tex_type = 'WOOD' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "noisebasis2", expand=True) - layout.itemR(tex, "stype", expand=True) - - col = layout.column() - col.active = tex.stype in ('RINGNOISE', 'BANDNOISE') - col.itemL(text="Noise:") - col.row().itemR(tex, "noise_type", text="Type", expand=True) - col.itemR(tex, "noise_basis", text="Basis") - - flow = layout.column_flow() - flow.active = tex.stype in ('RINGNOISE', 'BANDNOISE') - flow.itemR(tex, "noise_size", text="Size") - flow.itemR(tex, "turbulence") - flow.itemR(tex, "nabla") - -class TEXTURE_PT_marble(TextureTypePanel): - __label__ = "Marble" - tex_type = 'MARBLE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "stype", expand=True) - layout.itemR(tex, "noisebasis2", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) - layout.itemR(tex, "noise_basis", text="Basis") - - flow = layout.column_flow() - flow.itemR(tex, "noise_size", text="Size") - flow.itemR(tex, "noise_depth", text="Depth") - flow.itemR(tex, "turbulence") - flow.itemR(tex, "nabla") - -class TEXTURE_PT_magic(TextureTypePanel): - __label__ = "Magic" - tex_type = 'MAGIC' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - row = layout.row() - row.itemR(tex, "noise_depth", text="Depth") - row.itemR(tex, "turbulence") - -class TEXTURE_PT_blend(TextureTypePanel): - __label__ = "Blend" - tex_type = 'BLEND' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "progression") - sub = layout.row() - - sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL')) - sub.itemR(tex, "flip_axis", expand=True) - -class TEXTURE_PT_stucci(TextureTypePanel): - __label__ = "Stucci" - tex_type = 'STUCCI' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "stype", expand=True) - layout.itemL(text="Noise:") - layout.itemR(tex, "noise_type", text="Type", expand=True) - layout.itemR(tex, "noise_basis", text="Basis") - - row = layout.row() - row.itemR(tex, "noise_size", text="Size") - row.itemR(tex, "turbulence") - -class TEXTURE_PT_image(TextureTypePanel): - __label__ = "Image" - tex_type = 'IMAGE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.template_image(tex, "image", tex.image_user) - -class TEXTURE_PT_image_sampling(TextureTypePanel): - __label__ = "Image Sampling" - __default_closed__ = True - tex_type = 'IMAGE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - slot = context.texture_slot - - split = layout.split() - - """ - col = split.column() - col.itemR(tex, "flip_axis") - col.itemR(tex, "normal_map") - if slot: - row = col.row() - row.active = tex.normal_map - row.itemR(slot, "normal_map_space", text="") - """ - - col = split.column() - col.itemL(text="Alpha:") - col.itemR(tex, "use_alpha", text="Use") - col.itemR(tex, "calculate_alpha", text="Calculate") - col.itemR(tex, "invert_alpha", text="Invert") - - col.itemL(text="Flip:") - col.itemR(tex, "flip_axis", text="X/Y Axis") - - col = split.column() - col.itemL(text="Filter:") - col.itemR(tex, "filter", text="") - col.itemR(tex, "mipmap") - - row = col.row() - row.active = tex.mipmap - row.itemR(tex, "mipmap_gauss", text="Gauss") - - col.itemR(tex, "interpolation") - if tex.mipmap and tex.filter != 'DEFAULT': - if tex.filter == 'FELINE': - col.itemR(tex, "filter_probes", text="Probes") - else: - col.itemR(tex, "filter_eccentricity", text="Eccentricity") - -class TEXTURE_PT_image_mapping(TextureTypePanel): - __label__ = "Image Mapping" - __default_closed__ = True - tex_type = 'IMAGE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "extension") - - split = layout.split() - - if tex.extension == 'REPEAT': - col = split.column(align=True) - col.itemL(text="Repeat:") - col.itemR(tex, "repeat_x", text="X") - col.itemR(tex, "repeat_y", text="Y") - - col = split.column(align=True) - col.itemL(text="Mirror:") - col.itemR(tex, "mirror_x", text="X") - col.itemR(tex, "mirror_y", text="Y") - elif tex.extension == 'CHECKER': - col = split.column(align=True) - row = col.row() - row.itemR(tex, "checker_even", text="Even") - row.itemR(tex, "checker_odd", text="Odd") - - split.itemR(tex, "checker_distance", text="Distance") - - layout.itemS() - - split = layout.split() - - col = split.column(align=True) - #col.itemR(tex, "crop_rectangle") - col.itemL(text="Crop Minimum:") - col.itemR(tex, "crop_min_x", text="X") - col.itemR(tex, "crop_min_y", text="Y") - - col = split.column(align=True) - col.itemL(text="Crop Maximum:") - col.itemR(tex, "crop_max_x", text="X") - col.itemR(tex, "crop_max_y", text="Y") - -class TEXTURE_PT_plugin(TextureTypePanel): - __label__ = "Plugin" - tex_type = 'PLUGIN' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemL(text="Nothing yet") - -class TEXTURE_PT_envmap(TextureTypePanel): - __label__ = "Environment Map" - tex_type = 'ENVIRONMENT_MAP' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemL(text="Nothing yet") - -class TEXTURE_PT_musgrave(TextureTypePanel): - __label__ = "Musgrave" - tex_type = 'MUSGRAVE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "musgrave_type") - - split = layout.split() - - col = split.column() - col.itemR(tex, "highest_dimension", text="Dimension") - col.itemR(tex, "lacunarity") - col.itemR(tex, "octaves") - - col = split.column() - if (tex.musgrave_type in ('HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): - col.itemR(tex, "offset") - if (tex.musgrave_type in ('RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): - col.itemR(tex, "gain") - col.itemR(tex, "noise_intensity", text="Intensity") - - layout.itemL(text="Noise:") - - layout.itemR(tex, "noise_basis", text="Basis") - - row = layout.row() - row.itemR(tex, "noise_size", text="Size") - row.itemR(tex, "nabla") - -class TEXTURE_PT_voronoi(TextureTypePanel): - __label__ = "Voronoi" - tex_type = 'VORONOI' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - split = layout.split() - - col = split.column() - col.itemL(text="Distance Metric:") - col.itemR(tex, "distance_metric", text="") - sub = col.column() - sub.active = tex.distance_metric == 'MINKOVSKY' - sub.itemR(tex, "minkovsky_exponent", text="Exponent") - col.itemL(text="Coloring:") - col.itemR(tex, "coloring", text="") - col.itemR(tex, "noise_intensity", text="Intensity") - - col = split.column(align=True) - col.itemL(text="Feature Weights:") - col.itemR(tex, "weight_1", text="1", slider=True) - col.itemR(tex, "weight_2", text="2", slider=True) - col.itemR(tex, "weight_3", text="3", slider=True) - col.itemR(tex, "weight_4", text="4", slider=True) - - layout.itemL(text="Noise:") - - row = layout.row() - row.itemR(tex, "noise_size", text="Size") - row.itemR(tex, "nabla") - -class TEXTURE_PT_distortednoise(TextureTypePanel): - __label__ = "Distorted Noise" - tex_type = 'DISTORTED_NOISE' - - def draw(self, context): - layout = self.layout - - tex = context.texture - - layout.itemR(tex, "noise_distortion") - layout.itemR(tex, "noise_basis", text="Basis") - - flow = layout.column_flow() - flow.itemR(tex, "distortion", text="Distortion") - flow.itemR(tex, "noise_size", text="Size") - flow.itemR(tex, "nabla") - -class TEXTURE_PT_voxeldata(TextureButtonsPanel): - __label__ = "Voxel Data" - - def poll(self, context): - tex = context.texture - return (tex and tex.type == 'VOXEL_DATA') - - def draw(self, context): - layout = self.layout - - tex = context.texture - vd = tex.voxeldata - - layout.itemR(vd, "file_format") - if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']: - layout.itemR(vd, "source_path") - if vd.file_format == 'RAW_8BIT': - layout.itemR(vd, "resolution") - elif vd.file_format == 'SMOKE': - layout.itemR(vd, "domain_object") - - layout.itemR(vd, "still") - row = layout.row() - row.active = vd.still - row.itemR(vd, "still_frame_number") - - layout.itemR(vd, "interpolation") - layout.itemR(vd, "extension") - layout.itemR(vd, "intensity") - -class TEXTURE_PT_pointdensity(TextureButtonsPanel): - __label__ = "Point Density" - - def poll(self, context): - tex = context.texture - return (tex and tex.type == 'POINT_DENSITY') - - def draw(self, context): - layout = self.layout - - tex = context.texture - pd = tex.pointdensity - - layout.itemR(pd, "point_source", expand=True) - - split = layout.split() - - col = split.column() - if pd.point_source == 'PARTICLE_SYSTEM': - col.itemL(text="Object:") - col.itemR(pd, "object", text="") - - sub = col.column() - sub.enabled = pd.object - if pd.object: - sub.itemL(text="System:") - sub.item_pointerR(pd, "particle_system", pd.object, "particle_systems", text="") - sub.itemL(text="Cache:") - sub.itemR(pd, "particle_cache", text="") - else: - col.itemL(text="Object:") - col.itemR(pd, "object", text="") - col.itemL(text="Cache:") - col.itemR(pd, "vertices_cache", text="") - - col.itemS() - - col.itemL(text="Color Source:") - col.itemR(pd, "color_source", text="") - if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'): - col.itemR(pd, "speed_scale") - if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'): - layout.template_color_ramp(pd, "color_ramp", expand=True) - - col = split.column() - col.itemL() - col.itemR(pd, "radius") - col.itemL(text="Falloff:") - col.itemR(pd, "falloff", text="") - if pd.falloff == 'SOFT': - col.itemR(pd, "falloff_softness") - -class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel): - __label__ = "Turbulence" - - def poll(self, context): - tex = context.texture - return (tex and tex.type == 'POINT_DENSITY') - - def draw_header(self, context): - layout = self.layout - - tex = context.texture - pd = tex.pointdensity - - layout.itemR(pd, "turbulence", text="") - - def draw(self, context): - layout = self.layout - - tex = context.texture - pd = tex.pointdensity - layout.active = pd.turbulence - - split = layout.split() - - col = split.column() - col.itemL(text="Influence:") - col.itemR(pd, "turbulence_influence", text="") - col.itemL(text="Noise Basis:") - col.itemR(pd, "noise_basis", text="") - - col = split.column() - col.itemL() - col.itemR(pd, "turbulence_size") - col.itemR(pd, "turbulence_depth") - col.itemR(pd, "turbulence_strength") - -bpy.types.register(TEXTURE_PT_context_texture) -bpy.types.register(TEXTURE_PT_preview) - -bpy.types.register(TEXTURE_PT_clouds) # Texture Type Panels -bpy.types.register(TEXTURE_PT_wood) -bpy.types.register(TEXTURE_PT_marble) -bpy.types.register(TEXTURE_PT_magic) -bpy.types.register(TEXTURE_PT_blend) -bpy.types.register(TEXTURE_PT_stucci) -bpy.types.register(TEXTURE_PT_image) -bpy.types.register(TEXTURE_PT_image_sampling) -bpy.types.register(TEXTURE_PT_image_mapping) -bpy.types.register(TEXTURE_PT_plugin) -bpy.types.register(TEXTURE_PT_envmap) -bpy.types.register(TEXTURE_PT_musgrave) -bpy.types.register(TEXTURE_PT_voronoi) -bpy.types.register(TEXTURE_PT_distortednoise) -bpy.types.register(TEXTURE_PT_voxeldata) -bpy.types.register(TEXTURE_PT_pointdensity) -bpy.types.register(TEXTURE_PT_pointdensity_turbulence) - -bpy.types.register(TEXTURE_PT_colors) -bpy.types.register(TEXTURE_PT_mapping) -bpy.types.register(TEXTURE_PT_influence) - diff --git a/release/scripts/ui/buttons_world.py b/release/scripts/ui/buttons_world.py deleted file mode 100644 index b64efc1048d..00000000000 --- a/release/scripts/ui/buttons_world.py +++ /dev/null @@ -1,182 +0,0 @@ - -import bpy - -class WorldButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "world" - # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here - - def poll(self, context): - rd = context.scene.render_data - return (context.world) and (not rd.use_game_engine) and (rd.engine in self.COMPAT_ENGINES) - -class WORLD_PT_preview(WorldButtonsPanel): - __label__ = "Preview" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - self.layout.template_preview(context.world) - -class WORLD_PT_context_world(WorldButtonsPanel): - __show_header__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - rd = context.scene.render_data - return (not rd.use_game_engine) and (rd.engine in self.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - scene = context.scene - world = context.world - space = context.space_data - - split = layout.split(percentage=0.65) - - if scene: - split.template_ID(scene, "world", new="world.new") - elif world: - split.template_ID(space, "pin_id") - -class WORLD_PT_world(WorldButtonsPanel): - __label__ = "World" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - world = context.world - - row = layout.row() - row.itemR(world, "paper_sky") - row.itemR(world, "blend_sky") - row.itemR(world, "real_sky") - - row = layout.row() - row.column().itemR(world, "horizon_color") - col = row.column() - col.itemR(world, "zenith_color") - col.active = world.blend_sky - row.column().itemR(world, "ambient_color") - -class WORLD_PT_mist(WorldButtonsPanel): - __label__ = "Mist" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw_header(self, context): - world = context.world - - self.layout.itemR(world.mist, "enabled", text="") - - def draw(self, context): - layout = self.layout - - world = context.world - - layout.active = world.mist.enabled - - flow = layout.column_flow() - flow.itemR(world.mist, "intensity", slider=True) - flow.itemR(world.mist, "start") - flow.itemR(world.mist, "depth") - flow.itemR(world.mist, "height") - - layout.itemR(world.mist, "falloff") - -class WORLD_PT_stars(WorldButtonsPanel): - __label__ = "Stars" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw_header(self, context): - world = context.world - - self.layout.itemR(world.stars, "enabled", text="") - - def draw(self, context): - layout = self.layout - - world = context.world - - layout.active = world.stars.enabled - - flow = layout.column_flow() - flow.itemR(world.stars, "size") - flow.itemR(world.stars, "color_randomization", text="Colors") - flow.itemR(world.stars, "min_distance", text="Min. Dist") - flow.itemR(world.stars, "average_separation", text="Separation") - -class WORLD_PT_ambient_occlusion(WorldButtonsPanel): - __label__ = "Ambient Occlusion" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw_header(self, context): - world = context.world - - self.layout.itemR(world.ambient_occlusion, "enabled", text="") - - def draw(self, context): - layout = self.layout - - ao = context.world.ambient_occlusion - - layout.active = ao.enabled - - layout.itemR(ao, "gather_method", expand=True) - - split = layout.split() - - col = split.column() - col.itemL(text="Attenuation:") - if ao.gather_method == 'RAYTRACE': - col.itemR(ao, "distance") - col.itemR(ao, "falloff") - sub = col.row() - sub.active = ao.falloff - sub.itemR(ao, "falloff_strength", text="Strength") - - if ao.gather_method == 'RAYTRACE': - col = split.column() - - col.itemL(text="Sampling:") - col.itemR(ao, "sample_method", text="") - - sub = col.column() - sub.itemR(ao, "samples") - - if ao.sample_method == 'ADAPTIVE_QMC': - sub.itemR(ao, "threshold") - sub.itemR(ao, "adapt_to_speed", slider=True) - elif ao.sample_method == 'CONSTANT_JITTERED': - sub.itemR(ao, "bias") - - if ao.gather_method == 'APPROXIMATE': - col = split.column() - - col.itemL(text="Sampling:") - col.itemR(ao, "error_tolerance", text="Error") - col.itemR(ao, "pixel_cache") - col.itemR(ao, "correction") - - col = layout.column() - col.itemL(text="Influence:") - - col.row().itemR(ao, "blend_mode", expand=True) - - split = layout.split() - - col = split.column() - col.itemR(ao, "energy") - - col = split.column() - sub = col.split(percentage=0.3) - sub.itemL(text="Color:") - sub.itemR(ao, "color", text="") - -bpy.types.register(WORLD_PT_context_world) -bpy.types.register(WORLD_PT_preview) -bpy.types.register(WORLD_PT_world) -bpy.types.register(WORLD_PT_ambient_occlusion) -bpy.types.register(WORLD_PT_mist) -bpy.types.register(WORLD_PT_stars) diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py new file mode 100644 index 00000000000..f45f7ab6f60 --- /dev/null +++ b/release/scripts/ui/properties_data_armature.py @@ -0,0 +1,209 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.armature + + +class DATA_PT_context_arm(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + arm = context.armature + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif arm: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_skeleton(DataButtonsPanel): + bl_label = "Skeleton" + + def draw(self, context): + layout = self.layout + + ob = context.object + arm = context.armature + space = context.space_data + + layout.itemR(arm, "pose_position", expand=True) + + split = layout.split() + + col = split.column() + col.itemL(text="Layers:") + col.itemR(arm, "layer", text="") + col.itemL(text="Protected Layers:") + col.itemR(arm, "layer_protection", text="") + + col = split.column() + col.itemL(text="Deform:") + col.itemR(arm, "deform_vertexgroups", text="Vertex Groups") + col.itemR(arm, "deform_envelope", text="Envelopes") + col.itemR(arm, "deform_quaternion", text="Quaternion") + col.itemR(arm, "deform_bbone_rest", text="B-Bones Rest") + + +class DATA_PT_display(DataButtonsPanel): + bl_label = "Display" + + def draw(self, context): + layout = self.layout + + arm = context.armature + + layout.row().itemR(arm, "drawtype", expand=True) + + flow = layout.column_flow() + flow.itemR(arm, "draw_names", text="Names") + flow.itemR(arm, "draw_axes", text="Axes") + flow.itemR(arm, "draw_custom_bone_shapes", text="Shapes") + flow.itemR(arm, "draw_group_colors", text="Colors") + flow.itemR(arm, "delay_deform", text="Delay Refresh") + + +class DATA_PT_bone_groups(DataButtonsPanel): + bl_label = "Bone Groups" + + def poll(self, context): + return (context.object and context.object.type == 'ARMATURE' and context.object.pose) + + def draw(self, context): + layout = self.layout + + ob = context.object + pose = ob.pose + + row = layout.row() + row.template_list(pose, "bone_groups", pose, "active_bone_group_index", rows=2) + + col = row.column(align=True) + col.active = (ob.proxy == None) + col.itemO("pose.group_add", icon='ICON_ZOOMIN', text="") + col.itemO("pose.group_remove", icon='ICON_ZOOMOUT', text="") + + group = pose.active_bone_group + if group: + col = layout.column() + col.active = (ob.proxy == None) + col.itemR(group, "name") + + split = layout.split(0.5) + split.active = (ob.proxy == None) + split.itemR(group, "color_set") + if group.color_set: + split.template_triColorSet(group, "colors") + + row = layout.row(align=True) + row.active = (ob.proxy == None) + + row.itemO("pose.group_assign", text="Assign") + row.itemO("pose.group_remove", text="Remove") #row.itemO("pose.bone_group_remove_from", text="Remove") + #row.itemO("object.bone_group_select", text="Select") + #row.itemO("object.bone_group_deselect", text="Deselect") + + +class DATA_PT_paths(DataButtonsPanel): + bl_label = "Paths" + + def draw(self, context): + layout = self.layout + + arm = context.armature + + layout.itemR(arm, "paths_type", expand=True) + + split = layout.split() + + col = split.column() + sub = col.column(align=True) + if (arm.paths_type == 'CURRENT_FRAME'): + sub.itemR(arm, "path_before_current", text="Before") + sub.itemR(arm, "path_after_current", text="After") + elif (arm.paths_type == 'RANGE'): + sub.itemR(arm, "path_start_frame", text="Start") + sub.itemR(arm, "path_end_frame", text="End") + + sub.itemR(arm, "path_size", text="Step") + col.row().itemR(arm, "paths_location", expand=True) + + col = split.column() + col.itemL(text="Display:") + col.itemR(arm, "paths_show_frame_numbers", text="Frame Numbers") + col.itemR(arm, "paths_highlight_keyframes", text="Keyframes") + col.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers") + + layout.itemS() + + row = layout.row() + row.itemO("pose.paths_calculate", text="Calculate Paths") + row.itemO("pose.paths_clear", text="Clear Paths") + + +class DATA_PT_ghost(DataButtonsPanel): + bl_label = "Ghost" + + def draw(self, context): + layout = self.layout + + arm = context.armature + + layout.itemR(arm, "ghost_type", expand=True) + + split = layout.split() + + col = split.column() + + sub = col.column(align=True) + if arm.ghost_type == 'RANGE': + sub.itemR(arm, "ghost_start_frame", text="Start") + sub.itemR(arm, "ghost_end_frame", text="End") + sub.itemR(arm, "ghost_size", text="Step") + elif arm.ghost_type == 'CURRENT_FRAME': + sub.itemR(arm, "ghost_step", text="Range") + sub.itemR(arm, "ghost_size", text="Step") + + col = split.column() + col.itemL(text="Display:") + col.itemR(arm, "ghost_only_selected", text="Selected Only") + +bpy.types.register(DATA_PT_context_arm) +bpy.types.register(DATA_PT_skeleton) +bpy.types.register(DATA_PT_display) +bpy.types.register(DATA_PT_bone_groups) +bpy.types.register(DATA_PT_paths) +bpy.types.register(DATA_PT_ghost) diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py new file mode 100644 index 00000000000..d1dd1163899 --- /dev/null +++ b/release/scripts/ui/properties_data_bone.py @@ -0,0 +1,254 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class BoneButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "bone" + + def poll(self, context): + return (context.bone or context.edit_bone) + + +class BONE_PT_context_bone(BoneButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + bone = context.bone + if not bone: + bone = context.edit_bone + + row = layout.row() + row.itemL(text="", icon='ICON_BONE_DATA') + row.itemR(bone, "name", text="") + + +class BONE_PT_transform(BoneButtonsPanel): + bl_label = "Transform" + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + if not bone: + bone = context.edit_bone + + row = layout.row() + row.column().itemR(bone, "head") + row.column().itemR(bone, "tail") + + col = row.column() + sub = col.column(align=True) + sub.itemL(text="Roll:") + sub.itemR(bone, "roll", text="") + sub.itemL() + sub.itemR(bone, "locked") + + else: + pchan = ob.pose.pose_channels[context.bone.name] + + row = layout.row() + col = row.column() + col.itemR(pchan, "location") + col.active = not (bone.parent and bone.connected) + + col = row.column() + if pchan.rotation_mode == 'QUATERNION': + col.itemR(pchan, "rotation_quaternion", text="Rotation") + elif pchan.rotation_mode == 'AXIS_ANGLE': + #col.itemL(text="Rotation") + #col.itemR(pchan, "rotation_angle", text="Angle") + #col.itemR(pchan, "rotation_axis", text="Axis") + col.itemR(pchan, "rotation_axis_angle", text="Rotation") + else: + col.itemR(pchan, "rotation_euler", text="Rotation") + + row.column().itemR(pchan, "scale") + + layout.itemR(pchan, "rotation_mode") + + +class BONE_PT_transform_locks(BoneButtonsPanel): + bl_label = "Transform Locks" + bl_default_closed = True + + def poll(self, context): + return context.bone + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + pchan = ob.pose.pose_channels[context.bone.name] + + row = layout.row() + col = row.column() + col.itemR(pchan, "lock_location") + col.active = not (bone.parent and bone.connected) + + col = row.column() + if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): + col.itemR(pchan, "lock_rotations_4d", text="Lock Rotation") + if pchan.lock_rotations_4d: + col.itemR(pchan, "lock_rotation_w", text="W") + col.itemR(pchan, "lock_rotation", text="") + else: + col.itemR(pchan, "lock_rotation", text="Rotation") + + row.column().itemR(pchan, "lock_scale") + + +class BONE_PT_relations(BoneButtonsPanel): + bl_label = "Relations" + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + arm = context.armature + + if not bone: + bone = context.edit_bone + pchan = None + else: + pchan = ob.pose.pose_channels[context.bone.name] + + split = layout.split() + + col = split.column() + col.itemL(text="Layers:") + col.itemR(bone, "layer", text="") + + col.itemS() + + if ob and pchan: + col.itemL(text="Bone Group:") + col.item_pointerR(pchan, "bone_group", ob.pose, "bone_groups", text="") + + col = split.column() + col.itemL(text="Parent:") + if context.bone: + col.itemR(bone, "parent", text="") + else: + col.item_pointerR(bone, "parent", arm, "edit_bones", text="") + + sub = col.column() + sub.active = bone.parent != None + sub.itemR(bone, "connected") + sub.itemR(bone, "hinge", text="Inherit Rotation") + sub.itemR(bone, "inherit_scale", text="Inherit Scale") + + +class BONE_PT_display(BoneButtonsPanel): + bl_label = "Display" + + def poll(self, context): + return context.bone + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + arm = context.armature + + if not bone: + bone = context.edit_bone + pchan = None + else: + pchan = ob.pose.pose_channels[context.bone.name] + + if ob and pchan: + + split = layout.split() + + col = split.column() + + col.itemR(bone, "draw_wire", text="Wireframe") + col.itemR(bone, "hidden", text="Hide") + + col = split.column() + + col.itemL(text="Custom Shape:") + col.itemR(pchan, "custom_shape", text="") + + +class BONE_PT_deform(BoneButtonsPanel): + bl_label = "Deform" + bl_default_closed = True + + def draw_header(self, context): + bone = context.bone + + if not bone: + bone = context.edit_bone + + self.layout.itemR(bone, "deform", text="") + + def draw(self, context): + layout = self.layout + + bone = context.bone + + if not bone: + bone = context.edit_bone + + layout.active = bone.deform + + split = layout.split() + + col = split.column() + col.itemL(text="Envelope:") + + sub = col.column(align=True) + sub.itemR(bone, "envelope_distance", text="Distance") + sub.itemR(bone, "envelope_weight", text="Weight") + col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply") + + sub = col.column(align=True) + sub.itemL(text="Radius:") + sub.itemR(bone, "head_radius", text="Head") + sub.itemR(bone, "tail_radius", text="Tail") + + col = split.column() + col.itemL(text="Curved Bones:") + + sub = col.column(align=True) + sub.itemR(bone, "bbone_segments", text="Segments") + sub.itemR(bone, "bbone_in", text="Ease In") + sub.itemR(bone, "bbone_out", text="Ease Out") + + col.itemL(text="Offset:") + col.itemR(bone, "cyclic_offset") + +bpy.types.register(BONE_PT_context_bone) +bpy.types.register(BONE_PT_transform) +bpy.types.register(BONE_PT_transform_locks) +bpy.types.register(BONE_PT_relations) +bpy.types.register(BONE_PT_display) +bpy.types.register(BONE_PT_deform) diff --git a/release/scripts/ui/properties_data_camera.py b/release/scripts/ui/properties_data_camera.py new file mode 100644 index 00000000000..eefd2432186 --- /dev/null +++ b/release/scripts/ui/properties_data_camera.py @@ -0,0 +1,121 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.camera + + +class DATA_PT_context_camera(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + cam = context.camera + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif cam: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_camera(DataButtonsPanel): + bl_label = "Lens" + + def draw(self, context): + layout = self.layout + + cam = context.camera + + layout.itemR(cam, "type", expand=True) + + row = layout.row() + if cam.type == 'PERSP': + if cam.lens_unit == 'MILLIMETERS': + row.itemR(cam, "lens", text="Angle") + elif cam.lens_unit == 'DEGREES': + row.itemR(cam, "angle") + row.itemR(cam, "lens_unit", text="") + + elif cam.type == 'ORTHO': + row.itemR(cam, "ortho_scale") + + layout.itemR(cam, "panorama") + + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Shift:") + col.itemR(cam, "shift_x", text="X") + col.itemR(cam, "shift_y", text="Y") + + col = split.column(align=True) + col.itemL(text="Clipping:") + col.itemR(cam, "clip_start", text="Start") + col.itemR(cam, "clip_end", text="End") + + layout.itemL(text="Depth of Field:") + + row = layout.row() + row.itemR(cam, "dof_object", text="") + row.itemR(cam, "dof_distance", text="Distance") + + +class DATA_PT_camera_display(DataButtonsPanel): + bl_label = "Display" + + def draw(self, context): + layout = self.layout + + cam = context.camera + + split = layout.split() + + col = split.column() + col.itemR(cam, "show_limits", text="Limits") + col.itemR(cam, "show_mist", text="Mist") + col.itemR(cam, "show_title_safe", text="Title Safe") + col.itemR(cam, "show_name", text="Name") + + col = split.column() + col.itemR(cam, "draw_size", text="Size") + col.itemS() + col.itemR(cam, "show_passepartout", text="Passepartout") + sub = col.column() + sub.active = cam.show_passepartout + sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True) + +bpy.types.register(DATA_PT_context_camera) +bpy.types.register(DATA_PT_camera) +bpy.types.register(DATA_PT_camera_display) diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py new file mode 100644 index 00000000000..e2987e0a05c --- /dev/null +++ b/release/scripts/ui/properties_data_curve.py @@ -0,0 +1,250 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return (context.object and context.object.type in ('CURVE', 'SURFACE') and context.curve) + + +class DataButtonsPanelCurve(DataButtonsPanel): + '''Same as above but for curves only''' + + def poll(self, context): + return (context.object and context.object.type == 'CURVE' and context.curve) + + +class DataButtonsPanelActive(DataButtonsPanel): + '''Same as above but for curves only''' + + def poll(self, context): + curve = context.curve + return (curve and curve.active_spline) + + +class DATA_PT_context_curve(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif curve: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_shape_curve(DataButtonsPanel): + bl_label = "Shape" + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + space = context.space_data + is_surf = (ob.type == 'SURFACE') + + if not is_surf: + row = layout.row() + row.itemR(curve, "dimensions", expand=True) + + split = layout.split() + + col = split.column() + + if not is_surf: + sub = col.column() + sub.active = (curve.dimensions == '2D') + sub.itemL(text="Caps:") + row = sub.row() + row.itemR(curve, "front") + row.itemR(curve, "back") + + col.itemL(text="Textures:") +# col.itemR(curve, "uv_orco") + col.itemR(curve, "auto_texspace") + + col = split.column() + col.itemL(text="Resolution:") + sub = col.column(align=True) + sub.itemR(curve, "resolution_u", text="Preview U") + sub.itemR(curve, "render_resolution_u", text="Render U") + + if is_surf: + sub = col.column(align=True) + sub.itemR(curve, "resolution_v", text="Preview V") + sub.itemR(curve, "render_resolution_v", text="Render V") + + # XXX - put somewhere nicer. + row = layout.row() + row.itemR(curve, "twist_mode") + row.itemR(curve, "twist_smooth") # XXX - may not be kept + +# col.itemL(text="Display:") +# col.itemL(text="HANDLES") +# col.itemL(text="NORMALS") +# col.itemR(curve, "vertex_normal_flip") + + +class DATA_PT_geometry_curve(DataButtonsPanel): + bl_label = "Geometry" + + def draw(self, context): + layout = self.layout + + curve = context.curve + + split = layout.split() + + col = split.column() + col.itemL(text="Modification:") + col.itemR(curve, "width") + col.itemR(curve, "extrude") + col.itemL(text="Taper Object:") + col.itemR(curve, "taper_object", text="") + + col = split.column() + col.itemL(text="Bevel:") + col.itemR(curve, "bevel_depth", text="Depth") + col.itemR(curve, "bevel_resolution", text="Resolution") + col.itemL(text="Bevel Object:") + col.itemR(curve, "bevel_object", text="") + + +class DATA_PT_pathanim(DataButtonsPanelCurve): + bl_label = "Path Animation" + + def draw_header(self, context): + curve = context.curve + + self.layout.itemR(curve, "use_path", text="") + + def draw(self, context): + layout = self.layout + + curve = context.curve + + layout.active = curve.use_path + + split = layout.split() + + col = split.column() + col.itemR(curve, "path_length", text="Frames") + col.itemR(curve, "use_path_follow") + + col = split.column() + col.itemR(curve, "use_stretch") + col.itemR(curve, "use_radius") + col.itemR(curve, "use_time_offset", text="Offset Children") + + +class DATA_PT_active_spline(DataButtonsPanelActive): + bl_label = "Active Spline" + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + act_spline = curve.active_spline + is_surf = (ob.type == 'SURFACE') + is_poly = (act_spline.type == 'POLY') + + split = layout.split() + + if is_poly: + # These settings are below but its easier to have + # poly's set aside since they use so few settings + col = split.column() + col.itemL(text="Cyclic:") + col.itemR(act_spline, "smooth") + col = split.column() + col.itemR(act_spline, "cyclic_u", text="U") + + else: + col = split.column() + col.itemL(text="Cyclic:") + if act_spline.type == 'NURBS': + col.itemL(text="Bezier:") + col.itemL(text="Endpoint:") + col.itemL(text="Order:") + + col.itemL(text="Resolution:") + + col = split.column() + col.itemR(act_spline, "cyclic_u", text="U") + + if act_spline.type == 'NURBS': + sub = col.column() + # sub.active = (not act_spline.cyclic_u) + sub.itemR(act_spline, "bezier_u", text="U") + sub.itemR(act_spline, "endpoint_u", text="U") + + sub = col.column() + sub.itemR(act_spline, "order_u", text="U") + col.itemR(act_spline, "resolution_u", text="U") + + if is_surf: + col = split.column() + col.itemR(act_spline, "cyclic_v", text="V") + + # its a surface, assume its a nurb. + sub = col.column() + sub.active = (not act_spline.cyclic_v) + sub.itemR(act_spline, "bezier_v", text="V") + sub.itemR(act_spline, "endpoint_v", text="V") + sub = col.column() + sub.itemR(act_spline, "order_v", text="V") + sub.itemR(act_spline, "resolution_v", text="V") + + + if not is_surf: + split = layout.split() + col = split.column() + col.active = (curve.dimensions == '3D') + + col.itemL(text="Interpolation:") + col.itemR(act_spline, "tilt_interpolation", text="Tilt") + col.itemR(act_spline, "radius_interpolation", text="Radius") + + split = layout.split() + col = split.column() + col.itemR(act_spline, "smooth") + +bpy.types.register(DATA_PT_context_curve) +bpy.types.register(DATA_PT_shape_curve) +bpy.types.register(DATA_PT_geometry_curve) +bpy.types.register(DATA_PT_pathanim) +bpy.types.register(DATA_PT_active_spline) diff --git a/release/scripts/ui/properties_data_empty.py b/release/scripts/ui/properties_data_empty.py new file mode 100644 index 00000000000..3f6c7523b3e --- /dev/null +++ b/release/scripts/ui/properties_data_empty.py @@ -0,0 +1,43 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return (context.object and context.object.type == 'EMPTY') + + +class DATA_PT_empty(DataButtonsPanel): + bl_label = "Empty" + + def draw(self, context): + layout = self.layout + + ob = context.object + + layout.itemR(ob, "empty_draw_type", text="Display") + layout.itemR(ob, "empty_draw_size", text="Size") + +bpy.types.register(DATA_PT_empty) diff --git a/release/scripts/ui/properties_data_lamp.py b/release/scripts/ui/properties_data_lamp.py new file mode 100644 index 00000000000..c7ad5b1c895 --- /dev/null +++ b/release/scripts/ui/properties_data_lamp.py @@ -0,0 +1,340 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.lamp + + +class DATA_PT_preview(DataButtonsPanel): + bl_label = "Preview" + + def draw(self, context): + self.layout.template_preview(context.lamp) + + +class DATA_PT_context_lamp(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + lamp = context.lamp + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif lamp: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_lamp(DataButtonsPanel): + bl_label = "Lamp" + + def draw(self, context): + layout = self.layout + + lamp = context.lamp + + layout.itemR(lamp, "type", expand=True) + + split = layout.split() + + col = split.column() + sub = col.column() + sub.itemR(lamp, "color", text="") + sub.itemR(lamp, "energy") + + if lamp.type in ('POINT', 'SPOT'): + sub.itemL(text="Falloff:") + sub.itemR(lamp, "falloff_type", text="") + sub.itemR(lamp, "distance") + + if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED': + col.itemL(text="Attenuation Factors:") + sub = col.column(align=True) + sub.itemR(lamp, "linear_attenuation", slider=True, text="Linear") + sub.itemR(lamp, "quadratic_attenuation", slider=True, text="Quadratic") + + col.itemR(lamp, "sphere") + + if lamp.type == 'AREA': + col.itemR(lamp, "distance") + col.itemR(lamp, "gamma") + + col = split.column() + col.itemR(lamp, "negative") + col.itemR(lamp, "layer", text="This Layer Only") + col.itemR(lamp, "specular") + col.itemR(lamp, "diffuse") + + +class DATA_PT_sunsky(DataButtonsPanel): + bl_label = "Sky & Atmosphere" + + def poll(self, context): + lamp = context.lamp + return (lamp and lamp.type == 'SUN') + + def draw(self, context): + layout = self.layout + + lamp = context.lamp.sky + + layout.itemR(lamp, "sky") + + row = layout.row() + row.active = lamp.sky or lamp.atmosphere + row.itemR(lamp, "atmosphere_turbidity", text="Turbidity") + + split = layout.split() + + col = split.column() + col.active = lamp.sky + col.itemL(text="Blending:") + sub = col.column() + sub.itemR(lamp, "sky_blend_type", text="") + sub.itemR(lamp, "sky_blend", text="Factor") + + col.itemL(text="Color Space:") + sub = col.column() + sub.row().itemR(lamp, "sky_color_space", expand=True) + sub.itemR(lamp, "sky_exposure", text="Exposure") + + col = split.column() + col.active = lamp.sky + col.itemL(text="Horizon:") + sub = col.column() + sub.itemR(lamp, "horizon_brightness", text="Brightness") + sub.itemR(lamp, "spread", text="Spread") + + col.itemL(text="Sun:") + sub = col.column() + sub.itemR(lamp, "sun_brightness", text="Brightness") + sub.itemR(lamp, "sun_size", text="Size") + sub.itemR(lamp, "backscattered_light", slider=True, text="Back Light") + + layout.itemS() + + layout.itemR(lamp, "atmosphere") + + split = layout.split() + + col = split.column() + col.active = lamp.atmosphere + col.itemL(text="Intensity:") + col.itemR(lamp, "sun_intensity", text="Sun") + col.itemR(lamp, "atmosphere_distance_factor", text="Distance") + + col = split.column() + col.active = lamp.atmosphere + col.itemL(text="Scattering:") + sub = col.column(align=True) + sub.itemR(lamp, "atmosphere_inscattering", slider=True, text="Inscattering") + sub.itemR(lamp, "atmosphere_extinction", slider=True, text="Extinction") + + +class DATA_PT_shadow(DataButtonsPanel): + bl_label = "Shadow" + + def poll(self, context): + lamp = context.lamp + return (lamp and lamp.type in ('POINT', 'SUN', 'SPOT', 'AREA')) + + def draw(self, context): + layout = self.layout + + lamp = context.lamp + + layout.itemR(lamp, "shadow_method", expand=True) + + if lamp.shadow_method != 'NOSHADOW': + split = layout.split() + + col = split.column() + col.itemR(lamp, "shadow_color", text="") + + col = split.column() + col.itemR(lamp, "shadow_layer", text="This Layer Only") + col.itemR(lamp, "only_shadow") + + if lamp.shadow_method == 'RAY_SHADOW': + col = layout.column() + col.itemL(text="Sampling:") + col.row().itemR(lamp, "shadow_ray_sampling_method", expand=True) + + if lamp.type in ('POINT', 'SUN', 'SPOT'): + split = layout.split() + + col = split.column() + col.itemR(lamp, "shadow_soft_size", text="Soft Size") + + col.itemR(lamp, "shadow_ray_samples", text="Samples") + if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': + col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") + col = split.column() + + elif lamp.type == 'AREA': + split = layout.split() + + col = split.column() + sub = split.column(align=True) + if lamp.shape == 'SQUARE': + col.itemR(lamp, "shadow_ray_samples_x", text="Samples") + elif lamp.shape == 'RECTANGLE': + col.itemR(lamp, "shadow_ray_samples_x", text="Samples X") + col.itemR(lamp, "shadow_ray_samples_y", text="Samples Y") + + if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC': + col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold") + + elif lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED': + sub.itemR(lamp, "umbra") + sub.itemR(lamp, "dither") + sub.itemR(lamp, "jitter") + + elif lamp.shadow_method == 'BUFFER_SHADOW': + col = layout.column() + col.itemL(text="Buffer Type:") + col.row().itemR(lamp, "shadow_buffer_type", expand=True) + + if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'): + split = layout.split() + + col = split.column() + col.itemL(text="Filter Type:") + col.itemR(lamp, "shadow_filter_type", text="") + sub = col.column(align=True) + sub.itemR(lamp, "shadow_buffer_soft", text="Soft") + sub.itemR(lamp, "shadow_buffer_bias", text="Bias") + + col = split.column() + col.itemL(text="Sample Buffers:") + col.itemR(lamp, "shadow_sample_buffers", text="") + sub = col.column(align=True) + sub.itemR(lamp, "shadow_buffer_size", text="Size") + sub.itemR(lamp, "shadow_buffer_samples", text="Samples") + if lamp.shadow_buffer_type == 'DEEP': + col.itemR(lamp, "compression_threshold") + + elif lamp.shadow_buffer_type == 'IRREGULAR': + layout.itemR(lamp, "shadow_buffer_bias", text="Bias") + + row = layout.row() + row.itemR(lamp, "auto_clip_start", text="Autoclip Start") + sub = row.row() + sub.active = not lamp.auto_clip_start + sub.itemR(lamp, "shadow_buffer_clip_start", text="Clip Start") + + row = layout.row() + row.itemR(lamp, "auto_clip_end", text="Autoclip End") + sub = row.row() + sub.active = not lamp.auto_clip_end + sub.itemR(lamp, "shadow_buffer_clip_end", text=" Clip End") + + +class DATA_PT_area(DataButtonsPanel): + bl_label = "Area Shape" + + def poll(self, context): + lamp = context.lamp + return (lamp and lamp.type == 'AREA') + + def draw(self, context): + layout = self.layout + + lamp = context.lamp + + split = layout.split() + + col = split.column() + col.row().itemR(lamp, "shape", expand=True) + + sub = col.column(align=True) + if (lamp.shape == 'SQUARE'): + sub.itemR(lamp, "size") + elif (lamp.shape == 'RECTANGLE'): + sub.itemR(lamp, "size", text="Size X") + sub.itemR(lamp, "size_y", text="Size Y") + + +class DATA_PT_spot(DataButtonsPanel): + bl_label = "Spot Shape" + + def poll(self, context): + lamp = context.lamp + return (lamp and lamp.type == 'SPOT') + + def draw(self, context): + layout = self.layout + + lamp = context.lamp + + split = layout.split() + + col = split.column() + sub = col.column() + sub.itemR(lamp, "spot_size", text="Size") + sub.itemR(lamp, "spot_blend", text="Blend", slider=True) + col.itemR(lamp, "square") + + col = split.column() + col.itemR(lamp, "halo") + sub = col.column(align=True) + sub.active = lamp.halo + sub.itemR(lamp, "halo_intensity", text="Intensity") + if lamp.shadow_method == 'BUFFER_SHADOW': + sub.itemR(lamp, "halo_step", text="Step") + + +class DATA_PT_falloff_curve(DataButtonsPanel): + bl_label = "Falloff Curve" + bl_default_closed = True + + def poll(self, context): + lamp = context.lamp + + return (lamp and lamp.type in ('POINT', 'SPOT') and lamp.falloff_type == 'CUSTOM_CURVE') + + def draw(self, context): + lamp = context.lamp + + self.layout.template_curve_mapping(lamp, "falloff_curve") + +bpy.types.register(DATA_PT_context_lamp) +bpy.types.register(DATA_PT_preview) +bpy.types.register(DATA_PT_lamp) +bpy.types.register(DATA_PT_falloff_curve) +bpy.types.register(DATA_PT_area) +bpy.types.register(DATA_PT_spot) +bpy.types.register(DATA_PT_shadow) +bpy.types.register(DATA_PT_sunsky) diff --git a/release/scripts/ui/properties_data_lattice.py b/release/scripts/ui/properties_data_lattice.py new file mode 100644 index 00000000000..3a18a09670a --- /dev/null +++ b/release/scripts/ui/properties_data_lattice.py @@ -0,0 +1,78 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.lattice + + +class DATA_PT_context_lattice(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + lat = context.lattice + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif lat: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_lattice(DataButtonsPanel): + bl_label = "Lattice" + + def draw(self, context): + layout = self.layout + + lat = context.lattice + + row = layout.row() + row.itemR(lat, "points_u") + row.itemR(lat, "interpolation_type_u", expand=True) + + row = layout.row() + row.itemR(lat, "points_v") + row.itemR(lat, "interpolation_type_v", expand=True) + + row = layout.row() + row.itemR(lat, "points_w") + row.itemR(lat, "interpolation_type_w", expand=True) + + row = layout.row() + row.itemO("lattice.make_regular") + row.itemR(lat, "outside") + +bpy.types.register(DATA_PT_context_lattice) +bpy.types.register(DATA_PT_lattice) diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py new file mode 100644 index 00000000000..76d37a5931f --- /dev/null +++ b/release/scripts/ui/properties_data_mesh.py @@ -0,0 +1,276 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.mesh + + +class DATA_PT_context_mesh(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + mesh = context.mesh + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif mesh: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_normals(DataButtonsPanel): + bl_label = "Normals" + + def draw(self, context): + layout = self.layout + + mesh = context.mesh + + split = layout.split() + + col = split.column() + col.itemR(mesh, "autosmooth") + sub = col.column() + sub.active = mesh.autosmooth + sub.itemR(mesh, "autosmooth_angle", text="Angle") + + col = split.column() + col.itemR(mesh, "vertex_normal_flip") + col.itemR(mesh, "double_sided") + + +class DATA_PT_settings(DataButtonsPanel): + bl_label = "Settings" + + def draw(self, context): + layout = self.layout + + mesh = context.mesh + + split = layout.split() + + col = split.column() + col.itemR(mesh, "texture_mesh") + + +class DATA_PT_vertex_groups(DataButtonsPanel): + bl_label = "Vertex Groups" + + def poll(self, context): + return (context.object and context.object.type in ('MESH', 'LATTICE')) + + def draw(self, context): + layout = self.layout + + ob = context.object + group = ob.active_vertex_group + + rows = 2 + if group: + rows = 5 + + row = layout.row() + row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows) + + col = row.column(align=True) + col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="") + col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="") + + col.itemO("object.vertex_group_copy", icon='ICON_COPY_ID', text="") + if ob.data.users > 1: + col.itemO("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="") + + if group: + row = layout.row() + row.itemR(group, "name") + + if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0: + row = layout.row() + + sub = row.row(align=True) + sub.itemO("object.vertex_group_assign", text="Assign") + sub.itemO("object.vertex_group_remove_from", text="Remove") + + sub = row.row(align=True) + sub.itemO("object.vertex_group_select", text="Select") + sub.itemO("object.vertex_group_deselect", text="Deselect") + + layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight") + + +class DATA_PT_shape_keys(DataButtonsPanel): + bl_label = "Shape Keys" + + def poll(self, context): + return (context.object and context.object.type in ('MESH', 'LATTICE', 'CURVE', 'SURFACE')) + + def draw(self, context): + layout = self.layout + + ob = context.object + key = ob.data.shape_keys + kb = ob.active_shape_key + + enable_edit = ob.mode != 'EDIT' + enable_edit_value = False + + if ob.shape_key_lock == False: + if enable_edit or (ob.type == 'MESH' and ob.shape_key_edit_mode): + enable_edit_value = True + + row = layout.row() + + rows = 2 + if kb: + rows = 5 + row.template_list(key, "keys", ob, "active_shape_key_index", rows=rows) + + col = row.column() + + subcol = col.column(align=True) + subcol.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="") + subcol.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="") + + if kb: + col.itemS() + + subcol = col.column(align=True) + subcol.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="") + subcol.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="") + + split = layout.split(percentage=0.4) + sub = split.row() + sub.enabled = enable_edit + sub.itemR(key, "relative") + + sub = split.row() + sub.alignment = 'RIGHT' + + subrow = sub.row(align=True) + subrow1 = subrow.row(align=True) + subrow1.active = enable_edit_value + if ob.shape_key_lock: + subrow1.itemR(ob, "shape_key_lock", icon='ICON_PINNED', text="") + else: + subrow1.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="") + if kb.mute: + subrow1.itemR(kb, "mute", icon='ICON_MUTE_IPO_ON', text="") + else: + subrow1.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="") + subrow.itemR(ob, "shape_key_edit_mode", text="") + + subrow = sub.row(align=True) + subrow.itemO("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="") + subrow.itemO("object.shape_key_clear", icon='ICON_X', text="") + + + row = layout.row() + row.itemR(kb, "name") + + if key.relative: + if ob.active_shape_key_index != 0: + row = layout.row() + row.active = enable_edit_value + row.itemR(kb, "value") + + split = layout.split() + sub = split.column(align=True) + sub.active = enable_edit_value + sub.itemL(text="Range:") + sub.itemR(kb, "slider_min", text="Min") + sub.itemR(kb, "slider_max", text="Max") + + sub = split.column(align=True) + sub.active = enable_edit_value + sub.itemL(text="Blend:") + sub.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="") + sub.item_pointerR(kb, "relative_key", key, "keys", text="") + + else: + row = layout.row() + row.active = enable_edit_value + row.itemR(key, "slurph") + + +class DATA_PT_uv_texture(DataButtonsPanel): + bl_label = "UV Texture" + + def draw(self, context): + layout = self.layout + + me = context.mesh + + row = layout.row() + col = row.column() + + col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2) + + col = row.column(align=True) + col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="") + col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="") + + lay = me.active_uv_texture + if lay: + layout.itemR(lay, "name") + + +class DATA_PT_vertex_colors(DataButtonsPanel): + bl_label = "Vertex Colors" + + def draw(self, context): + layout = self.layout + + me = context.mesh + + row = layout.row() + col = row.column() + + col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2) + + col = row.column(align=True) + col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="") + col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="") + + lay = me.active_vertex_color + if lay: + layout.itemR(lay, "name") + +bpy.types.register(DATA_PT_context_mesh) +bpy.types.register(DATA_PT_normals) +bpy.types.register(DATA_PT_settings) +bpy.types.register(DATA_PT_vertex_groups) +bpy.types.register(DATA_PT_shape_keys) +bpy.types.register(DATA_PT_uv_texture) +bpy.types.register(DATA_PT_vertex_colors) diff --git a/release/scripts/ui/properties_data_metaball.py b/release/scripts/ui/properties_data_metaball.py new file mode 100644 index 00000000000..45330acd8e4 --- /dev/null +++ b/release/scripts/ui/properties_data_metaball.py @@ -0,0 +1,130 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return context.meta_ball + + +class DATA_PT_context_metaball(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + mball = context.meta_ball + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif mball: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_metaball(DataButtonsPanel): + bl_label = "Metaball" + + def draw(self, context): + layout = self.layout + + mball = context.meta_ball + + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + sub = col.column(align=True) + sub.itemR(mball, "wire_size", text="View") + sub.itemR(mball, "render_size", text="Render") + + col = split.column() + col.itemL(text="Settings:") + col.itemR(mball, "threshold", text="Threshold") + + layout.itemL(text="Update:") + layout.itemR(mball, "flag", expand=True) + + +class DATA_PT_metaball_element(DataButtonsPanel): + bl_label = "Active Element" + + def poll(self, context): + return (context.meta_ball and context.meta_ball.active_element) + + def draw(self, context): + layout = self.layout + + metaelem = context.meta_ball.active_element + + split = layout.split(percentage=0.3) + split.itemL(text="Type:") + split.itemR(metaelem, "type", text="") + + split = layout.split() + + col = split.column() + col.itemL(text="Settings:") + col.itemR(metaelem, "stiffness", text="Stiffness") + col.itemR(metaelem, "negative", text="Negative") + col.itemR(metaelem, "hide", text="Hide") + + if metaelem.type == 'BALL': + col = split.column(align=True) + + elif metaelem.type == 'CUBE': + col = split.column(align=True) + col.itemL(text="Size:") + col.itemR(metaelem, "size_x", text="X") + col.itemR(metaelem, "size_y", text="Y") + col.itemR(metaelem, "size_z", text="Z") + + elif metaelem.type == 'TUBE': + col = split.column(align=True) + col.itemL(text="Size:") + col.itemR(metaelem, "size_x", text="X") + + elif metaelem.type == 'PLANE': + col = split.column(align=True) + col.itemL(text="Size:") + col.itemR(metaelem, "size_x", text="X") + col.itemR(metaelem, "size_y", text="Y") + + elif metaelem.type == 'ELLIPSOID': + col = split.column(align=True) + col.itemL(text="Size:") + col.itemR(metaelem, "size_x", text="X") + col.itemR(metaelem, "size_y", text="Y") + col.itemR(metaelem, "size_z", text="Z") + +bpy.types.register(DATA_PT_context_metaball) +bpy.types.register(DATA_PT_metaball) +bpy.types.register(DATA_PT_metaball_element) diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py new file mode 100644 index 00000000000..410fbadec09 --- /dev/null +++ b/release/scripts/ui/properties_data_modifier.py @@ -0,0 +1,469 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "modifier" + + +class DATA_PT_modifiers(DataButtonsPanel): + bl_label = "Modifiers" + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + row.item_menu_enumO("object.modifier_add", "type") + row.itemL() + + for md in ob.modifiers: + box = layout.template_modifier(md) + if box: + # match enum type to our functions, avoids a lookup table. + getattr(self, md.type)(box, ob, md) + + # the mt.type enum is (ab)used for a lookup on function names + # ...to avoid lengthy if statements + # so each type must have a function here. + + def ARMATURE(self, layout, ob, md): + layout.itemR(md, "object") + + split = layout.split(percentage=0.5) + split.itemL(text="Vertex Group:") + sub = split.split(percentage=0.7) + sub.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="") + subsub = sub.row() + subsub.active = md.vertex_group + subsub.itemR(md, "invert") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemL(text="Bind To:") + col.itemR(md, "use_vertex_groups", text="Vertex Groups") + col.itemR(md, "use_bone_envelopes", text="Bone Envelopes") + + col = split.column() + col.itemL(text="Deformation:") + col.itemR(md, "quaternion") + col.itemR(md, "multi_modifier") + + def ARRAY(self, layout, ob, md): + layout.itemR(md, "fit_type") + if md.fit_type == 'FIXED_COUNT': + layout.itemR(md, "count") + elif md.fit_type == 'FIT_LENGTH': + layout.itemR(md, "length") + elif md.fit_type == 'FIT_CURVE': + layout.itemR(md, "curve") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemR(md, "constant_offset") + sub = col.column() + sub.active = md.constant_offset + sub.itemR(md, "constant_offset_displacement", text="") + + col.itemS() + + col.itemR(md, "merge_adjacent_vertices", text="Merge") + sub = col.column() + sub.active = md.merge_adjacent_vertices + sub.itemR(md, "merge_end_vertices", text="First Last") + sub.itemR(md, "merge_distance", text="Distance") + + col = split.column() + col.itemR(md, "relative_offset") + sub = col.column() + sub.active = md.relative_offset + sub.itemR(md, "relative_offset_displacement", text="") + + col.itemS() + + col.itemR(md, "add_offset_object") + sub = col.column() + sub.active = md.add_offset_object + sub.itemR(md, "offset_object", text="") + + layout.itemS() + + col = layout.column() + col.itemR(md, "start_cap") + col.itemR(md, "end_cap") + + def BEVEL(self, layout, ob, md): + row = layout.row() + row.itemR(md, "width") + row.itemR(md, "only_vertices") + + layout.itemL(text="Limit Method:") + layout.row().itemR(md, "limit_method", expand=True) + if md.limit_method == 'ANGLE': + layout.itemR(md, "angle") + elif md.limit_method == 'WEIGHT': + layout.row().itemR(md, "edge_weight_method", expand=True) + + def BOOLEAN(self, layout, ob, md): + layout.itemR(md, "operation") + layout.itemR(md, "object") + + def BUILD(self, layout, ob, md): + split = layout.split() + + col = split.column() + col.itemR(md, "start") + col.itemR(md, "length") + + col = split.column() + col.itemR(md, "randomize") + sub = col.column() + sub.active = md.randomize + sub.itemR(md, "seed") + + def CAST(self, layout, ob, md): + layout.itemR(md, "cast_type") + layout.itemR(md, "object") + if md.object: + layout.itemR(md, "use_transform") + + flow = layout.column_flow() + flow.itemR(md, "x") + flow.itemR(md, "y") + flow.itemR(md, "z") + flow.itemR(md, "factor") + flow.itemR(md, "radius") + flow.itemR(md, "size") + + layout.itemR(md, "from_radius") + + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + + def CLOTH(self, layout, ob, md): + layout.itemL(text="See Cloth panel.") + + def COLLISION(self, layout, ob, md): + layout.itemL(text="See Collision panel.") + + def CURVE(self, layout, ob, md): + layout.itemR(md, "object") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "deform_axis") + + def DECIMATE(self, layout, ob, md): + layout.itemR(md, "ratio") + layout.itemR(md, "face_count") + + def DISPLACE(self, layout, ob, md): + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "texture") + layout.itemR(md, "midlevel") + layout.itemR(md, "strength") + layout.itemR(md, "direction") + layout.itemR(md, "texture_coordinates") + if md.texture_coordinates == 'OBJECT': + layout.itemR(md, "texture_coordinate_object", text="Object") + elif md.texture_coordinates == 'UV' and ob.type == 'MESH': + layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") + + def EDGE_SPLIT(self, layout, ob, md): + split = layout.split() + + col = split.column() + col.itemR(md, "use_edge_angle", text="Edge Angle") + sub = col.column() + sub.active = md.use_edge_angle + sub.itemR(md, "split_angle") + + col = split.column() + col.itemR(md, "use_sharp", text="Sharp Edges") + + def EXPLODE(self, layout, ob, md): + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "protect") + + flow = layout.column_flow(2) + flow.itemR(md, "split_edges") + flow.itemR(md, "unborn") + flow.itemR(md, "alive") + flow.itemR(md, "dead") + + layout.itemO("object.explode_refresh", text="Refresh") + + def FLUID_SIMULATION(self, layout, ob, md): + layout.itemL(text="See Fluid panel.") + + def HOOK(self, layout, ob, md): + col = layout.column() + col.itemR(md, "object") + if md.object and md.object.type == 'ARMATURE': + layout.item_pointerR(md, "subtarget", md.object.data, "bones", text="Bone") + + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + + split = layout.split() + split.itemR(md, "falloff") + split.itemR(md, "force", slider=True) + + layout.itemS() + + row = layout.row() + row.itemO("object.hook_reset", text="Reset") + row.itemO("object.hook_recenter", text="Recenter") + + if ob.mode == 'EDIT': + row = layout.row() + row.itemO("object.hook_select", text="Select") + row.itemO("object.hook_assign", text="Assign") + + def LATTICE(self, layout, ob, md): + layout.itemR(md, "object") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + + def MASK(self, layout, ob, md): + layout.itemR(md, "mode") + if md.mode == 'ARMATURE': + layout.itemR(md, "armature") + elif md.mode == 'VERTEX_GROUP': + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "inverse") + + def MESH_DEFORM(self, layout, ob, md): + layout.itemR(md, "object") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "invert") + + layout.itemS() + + if md.is_bound: + layout.itemO("object.meshdeform_bind", text="Unbind") + else: + layout.itemO("object.meshdeform_bind", text="Bind") + row = layout.row() + row.itemR(md, "precision") + row.itemR(md, "dynamic") + + def MIRROR(self, layout, ob, md): + layout.itemR(md, "merge_limit") + split = layout.split() + + col = split.column() + col.itemR(md, "x") + col.itemR(md, "y") + col.itemR(md, "z") + + col = split.column() + col.itemL(text="Textures:") + col.itemR(md, "mirror_u") + col.itemR(md, "mirror_v") + + col = split.column() + col.itemR(md, "clip", text="Do Clipping") + col.itemR(md, "mirror_vertex_groups", text="Vertex Group") + + layout.itemR(md, "mirror_object") + + def MULTIRES(self, layout, ob, md): + layout.itemR(md, "subdivision_type") + + row = layout.row() + row.itemO("object.multires_subdivide", text="Subdivide") + row.itemO("object.multires_higher_levels_delete", text="Delete Higher") + + layout.itemR(md, "level") + + def PARTICLE_INSTANCE(self, layout, ob, md): + layout.itemR(md, "object") + layout.itemR(md, "particle_system_number") + + flow = layout.column_flow() + flow.itemR(md, "normal") + flow.itemR(md, "children") + flow.itemR(md, "size") + flow.itemR(md, "path") + if md.path: + flow.itemR(md, "keep_shape") + flow.itemR(md, "unborn") + flow.itemR(md, "alive") + flow.itemR(md, "dead") + flow.itemL(md, "") + if md.path: + flow.itemR(md, "axis", text="") + + if md.path: + row = layout.row() + row.itemR(md, "position", slider=True) + row.itemR(md, "random_position", text="Random", slider=True) + + def PARTICLE_SYSTEM(self, layout, ob, md): + layout.itemL(text="See Particle panel.") + + def SHRINKWRAP(self, layout, ob, md): + layout.itemR(md, "target") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "offset") + layout.itemR(md, "subsurf_levels") + layout.itemR(md, "mode") + if md.mode == 'PROJECT': + layout.itemR(md, "subsurf_levels") + layout.itemR(md, "auxiliary_target") + + row = layout.row() + row.itemR(md, "x") + row.itemR(md, "y") + row.itemR(md, "z") + + flow = layout.column_flow() + flow.itemR(md, "negative") + flow.itemR(md, "positive") + flow.itemR(md, "cull_front_faces") + flow.itemR(md, "cull_back_faces") + elif md.mode == 'NEAREST_SURFACEPOINT': + layout.itemR(md, "keep_above_surface") + + def SIMPLE_DEFORM(self, layout, ob, md): + layout.itemR(md, "mode") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "origin") + layout.itemR(md, "relative") + layout.itemR(md, "factor") + layout.itemR(md, "limits") + if md.mode in ('TAPER', 'STRETCH'): + layout.itemR(md, "lock_x_axis") + layout.itemR(md, "lock_y_axis") + + def SMOKE(self, layout, ob, md): + layout.itemL(text="See Smoke panel.") + + def SMOOTH(self, layout, ob, md): + split = layout.split() + + col = split.column() + col.itemR(md, "x") + col.itemR(md, "y") + col.itemR(md, "z") + + col = split.column() + col.itemR(md, "factor") + col.itemR(md, "repeat") + + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + + def SOFT_BODY(self, layout, ob, md): + layout.itemL(text="See Soft Body panel.") + + def SUBSURF(self, layout, ob, md): + layout.row().itemR(md, "subdivision_type", expand=True) + + flow = layout.column_flow() + flow.itemR(md, "levels", text="Preview") + flow.itemR(md, "render_levels", text="Render") + flow.itemR(md, "optimal_draw", text="Optimal Display") + flow.itemR(md, "subsurf_uv") + + def SURFACE(self, layout, ob, md): + layout.itemL(text="See Fields panel.") + + def UV_PROJECT(self, layout, ob, md): + if ob.type == 'MESH': + layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") + layout.itemR(md, "image") + layout.itemR(md, "override_image") + + split = layout.split() + + col = split.column() + col.itemL(text="Aspect Ratio:") + + sub = col.column(align=True) + sub.itemR(md, "horizontal_aspect_ratio", text="Horizontal") + sub.itemR(md, "vertical_aspect_ratio", text="Vertical") + + col = split.column() + col.itemL(text="Projectors:") + + sub = col.column(align=True) + sub.itemR(md, "num_projectors", text="Number") + for proj in md.projectors: + sub.itemR(proj, "object", text="") + + def WAVE(self, layout, ob, md): + split = layout.split() + + col = split.column() + col.itemL(text="Motion:") + col.itemR(md, "x") + col.itemR(md, "y") + col.itemR(md, "cyclic") + + col = split.column() + col.itemR(md, "normals") + sub = col.column() + sub.active = md.normals + sub.itemR(md, "x_normal", text="X") + sub.itemR(md, "y_normal", text="Y") + sub.itemR(md, "z_normal", text="Z") + + split = layout.split() + + col = split.column() + col.itemL(text="Time:") + sub = col.column(align=True) + sub.itemR(md, "time_offset", text="Offset") + sub.itemR(md, "lifetime", text="Life") + col.itemR(md, "damping_time", text="Damping") + + col = split.column() + col.itemL(text="Position:") + sub = col.column(align=True) + sub.itemR(md, "start_position_x", text="X") + sub.itemR(md, "start_position_y", text="Y") + col.itemR(md, "falloff_radius", text="Falloff") + + layout.itemS() + + layout.itemR(md, "start_position_object") + layout.item_pointerR(md, "vertex_group", ob, "vertex_groups") + layout.itemR(md, "texture") + layout.itemR(md, "texture_coordinates") + if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH': + layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures") + elif md.texture_coordinates == 'OBJECT': + layout.itemR(md, "texture_coordinates_object") + + layout.itemS() + + flow = layout.column_flow() + flow.itemR(md, "speed", slider=True) + flow.itemR(md, "height", slider=True) + flow.itemR(md, "width", slider=True) + flow.itemR(md, "narrowness", slider=True) + +bpy.types.register(DATA_PT_modifiers) diff --git a/release/scripts/ui/properties_data_text.py b/release/scripts/ui/properties_data_text.py new file mode 100644 index 00000000000..b622264569f --- /dev/null +++ b/release/scripts/ui/properties_data_text.py @@ -0,0 +1,205 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class DataButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "data" + + def poll(self, context): + return (context.object and context.object.type == 'TEXT' and context.curve) + + +class DATA_PT_context_text(DataButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + space = context.space_data + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "data") + split.itemS() + elif curve: + split.template_ID(space, "pin_id") + split.itemS() + + +class DATA_PT_shape_text(DataButtonsPanel): + bl_label = "Shape Text" + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + space = context.space_data + + split = layout.split() + + col = split.column() + col.itemL(text="Caps:") + row = col.row() + row .itemR(curve, "front") + row .itemR(curve, "back") + # col = split.column() + col.itemL(text="Textures:") + col.itemR(curve, "uv_orco") + col.itemR(curve, "auto_texspace") + + col = split.column() + col.itemL(text="Resolution:") + sub = col.column(align=True) + sub.itemR(curve, "resolution_u", text="Preview") + sub.itemR(curve, "render_resolution_u", text="Render") + + # resolution_v is not used for text + + sub = col.column(align=True) + col.itemL(text="Display:") + col.itemR(curve, "fast", text="Fast Editing") + + +class DATA_PT_geometry_text(DataButtonsPanel): + bl_label = "Geometry" + + def draw(self, context): + layout = self.layout + + curve = context.curve + + split = layout.split() + + col = split.column() + col.itemL(text="Modification:") + col.itemR(curve, "width") + col.itemR(curve, "extrude") + col.itemL(text="Taper Object:") + col.itemR(curve, "taper_object", text="") + + col = split.column() + col.itemL(text="Bevel:") + col.itemR(curve, "bevel_depth", text="Depth") + col.itemR(curve, "bevel_resolution", text="Resolution") + col.itemL(text="Bevel Object:") + col.itemR(curve, "bevel_object", text="") + + +class DATA_PT_font(DataButtonsPanel): + bl_label = "Font" + + def draw(self, context): + layout = self.layout + + text = context.curve + char = context.curve.edit_format + + layout.itemR(text, "font") + + row = layout.row() + row.itemR(text, "text_size", text="Size") + row.itemR(text, "shear") + + split = layout.split() + + col = split.column() + col.itemL(text="Object Font:") + col.itemR(text, "family", text="") + + col = split.column() + col.itemL(text="Text on Curve:") + col.itemR(text, "text_on_curve", text="") + + split = layout.split() + + col = split.column() + col.itemL(text="Character:") + col.itemR(char, "bold") + col.itemR(char, "italic") + col.itemR(char, "underline") +# col.itemR(char, "style") +# col.itemR(char, "wrap") + + col = split.column(align=True) + col.itemL(text="Underline:") + col.itemR(text, "ul_position", text="Position") + col.itemR(text, "ul_height", text="Thickness") + + +class DATA_PT_paragraph(DataButtonsPanel): + bl_label = "Paragraph" + + def draw(self, context): + layout = self.layout + + text = context.curve + + layout.itemL(text="Align:") + layout.itemR(text, "spacemode", expand=True) + + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Spacing:") + col.itemR(text, "spacing", text="Character") + col.itemR(text, "word_spacing", text="Word") + col.itemR(text, "line_dist", text="Line") + + col = split.column(align=True) + col.itemL(text="Offset:") + col.itemR(text, "offset_x", text="X") + col.itemR(text, "offset_y", text="Y") + + +class DATA_PT_textboxes(DataButtonsPanel): + bl_label = "Text Boxes" + + def draw(self, context): + layout = self.layout + + text = context.curve + + for box in text.textboxes: + split = layout.box().split() + + col = split.column(align=True) + col.itemL(text="Dimensions:") + col.itemR(box, "width", text="Width") + col.itemR(box, "height", text="Height") + + col = split.column(align=True) + col.itemL(text="Offset:") + col.itemR(box, "x", text="X") + col.itemR(box, "y", text="Y") + +bpy.types.register(DATA_PT_context_text) +bpy.types.register(DATA_PT_shape_text) +bpy.types.register(DATA_PT_geometry_text) +bpy.types.register(DATA_PT_font) +bpy.types.register(DATA_PT_paragraph) +bpy.types.register(DATA_PT_textboxes) diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py new file mode 100644 index 00000000000..b445585507d --- /dev/null +++ b/release/scripts/ui/properties_game.py @@ -0,0 +1,449 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class PhysicsButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + ob = context.active_object + rd = context.scene.render_data + return ob and ob.game and (rd.engine == 'BLENDER_GAME') + + +class PHYSICS_PT_game_physics(PhysicsButtonsPanel): + bl_label = "Physics" + + def draw(self, context): + layout = self.layout + + ob = context.active_object + game = ob.game + soft = ob.game.soft_body + + layout.itemR(game, "physics_type") + layout.itemS() + + #if game.physics_type == 'DYNAMIC': + if game.physics_type in ('DYNAMIC', 'RIGID_BODY'): + split = layout.split() + + col = split.column() + col.itemR(game, "actor") + col.itemR(game, "ghost") + col.itemR(ob, "restrict_render", text="Invisible") # out of place but useful + + col = split.column() + col.itemR(game, "material_physics") + col.itemR(game, "rotate_from_normal") + col.itemR(game, "no_sleeping") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemL(text="Attributes:") + col.itemR(game, "mass") + col.itemR(game, "radius") + col.itemR(game, "form_factor") + + col = split.column() + sub = col.column() + sub.active = (game.physics_type == 'RIGID_BODY') + sub.itemR(game, "anisotropic_friction") + subsub = sub.column() + subsub.active = game.anisotropic_friction + subsub.itemR(game, "friction_coefficients", text="", slider=True) + + split = layout.split() + + col = split.column() + col.itemL(text="Velocity:") + sub = col.column(align=True) + sub.itemR(game, "minimum_velocity", text="Minimum") + sub.itemR(game, "maximum_velocity", text="Maximum") + + col = split.column() + col.itemL(text="Damping:") + sub = col.column(align=True) + sub.itemR(game, "damping", text="Translation", slider=True) + sub.itemR(game, "rotation_damping", text="Rotation", slider=True) + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemL(text="Lock Translation:") + col.itemR(game, "lock_x_axis", text="X") + col.itemR(game, "lock_y_axis", text="Y") + col.itemR(game, "lock_z_axis", text="Z") + + col = split.column() + col.itemL(text="Lock Rotation:") + col.itemR(game, "lock_x_rot_axis", text="X") + col.itemR(game, "lock_y_rot_axis", text="Y") + col.itemR(game, "lock_z_rot_axis", text="Z") + + elif game.physics_type == 'SOFT_BODY': + col = layout.column() + col.itemR(game, "actor") + col.itemR(game, "ghost") + col.itemR(ob, "restrict_render", text="Invisible") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemL(text="Attributes:") + col.itemR(game, "mass") + col.itemR(soft, "welding") + col.itemR(soft, "position_iterations") + col.itemR(soft, "linstiff", slider=True) + col.itemR(soft, "dynamic_friction", slider=True) + col.itemR(soft, "margin", slider=True) + col.itemR(soft, "bending_const", text="Bending Constraints") + + col = split.column() + col.itemR(soft, "shape_match") + sub = col.column() + sub.active = soft.shape_match + sub.itemR(soft, "threshold", slider=True) + + col.itemS() + + col.itemL(text="Cluster Collision:") + col.itemR(soft, "cluster_rigid_to_softbody") + col.itemR(soft, "cluster_soft_to_softbody") + sub = col.column() + sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody) + sub.itemR(soft, "cluster_iterations", text="Iterations") + + elif game.physics_type == 'STATIC': + col = layout.column() + col.itemR(game, "actor") + col.itemR(game, "ghost") + col.itemR(ob, "restrict_render", text="Invisible") + + elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'): + layout.itemR(ob, "restrict_render", text="Invisible") + + +class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel): + bl_label = "Collision Bounds" + + def poll(self, context): + game = context.object.game + rd = context.scene.render_data + return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine == 'BLENDER_GAME') + + def draw_header(self, context): + game = context.active_object.game + + self.layout.itemR(game, "use_collision_bounds", text="") + + def draw(self, context): + layout = self.layout + + game = context.active_object.game + + layout.active = game.use_collision_bounds + layout.itemR(game, "collision_bounds", text="Bounds") + + row = layout.row() + row.itemR(game, "collision_compound", text="Compound") + row.itemR(game, "collision_margin", text="Margin", slider=True) + +bpy.types.register(PHYSICS_PT_game_physics) +bpy.types.register(PHYSICS_PT_game_collision_bounds) + + +class RenderButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "render" + + def poll(self, context): + rd = context.scene.render_data + return (rd.engine == 'BLENDER_GAME') + + +class RENDER_PT_game(RenderButtonsPanel): + bl_label = "Game" + + def draw(self, context): + layout = self.layout + + row = layout.row() + row.itemO("view3d.game_start", text="Start") + row.itemL() + + +class RENDER_PT_game_player(RenderButtonsPanel): + bl_label = "Standalone Player" + + def draw(self, context): + layout = self.layout + + gs = context.scene.game_data + + layout.itemR(gs, "fullscreen") + + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + sub = col.column(align=True) + sub.itemR(gs, "resolution_x", slider=False, text="X") + sub.itemR(gs, "resolution_y", slider=False, text="Y") + + col = split.column() + col.itemL(text="Quality:") + sub = col.column(align=True) + sub.itemR(gs, "depth", text="Bit Depth", slider=False) + sub.itemR(gs, "frequency", text="FPS", slider=False) + + # framing: + col = layout.column() + col.itemL(text="Framing:") + col.row().itemR(gs, "framing_type", expand=True) + if gs.framing_type == 'LETTERBOX': + col.itemR(gs, "framing_color", text="") + + +class RENDER_PT_game_stereo(RenderButtonsPanel): + bl_label = "Stereo" + + def draw(self, context): + layout = self.layout + + gs = context.scene.game_data + stereo_mode = gs.stereo + + # stereo options: + layout.itemR(gs, "stereo", expand=True) + + # stereo: + if stereo_mode == 'STEREO': + layout.itemR(gs, "stereo_mode") + layout.itemL(text="To do: Focal Length") + layout.itemL(text="To do: Eye Separation") + + # dome: + elif stereo_mode == 'DOME': + layout.itemR(gs, "dome_mode", text="Dome Type") + + dome_type = gs.dome_mode + + split = layout.split() + + if dome_type == 'FISHEYE' or \ + dome_type == 'TRUNCATED_REAR' or \ + dome_type == 'TRUNCATED_FRONT': + + col = split.column() + col.itemR(gs, "dome_angle", slider=True) + col.itemR(gs, "dome_tilt") + + col = split.column() + col.itemR(gs, "dome_tesselation", text="Tesselation") + col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) + + elif dome_type == 'PANORAM_SPH': + col = split.column() + col.itemR(gs, "dome_tesselation", text="Tesselation") + col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) + + else: # cube map + col = split.column() + col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True) + + layout.itemR(gs, "dome_text") + + +class RENDER_PT_game_shading(RenderButtonsPanel): + bl_label = "Shading" + + def draw(self, context): + layout = self.layout + + gs = context.scene.game_data + layout.itemR(gs, "material_mode", expand=True) + + if gs.material_mode == 'GLSL': + split = layout.split() + + col = split.column() + col.itemR(gs, "glsl_lights", text="Lights") + col.itemR(gs, "glsl_shaders", text="Shaders") + col.itemR(gs, "glsl_shadows", text="Shadows") + + col = split.column() + col.itemR(gs, "glsl_ramps", text="Ramps") + col.itemR(gs, "glsl_nodes", text="Nodes") + col.itemR(gs, "glsl_extra_textures", text="Extra Textures") + + +class RENDER_PT_game_performance(RenderButtonsPanel): + bl_label = "Performance" + + def draw(self, context): + layout = self.layout + + gs = context.scene.game_data + + split = layout.split() + + col = split.column() + col.itemL(text="Show:") + col.itemR(gs, "show_debug_properties", text="Debug Properties") + col.itemR(gs, "show_framerate_profile", text="Framerate and Profile") + col.itemR(gs, "show_physics_visualization", text="Physics Visualization") + col.itemR(gs, "deprecation_warnings") + + col = split.column() + col.itemL(text="Render:") + col.itemR(gs, "all_frames") + col.itemR(gs, "display_lists") + + +class RENDER_PT_game_sound(RenderButtonsPanel): + bl_label = "Sound" + + def draw(self, context): + layout = self.layout + + scene = context.scene + + layout.itemR(scene, "distance_model") + layout.itemR(scene, "speed_of_sound", text="Speed") + layout.itemR(scene, "doppler_factor") + +bpy.types.register(RENDER_PT_game) +bpy.types.register(RENDER_PT_game_player) +bpy.types.register(RENDER_PT_game_stereo) +bpy.types.register(RENDER_PT_game_shading) +bpy.types.register(RENDER_PT_game_performance) +bpy.types.register(RENDER_PT_game_sound) + + +class WorldButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "world" + + def poll(self, context): + rd = context.scene.render_data + return (rd.engine == 'BLENDER_GAME') + + +class WORLD_PT_game_context_world(WorldButtonsPanel): + bl_label = "" + bl_show_header = False + + def poll(self, context): + rd = context.scene.render_data + return (context.scene) and (rd.use_game_engine) + + def draw(self, context): + layout = self.layout + + scene = context.scene + world = context.world + space = context.space_data + + split = layout.split(percentage=0.65) + + if scene: + split.template_ID(scene, "world", new="world.new") + elif world: + split.template_ID(space, "pin_id") + + +class WORLD_PT_game_world(WorldButtonsPanel): + bl_label = "World" + + def draw(self, context): + layout = self.layout + + world = context.world + + row = layout.row() + row.column().itemR(world, "horizon_color") + row.column().itemR(world, "ambient_color") + + layout.itemR(world.mist, "enabled", text="Mist") + + row = layout.column_flow() + row.active = world.mist.enabled + row.itemR(world.mist, "start") + row.itemR(world.mist, "depth") + + +class WORLD_PT_game_physics(WorldButtonsPanel): + bl_label = "Physics" + + def draw(self, context): + layout = self.layout + + gs = context.scene.game_data + + layout.itemR(gs, "physics_engine") + if gs.physics_engine != 'NONE': + layout.itemR(gs, "physics_gravity", text="Gravity") + + split = layout.split() + + col = split.column() + col.itemL(text="Physics Steps:") + sub = col.column(align=True) + sub.itemR(gs, "physics_step_max", text="Max") + sub.itemR(gs, "physics_step_sub", text="Substeps") + col.itemR(gs, "fps", text="FPS") + + col = split.column() + col.itemL(text="Logic Steps:") + col.itemR(gs, "logic_step_max", text="Max") + + col = layout.column() + col.itemR(gs, "use_occlusion_culling", text="Occlusion Culling") + sub = col.column() + sub.active = gs.use_occlusion_culling + sub.itemR(gs, "occlusion_culling_resolution", text="Resolution") + + else: + split = layout.split() + + col = split.column() + col.itemL(text="Physics Steps:") + col.itemR(gs, "fps", text="FPS") + + col = split.column() + col.itemL(text="Logic Steps:") + col.itemR(gs, "logic_step_max", text="Max") + +bpy.types.register(WORLD_PT_game_context_world) +bpy.types.register(WORLD_PT_game_world) +bpy.types.register(WORLD_PT_game_physics) diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py new file mode 100644 index 00000000000..67d9cea0934 --- /dev/null +++ b/release/scripts/ui/properties_material.py @@ -0,0 +1,789 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +def active_node_mat(mat): + # TODO, 2.4x has a pipeline section, for 2.5 we need to communicate + # which settings from node-materials are used + if mat: + mat_node = mat.active_node_material + if mat_node: + return mat_node + else: + return mat + + return None + + +class MaterialButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "material" + # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here + + def poll(self, context): + mat = context.material + engine = context.scene.render_data.engine + return mat and (engine in self.COMPAT_ENGINES) + + +class MATERIAL_PT_preview(MaterialButtonsPanel): + bl_label = "Preview" + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def draw(self, context): + self.layout.template_preview(context.material) + + +class MATERIAL_PT_context_material(MaterialButtonsPanel): + bl_label = "" + bl_show_header = False + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + # An exception, dont call the parent poll func because + # this manages materials for all engine types + + engine = context.scene.render_data.engine + return (context.material or context.object) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = context.material + ob = context.object + slot = context.material_slot + space = context.space_data + + if ob: + row = layout.row() + + row.template_list(ob, "materials", ob, "active_material_index", rows=2) + + col = row.column(align=True) + col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="") + col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") + col.itemO("object.material_slot_copy", icon='ICON_COPY_ID', text="") + + if ob.mode == 'EDIT': + row = layout.row(align=True) + row.itemO("object.material_slot_assign", text="Assign") + row.itemO("object.material_slot_select", text="Select") + row.itemO("object.material_slot_deselect", text="Deselect") + + split = layout.split(percentage=0.65) + + if ob: + split.template_ID(ob, "active_material", new="material.new") + row = split.row() + if slot: + row.itemR(slot, "link", text="") + else: + row.itemL() + elif mat: + split.template_ID(space, "pin_id") + split.itemS() + + if mat: + layout.itemR(mat, "type", expand=True) + + +class MATERIAL_PT_shading(MaterialButtonsPanel): + bl_label = "Shading" + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + if mat.type in ('SURFACE', 'WIRE'): + split = layout.split() + + col = split.column() + sub = col.column() + sub.active = not mat.shadeless + sub.itemR(mat, "emit") + sub.itemR(mat, "ambient") + sub = col.column() + sub.itemR(mat, "translucency") + + col = split.column() + col.itemR(mat, "shadeless") + sub = col.column() + sub.active = not mat.shadeless + sub.itemR(mat, "tangent_shading") + sub.itemR(mat, "cubic") + + elif mat.type == 'HALO': + layout.itemR(mat, "alpha") + + +class MATERIAL_PT_strand(MaterialButtonsPanel): + bl_label = "Strand" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = context.material + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = context.material # dont use node material + tan = mat.strand + + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Size:") + col.itemR(tan, "root_size", text="Root") + col.itemR(tan, "tip_size", text="Tip") + col.itemR(tan, "min_size", text="Minimum") + col.itemR(tan, "blender_units") + sub = col.column() + sub.active = (not mat.shadeless) + sub.itemR(tan, "tangent_shading") + col.itemR(tan, "shape") + + col = split.column() + col.itemL(text="Shading:") + col.itemR(tan, "width_fade") + ob = context.object + if ob and ob.type == 'MESH': + col.item_pointerR(tan, "uv_layer", ob.data, "uv_textures", text="") + else: + col.itemR(tan, "uv_layer", text="") + col.itemS() + sub = col.column() + sub.active = (not mat.shadeless) + sub.itemR(tan, "surface_diffuse") + sub = col.column() + sub.active = tan.surface_diffuse + sub.itemR(tan, "blend_distance", text="Distance") + + +class MATERIAL_PT_physics(MaterialButtonsPanel): + bl_label = "Physics" + COMPAT_ENGINES = set(['BLENDER_GAME']) + + def draw(self, context): + layout = self.layout + + phys = context.material.physics # dont use node material + + split = layout.split() + + col = split.column() + col.itemR(phys, "distance") + col.itemR(phys, "friction") + col.itemR(phys, "align_to_normal") + + col = split.column() + col.itemR(phys, "force", slider=True) + col.itemR(phys, "elasticity", slider=True) + col.itemR(phys, "damp", slider=True) + + +class MATERIAL_PT_options(MaterialButtonsPanel): + bl_label = "Options" + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + split = layout.split() + + col = split.column() + col.itemR(mat, "traceable") + col.itemR(mat, "full_oversampling") + col.itemR(mat, "sky") + col.itemR(mat, "exclude_mist") + col.itemR(mat, "invert_z") + sub = col.row() + sub.itemR(mat, "z_offset") + sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY' + sub = col.column(align=True) + sub.itemL(text="Light Group:") + sub.itemR(mat, "light_group", text="") + row = sub.row() + row.active = mat.light_group + row.itemR(mat, "light_group_exclusive", text="Exclusive") + + col = split.column() + col.itemR(mat, "face_texture") + sub = col.column() + sub.active = mat.face_texture + sub.itemR(mat, "face_texture_alpha") + col.itemS() + col.itemR(mat, "vertex_color_paint") + col.itemR(mat, "vertex_color_light") + col.itemR(mat, "object_color") + + +class MATERIAL_PT_shadow(MaterialButtonsPanel): + bl_label = "Shadow" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + split = layout.split() + + col = split.column() + col.itemR(mat, "shadows", text="Receive") + col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent") + col.itemR(mat, "only_shadow", text="Shadows Only") + col.itemR(mat, "cast_shadows_only", text="Cast Only") + col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha") + + col = split.column() + col.itemR(mat, "cast_buffer_shadows") + sub = col.column() + sub.active = mat.cast_buffer_shadows + sub.itemR(mat, "shadow_buffer_bias", text="Buffer Bias") + col.itemR(mat, "ray_shadow_bias", text="Auto Ray Bias") + sub = col.column() + sub.active = (not mat.ray_shadow_bias) + sub.itemR(mat, "shadow_ray_bias", text="Ray Bias") + + +class MATERIAL_PT_diffuse(MaterialButtonsPanel): + bl_label = "Diffuse" + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + split = layout.split() + + col = split.column() + col.itemR(mat, "diffuse_color", text="") + sub = col.column() + sub.active = (not mat.shadeless) + sub.itemR(mat, "diffuse_intensity", text="Intensity") + + col = split.column() + col.active = (not mat.shadeless) + col.itemR(mat, "diffuse_shader", text="") + col.itemR(mat, "use_diffuse_ramp", text="Ramp") + + col = layout.column() + col.active = (not mat.shadeless) + if mat.diffuse_shader == 'OREN_NAYAR': + col.itemR(mat, "roughness") + elif mat.diffuse_shader == 'MINNAERT': + col.itemR(mat, "darkness") + elif mat.diffuse_shader == 'TOON': + row = col.row() + row.itemR(mat, "diffuse_toon_size", text="Size") + row.itemR(mat, "diffuse_toon_smooth", text="Smooth") + elif mat.diffuse_shader == 'FRESNEL': + row = col.row() + row.itemR(mat, "diffuse_fresnel", text="Fresnel") + row.itemR(mat, "diffuse_fresnel_factor", text="Factor") + + if mat.use_diffuse_ramp: + layout.itemS() + layout.template_color_ramp(mat, "diffuse_ramp", expand=True) + layout.itemS() + row = layout.row() + split = row.split(percentage=0.3) + split.itemL(text="Input:") + split.itemR(mat, "diffuse_ramp_input", text="") + split = row.split(percentage=0.3) + split.itemL(text="Blend:") + split.itemR(mat, "diffuse_ramp_blend", text="") + row = layout.row() + row.itemR(mat, "diffuse_ramp_factor", text="Factor") + + +class MATERIAL_PT_specular(MaterialButtonsPanel): + bl_label = "Specular" + COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + + layout.active = (not mat.shadeless) + + split = layout.split() + + col = split.column() + col.itemR(mat, "specular_color", text="") + col.itemR(mat, "specular_intensity", text="Intensity") + + col = split.column() + col.itemR(mat, "specular_shader", text="") + col.itemR(mat, "use_specular_ramp", text="Ramp") + + col = layout.column() + if mat.specular_shader in ('COOKTORR', 'PHONG'): + col.itemR(mat, "specular_hardness", text="Hardness") + elif mat.specular_shader == 'BLINN': + row = col.row() + row.itemR(mat, "specular_hardness", text="Hardness") + row.itemR(mat, "specular_ior", text="IOR") + elif mat.specular_shader == 'WARDISO': + col.itemR(mat, "specular_slope", text="Slope") + elif mat.specular_shader == 'TOON': + row = col.row() + row.itemR(mat, "specular_toon_size", text="Size") + row.itemR(mat, "specular_toon_smooth", text="Smooth") + + if mat.use_specular_ramp: + layout.itemS() + layout.template_color_ramp(mat, "specular_ramp", expand=True) + layout.itemS() + row = layout.row() + split = row.split(percentage=0.3) + split.itemL(text="Input:") + split.itemR(mat, "specular_ramp_input", text="") + split = row.split(percentage=0.3) + split.itemL(text="Blend:") + split.itemR(mat, "specular_ramp_blend", text="") + row = layout.row() + row.itemR(mat, "specular_ramp_factor", text="Factor") + + +class MATERIAL_PT_sss(MaterialButtonsPanel): + bl_label = "Subsurface Scattering" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw_header(self, context): + mat = active_node_mat(context.material) + sss = mat.subsurface_scattering + + self.layout.active = (not mat.shadeless) + self.layout.itemR(sss, "enabled", text="") + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + sss = mat.subsurface_scattering + + layout.active = sss.enabled + + split = layout.split() + split.active = (not mat.shadeless) + + col = split.column() + col.itemR(sss, "ior") + col.itemR(sss, "scale") + col.itemR(sss, "color", text="") + col.itemR(sss, "radius", text="RGB Radius") + + col = split.column() + sub = col.column(align=True) + sub.itemL(text="Blend:") + sub.itemR(sss, "color_factor", text="Color") + sub.itemR(sss, "texture_factor", text="Texture") + sub.itemL(text="Scattering Weight:") + sub.itemR(sss, "front") + sub.itemR(sss, "back") + col.itemS() + col.itemR(sss, "error_tolerance", text="Error") + + +class MATERIAL_PT_mirror(MaterialButtonsPanel): + bl_label = "Mirror" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw_header(self, context): + raym = active_node_mat(context.material).raytrace_mirror + + self.layout.itemR(raym, "enabled", text="") + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + raym = mat.raytrace_mirror + + layout.active = raym.enabled + + split = layout.split() + + col = split.column() + col.itemR(raym, "reflect_factor") + col.itemR(mat, "mirror_color", text="") + + col = split.column() + col.itemR(raym, "fresnel") + sub = col.column() + sub.active = raym.fresnel > 0 + sub.itemR(raym, "fresnel_factor", text="Blend") + + split = layout.split() + + col = split.column() + col.itemS() + col.itemR(raym, "distance", text="Max Dist") + col.itemR(raym, "depth") + col.itemS() + sub = col.split(percentage=0.4) + sub.itemL(text="Fade To:") + sub.itemR(raym, "fade_to", text="") + + col = split.column() + col.itemL(text="Gloss:") + col.itemR(raym, "gloss_factor", text="Amount") + sub = col.column() + sub.active = raym.gloss_factor < 1.0 + sub.itemR(raym, "gloss_threshold", text="Threshold") + sub.itemR(raym, "gloss_samples", text="Samples") + sub.itemR(raym, "gloss_anisotropic", text="Anisotropic") + + +class MATERIAL_PT_transp(MaterialButtonsPanel): + bl_label = "Transparency" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = active_node_mat(context.material) + engine = context.scene.render_data.engine + return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + + def draw_header(self, context): + mat = active_node_mat(context.material) + + self.layout.itemR(mat, "transparency", text="") + + def draw(self, context): + layout = self.layout + + mat = active_node_mat(context.material) + rayt = mat.raytrace_transparency + + row = layout.row() + row.active = mat.transparency and (not mat.shadeless) + row.itemR(mat, "transparency_method", expand=True) + + split = layout.split() + + col = split.column() + col.itemR(mat, "alpha") + row = col.row() + row.active = mat.transparency and (not mat.shadeless) + row.itemR(mat, "specular_alpha", text="Specular") + + col = split.column() + col.active = (not mat.shadeless) + col.itemR(rayt, "fresnel") + sub = col.column() + sub.active = rayt.fresnel > 0 + sub.itemR(rayt, "fresnel_factor", text="Blend") + + if mat.transparency_method == 'RAYTRACE': + layout.itemS() + split = layout.split() + split.active = mat.transparency + + col = split.column() + col.itemR(rayt, "ior") + col.itemR(rayt, "filter") + col.itemR(rayt, "falloff") + col.itemR(rayt, "limit") + col.itemR(rayt, "depth") + + col = split.column() + col.itemL(text="Gloss:") + col.itemR(rayt, "gloss_factor", text="Amount") + sub = col.column() + sub.active = rayt.gloss_factor < 1.0 + sub.itemR(rayt, "gloss_threshold", text="Threshold") + sub.itemR(rayt, "gloss_samples", text="Samples") + + +class MATERIAL_PT_halo(MaterialButtonsPanel): + bl_label = "Halo" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = context.material + engine = context.scene.render_data.engine + return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + mat = context.material # dont use node material + halo = mat.halo + + split = layout.split() + + col = split.column() + col.itemR(mat, "diffuse_color", text="") + col.itemR(halo, "size") + col.itemR(halo, "hardness") + col.itemR(halo, "add") + col.itemL(text="Options:") + col.itemR(halo, "texture") + col.itemR(halo, "vertex_normal") + col.itemR(halo, "xalpha") + col.itemR(halo, "shaded") + col.itemR(halo, "soft") + + col = split.column() + col.itemR(halo, "ring") + sub = col.column() + sub.active = halo.ring + sub.itemR(halo, "rings") + sub.itemR(mat, "mirror_color", text="") + col.itemS() + col.itemR(halo, "lines") + sub = col.column() + sub.active = halo.lines + sub.itemR(halo, "line_number", text="Lines") + sub.itemR(mat, "specular_color", text="") + col.itemS() + col.itemR(halo, "star") + sub = col.column() + sub.active = halo.star + sub.itemR(halo, "star_tips") + + +class MATERIAL_PT_flare(MaterialButtonsPanel): + bl_label = "Flare" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + mat = context.material + engine = context.scene.render_data.engine + return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) + + def draw_header(self, context): + halo = context.material.halo + + self.layout.itemR(halo, "flare_mode", text="") + + def draw(self, context): + layout = self.layout + + mat = context.material # dont use node material + halo = mat.halo + + layout.active = halo.flare_mode + + split = layout.split() + + col = split.column() + col.itemR(halo, "flare_size", text="Size") + col.itemR(halo, "flare_boost", text="Boost") + col.itemR(halo, "flare_seed", text="Seed") + col = split.column() + col.itemR(halo, "flares_sub", text="Subflares") + col.itemR(halo, "flare_subsize", text="Subsize") + +bpy.types.register(MATERIAL_PT_context_material) +bpy.types.register(MATERIAL_PT_preview) +bpy.types.register(MATERIAL_PT_diffuse) +bpy.types.register(MATERIAL_PT_specular) +bpy.types.register(MATERIAL_PT_shading) +bpy.types.register(MATERIAL_PT_transp) +bpy.types.register(MATERIAL_PT_mirror) +bpy.types.register(MATERIAL_PT_sss) +bpy.types.register(MATERIAL_PT_halo) +bpy.types.register(MATERIAL_PT_flare) +bpy.types.register(MATERIAL_PT_physics) +bpy.types.register(MATERIAL_PT_strand) +bpy.types.register(MATERIAL_PT_options) +bpy.types.register(MATERIAL_PT_shadow) + + +class VolumeButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "material" + + def poll(self, context): + mat = context.material + engine = context.scene.render_data.engine + return mat and (mat.type == 'VOLUME') and (engine in self.COMPAT_ENGINES) + + +class MATERIAL_PT_volume_density(VolumeButtonsPanel): + bl_label = "Density" + bl_default_closed = False + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + vol = context.material.volume # dont use node material + + split = layout.split() + row = split.row() + row.itemR(vol, "density") + row.itemR(vol, "density_scale") + + +class MATERIAL_PT_volume_shading(VolumeButtonsPanel): + bl_label = "Shading" + bl_default_closed = False + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + vol = context.material.volume # dont use node material + + split = layout.split() + + col = split.column() + col.itemR(vol, "scattering") + col.itemR(vol, "asymmetry") + col.itemR(vol, "transmission_color") + + col = split.column() + sub = col.column(align=True) + sub.itemR(vol, "emission") + sub.itemR(vol, "emission_color", text="") + sub = col.column(align=True) + sub.itemR(vol, "reflection") + sub.itemR(vol, "reflection_color", text="") + + +class MATERIAL_PT_volume_lighting(VolumeButtonsPanel): + bl_label = "Lighting" + bl_default_closed = False + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + vol = context.material.volume # dont use node material + + split = layout.split() + + col = split.column() + col.itemR(vol, "lighting_mode", text="") + + col = split.column() + + if vol.lighting_mode == 'SHADED': + col.itemR(vol, "external_shadows") + col.itemR(vol, "light_cache") + sub = col.column() + sub.active = vol.light_cache + sub.itemR(vol, "cache_resolution") + elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'): + sub = col.column() + sub.enabled = True + sub.active = False + sub.itemR(vol, "light_cache") + col.itemR(vol, "cache_resolution") + + sub = col.column(align=True) + sub.itemR(vol, "ms_diffusion") + sub.itemR(vol, "ms_spread") + sub.itemR(vol, "ms_intensity") + + +class MATERIAL_PT_volume_transp(VolumeButtonsPanel): + bl_label = "Transparency" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + mat = context.material # dont use node material + + layout.itemR(mat, "transparency_method", expand=True) + + +class MATERIAL_PT_volume_integration(VolumeButtonsPanel): + bl_label = "Integration" + bl_default_closed = False + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + vol = context.material.volume # dont use node material + + split = layout.split() + + col = split.column() + col.itemL(text="Step Calculation:") + col.itemR(vol, "step_calculation", text="") + col = col.column(align=True) + col.itemR(vol, "step_size") + + col = split.column() + col.itemL() + col.itemR(vol, "depth_cutoff") + +bpy.types.register(MATERIAL_PT_volume_density) +bpy.types.register(MATERIAL_PT_volume_shading) +bpy.types.register(MATERIAL_PT_volume_lighting) +bpy.types.register(MATERIAL_PT_volume_transp) +bpy.types.register(MATERIAL_PT_volume_integration) diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py new file mode 100644 index 00000000000..fe1458a080a --- /dev/null +++ b/release/scripts/ui/properties_object.py @@ -0,0 +1,253 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class ObjectButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "object" + + +class OBJECT_PT_context_object(ObjectButtonsPanel): + bl_label = "" + bl_show_header = False + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + row.itemL(text="", icon='ICON_OBJECT_DATA') + row.itemR(ob, "name", text="") + + +class OBJECT_PT_transform(ObjectButtonsPanel): + bl_label = "Transform" + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + + row.column().itemR(ob, "location") + if ob.rotation_mode == 'QUATERNION': + row.column().itemR(ob, "rotation_quaternion", text="Rotation") + elif ob.rotation_mode == 'AXIS_ANGLE': + #row.column().itemL(text="Rotation") + #row.column().itemR(pchan, "rotation_angle", text="Angle") + #row.column().itemR(pchan, "rotation_axis", text="Axis") + row.column().itemR(ob, "rotation_axis_angle", text="Rotation") + else: + row.column().itemR(ob, "rotation_euler", text="Rotation") + + row.column().itemR(ob, "scale") + + layout.itemR(ob, "rotation_mode") + + +class OBJECT_PT_transform_locks(ObjectButtonsPanel): + bl_label = "Transform Locks" + bl_default_closed = True + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + + col = row.column() + col.itemR(ob, "lock_location") + + col = row.column() + if ob.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'): + col.itemR(ob, "lock_rotations_4d", text="Lock Rotation") + if ob.lock_rotations_4d: + col.itemR(ob, "lock_rotation_w", text="W") + col.itemR(ob, "lock_rotation", text="") + else: + col.itemR(ob, "lock_rotation", text="Rotation") + + row.column().itemR(ob, "lock_scale") + + +class OBJECT_PT_relations(ObjectButtonsPanel): + bl_label = "Relations" + + def draw(self, context): + layout = self.layout + + ob = context.object + + split = layout.split() + + col = split.column() + col.itemR(ob, "layers") + col.itemS() + col.itemR(ob, "pass_index") + + col = split.column() + col.itemL(text="Parent:") + col.itemR(ob, "parent", text="") + + sub = col.column() + split = sub.split(percentage=0.3) + split.itemL(text="Type:") + split.itemR(ob, "parent_type", text="") + parent = ob.parent + if parent and ob.parent_type == 'BONE' and parent.type == 'ARMATURE': + sub.item_pointerR(ob, "parent_bone", parent.data, "bones", text="") + sub.active = parent != None + + +class OBJECT_PT_groups(ObjectButtonsPanel): + bl_label = "Groups" + + def draw(self, context): + layout = self.layout + + ob = context.object + + split = layout.split() + split.item_menu_enumO("object.group_add", "group", text="Add to Group") + split.itemL() + + for group in bpy.data.groups: + if ob.name in group.objects: + col = layout.column(align=True) + + col.set_context_pointer("group", group) + + row = col.box().row() + row.itemR(group, "name", text="") + row.itemO("object.group_remove", text="", icon='VICON_X') + + split = col.box().split() + split.column().itemR(group, "layer", text="Dupli") + split.column().itemR(group, "dupli_offset", text="") + + +class OBJECT_PT_display(ObjectButtonsPanel): + bl_label = "Display" + + def draw(self, context): + layout = self.layout + + ob = context.object + + split = layout.split() + col = split.column() + col.itemR(ob, "max_draw_type", text="Type") + col = split.column() + row = col.row() + row.itemR(ob, "draw_bounds", text="Bounds") + sub = row.row() + sub.active = ob.draw_bounds + sub.itemR(ob, "draw_bounds_type", text="") + + flow = layout.column_flow() + flow.itemR(ob, "draw_name", text="Name") + flow.itemR(ob, "draw_axis", text="Axis") + flow.itemR(ob, "draw_wire", text="Wire") + flow.itemR(ob, "draw_texture_space", text="Texture Space") + flow.itemR(ob, "x_ray", text="X-Ray") + flow.itemR(ob, "draw_transparent", text="Transparency") + + +class OBJECT_PT_duplication(ObjectButtonsPanel): + bl_label = "Duplication" + + def draw(self, context): + layout = self.layout + + ob = context.object + + layout.itemR(ob, "dupli_type", expand=True) + + if ob.dupli_type == 'FRAMES': + split = layout.split() + + col = split.column(align=True) + col.itemR(ob, "dupli_frames_start", text="Start") + col.itemR(ob, "dupli_frames_end", text="End") + + col = split.column(align=True) + col.itemR(ob, "dupli_frames_on", text="On") + col.itemR(ob, "dupli_frames_off", text="Off") + + layout.itemR(ob, "dupli_frames_no_speed", text="No Speed") + + elif ob.dupli_type == 'VERTS': + layout.itemR(ob, "dupli_verts_rotation", text="Rotation") + + elif ob.dupli_type == 'FACES': + row = layout.row() + row.itemR(ob, "dupli_faces_scale", text="Scale") + row.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale") + + elif ob.dupli_type == 'GROUP': + layout.itemR(ob, "dupli_group", text="Group") + + +class OBJECT_PT_animation(ObjectButtonsPanel): + bl_label = "Animation" + + def draw(self, context): + layout = self.layout + + ob = context.object + + split = layout.split() + + col = split.column() + col.itemL(text="Time Offset:") + col.itemR(ob, "time_offset_edit", text="Edit") + row = col.row() + row.itemR(ob, "time_offset_particle", text="Particle") + row.active = len(ob.particle_systems) != 0 + row = col.row() + row.itemR(ob, "time_offset_parent", text="Parent") + row.active = ob.parent != None + row = col.row() + row.itemR(ob, "slow_parent") + row.active = ob.parent != None + col.itemR(ob, "time_offset", text="Offset") + + col = split.column() + col.itemL(text="Track:") + col.itemR(ob, "track", text="") + col.itemR(ob, "track_axis", text="Axis") + col.itemR(ob, "up_axis", text="Up Axis") + row = col.row() + row.itemR(ob, "track_override_parent", text="Override Parent") + row.active = ob.parent != None + +bpy.types.register(OBJECT_PT_context_object) +bpy.types.register(OBJECT_PT_transform) +bpy.types.register(OBJECT_PT_transform_locks) +bpy.types.register(OBJECT_PT_relations) +bpy.types.register(OBJECT_PT_groups) +bpy.types.register(OBJECT_PT_display) +bpy.types.register(OBJECT_PT_duplication) +bpy.types.register(OBJECT_PT_animation) diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py new file mode 100644 index 00000000000..e6c68c081f3 --- /dev/null +++ b/release/scripts/ui/properties_object_constraint.py @@ -0,0 +1,790 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class ConstraintButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "constraint" + + def draw_constraint(self, context, con): + layout = self.layout + + box = layout.template_constraint(con) + + if box: + # match enum type to our functions, avoids a lookup table. + getattr(self, con.type)(context, box, con) + + # show/key buttons here are most likely obsolete now, with + # keyframing functionality being part of every button + if con.type not in ('RIGID_BODY_JOINT', 'SPLINE_IK', 'NULL'): + box.itemR(con, "influence") + + def space_template(self, layout, con, target=True, owner=True): + if target or owner: + row = layout.row() + + row.itemL(text="Convert:") + + if target: + row.itemR(con, "target_space", text="") + + if target and owner: + row.itemL(icon='ICON_ARROW_LEFTRIGHT') + + if owner: + row.itemR(con, "owner_space", text="") + + def target_template(self, layout, con, subtargets=True): + layout.itemR(con, "target") # XXX limiting settings for only 'curves' or some type of object + + if con.target and subtargets: + if con.target.type == 'ARMATURE': + layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="Bone") + + if con.type == 'COPY_LOCATION': + row = layout.row() + row.itemL(text="Head/Tail:") + row.itemR(con, "head_tail", text="") + elif con.target.type in ('MESH', 'LATTICE'): + layout.item_pointerR(con, "subtarget", con.target, "vertex_groups", text="Vertex Group") + + def ik_template(self, layout, con): + # only used for iTaSC + layout.itemR(con, "pole_target") + + if con.pole_target and con.pole_target.type == 'ARMATURE': + layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") + + if con.pole_target: + row = layout.row() + row.itemL() + row.itemR(con, "pole_angle") + + split = layout.split(percentage=0.33) + col = split.column() + col.itemR(con, "tail") + col.itemR(con, "stretch") + + col = split.column() + col.itemR(con, "chain_length") + col.itemR(con, "targetless") + + def CHILD_OF(self, context, layout, con): + self.target_template(layout, con) + + split = layout.split() + + col = split.column() + col.itemL(text="Location:") + col.itemR(con, "locationx", text="X") + col.itemR(con, "locationy", text="Y") + col.itemR(con, "locationz", text="Z") + + col = split.column() + col.itemL(text="Rotation:") + col.itemR(con, "rotationx", text="X") + col.itemR(con, "rotationy", text="Y") + col.itemR(con, "rotationz", text="Z") + + col = split.column() + col.itemL(text="Scale:") + col.itemR(con, "sizex", text="X") + col.itemR(con, "sizey", text="Y") + col.itemR(con, "sizez", text="Z") + + row = layout.row() + row.itemO("constraint.childof_set_inverse") + row.itemO("constraint.childof_clear_inverse") + + def TRACK_TO(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemL(text="To:") + row.itemR(con, "track", expand=True) + + row = layout.row() + #row.itemR(con, "up", text="Up", expand=True) # XXX: up and expand don't play nice together + row.itemR(con, "up", text="Up") + row.itemR(con, "target_z") + + self.space_template(layout, con) + + def IK(self, context, layout, con): + if context.object.pose.ik_solver == "ITASC": + layout.itemR(con, "ik_type") + getattr(self, "IK_" + con.ik_type)(context, layout, con) + else: + # Legacy IK constraint + self.target_template(layout, con) + layout.itemR(con, "pole_target") + + if con.pole_target and con.pole_target.type == 'ARMATURE': + layout.item_pointerR(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone") + + if con.pole_target: + row = layout.row() + row.itemL() + row.itemR(con, "pole_angle") + + split = layout.split() + col = split.column() + col.itemR(con, "tail") + col.itemR(con, "stretch") + + col = split.column() + col.itemR(con, "iterations") + col.itemR(con, "chain_length") + + split = layout.split() + col = split.column() + col.itemL() + col.itemR(con, "targetless") + col.itemR(con, "rotation") + + col = split.column() + col.itemL(text="Weight:") + col.itemR(con, "weight", text="Position", slider=True) + sub = col.column() + sub.active = con.rotation + sub.itemR(con, "orient_weight", text="Rotation", slider=True) + + def IK_COPY_POSE(self, context, layout, con): + self.target_template(layout, con) + self.ik_template(layout, con) + + row = layout.row() + row.itemL(text="Axis Ref:") + row.itemR(con, "axis_reference", expand=True) + split = layout.split(percentage=0.33) + split.row().itemR(con, "position") + row = split.row() + row.itemR(con, "weight", text="Weight", slider=True) + row.active = con.position + split = layout.split(percentage=0.33) + row = split.row() + row.itemL(text="Lock:") + row = split.row() + row.itemR(con, "pos_lock_x", text="X") + row.itemR(con, "pos_lock_y", text="Y") + row.itemR(con, "pos_lock_z", text="Z") + split.active = con.position + + split = layout.split(percentage=0.33) + split.row().itemR(con, "rotation") + row = split.row() + row.itemR(con, "orient_weight", text="Weight", slider=True) + row.active = con.rotation + split = layout.split(percentage=0.33) + row = split.row() + row.itemL(text="Lock:") + row = split.row() + row.itemR(con, "rot_lock_x", text="X") + row.itemR(con, "rot_lock_y", text="Y") + row.itemR(con, "rot_lock_z", text="Z") + split.active = con.rotation + + def IK_DISTANCE(self, context, layout, con): + self.target_template(layout, con) + self.ik_template(layout, con) + + layout.itemR(con, "limit_mode") + row = layout.row() + row.itemR(con, "weight", text="Weight", slider=True) + row.itemR(con, "distance", text="Distance", slider=True) + + def FOLLOW_PATH(self, context, layout, con): + self.target_template(layout, con) + + split = layout.split() + + col = split.column() + col.itemR(con, "use_curve_follow") + col.itemR(con, "use_curve_radius") + + col = split.column() + col.itemR(con, "use_fixed_position") + if con.use_fixed_position: + col.itemR(con, "offset_factor", text="Offset") + else: + col.itemR(con, "offset") + + row = layout.row() + row.itemL(text="Forward:") + row.itemR(con, "forward", expand=True) + + row = layout.row() + row.itemR(con, "up", text="Up") + row.itemL() + + def LIMIT_ROTATION(self, context, layout, con): + + split = layout.split() + + col = split.column() + col.itemR(con, "use_limit_x") + sub = col.column() + sub.active = con.use_limit_x + sub.itemR(con, "minimum_x", text="Min") + sub.itemR(con, "maximum_x", text="Max") + + col = split.column() + col.itemR(con, "use_limit_y") + sub = col.column() + sub.active = con.use_limit_y + sub.itemR(con, "minimum_y", text="Min") + sub.itemR(con, "maximum_y", text="Max") + + col = split.column() + col.itemR(con, "use_limit_z") + sub = col.column() + sub.active = con.use_limit_z + sub.itemR(con, "minimum_z", text="Min") + sub.itemR(con, "maximum_z", text="Max") + + row = layout.row() + row.itemR(con, "limit_transform") + row.itemL() + + row = layout.row() + row.itemL(text="Convert:") + row.itemR(con, "owner_space", text="") + + def LIMIT_LOCATION(self, context, layout, con): + split = layout.split() + + col = split.column() + col.itemR(con, "use_minimum_x") + sub = col.column() + sub.active = con.use_minimum_x + sub.itemR(con, "minimum_x", text="") + col.itemR(con, "use_maximum_x") + sub = col.column() + sub.active = con.use_maximum_x + sub.itemR(con, "maximum_x", text="") + + col = split.column() + col.itemR(con, "use_minimum_y") + sub = col.column() + sub.active = con.use_minimum_y + sub.itemR(con, "minimum_y", text="") + col.itemR(con, "use_maximum_y") + sub = col.column() + sub.active = con.use_maximum_y + sub.itemR(con, "maximum_y", text="") + + col = split.column() + col.itemR(con, "use_minimum_z") + sub = col.column() + sub.active = con.use_minimum_z + sub.itemR(con, "minimum_z", text="") + col.itemR(con, "use_maximum_z") + sub = col.column() + sub.active = con.use_maximum_z + sub.itemR(con, "maximum_z", text="") + + row = layout.row() + row.itemR(con, "limit_transform") + row.itemL() + + row = layout.row() + row.itemL(text="Convert:") + row.itemR(con, "owner_space", text="") + + def LIMIT_SCALE(self, context, layout, con): + split = layout.split() + + col = split.column() + col.itemR(con, "use_minimum_x") + sub = col.column() + sub.active = con.use_minimum_x + sub.itemR(con, "minimum_x", text="") + col.itemR(con, "use_maximum_x") + sub = col.column() + sub.active = con.use_maximum_x + sub.itemR(con, "maximum_x", text="") + + col = split.column() + col.itemR(con, "use_minimum_y") + sub = col.column() + sub.active = con.use_minimum_y + sub.itemR(con, "minimum_y", text="") + col.itemR(con, "use_maximum_y") + sub = col.column() + sub.active = con.use_maximum_y + sub.itemR(con, "maximum_y", text="") + + col = split.column() + col.itemR(con, "use_minimum_z") + sub = col.column() + sub.active = con.use_minimum_z + sub.itemR(con, "minimum_z", text="") + col.itemR(con, "use_maximum_z") + sub = col.column() + sub.active = con.use_maximum_z + sub.itemR(con, "maximum_z", text="") + + row = layout.row() + row.itemR(con, "limit_transform") + row.itemL() + + row = layout.row() + row.itemL(text="Convert:") + row.itemR(con, "owner_space", text="") + + def COPY_ROTATION(self, context, layout, con): + self.target_template(layout, con) + + split = layout.split() + + col = split.column() + col.itemR(con, "rotate_like_x", text="X") + sub = col.column() + sub.active = con.rotate_like_x + sub.itemR(con, "invert_x", text="Invert") + + col = split.column() + col.itemR(con, "rotate_like_y", text="Y") + sub = col.column() + sub.active = con.rotate_like_y + sub.itemR(con, "invert_y", text="Invert") + + col = split.column() + col.itemR(con, "rotate_like_z", text="Z") + sub = col.column() + sub.active = con.rotate_like_z + sub.itemR(con, "invert_z", text="Invert") + + layout.itemR(con, "offset") + + self.space_template(layout, con) + + def COPY_LOCATION(self, context, layout, con): + self.target_template(layout, con) + + split = layout.split() + + col = split.column() + col.itemR(con, "locate_like_x", text="X") + sub = col.column() + sub.active = con.locate_like_x + sub.itemR(con, "invert_x", text="Invert") + + col = split.column() + col.itemR(con, "locate_like_y", text="Y") + sub = col.column() + sub.active = con.locate_like_y + sub.itemR(con, "invert_y", text="Invert") + + col = split.column() + col.itemR(con, "locate_like_z", text="Z") + sub = col.column() + sub.active = con.locate_like_z + sub.itemR(con, "invert_z", text="Invert") + + layout.itemR(con, "offset") + + self.space_template(layout, con) + + def COPY_SCALE(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row(align=True) + row.itemR(con, "size_like_x", text="X") + row.itemR(con, "size_like_y", text="Y") + row.itemR(con, "size_like_z", text="Z") + + layout.itemR(con, "offset") + + self.space_template(layout, con) + + #def SCRIPT(self, context, layout, con): + + def ACTION(self, context, layout, con): + self.target_template(layout, con) + + layout.itemR(con, "action") + layout.itemR(con, "transform_channel") + + split = layout.split() + + col = split.column(align=True) + col.itemR(con, "start_frame", text="Start") + col.itemR(con, "end_frame", text="End") + + col = split.column(align=True) + col.itemR(con, "minimum", text="Min") + col.itemR(con, "maximum", text="Max") + + row = layout.row() + row.itemL(text="Convert:") + row.itemR(con, "target_space", text="") + + def LOCKED_TRACK(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemL(text="To:") + row.itemR(con, "track", expand=True) + + row = layout.row() + row.itemL(text="Lock:") + row.itemR(con, "locked", expand=True) + + def LIMIT_DISTANCE(self, context, layout, con): + self.target_template(layout, con) + + col = layout.column(align=True) + col.itemR(con, "distance") + col.itemO("constraint.limitdistance_reset") + + row = layout.row() + row.itemL(text="Clamp Region:") + row.itemR(con, "limit_mode", text="") + + def STRETCH_TO(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemR(con, "original_length", text="Rest Length") + row.itemO("constraint.stretchto_reset", text="Reset") + + col = layout.column() + col.itemR(con, "bulge", text="Volume Variation") + + row = layout.row() + row.itemL(text="Volume:") + row.itemR(con, "volume", expand=True) + row.itemL(text="Plane:") + row.itemR(con, "keep_axis", expand=True) + + def FLOOR(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemR(con, "sticky") + row.itemR(con, "use_rotation") + + layout.itemR(con, "offset") + + row = layout.row() + row.itemL(text="Min/Max:") + row.itemR(con, "floor_location", expand=True) + + def RIGID_BODY_JOINT(self, context, layout, con): + self.target_template(layout, con) + + layout.itemR(con, "pivot_type") + layout.itemR(con, "child") + + row = layout.row() + row.itemR(con, "disable_linked_collision", text="No Collision") + row.itemR(con, "draw_pivot", text="Display Pivot") + + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Pivot:") + col.itemR(con, "pivot_x", text="X") + col.itemR(con, "pivot_y", text="Y") + col.itemR(con, "pivot_z", text="Z") + + col = split.column(align=True) + col.itemL(text="Axis:") + col.itemR(con, "axis_x", text="X") + col.itemR(con, "axis_y", text="Y") + col.itemR(con, "axis_z", text="Z") + + #Missing: Limit arrays (not wrapped in RNA yet) + + def CLAMP_TO(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemL(text="Main Axis:") + row.itemR(con, "main_axis", expand=True) + + row = layout.row() + row.itemR(con, "cyclic") + + def TRANSFORM(self, context, layout, con): + self.target_template(layout, con) + + layout.itemR(con, "extrapolate_motion", text="Extrapolate") + + split = layout.split() + + col = split.column() + col.itemL(text="Source:") + col.row().itemR(con, "map_from", expand=True) + + sub = col.row(align=True) + sub.itemL(text="X:") + sub.itemR(con, "from_min_x", text="") + sub.itemR(con, "from_max_x", text="") + + sub = col.row(align=True) + sub.itemL(text="Y:") + sub.itemR(con, "from_min_y", text="") + sub.itemR(con, "from_max_y", text="") + + sub = col.row(align=True) + sub.itemL(text="Z:") + sub.itemR(con, "from_min_z", text="") + sub.itemR(con, "from_max_z", text="") + + split = layout.split() + + col = split.column() + col.itemL(text="Destination:") + col.row().itemR(con, "map_to", expand=True) + + sub = col.row(align=True) + sub.itemR(con, "map_to_x_from", text="") + sub.itemR(con, "to_min_x", text="") + sub.itemR(con, "to_max_x", text="") + + sub = col.row(align=True) + sub.itemR(con, "map_to_y_from", text="") + sub.itemR(con, "to_min_y", text="") + sub.itemR(con, "to_max_y", text="") + + sub = col.row(align=True) + sub.itemR(con, "map_to_z_from", text="") + sub.itemR(con, "to_min_z", text="") + sub.itemR(con, "to_max_z", text="") + + self.space_template(layout, con) + + def SHRINKWRAP(self, context, layout, con): + self.target_template(layout, con) + + layout.itemR(con, "distance") + layout.itemR(con, "shrinkwrap_type") + + if con.shrinkwrap_type == 'PROJECT': + row = layout.row(align=True) + row.itemR(con, "axis_x") + row.itemR(con, "axis_y") + row.itemR(con, "axis_z") + + def DAMPED_TRACK(self, context, layout, con): + self.target_template(layout, con) + + row = layout.row() + row.itemL(text="To:") + row.itemR(con, "track", expand=True) + + def SPLINE_IK(self, context, layout, con): + self.target_template(layout, con) + + col = layout.column() + col.itemL(text="Spline Fitting:") + col.itemR(con, "chain_length") + col.itemR(con, "even_divisions") + #col.itemR(con, "affect_root") # XXX: this is not that useful yet + + col = layout.column() + col.itemL(text="Chain Scaling:") + col.itemR(con, "keep_max_length") + col.itemR(con, "xz_scaling_mode") + + +class OBJECT_PT_constraints(ConstraintButtonsPanel): + bl_label = "Object Constraints" + bl_context = "constraint" + + def poll(self, context): + return (context.object) + + def draw(self, context): + layout = self.layout + ob = context.object + + row = layout.row() + row.item_menu_enumO("object.constraint_add", "type") + row.itemL() + + for con in ob.constraints: + self.draw_constraint(context, con) + + +class BONE_PT_inverse_kinematics(ConstraintButtonsPanel): + bl_label = "Inverse Kinematics" + bl_default_closed = True + bl_context = "bone_constraint" + + def poll(self, context): + ob = context.object + bone = context.bone + + if ob and bone: + pchan = ob.pose.pose_channels[bone.name] + return pchan.has_ik + + return False + + def draw(self, context): + layout = self.layout + + ob = context.object + bone = context.bone + pchan = ob.pose.pose_channels[bone.name] + + row = layout.row() + row.itemR(ob.pose, "ik_solver") + + split = layout.split(percentage=0.25) + split.itemR(pchan, "ik_dof_x", text="X") + row = split.row() + row.itemR(pchan, "ik_stiffness_x", text="Stiffness", slider=True) + row.active = pchan.ik_dof_x + + split = layout.split(percentage=0.25) + row = split.row() + row.itemR(pchan, "ik_limit_x", text="Limit") + row.active = pchan.ik_dof_x + row = split.row(align=True) + row.itemR(pchan, "ik_min_x", text="") + row.itemR(pchan, "ik_max_x", text="") + row.active = pchan.ik_dof_x and pchan.ik_limit_x + + split = layout.split(percentage=0.25) + split.itemR(pchan, "ik_dof_y", text="Y") + row = split.row() + row.itemR(pchan, "ik_stiffness_y", text="Stiffness", slider=True) + row.active = pchan.ik_dof_y + + split = layout.split(percentage=0.25) + row = split.row() + row.itemR(pchan, "ik_limit_y", text="Limit") + row.active = pchan.ik_dof_y + row = split.row(align=True) + row.itemR(pchan, "ik_min_y", text="") + row.itemR(pchan, "ik_max_y", text="") + row.active = pchan.ik_dof_y and pchan.ik_limit_y + + split = layout.split(percentage=0.25) + split.itemR(pchan, "ik_dof_z", text="Z") + row = split.row() + row.itemR(pchan, "ik_stiffness_z", text="Stiffness", slider=True) + row.active = pchan.ik_dof_z + + split = layout.split(percentage=0.25) + row = split.row() + row.itemR(pchan, "ik_limit_z", text="Limit") + row.active = pchan.ik_dof_z + row = split.row(align=True) + row.itemR(pchan, "ik_min_z", text="") + row.itemR(pchan, "ik_max_z", text="") + row.active = pchan.ik_dof_z and pchan.ik_limit_z + split = layout.split() + split.itemR(pchan, "ik_stretch", text="Stretch", slider=True) + split.itemL() + + if ob.pose.ik_solver == "ITASC": + row = layout.row() + row.itemR(pchan, "ik_rot_control", text="Control Rotation") + row.itemR(pchan, "ik_rot_weight", text="Weight", slider=True) + # not supported yet + #row = layout.row() + #row.itemR(pchan, "ik_lin_control", text="Joint Size") + #row.itemR(pchan, "ik_lin_weight", text="Weight", slider=True) + + +class BONE_PT_iksolver_itasc(ConstraintButtonsPanel): + bl_label = "iTaSC parameters" + bl_default_closed = True + bl_context = "bone_constraint" + + def poll(self, context): + ob = context.object + bone = context.bone + + if ob and bone: + pchan = ob.pose.pose_channels[bone.name] + return pchan.has_ik and ob.pose.ik_solver == "ITASC" and ob.pose.ik_param + + return False + + def draw(self, context): + layout = self.layout + + ob = context.object + itasc = ob.pose.ik_param + + layout.itemR(itasc, "mode", expand=True) + simulation = itasc.mode == "SIMULATION" + if simulation: + layout.itemL(text="Reiteration:") + layout.itemR(itasc, "reiteration", expand=True) + + flow = layout.column_flow() + flow.itemR(itasc, "precision", text="Prec") + flow.itemR(itasc, "num_iter", text="Iter") + flow.active = not simulation or itasc.reiteration != "NEVER" + + if simulation: + layout.itemR(itasc, "auto_step") + row = layout.row() + if itasc.auto_step: + row.itemR(itasc, "min_step", text="Min") + row.itemR(itasc, "max_step", text="Max") + else: + row.itemR(itasc, "num_step") + + layout.itemR(itasc, "solver") + if simulation: + layout.itemR(itasc, "feedback") + layout.itemR(itasc, "max_velocity") + if itasc.solver == "DLS": + row = layout.row() + row.itemR(itasc, "dampmax", text="Damp", slider=True) + row.itemR(itasc, "dampeps", text="Eps", slider=True) + + +class BONE_PT_constraints(ConstraintButtonsPanel): + bl_label = "Bone Constraints" + bl_context = "bone_constraint" + + def poll(self, context): + ob = context.object + return (ob and ob.type == 'ARMATURE' and context.bone) + + def draw(self, context): + layout = self.layout + + ob = context.object + pchan = ob.pose.pose_channels[context.bone.name] + + row = layout.row() + row.item_menu_enumO("pose.constraint_add", "type") + row.itemL() + + for con in pchan.constraints: + self.draw_constraint(context, con) + +bpy.types.register(OBJECT_PT_constraints) +bpy.types.register(BONE_PT_iksolver_itasc) +bpy.types.register(BONE_PT_inverse_kinematics) +bpy.types.register(BONE_PT_constraints) diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py new file mode 100644 index 00000000000..e9cc541c807 --- /dev/null +++ b/release/scripts/ui/properties_particle.py @@ -0,0 +1,1005 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + +from properties_physics_common import point_cache_ui +from properties_physics_common import effector_weights_ui +from properties_physics_common import basic_force_field_settings_ui +from properties_physics_common import basic_force_field_falloff_ui + + +def particle_panel_enabled(context, psys): + return psys.point_cache.baked == False and psys.edited == False and (not context.particle_system_editable) + + +def particle_panel_poll(context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + return psys.settings.type in ('EMITTER', 'REACTOR', 'HAIR') + + +class ParticleButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "particle" + + def poll(self, context): + return particle_panel_poll(context) + + +class PARTICLE_PT_particles(ParticleButtonsPanel): + bl_label = "" + bl_show_header = False + + def poll(self, context): + return (context.particle_system or context.object) + + def draw(self, context): + layout = self.layout + + ob = context.object + psys = context.particle_system + + if ob: + row = layout.row() + + row.template_list(ob, "particle_systems", ob, "active_particle_system_index", rows=2) + + col = row.column(align=True) + col.itemO("object.particle_system_add", icon='ICON_ZOOMIN', text="") + col.itemO("object.particle_system_remove", icon='ICON_ZOOMOUT', text="") + + if psys and not psys.settings: + split = layout.split(percentage=0.32) + + col = split.column() + col.itemL(text="Name:") + col.itemL(text="Settings:") + + col = split.column() + col.itemR(psys, "name", text="") + col.template_ID(psys, "settings", new="particle.new") + elif psys: + part = psys.settings + + split = layout.split(percentage=0.32) + col = split.column() + col.itemL(text="Name:") + if part.type in ('EMITTER', 'REACTOR', 'HAIR'): + col.itemL(text="Settings:") + col.itemL(text="Type:") + + col = split.column() + col.itemR(psys, "name", text="") + if part.type in ('EMITTER', 'REACTOR', 'HAIR'): + col.template_ID(psys, "settings", new="particle.new") + + #row = layout.row() + #row.itemL(text="Viewport") + #row.itemL(text="Render") + + if part: + if part.type not in ('EMITTER', 'REACTOR', 'HAIR'): + layout.itemL(text="No settings for fluid particles") + return + + row = col.row() + row.enabled = particle_panel_enabled(context, psys) + row.itemR(part, "type", text="") + row.itemR(psys, "seed") + + split = layout.split(percentage=0.65) + if part.type == 'HAIR': + if psys.edited == True: + split.itemO("particle.edited_clear", text="Free Edit") + else: + split.itemL(text="") + row = split.row() + row.enabled = particle_panel_enabled(context, psys) + row.itemR(part, "hair_step") + if psys.edited == True: + if psys.global_hair: + layout.itemO("particle.connect_hair") + layout.itemL(text="Hair is disconnected.") + else: + layout.itemO("particle.disconnect_hair") + layout.itemL(text="") + elif part.type == 'REACTOR': + split.enabled = particle_panel_enabled(context, psys) + split.itemR(psys, "reactor_target_object") + split.itemR(psys, "reactor_target_particle_system", text="Particle System") + + +class PARTICLE_PT_emission(ParticleButtonsPanel): + bl_label = "Emission" + + def poll(self, context): + if particle_panel_poll(context): + return not context.particle_system.point_cache.external + else: + return False + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + layout.enabled = particle_panel_enabled(context, psys) and not psys.multiple_caches + + row = layout.row() + row.active = part.distribution != 'GRID' + row.itemR(part, "amount") + + if part.type != 'HAIR': + split = layout.split() + + col = split.column(align=True) + col.itemR(part, "start") + col.itemR(part, "end") + + col = split.column(align=True) + col.itemR(part, "lifetime") + col.itemR(part, "random_lifetime", slider=True) + + layout.row().itemL(text="Emit From:") + + row = layout.row() + row.itemR(part, "emit_from", expand=True) + row = layout.row() + row.itemR(part, "trand") + if part.distribution != 'GRID': + row.itemR(part, "even_distribution") + + if part.emit_from == 'FACE' or part.emit_from == 'VOLUME': + row = layout.row() + row.itemR(part, "distribution", expand=True) + + row = layout.row() + + if part.distribution == 'JIT': + row.itemR(part, "userjit", text="Particles/Face") + row.itemR(part, "jitter_factor", text="Jittering Amount", slider=True) + elif part.distribution == 'GRID': + row.itemR(part, "grid_resolution") + + +class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel): + bl_label = "Hair dynamics" + bl_default_closed = True + + def poll(self, context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + return psys.settings.type == 'HAIR' + + def draw_header(self, context): + #cloth = context.cloth.collision_settings + + #self.layout.active = cloth_panel_enabled(context.cloth) + #self.layout.itemR(cloth, "enable_collision", text="") + psys = context.particle_system + self.layout.itemR(psys, "hair_dynamics", text="") + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + cloth = psys.cloth.settings + + layout.enabled = psys.hair_dynamics + + split = layout.split() + + col = split.column() + col.itemL(text="Material:") + sub = col.column(align=True) + sub.itemR(cloth, "pin_stiffness", text="Stiffness") + sub.itemR(cloth, "mass") + sub.itemR(cloth, "bending_stiffness", text="Bending") + sub.itemR(cloth, "internal_friction", slider="True") + + col = split.column() + + col.itemL(text="Damping:") + sub = col.column(align=True) + sub.itemR(cloth, "spring_damping", text="Spring") + sub.itemR(cloth, "air_damping", text="Air") + + col.itemL(text="Quality:") + col.itemR(cloth, "quality", text="Steps", slider=True) + + +class PARTICLE_PT_cache(ParticleButtonsPanel): + bl_label = "Cache" + bl_default_closed = True + + def poll(self, context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + phystype = psys.settings.physics_type + if phystype == 'NO' or phystype == 'KEYED': + return False + return psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics) + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + + point_cache_ui(self, psys.point_cache, particle_panel_enabled(context, psys), not psys.hair_dynamics, 0) + + +class PARTICLE_PT_velocity(ParticleButtonsPanel): + bl_label = "Velocity" + + def poll(self, context): + if particle_panel_poll(context): + psys = context.particle_system + return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external + else: + return False + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + layout.enabled = particle_panel_enabled(context, psys) + + split = layout.split() + + sub = split.column() + sub.itemL(text="Emitter Geometry:") + sub.itemR(part, "normal_factor") + subsub = sub.column(align=True) + subsub.itemR(part, "tangent_factor") + subsub.itemR(part, "tangent_phase", slider=True) + + sub = split.column() + sub.itemL(text="Emitter Object") + sub.itemR(part, "object_aligned_factor", text="") + + layout.row().itemL(text="Other:") + split = layout.split() + sub = split.column() + if part.emit_from == 'PARTICLE': + sub.itemR(part, "particle_factor") + else: + sub.itemR(part, "object_factor", slider=True) + sub = split.column() + sub.itemR(part, "random_factor") + + #if part.type=='REACTOR': + # sub.itemR(part, "reactor_factor") + # sub.itemR(part, "reaction_shape", slider=True) + + +class PARTICLE_PT_rotation(ParticleButtonsPanel): + bl_label = "Rotation" + + def poll(self, context): + if particle_panel_poll(context): + psys = context.particle_system + return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external + else: + return False + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + layout.enabled = particle_panel_enabled(context, psys) + + split = layout.split() + split.itemL(text="Initial Rotation:") + split.itemR(part, "rotation_dynamic") + split = layout.split() + + sub = split.column(align=True) + sub.itemR(part, "rotation_mode", text="") + sub.itemR(part, "random_rotation_factor", slider=True, text="Random") + + sub = split.column(align=True) + sub.itemR(part, "phase_factor", slider=True) + sub.itemR(part, "random_phase_factor", text="Random", slider=True) + + layout.row().itemL(text="Angular Velocity:") + layout.row().itemR(part, "angular_velocity_mode", expand=True) + split = layout.split() + + sub = split.column() + + sub.itemR(part, "angular_velocity_factor", text="") + + +class PARTICLE_PT_physics(ParticleButtonsPanel): + bl_label = "Physics" + + def poll(self, context): + if particle_panel_poll(context): + return not context.particle_system.point_cache.external + else: + return False + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + layout.enabled = particle_panel_enabled(context, psys) + + row = layout.row() + row.itemR(part, "physics_type", expand=True) + if part.physics_type != 'NO': + row = layout.row() + col = row.column(align=True) + col.itemR(part, "particle_size") + col.itemR(part, "random_size", slider=True) + col = row.column(align=True) + col.itemR(part, "mass") + col.itemR(part, "sizemass", text="Multiply mass with size") + + if part.physics_type == 'NEWTON': + split = layout.split() + sub = split.column() + + sub.itemL(text="Forces:") + sub.itemR(part, "brownian_factor") + sub.itemR(part, "drag_factor", slider=True) + sub.itemR(part, "damp_factor", slider=True) + sub = split.column() + sub.itemR(part, "size_deflect") + sub.itemR(part, "die_on_collision") + sub.itemR(part, "integrator") + sub.itemR(part, "time_tweak") + + elif part.physics_type == 'KEYED': + split = layout.split() + sub = split.column() + + row = layout.row() + col = row.column() + col.active = not psys.keyed_timing + col.itemR(part, "keyed_loops", text="Loops") + row.itemR(psys, "keyed_timing", text="Use Timing") + + layout.itemL(text="Keys:") + elif part.physics_type == 'BOIDS': + boids = part.boids + + + row = layout.row() + row.itemR(boids, "allow_flight") + row.itemR(boids, "allow_land") + row.itemR(boids, "allow_climb") + + split = layout.split() + + sub = split.column() + col = sub.column(align=True) + col.active = boids.allow_flight + col.itemR(boids, "air_max_speed") + col.itemR(boids, "air_min_speed", slider="True") + col.itemR(boids, "air_max_acc", slider="True") + col.itemR(boids, "air_max_ave", slider="True") + col.itemR(boids, "air_personal_space") + row = col.row() + row.active = (boids.allow_land or boids.allow_climb) and boids.allow_flight + row.itemR(boids, "landing_smoothness") + + sub = split.column() + col = sub.column(align=True) + col.active = boids.allow_land or boids.allow_climb + col.itemR(boids, "land_max_speed") + col.itemR(boids, "land_jump_speed") + col.itemR(boids, "land_max_acc", slider="True") + col.itemR(boids, "land_max_ave", slider="True") + col.itemR(boids, "land_personal_space") + col.itemR(boids, "land_stick_force") + + row = layout.row() + + col = row.column(align=True) + col.itemL(text="Battle:") + col.itemR(boids, "health") + col.itemR(boids, "strength") + col.itemR(boids, "aggression") + col.itemR(boids, "accuracy") + col.itemR(boids, "range") + + col = row.column() + col.itemL(text="Misc:") + col.itemR(boids, "banking", slider=True) + col.itemR(boids, "height", slider=True) + + if part.physics_type == 'KEYED' or part.physics_type == 'BOIDS': + if part.physics_type == 'BOIDS': + layout.itemL(text="Relations:") + + row = layout.row() + row.template_list(psys, "targets", psys, "active_particle_target_index") + + col = row.column() + sub = col.row() + subsub = sub.column(align=True) + subsub.itemO("particle.new_target", icon='ICON_ZOOMIN', text="") + subsub.itemO("particle.remove_target", icon='ICON_ZOOMOUT', text="") + sub = col.row() + subsub = sub.column(align=True) + subsub.itemO("particle.target_move_up", icon='VICON_MOVE_UP', text="") + subsub.itemO("particle.target_move_down", icon='VICON_MOVE_DOWN', text="") + + key = psys.active_particle_target + if key: + row = layout.row() + if part.physics_type == 'KEYED': + col = row.column() + #doesn't work yet + #col.red_alert = key.valid + col.itemR(key, "object", text="") + col.itemR(key, "system", text="System") + col = row.column() + col.active = psys.keyed_timing + col.itemR(key, "time") + col.itemR(key, "duration") + else: + sub = row.row() + #doesn't work yet + #subrow.red_alert = key.valid + sub.itemR(key, "object", text="") + sub.itemR(key, "system", text="System") + + layout.itemR(key, "mode", expand=True) + + +class PARTICLE_PT_boidbrain(ParticleButtonsPanel): + bl_label = "Boid Brain" + + def poll(self, context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + if psys.point_cache.external: + return False + return psys.settings.physics_type == 'BOIDS' + + def draw(self, context): + layout = self.layout + + boids = context.particle_system.settings.boids + + layout.enabled = particle_panel_enabled(context, context.particle_system) + + # Currently boids can only use the first state so these are commented out for now. + #row = layout.row() + #row.template_list(boids, "states", boids, "active_boid_state_index", compact="True") + #col = row.row() + #subrow = col.row(align=True) + #subrow.itemO("boid.state_add", icon='ICON_ZOOMIN', text="") + #subrow.itemO("boid.state_del", icon='ICON_ZOOMOUT', text="") + #subrow = row.row(align=True) + #subrow.itemO("boid.state_move_up", icon='VICON_MOVE_UP', text="") + #subrow.itemO("boid.state_move_down", icon='VICON_MOVE_DOWN', text="") + + state = boids.active_boid_state + + #layout.itemR(state, "name", text="State name") + + row = layout.row() + row.itemR(state, "ruleset_type") + if state.ruleset_type == 'FUZZY': + row.itemR(state, "rule_fuzziness", slider=True) + else: + row.itemL(text="") + + row = layout.row() + row.template_list(state, "rules", state, "active_boid_rule_index") + + col = row.column() + sub = col.row() + subsub = sub.column(align=True) + subsub.item_menu_enumO("boid.rule_add", "type", icon='ICON_ZOOMIN', text="") + subsub.itemO("boid.rule_del", icon='ICON_ZOOMOUT', text="") + sub = col.row() + subcol = sub.column(align=True) + subsub.itemO("boid.rule_move_up", icon='VICON_MOVE_UP', text="") + subsub.itemO("boid.rule_move_down", icon='VICON_MOVE_DOWN', text="") + + rule = state.active_boid_rule + + if rule: + row = layout.row() + row.itemR(rule, "name", text="") + #somebody make nice icons for boids here please! -jahka + row.itemR(rule, "in_air", icon='VICON_MOVE_UP', text="") + row.itemR(rule, "on_land", icon='VICON_MOVE_DOWN', text="") + + row = layout.row() + + if rule.type == 'GOAL': + row.itemR(rule, "object") + row = layout.row() + row.itemR(rule, "predict") + elif rule.type == 'AVOID': + row.itemR(rule, "object") + row = layout.row() + row.itemR(rule, "predict") + row.itemR(rule, "fear_factor") + elif rule.type == 'FOLLOW_PATH': + row.itemL(text="Not yet functional.") + elif rule.type == 'AVOID_COLLISION': + row.itemR(rule, "boids") + row.itemR(rule, "deflectors") + row.itemR(rule, "look_ahead") + elif rule.type == 'FOLLOW_LEADER': + row.itemR(rule, "object", text="") + row.itemR(rule, "distance") + row = layout.row() + row.itemR(rule, "line") + subrow = row.row() + subrow.active = rule.line + subrow.itemR(rule, "queue_size") + elif rule.type == 'AVERAGE_SPEED': + row.itemR(rule, "speed", slider=True) + row.itemR(rule, "wander", slider=True) + row.itemR(rule, "level", slider=True) + elif rule.type == 'FIGHT': + row.itemR(rule, "distance") + row.itemR(rule, "flee_distance") + + +class PARTICLE_PT_render(ParticleButtonsPanel): + bl_label = "Render" + + def poll(self, context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + return True + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + row = layout.row() + row.itemR(part, "material") + row.itemR(psys, "parent") + + split = layout.split() + + sub = split.column() + sub.itemR(part, "emitter") + sub.itemR(part, "parent") + sub = split.column() + sub.itemR(part, "unborn") + sub.itemR(part, "died") + + row = layout.row() + row.itemR(part, "ren_as", expand=True) + + split = layout.split() + + sub = split.column() + + if part.ren_as == 'LINE': + sub.itemR(part, "line_length_tail") + sub.itemR(part, "line_length_head") + sub = split.column() + sub.itemR(part, "velocity_length") + elif part.ren_as == 'PATH': + + if part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked == False: + box = layout.box() + box.itemL(text="Baked or keyed particles needed for correct rendering.") + return + + sub.itemR(part, "render_strand") + subsub = sub.column() + subsub.active = part.render_strand == False + subsub.itemR(part, "render_adaptive") + subsub = sub.column() + subsub.active = part.render_adaptive or part.render_strand == True + subsub.itemR(part, "adaptive_angle") + subsub = sub.column() + subsub.active = part.render_adaptive == True and part.render_strand == False + subsub.itemR(part, "adaptive_pix") + sub.itemR(part, "hair_bspline") + sub.itemR(part, "render_step", text="Steps") + + sub = split.column() + sub.itemL(text="Timing:") + sub.itemR(part, "abs_path_time") + sub.itemR(part, "path_start", text="Start", slider=not part.abs_path_time) + sub.itemR(part, "path_end", text="End", slider=not part.abs_path_time) + sub.itemR(part, "random_length", text="Random", slider=True) + + row = layout.row() + col = row.column() + + if part.type == 'HAIR' and part.render_strand == True and part.child_type == 'FACES': + layout.itemR(part, "enable_simplify") + if part.enable_simplify == True: + row = layout.row() + row.itemR(part, "simplify_refsize") + row.itemR(part, "simplify_rate") + row.itemR(part, "simplify_transition") + row = layout.row() + row.itemR(part, "viewport") + sub = row.row() + sub.active = part.viewport == True + sub.itemR(part, "simplify_viewport") + + elif part.ren_as == 'OBJECT': + sub.itemR(part, "dupli_object") + sub.itemR(part, "use_global_dupli") + elif part.ren_as == 'GROUP': + sub.itemR(part, "dupli_group") + split = layout.split() + sub = split.column() + sub.itemR(part, "whole_group") + subsub = sub.column() + subsub.active = part.whole_group == False + subsub.itemR(part, "use_group_count") + + sub = split.column() + subsub = sub.column() + subsub.active = part.whole_group == False + subsub.itemR(part, "use_global_dupli") + subsub.itemR(part, "rand_group") + + if part.use_group_count and not part.whole_group: + row = layout.row() + row.template_list(part, "dupliweights", part, "active_dupliweight_index") + + col = row.column() + sub = col.row() + subsub = sub.column(align=True) + subsub.itemO("particle.dupliob_copy", icon='ICON_ZOOMIN', text="") + subsub.itemO("particle.dupliob_remove", icon='ICON_ZOOMOUT', text="") + subsub.itemO("particle.dupliob_move_up", icon='VICON_MOVE_UP', text="") + subsub.itemO("particle.dupliob_move_down", icon='VICON_MOVE_DOWN', text="") + + weight = part.active_dupliweight + if weight: + row = layout.row() + row.itemR(weight, "count") + + elif part.ren_as == 'BILLBOARD': + sub.itemL(text="Align:") + + row = layout.row() + row.itemR(part, "billboard_align", expand=True) + row.itemR(part, "billboard_lock", text="Lock") + row = layout.row() + row.itemR(part, "billboard_object") + + row = layout.row() + col = row.column(align=True) + col.itemL(text="Tilt:") + col.itemR(part, "billboard_tilt", text="Angle", slider=True) + col.itemR(part, "billboard_random_tilt", slider=True) + col = row.column() + col.itemR(part, "billboard_offset") + + row = layout.row() + row.itemR(psys, "billboard_normal_uv") + row = layout.row() + row.itemR(psys, "billboard_time_index_uv") + + row = layout.row() + row.itemL(text="Split uv's:") + row.itemR(part, "billboard_uv_split", text="Number of splits") + row = layout.row() + row.itemR(psys, "billboard_split_uv") + row = layout.row() + row.itemL(text="Animate:") + row.itemR(part, "billboard_animation", expand=True) + row.itemL(text="Offset:") + row.itemR(part, "billboard_split_offset", expand=True) + + if part.ren_as == 'HALO' or part.ren_as == 'LINE' or part.ren_as == 'BILLBOARD': + row = layout.row() + col = row.column() + col.itemR(part, "trail_count") + if part.trail_count > 1: + col.itemR(part, "abs_path_time", text="Length in frames") + col = row.column() + col.itemR(part, "path_end", text="Length", slider=not part.abs_path_time) + col.itemR(part, "random_length", text="Random", slider=True) + else: + col = row.column() + col.itemL(text="") + + +class PARTICLE_PT_draw(ParticleButtonsPanel): + bl_label = "Display" + bl_default_closed = True + + def poll(self, context): + psys = context.particle_system + if psys == None: + return False + if psys.settings == None: + return False + return True + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + row = layout.row() + row.itemR(part, "draw_as", expand=True) + + if part.draw_as == 'NONE' or (part.ren_as == 'NONE' and part.draw_as == 'RENDER'): + return + + path = (part.ren_as == 'PATH' and part.draw_as == 'RENDER') or part.draw_as == 'PATH' + + if path and part.type != 'HAIR' and part.physics_type != 'KEYED' and psys.point_cache.baked == False: + box = layout.box() + box.itemL(text="Baked or keyed particles needed for correct drawing.") + return + + row = layout.row() + row.itemR(part, "display", slider=True) + if part.draw_as != 'RENDER' or part.ren_as == 'HALO': + row.itemR(part, "draw_size") + else: + row.itemL(text="") + + row = layout.row() + col = row.column() + col.itemR(part, "show_size") + col.itemR(part, "velocity") + col.itemR(part, "num") + if part.physics_type == 'BOIDS': + col.itemR(part, "draw_health") + + col = row.column() + col.itemR(part, "material_color", text="Use material color") + + if (path): + col.itemR(part, "draw_step") + else: + sub = col.column() + sub.active = part.material_color == False + #sub.itemL(text="color") + #sub.itemL(text="Override material color") + + +class PARTICLE_PT_children(ParticleButtonsPanel): + bl_label = "Children" + bl_default_closed = True + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + part = psys.settings + + layout.row().itemR(part, "child_type", expand=True) + + if part.child_type == 'NONE': + return + + row = layout.row() + + col = row.column(align=True) + col.itemR(part, "child_nbr", text="Display") + col.itemR(part, "rendered_child_nbr", text="Render") + + col = row.column(align=True) + + if part.child_type == 'FACES': + col.itemR(part, "virtual_parents", slider=True) + else: + col.itemR(part, "child_radius", text="Radius") + col.itemR(part, "child_roundness", text="Roundness", slider=True) + + col = row.column(align=True) + col.itemR(part, "child_size", text="Size") + col.itemR(part, "child_random_size", text="Random") + + layout.row().itemL(text="Effects:") + + row = layout.row() + + col = row.column(align=True) + col.itemR(part, "clump_factor", slider=True) + col.itemR(part, "clumppow", slider=True) + + col = row.column(align=True) + col.itemR(part, "rough_endpoint") + col.itemR(part, "rough_end_shape") + + row = layout.row() + + col = row.column(align=True) + col.itemR(part, "rough1") + col.itemR(part, "rough1_size") + + col = row.column(align=True) + col.itemR(part, "rough2") + col.itemR(part, "rough2_size") + col.itemR(part, "rough2_thres", slider=True) + + row = layout.row() + col = row.column(align=True) + col.itemR(part, "child_length", slider=True) + col.itemR(part, "child_length_thres", slider=True) + + col = row.column(align=True) + col.itemL(text="Space reserved for") + col.itemL(text="hair parting controls") + + layout.row().itemL(text="Kink:") + layout.row().itemR(part, "kink", expand=True) + + split = layout.split() + + col = split.column() + col.itemR(part, "kink_amplitude") + col.itemR(part, "kink_frequency") + col = split.column() + col.itemR(part, "kink_shape", slider=True) + + +class PARTICLE_PT_field_weights(ParticleButtonsPanel): + bl_label = "Field Weights" + bl_default_closed = True + + def draw(self, context): + part = context.particle_system.settings + effector_weights_ui(self, part.effector_weights) + + if part.type == 'HAIR': + self.layout.itemR(part.effector_weights, "do_growing_hair") + + +class PARTICLE_PT_force_fields(ParticleButtonsPanel): + bl_label = "Force Field Settings" + bl_default_closed = True + + def draw(self, context): + layout = self.layout + + part = context.particle_system.settings + + layout.itemR(part, "self_effect") + + split = layout.split(percentage=0.2) + split.itemL(text="Type 1:") + split.itemR(part.force_field_1, "type", text="") + basic_force_field_settings_ui(self, part.force_field_1) + basic_force_field_falloff_ui(self, part.force_field_1) + + if part.force_field_1.type != 'NONE': + layout.itemL(text="") + + split = layout.split(percentage=0.2) + split.itemL(text="Type 2:") + split.itemR(part.force_field_2, "type", text="") + basic_force_field_settings_ui(self, part.force_field_2) + basic_force_field_falloff_ui(self, part.force_field_2) + + +class PARTICLE_PT_vertexgroups(ParticleButtonsPanel): + bl_label = "Vertexgroups" + bl_default_closed = True + + def draw(self, context): + layout = self.layout + + ob = context.object + psys = context.particle_system + part = psys.settings + + # layout.itemL(text="Nothing here yet.") + + row = layout.row() + row.itemL(text="Vertex Group") + row.itemL(text="Negate") + + + row = layout.row() + row.item_pointerR(psys, "vertex_group_density", ob, "vertex_groups", text="Density") + row.itemR(psys, "vertex_group_density_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity") + row.itemR(psys, "vertex_group_velocity_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_length", ob, "vertex_groups", text="Length") + row.itemR(psys, "vertex_group_length_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump") + row.itemR(psys, "vertex_group_clump_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink") + row.itemR(psys, "vertex_group_kink_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1") + row.itemR(psys, "vertex_group_roughness1_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2") + row.itemR(psys, "vertex_group_roughness2_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End") + row.itemR(psys, "vertex_group_roughness_end_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_size", ob, "vertex_groups", text="Size") + row.itemR(psys, "vertex_group_size_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent") + row.itemR(psys, "vertex_group_tangent_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation") + row.itemR(psys, "vertex_group_rotation_negate", text="") + + row = layout.row() + row.item_pointerR(psys, "vertex_group_field", ob, "vertex_groups", text="Field") + row.itemR(psys, "vertex_group_field_negate", text="") + +bpy.types.register(PARTICLE_PT_particles) +bpy.types.register(PARTICLE_PT_hair_dynamics) +bpy.types.register(PARTICLE_PT_cache) +bpy.types.register(PARTICLE_PT_emission) +bpy.types.register(PARTICLE_PT_velocity) +bpy.types.register(PARTICLE_PT_rotation) +bpy.types.register(PARTICLE_PT_physics) +bpy.types.register(PARTICLE_PT_boidbrain) +bpy.types.register(PARTICLE_PT_render) +bpy.types.register(PARTICLE_PT_draw) +bpy.types.register(PARTICLE_PT_children) +bpy.types.register(PARTICLE_PT_field_weights) +bpy.types.register(PARTICLE_PT_force_fields) +bpy.types.register(PARTICLE_PT_vertexgroups) diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py new file mode 100644 index 00000000000..255b7038b99 --- /dev/null +++ b/release/scripts/ui/properties_physics_cloth.py @@ -0,0 +1,212 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + +from properties_physics_common import point_cache_ui +from properties_physics_common import effector_weights_ui + + +def cloth_panel_enabled(md): + return md.point_cache.baked == False + + +class PhysicButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + ob = context.object + rd = context.scene.render_data + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + + +class PHYSICS_PT_cloth(PhysicButtonsPanel): + bl_label = "Cloth" + + def draw(self, context): + layout = self.layout + + md = context.cloth + ob = context.object + + split = layout.split() + split.operator_context = 'EXEC_DEFAULT' + + if md: + # remove modifier + settings + split.set_context_pointer("modifier", md) + split.itemO("object.modifier_remove", text="Remove") + + row = split.row(align=True) + row.itemR(md, "render", text="") + row.itemR(md, "realtime", text="") + else: + # add modifier + split.item_enumO("object.modifier_add", "type", 'CLOTH', text="Add") + split.itemL() + + if md: + cloth = md.settings + + layout.active = cloth_panel_enabled(md) + + split = layout.split() + + col = split.column() + + col.itemL(text="Quality:") + col.itemR(cloth, "quality", text="Steps", slider=True) + + col.itemL(text="Material:") + sub = col.column(align=True) + sub.itemR(cloth, "mass") + sub.itemR(cloth, "structural_stiffness", text="Structural") + sub.itemR(cloth, "bending_stiffness", text="Bending") + + col = split.column() + + col.itemL(text="Presets:") + col.itemL(text="TODO!") + + col.itemL(text="Damping:") + sub = col.column(align=True) + sub.itemR(cloth, "spring_damping", text="Spring") + sub.itemR(cloth, "air_damping", text="Air") + + col.itemR(cloth, "pin_cloth", text="Pin") + sub = col.column(align=True) + sub.active = cloth.pin_cloth + sub.itemR(cloth, "pin_stiffness", text="Stiffness") + sub.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="") + + # Disabled for now + """ + if cloth.mass_vertex_group: + layout.itemL(text="Goal:") + + col = layout.column_flow() + col.itemR(cloth, "goal_default", text="Default") + col.itemR(cloth, "goal_spring", text="Stiffness") + col.itemR(cloth, "goal_friction", text="Friction") + """ + + +class PHYSICS_PT_cloth_cache(PhysicButtonsPanel): + bl_label = "Cloth Cache" + bl_default_closed = True + + def poll(self, context): + return context.cloth + + def draw(self, context): + md = context.cloth + point_cache_ui(self, md.point_cache, cloth_panel_enabled(md), 0, 0) + + +class PHYSICS_PT_cloth_collision(PhysicButtonsPanel): + bl_label = "Cloth Collision" + bl_default_closed = True + + def poll(self, context): + return context.cloth + + def draw_header(self, context): + cloth = context.cloth.collision_settings + + self.layout.active = cloth_panel_enabled(context.cloth) + self.layout.itemR(cloth, "enable_collision", text="") + + def draw(self, context): + layout = self.layout + + cloth = context.cloth.collision_settings + md = context.cloth + + layout.active = cloth.enable_collision and cloth_panel_enabled(md) + + split = layout.split() + + col = split.column() + col.itemR(cloth, "collision_quality", slider=True, text="Quality") + col.itemR(cloth, "min_distance", slider=True, text="Distance") + col.itemR(cloth, "friction") + + col = split.column() + col.itemR(cloth, "enable_self_collision", text="Self Collision") + sub = col.column() + sub.active = cloth.enable_self_collision + sub.itemR(cloth, "self_collision_quality", slider=True, text="Quality") + sub.itemR(cloth, "self_min_distance", slider=True, text="Distance") + + +class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel): + bl_label = "Cloth Stiffness Scaling" + bl_default_closed = True + + def poll(self, context): + return context.cloth + + def draw_header(self, context): + cloth = context.cloth.settings + + self.layout.active = cloth_panel_enabled(context.cloth) + self.layout.itemR(cloth, "stiffness_scaling", text="") + + def draw(self, context): + layout = self.layout + + md = context.cloth + ob = context.object + cloth = context.cloth.settings + + layout.active = cloth.stiffness_scaling and cloth_panel_enabled(md) + + split = layout.split() + + col = split.column() + col.itemL(text="Structural Stiffness:") + sub = col.column(align=True) + sub.itemR(cloth, "structural_stiffness_max", text="Max") + sub.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="") + + col = split.column() + col.itemL(text="Bending Stiffness:") + sub = col.column(align=True) + sub.itemR(cloth, "bending_stiffness_max", text="Max") + sub.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="") + + +class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel): + bl_label = "Cloth Field Weights" + bl_default_closed = True + + def poll(self, context): + return (context.cloth) + + def draw(self, context): + cloth = context.cloth.settings + effector_weights_ui(self, cloth.effector_weights) + +bpy.types.register(PHYSICS_PT_cloth) +bpy.types.register(PHYSICS_PT_cloth_cache) +bpy.types.register(PHYSICS_PT_cloth_collision) +bpy.types.register(PHYSICS_PT_cloth_stiffness) +bpy.types.register(PHYSICS_PT_cloth_field_weights) diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py new file mode 100644 index 00000000000..187db9940f9 --- /dev/null +++ b/release/scripts/ui/properties_physics_common.py @@ -0,0 +1,181 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +def point_cache_ui(self, cache, enabled, particles, smoke): + layout = self.layout + layout.set_context_pointer("PointCache", cache) + + row = layout.row() + row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2) + col = row.column(align=True) + col.itemO("ptcache.add_new", icon='ICON_ZOOMIN', text="") + col.itemO("ptcache.remove", icon='ICON_ZOOMOUT', text="") + + row = layout.row() + row.itemL(text="File Name:") + if particles: + row.itemR(cache, "external") + + if cache.external: + split = layout.split(percentage=0.80) + split.itemR(cache, "name", text="") + split.itemR(cache, "index", text="") + + layout.itemL(text="File Path:") + layout.itemR(cache, "filepath", text="") + + layout.itemL(text=cache.info) + else: + layout.itemR(cache, "name", text="") + + if not particles: + row = layout.row() + row.enabled = enabled + row.itemR(cache, "start_frame") + row.itemR(cache, "end_frame") + + row = layout.row() + + if cache.baked == True: + row.itemO("ptcache.free_bake", text="Free Bake") + else: + row.item_booleanO("ptcache.bake", "bake", True, text="Bake") + + sub = row.row() + sub.enabled = (cache.frames_skipped or cache.outdated) and enabled + sub.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame") + + row = layout.row() + row.enabled = enabled + row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake") + if not smoke: + row.itemR(cache, "step") + + if not smoke: + row = layout.row() + sub = row.row() + sub.enabled = enabled + sub.itemR(cache, "quick_cache") + row.itemR(cache, "disk_cache") + + layout.itemL(text=cache.info) + + layout.itemS() + + row = layout.row() + row.item_booleanO("ptcache.bake_all", "bake", True, text="Bake All Dynamics") + row.itemO("ptcache.free_bake_all", text="Free All Bakes") + layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") + + +def effector_weights_ui(self, weights): + layout = self.layout + + layout.itemR(weights, "group") + + split = layout.split() + split.itemR(weights, "gravity", slider=True) + split.itemR(weights, "all", slider=True) + + layout.itemS() + + flow = layout.column_flow() + flow.itemR(weights, "force", slider=True) + flow.itemR(weights, "vortex", slider=True) + flow.itemR(weights, "magnetic", slider=True) + flow.itemR(weights, "wind", slider=True) + flow.itemR(weights, "curveguide", slider=True) + flow.itemR(weights, "texture", slider=True) + flow.itemR(weights, "harmonic", slider=True) + flow.itemR(weights, "charge", slider=True) + flow.itemR(weights, "lennardjones", slider=True) + flow.itemR(weights, "turbulence", slider=True) + flow.itemR(weights, "drag", slider=True) + flow.itemR(weights, "boid", slider=True) + + +def basic_force_field_settings_ui(self, field): + layout = self.layout + split = layout.split() + + if not field or field.type == 'NONE': + return + + col = split.column() + + if field.type == 'DRAG': + col.itemR(field, "linear_drag", text="Linear") + else: + col.itemR(field, "strength") + + if field.type == 'TURBULENCE': + col.itemR(field, "size") + col.itemR(field, "flow") + elif field.type == 'HARMONIC': + col.itemR(field, "harmonic_damping", text="Damping") + elif field.type == 'VORTEX' and field.shape != 'POINT': + col.itemR(field, "inflow") + elif field.type == 'DRAG': + col.itemR(field, "quadratic_drag", text="Quadratic") + else: + col.itemR(field, "flow") + + col = split.column() + col.itemR(field, "noise") + col.itemR(field, "seed") + if field.type == 'TURBULENCE': + col.itemR(field, "global_coordinates", text="Global") + + split = layout.split() + + col = split.column() + col.itemL(text="Effect point:") + col.itemR(field, "do_location") + col.itemR(field, "do_rotation") + + sub = split.column() + sub.itemL(text="Collision:") + sub.itemR(field, "do_absorption") + + +def basic_force_field_falloff_ui(self, field): + layout = self.layout + split = layout.split(percentage=0.35) + + if not field or field.type == 'NONE': + return + + col = split.column() + col.itemR(field, "z_direction", text="") + col.itemR(field, "use_min_distance", text="Use Minimum") + col.itemR(field, "use_max_distance", text="Use Maximum") + + col = split.column() + col.itemR(field, "falloff_power", text="Power") + + sub = col.column() + sub.active = field.use_min_distance + sub.itemR(field, "minimum_distance", text="Distance") + + sub = col.column() + sub.active = field.use_max_distance + sub.itemR(field, "maximum_distance", text="Distance") diff --git a/release/scripts/ui/properties_physics_field.py b/release/scripts/ui/properties_physics_field.py new file mode 100644 index 00000000000..b61f2172d94 --- /dev/null +++ b/release/scripts/ui/properties_physics_field.py @@ -0,0 +1,222 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + +from properties_physics_common import basic_force_field_settings_ui +from properties_physics_common import basic_force_field_falloff_ui + + +class PhysicButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + rd = context.scene.render_data + return (context.object) and (not rd.use_game_engine) + + +class PHYSICS_PT_field(PhysicButtonsPanel): + bl_label = "Force Fields" + + def draw(self, context): + layout = self.layout + + ob = context.object + field = ob.field + + split = layout.split(percentage=0.2) + split.itemL(text="Type:") + split.itemR(field, "type", text="") + + if field.type not in ('NONE', 'GUIDE', 'TEXTURE'): + split = layout.split(percentage=0.2) + #split = layout.row() + split.itemL(text="Shape:") + split.itemR(field, "shape", text="") + + split = layout.split() + + if field.type == 'NONE': + return # nothing to draw + elif field.type == 'GUIDE': + col = split.column() + col.itemR(field, "guide_minimum") + col.itemR(field, "guide_free") + col.itemR(field, "falloff_power") + col.itemR(field, "guide_path_add") + + col = split.column() + col.itemL(text="Clumping:") + col.itemR(field, "guide_clump_amount") + col.itemR(field, "guide_clump_shape") + + row = layout.row() + row.itemR(field, "use_max_distance") + sub = row.row() + sub.active = field.use_max_distance + sub.itemR(field, "maximum_distance") + + layout.itemS() + + layout.itemR(field, "guide_kink_type") + if (field.guide_kink_type != "NONE"): + layout.itemR(field, "guide_kink_axis") + + flow = layout.column_flow() + flow.itemR(field, "guide_kink_frequency") + flow.itemR(field, "guide_kink_shape") + flow.itemR(field, "guide_kink_amplitude") + + elif field.type == 'TEXTURE': + col = split.column() + col.itemR(field, "strength") + col.itemR(field, "texture", text="") + col.itemR(field, "texture_mode", text="") + col.itemR(field, "texture_nabla") + + col = split.column() + col.itemR(field, "use_coordinates") + col.itemR(field, "root_coordinates") + col.itemR(field, "force_2d") + else: + basic_force_field_settings_ui(self, field) + + if field.type not in ('NONE', 'GUIDE'): + + layout.itemL(text="Falloff:") + layout.itemR(field, "falloff_type", expand=True) + + basic_force_field_falloff_ui(self, field) + + if field.falloff_type == 'CONE': + layout.itemS() + + split = layout.split(percentage=0.35) + + col = split.column() + col.itemL(text="Angular:") + col.itemR(field, "use_radial_min", text="Use Minimum") + col.itemR(field, "use_radial_max", text="Use Maximum") + + col = split.column() + col.itemR(field, "radial_falloff", text="Power") + + sub = col.column() + sub.active = field.use_radial_min + sub.itemR(field, "radial_minimum", text="Angle") + + sub = col.column() + sub.active = field.use_radial_max + sub.itemR(field, "radial_maximum", text="Angle") + + elif field.falloff_type == 'TUBE': + layout.itemS() + + split = layout.split(percentage=0.35) + + col = split.column() + col.itemL(text="Radial:") + col.itemR(field, "use_radial_min", text="Use Minimum") + col.itemR(field, "use_radial_max", text="Use Maximum") + + col = split.column() + col.itemR(field, "radial_falloff", text="Power") + + sub = col.column() + sub.active = field.use_radial_min + sub.itemR(field, "radial_minimum", text="Distance") + + sub = col.column() + sub.active = field.use_radial_max + sub.itemR(field, "radial_maximum", text="Distance") + + +class PHYSICS_PT_collision(PhysicButtonsPanel): + bl_label = "Collision" + #bl_default_closed = True + + def poll(self, context): + ob = context.object + rd = context.scene.render_data + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + + def draw(self, context): + layout = self.layout + + md = context.collision + + split = layout.split() + split.operator_context = 'EXEC_DEFAULT' + + if md: + # remove modifier + settings + split.set_context_pointer("modifier", md) + split.itemO("object.modifier_remove", text="Remove") + col = split.column() + + #row = split.row(align=True) + #row.itemR(md, "render", text="") + #row.itemR(md, "realtime", text="") + + coll = md.settings + + else: + # add modifier + split.item_enumO("object.modifier_add", "type", 'COLLISION', text="Add") + split.itemL() + + coll = None + + if coll: + settings = context.object.collision + + layout.active = settings.enabled + + split = layout.split() + + col = split.column() + col.itemL(text="Particle:") + col.itemR(settings, "permeability", slider=True) + col.itemL(text="Particle Damping:") + sub = col.column(align=True) + sub.itemR(settings, "damping_factor", text="Factor", slider=True) + sub.itemR(settings, "random_damping", text="Random", slider=True) + + col.itemL(text="Soft Body and Cloth:") + sub = col.column(align=True) + sub.itemR(settings, "outer_thickness", text="Outer", slider=True) + sub.itemR(settings, "inner_thickness", text="Inner", slider=True) + + layout.itemL(text="Force Fields:") + layout.itemR(settings, "absorption", text="Absorption") + + col = split.column() + col.itemL(text="") + col.itemR(settings, "kill_particles") + col.itemL(text="Particle Friction:") + sub = col.column(align=True) + sub.itemR(settings, "friction_factor", text="Factor", slider=True) + sub.itemR(settings, "random_friction", text="Random", slider=True) + col.itemL(text="Soft Body Damping:") + col.itemR(settings, "damping", text="Factor", slider=True) + +bpy.types.register(PHYSICS_PT_field) +bpy.types.register(PHYSICS_PT_collision) diff --git a/release/scripts/ui/properties_physics_fluid.py b/release/scripts/ui/properties_physics_fluid.py new file mode 100644 index 00000000000..47a5546c205 --- /dev/null +++ b/release/scripts/ui/properties_physics_fluid.py @@ -0,0 +1,280 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class PhysicButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + ob = context.object + rd = context.scene.render_data + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + + +class PHYSICS_PT_fluid(PhysicButtonsPanel): + bl_label = "Fluid" + + def draw(self, context): + layout = self.layout + + md = context.fluid + ob = context.object + + split = layout.split() + split.operator_context = 'EXEC_DEFAULT' + + if md: + # remove modifier + settings + split.set_context_pointer("modifier", md) + split.itemO("object.modifier_remove", text="Remove") + + row = split.row(align=True) + row.itemR(md, "render", text="") + row.itemR(md, "realtime", text="") + + fluid = md.settings + + else: + # add modifier + split.item_enumO("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add") + split.itemL() + + fluid = None + + + if fluid: + layout.itemR(fluid, "type") + + if fluid.type == 'DOMAIN': + layout.itemO("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM') + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + col.itemR(fluid, "resolution", text="Final") + col.itemL(text="Render Display:") + col.itemR(fluid, "render_display_mode", text="") + col.itemL(text="Time:") + sub = col.column(align=True) + sub.itemR(fluid, "start_time", text="Start") + sub.itemR(fluid, "end_time", text="End") + + col = split.column() + col.itemL(text="Required Memory: " + fluid.memory_estimate) + col.itemR(fluid, "preview_resolution", text="Preview") + col.itemL(text="Viewport Display:") + col.itemR(fluid, "viewport_display_mode", text="") + col.itemL() + col.itemR(fluid, "generate_speed_vectors") + col.itemR(fluid, "reverse_frames") + + layout.itemR(fluid, "path", text="") + + elif fluid.type == 'FLUID': + split = layout.split() + + col = split.column() + col.itemL(text="Volume Initialization:") + col.itemR(fluid, "volume_initialization", text="") + col.itemR(fluid, "export_animated_mesh") + + col = split.column() + col.itemL(text="Initial Velocity:") + col.itemR(fluid, "initial_velocity", text="") + + elif fluid.type == 'OBSTACLE': + split = layout.split() + + col = split.column() + col.itemL(text="Volume Initialization:") + col.itemR(fluid, "volume_initialization", text="") + col.itemR(fluid, "export_animated_mesh") + + col = split.column() + col.itemL(text="Slip Type:") + col.itemR(fluid, "slip_type", text="") + if fluid.slip_type == 'PARTIALSLIP': + col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") + + col.itemL(text="Impact:") + col.itemR(fluid, "impact_factor", text="Factor") + + elif fluid.type == 'INFLOW': + split = layout.split() + + col = split.column() + col.itemL(text="Volume Initialization:") + col.itemR(fluid, "volume_initialization", text="") + col.itemR(fluid, "export_animated_mesh") + col.itemR(fluid, "local_coordinates") + + col = split.column() + col.itemL(text="Inflow Velocity:") + col.itemR(fluid, "inflow_velocity", text="") + + elif fluid.type == 'OUTFLOW': + split = layout.split() + + col = split.column() + col.itemL(text="Volume Initialization:") + col.itemR(fluid, "volume_initialization", text="") + col.itemR(fluid, "export_animated_mesh") + + split.column() + + elif fluid.type == 'PARTICLE': + split = layout.split(percentage=0.5) + + col = split.column() + col.itemL(text="Influence:") + col.itemR(fluid, "particle_influence", text="Size") + col.itemR(fluid, "alpha_influence", text="Alpha") + + col = split.column() + col.itemL(text="Type:") + col.itemR(fluid, "drops") + col.itemR(fluid, "floats") + col = split.column() + col.itemL() + col.itemR(fluid, "tracer") + + layout.itemR(fluid, "path", text="") + + elif fluid.type == 'CONTROL': + split = layout.split() + + col = split.column() + col.itemL(text="") + col.itemR(fluid, "quality", slider=True) + col.itemR(fluid, "reverse_frames") + + col = split.column() + col.itemL(text="Time:") + sub = col.column(align=True) + sub.itemR(fluid, "start_time", text="Start") + sub.itemR(fluid, "end_time", text="End") + + split = layout.split() + + col = split.column() + col.itemL(text="Attraction Force:") + sub = col.column(align=True) + sub.itemR(fluid, "attraction_strength", text="Strength") + sub.itemR(fluid, "attraction_radius", text="Radius") + + col = split.column() + col.itemL(text="Velocity Force:") + sub = col.column(align=True) + sub.itemR(fluid, "velocity_strength", text="Strength") + sub.itemR(fluid, "velocity_radius", text="Radius") + + +class PHYSICS_PT_domain_gravity(PhysicButtonsPanel): + bl_label = "Domain World" + bl_default_closed = True + + def poll(self, context): + md = context.fluid + return md and (md.settings.type == 'DOMAIN') + + def draw(self, context): + layout = self.layout + + fluid = context.fluid.settings + + split = layout.split() + + col = split.column() + col.itemL(text="Gravity:") + col.itemR(fluid, "gravity", text="") + col.itemL(text="Real World Size:") + col.itemR(fluid, "real_world_size", text="Metres") + + col = split.column() + col.itemL(text="Viscosity Presets:") + sub = col.column(align=True) + sub.itemR(fluid, "viscosity_preset", text="") + + if fluid.viscosity_preset == 'MANUAL': + sub.itemR(fluid, "viscosity_base", text="Base") + sub.itemR(fluid, "viscosity_exponent", text="Exponent", slider=True) + else: + sub.itemL() + sub.itemL() + + col.itemL(text="Optimization:") + sub = col.column(align=True) + sub.itemR(fluid, "grid_levels", slider=True) + sub.itemR(fluid, "compressibility", slider=True) + + +class PHYSICS_PT_domain_boundary(PhysicButtonsPanel): + bl_label = "Domain Boundary" + bl_default_closed = True + + def poll(self, context): + md = context.fluid + return md and (md.settings.type == 'DOMAIN') + + def draw(self, context): + layout = self.layout + + fluid = context.fluid.settings + + split = layout.split() + + col = split.column() + col.itemL(text="Slip Type:") + sub = col.column(align=True) + sub.itemR(fluid, "slip_type", text="") + if fluid.slip_type == 'PARTIALSLIP': + sub.itemR(fluid, "partial_slip_factor", slider=True, text="Amount") + + col = split.column() + col.itemL(text="Surface:") + sub = col.column(align=True) + sub.itemR(fluid, "surface_smoothing", text="Smoothing") + sub.itemR(fluid, "surface_subdivisions", text="Subdivisions") + + +class PHYSICS_PT_domain_particles(PhysicButtonsPanel): + bl_label = "Domain Particles" + bl_default_closed = True + + def poll(self, context): + md = context.fluid + return md and (md.settings.type == 'DOMAIN') + + def draw(self, context): + layout = self.layout + + fluid = context.fluid.settings + + col = layout.column(align=True) + col.itemR(fluid, "tracer_particles") + col.itemR(fluid, "generate_particles") + +bpy.types.register(PHYSICS_PT_fluid) +bpy.types.register(PHYSICS_PT_domain_gravity) +bpy.types.register(PHYSICS_PT_domain_boundary) +bpy.types.register(PHYSICS_PT_domain_particles) diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py new file mode 100644 index 00000000000..3b9b6fdf2b1 --- /dev/null +++ b/release/scripts/ui/properties_physics_smoke.py @@ -0,0 +1,219 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +from properties_physics_common import point_cache_ui +from properties_physics_common import effector_weights_ui + + +class PhysicButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + ob = context.object + rd = context.scene.render_data + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + + +class PHYSICS_PT_smoke(PhysicButtonsPanel): + bl_label = "Smoke" + + def draw(self, context): + layout = self.layout + + md = context.smoke + ob = context.object + + split = layout.split() + split.operator_context = 'EXEC_DEFAULT' + + if md: + # remove modifier + settings + split.set_context_pointer("modifier", md) + split.itemO("object.modifier_remove", text="Remove") + + row = split.row(align=True) + row.itemR(md, "render", text="") + row.itemR(md, "realtime", text="") + + else: + # add modifier + split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add") + split.itemL() + + if md: + layout.itemR(md, "smoke_type", expand=True) + + if md.smoke_type == 'TYPE_DOMAIN': + + domain = md.domain_settings + + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + col.itemR(domain, "maxres", text="Divisions") + + col = split.column() + col.itemL(text="Behavior:") + col.itemR(domain, "alpha") + col.itemR(domain, "beta") + col.itemR(domain, "dissolve_smoke", text="Dissolve") + sub = col.column() + sub.active = domain.dissolve_smoke + sub.itemR(domain, "dissolve_speed", text="Time") + sub.itemR(domain, "dissolve_smoke_log", text="Slow") + + elif md.smoke_type == 'TYPE_FLOW': + + flow = md.flow_settings + + split = layout.split() + + col = split.column() + col.itemR(flow, "outflow") + col.itemL(text="Particle System:") + col.item_pointerR(flow, "psys", ob, "particle_systems", text="") + + if md.flow_settings.outflow: + col = split.column() + else: + col = split.column() + col.itemL(text="Behavior:") + col.itemR(flow, "temperature") + col.itemR(flow, "density") + + #elif md.smoke_type == 'TYPE_COLL': + # layout.itemS() + + +class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): + bl_label = "Smoke Groups" + bl_default_closed = True + + def poll(self, context): + md = context.smoke + return md and (md.smoke_type == 'TYPE_DOMAIN') + + def draw(self, context): + layout = self.layout + + group = context.smoke.domain_settings + + split = layout.split() + + col = split.column() + col.itemL(text="Flow Group:") + col.itemR(group, "fluid_group", text="") + + #col.itemL(text="Effector Group:") + #col.itemR(group, "eff_group", text="") + + col = split.column() + col.itemL(text="Collision Group:") + col.itemR(group, "coll_group", text="") + + +class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): + bl_label = "Smoke Cache" + bl_default_closed = True + + def poll(self, context): + md = context.smoke + return md and (md.smoke_type == 'TYPE_DOMAIN') + + def draw(self, context): + layout = self.layout + + md = context.smoke.domain_settings + cache = md.point_cache_low + + point_cache_ui(self, cache, cache.baked == False, 0, 1) + + +class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): + bl_label = "Smoke High Resolution" + bl_default_closed = True + + def poll(self, context): + md = context.smoke + return md and (md.smoke_type == 'TYPE_DOMAIN') + + def draw_header(self, context): + high = context.smoke.domain_settings + + self.layout.itemR(high, "highres", text="") + + def draw(self, context): + layout = self.layout + + md = context.smoke.domain_settings + + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + col.itemR(md, "amplify", text="Divisions") + + col = split.column() + col.itemL(text="Noise Method:") + col.row().itemR(md, "noise_type", text="") + col.itemR(md, "strength") + col.itemR(md, "viewhighres") + + +class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): + bl_label = "Smoke High Resolution Cache" + bl_default_closed = True + + def poll(self, context): + md = context.smoke + return md and (md.smoke_type == 'TYPE_DOMAIN') and md.domain_settings.highres + + def draw(self, context): + layout = self.layout + + md = context.smoke.domain_settings + cache = md.point_cache_high + + point_cache_ui(self, cache, cache.baked == False, 0, 1) + + +class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel): + bl_label = "Smoke Field Weights" + bl_default_closed = True + + def poll(self, context): + smoke = context.smoke + return (smoke and smoke.smoke_type == 'TYPE_DOMAIN') + + def draw(self, context): + domain = context.smoke.domain_settings + effector_weights_ui(self, domain.effector_weights) + +bpy.types.register(PHYSICS_PT_smoke) +bpy.types.register(PHYSICS_PT_smoke_field_weights) +bpy.types.register(PHYSICS_PT_smoke_cache) +bpy.types.register(PHYSICS_PT_smoke_highres) +bpy.types.register(PHYSICS_PT_smoke_groups) +bpy.types.register(PHYSICS_PT_smoke_cache_highres) diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py new file mode 100644 index 00000000000..f43d903d0c7 --- /dev/null +++ b/release/scripts/ui/properties_physics_softbody.py @@ -0,0 +1,274 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +from properties_physics_common import point_cache_ui +from properties_physics_common import effector_weights_ui + + +def softbody_panel_enabled(md): + return md.point_cache.baked == False + + +class PhysicButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "physics" + + def poll(self, context): + ob = context.object + rd = context.scene.render_data + return (ob and ob.type == 'MESH') and (not rd.use_game_engine) + + +class PHYSICS_PT_softbody(PhysicButtonsPanel): + bl_label = "Soft Body" + + def draw(self, context): + layout = self.layout + + md = context.soft_body + ob = context.object + + split = layout.split() + split.operator_context = "EXEC_DEFAULT" + + if md: + # remove modifier + settings + split.set_context_pointer("modifier", md) + split.itemO("object.modifier_remove", text="Remove") + + row = split.row(align=True) + row.itemR(md, "render", text="") + row.itemR(md, "realtime", text="") + else: + # add modifier + split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add") + split.itemL("") + + if md: + softbody = md.settings + + # General + split = layout.split() + split.enabled = softbody_panel_enabled(md) + + col = split.column() + col.itemL(text="Object:") + col.itemR(softbody, "friction") + col.itemR(softbody, "mass") + col.item_pointerR(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:") + + col = split.column() + col.itemL(text="Simulation:") + col.itemR(softbody, "speed") + + +class PHYSICS_PT_softbody_cache(PhysicButtonsPanel): + bl_label = "Soft Body Cache" + bl_default_closed = True + + def poll(self, context): + return context.soft_body + + def draw(self, context): + md = context.soft_body + point_cache_ui(self, md.point_cache, softbody_panel_enabled(md), 0, 0) + + +class PHYSICS_PT_softbody_goal(PhysicButtonsPanel): + bl_label = "Soft Body Goal" + bl_default_closed = True + + def poll(self, context): + return context.soft_body + + def draw_header(self, context): + softbody = context.soft_body.settings + + self.layout.active = softbody_panel_enabled(context.soft_body) + self.layout.itemR(softbody, "use_goal", text="") + + def draw(self, context): + layout = self.layout + + md = context.soft_body + softbody = md.settings + ob = context.object + + layout.active = softbody.use_goal and softbody_panel_enabled(md) + + split = layout.split() + + # Goal + split = layout.split() + + col = split.column() + col.itemL(text="Goal Strengths:") + col.itemR(softbody, "goal_default", text="Default") + sub = col.column(align=True) + sub.itemR(softbody, "goal_min", text="Minimum") + sub.itemR(softbody, "goal_max", text="Maximum") + + col = split.column() + col.itemL(text="Goal Settings:") + col.itemR(softbody, "goal_spring", text="Stiffness") + col.itemR(softbody, "goal_friction", text="Damping") + + layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group") + + +class PHYSICS_PT_softbody_edge(PhysicButtonsPanel): + bl_label = "Soft Body Edges" + bl_default_closed = True + + def poll(self, context): + return context.soft_body + + def draw_header(self, context): + softbody = context.soft_body.settings + + self.layout.active = softbody_panel_enabled(context.soft_body) + self.layout.itemR(softbody, "use_edges", text="") + + def draw(self, context): + layout = self.layout + + md = context.soft_body + softbody = md.settings + ob = context.object + + layout.active = softbody.use_edges and softbody_panel_enabled(md) + + split = layout.split() + + col = split.column() + col.itemL(text="Springs:") + col.itemR(softbody, "pull") + col.itemR(softbody, "push") + col.itemR(softbody, "damp") + col.itemR(softbody, "plastic") + col.itemR(softbody, "bending") + col.itemR(softbody, "spring_length", text="Length") + col.item_pointerR(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:") + + col = split.column() + col.itemR(softbody, "stiff_quads") + sub = col.column() + sub.active = softbody.stiff_quads + sub.itemR(softbody, "shear") + + col.itemR(softbody, "new_aero", text="Aero") + sub = col.column() + sub.enabled = softbody.new_aero + sub.itemR(softbody, "aero", text="Factor") + + col.itemL(text="Collision:") + col.itemR(softbody, "edge_collision", text="Edge") + col.itemR(softbody, "face_collision", text="Face") + + +class PHYSICS_PT_softbody_collision(PhysicButtonsPanel): + bl_label = "Soft Body Collision" + bl_default_closed = True + + def poll(self, context): + return context.soft_body + + def draw_header(self, context): + softbody = context.soft_body.settings + + self.layout.active = softbody_panel_enabled(context.soft_body) + self.layout.itemR(softbody, "self_collision", text="") + + def draw(self, context): + layout = self.layout + + md = context.soft_body + softbody = md.settings + ob = context.object + + layout.active = softbody.self_collision and softbody_panel_enabled(md) + + layout.itemL(text="Collision Type:") + layout.itemR(softbody, "collision_type", expand=True) + + col = layout.column(align=True) + col.itemL(text="Ball:") + col.itemR(softbody, "ball_size", text="Size") + col.itemR(softbody, "ball_stiff", text="Stiffness") + col.itemR(softbody, "ball_damp", text="Dampening") + + +class PHYSICS_PT_softbody_solver(PhysicButtonsPanel): + bl_label = "Soft Body Solver" + bl_default_closed = True + + def poll(self, context): + return context.soft_body + + def draw(self, context): + layout = self.layout + + md = context.soft_body + softbody = md.settings + ob = context.object + + layout.active = softbody_panel_enabled(md) + + # Solver + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Step Size:") + col.itemR(softbody, "minstep") + col.itemR(softbody, "maxstep") + col.itemR(softbody, "auto_step", text="Auto-Step") + + col = split.column() + col.itemR(softbody, "error_limit") + col.itemL(text="Helpers:") + col.itemR(softbody, "choke") + col.itemR(softbody, "fuzzy") + + layout.itemL(text="Diagnostics:") + layout.itemR(softbody, "diagnose") + + +class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel): + bl_label = "Soft Body Field Weights" + bl_default_closed = True + + def poll(self, context): + return (context.soft_body) + + def draw(self, context): + md = context.soft_body + softbody = md.settings + effector_weights_ui(self, softbody.effector_weights) + +bpy.types.register(PHYSICS_PT_softbody) +bpy.types.register(PHYSICS_PT_softbody_cache) +bpy.types.register(PHYSICS_PT_softbody_goal) +bpy.types.register(PHYSICS_PT_softbody_edge) +bpy.types.register(PHYSICS_PT_softbody_collision) +bpy.types.register(PHYSICS_PT_softbody_solver) +bpy.types.register(PHYSICS_PT_softbody_field_weights) diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py new file mode 100644 index 00000000000..6aafc808502 --- /dev/null +++ b/release/scripts/ui/properties_render.py @@ -0,0 +1,483 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class RenderButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "render" + # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here + + def poll(self, context): + rd = context.scene.render_data + return (context.scene and rd.use_game_engine == False) and (rd.engine in self.COMPAT_ENGINES) + + +class RENDER_PT_render(RenderButtonsPanel): + bl_label = "Render" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + row = layout.row() + row.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL') + row.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION') + + layout.itemR(rd, "display_mode", text="Display") + + +class RENDER_PT_layers(RenderButtonsPanel): + bl_label = "Layers" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + scene = context.scene + rd = scene.render_data + + row = layout.row() + row.template_list(rd, "layers", rd, "active_layer_index", rows=2) + + col = row.column(align=True) + col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="") + col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="") + + rl = rd.layers[rd.active_layer_index] + + if rl: + layout.itemR(rl, "name") + + split = layout.split() + + col = split.column() + col.itemR(scene, "visible_layers", text="Scene") + col = split.column() + col.itemR(rl, "visible_layers", text="Layer") + + layout.itemR(rl, "light_override", text="Light") + layout.itemR(rl, "material_override", text="Material") + + layout.itemS() + layout.itemL(text="Include:") + + split = layout.split() + + col = split.column() + col.itemR(rl, "zmask") + row = col.row() + row.itemR(rl, "zmask_negate", text="Negate") + row.active = rl.zmask + col.itemR(rl, "all_z") + + col = split.column() + col.itemR(rl, "solid") + col.itemR(rl, "halo") + col.itemR(rl, "ztransp") + + col = split.column() + col.itemR(rl, "sky") + col.itemR(rl, "edge") + col.itemR(rl, "strand") + + if rl.zmask: + split = layout.split() + split.itemL(text="Zmask Layers:") + split.column().itemR(rl, "zmask_layers", text="") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemL(text="Passes:") + col.itemR(rl, "pass_combined") + col.itemR(rl, "pass_z") + col.itemR(rl, "pass_vector") + col.itemR(rl, "pass_normal") + col.itemR(rl, "pass_uv") + col.itemR(rl, "pass_mist") + col.itemR(rl, "pass_object_index") + + col = split.column() + col.itemL() + col.itemR(rl, "pass_color") + col.itemR(rl, "pass_diffuse") + row = col.row() + row.itemR(rl, "pass_specular") + row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X') + row = col.row() + row.itemR(rl, "pass_shadow") + row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X') + row = col.row() + row.itemR(rl, "pass_ao") + row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X') + row = col.row() + row.itemR(rl, "pass_reflection") + row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X') + row = col.row() + row.itemR(rl, "pass_refraction") + row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X') + + +class RENDER_PT_shading(RenderButtonsPanel): + bl_label = "Shading" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + split = layout.split() + + col = split.column() + col.itemR(rd, "render_textures", text="Textures") + col.itemR(rd, "render_shadows", text="Shadows") + col.itemR(rd, "render_sss", text="Subsurface Scattering") + col.itemR(rd, "render_envmaps", text="Environment Map") + + col = split.column() + col.itemR(rd, "render_raytracing", text="Ray Tracing") + col.itemR(rd, "color_management") + col.itemR(rd, "alpha_mode", text="Alpha") + + +class RENDER_PT_performance(RenderButtonsPanel): + bl_label = "Performance" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + split = layout.split() + + col = split.column(align=True) + col.itemL(text="Threads:") + col.row().itemR(rd, "threads_mode", expand=True) + sub = col.column() + sub.enabled = rd.threads_mode == 'THREADS_FIXED' + sub.itemR(rd, "threads") + col.itemL(text="Tiles:") + col.itemR(rd, "parts_x", text="X") + col.itemR(rd, "parts_y", text="Y") + + col = split.column() + col.itemL(text="Memory:") + sub = col.column() + sub.itemR(rd, "save_buffers") + sub.enabled = not rd.full_sample + sub = col.column() + sub.active = rd.use_compositing + sub.itemR(rd, "free_image_textures") + sub = col.column() + sub.active = rd.render_raytracing + sub.itemL(text="Acceleration structure:") + sub.itemR(rd, "raytrace_structure", text="") + if rd.raytrace_structure == "OCTREE": + sub.itemR(rd, "octree_resolution", text="Resolution") + else: + sub.itemR(rd, "use_instances", text="Instances") + sub.itemR(rd, "use_local_coords", text="Local Coordinates") + + +class RENDER_PT_post_processing(RenderButtonsPanel): + bl_label = "Post Processing" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + split = layout.split() + + col = split.column() + col.itemR(rd, "use_compositing") + col.itemR(rd, "use_sequencer") + + col = split.column() + col.itemR(rd, "dither_intensity", text="Dither", slider=True) + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemR(rd, "fields", text="Fields") + sub = col.column() + sub.active = rd.fields + sub.row().itemR(rd, "field_order", expand=True) + sub.itemR(rd, "fields_still", text="Still") + + col = split.column() + col.itemR(rd, "edge") + sub = col.column() + sub.active = rd.edge + sub.itemR(rd, "edge_threshold", text="Threshold", slider=True) + sub.itemR(rd, "edge_color", text="") + + +class RENDER_PT_output(RenderButtonsPanel): + bl_label = "Output" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + layout.itemR(rd, "output_path", text="") + + split = layout.split() + col = split.column() + col.itemR(rd, "file_format", text="") + col.row().itemR(rd, "color_mode", text="Color", expand=True) + + col = split.column() + col.itemR(rd, "file_extensions") + col.itemR(rd, "use_overwrite") + col.itemR(rd, "use_placeholder") + + if rd.file_format in ('AVIJPEG', 'JPEG'): + split = layout.split() + split.itemR(rd, "quality", slider=True) + + elif rd.file_format == 'OPENEXR': + split = layout.split() + + col = split.column() + col.itemL(text="Codec:") + col.itemR(rd, "exr_codec", text="") + + subsplit = split.split() + col = subsplit.column() + col.itemR(rd, "exr_half") + col.itemR(rd, "exr_zbuf") + col = subsplit.column() + col.itemR(rd, "exr_preview") + + elif rd.file_format == 'JPEG2000': + split = layout.split() + col = split.column() + col.itemL(text="Depth:") + col.row().itemR(rd, "jpeg2k_depth", expand=True) + + col = split.column() + col.itemR(rd, "jpeg2k_preset", text="") + col.itemR(rd, "jpeg2k_ycc") + + elif rd.file_format in ('CINEON', 'DPX'): + split = layout.split() + col = split.column() + col.itemR(rd, "cineon_log", text="Convert to Log") + + col = split.column(align=True) + col.active = rd.cineon_log + col.itemR(rd, "cineon_black", text="Black") + col.itemR(rd, "cineon_white", text="White") + col.itemR(rd, "cineon_gamma", text="Gamma") + + elif rd.file_format == 'TIFF': + split = layout.split() + split.itemR(rd, "tiff_bit") + + +class RENDER_PT_encoding(RenderButtonsPanel): + bl_label = "Encoding" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + rd = context.scene.render_data + return rd.file_format in ('FFMPEG', 'XVID', 'H264', 'THEORA') + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + split = layout.split() + + split.itemR(rd, "ffmpeg_format") + if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'): + split.itemR(rd, "ffmpeg_codec") + else: + split.itemL() + + split = layout.split() + + col = split.column() + col.itemR(rd, "ffmpeg_video_bitrate") + col.itemL(text="Rate:") + col.itemR(rd, "ffmpeg_minrate", text="Minimum") + col.itemR(rd, "ffmpeg_maxrate", text="Maximum") + col.itemR(rd, "ffmpeg_buffersize", text="Buffer") + + col = split.column() + col.itemR(rd, "ffmpeg_gopsize") + col.itemR(rd, "ffmpeg_autosplit") + col.itemL(text="Mux:") + col.itemR(rd, "ffmpeg_muxrate", text="Rate") + col.itemR(rd, "ffmpeg_packetsize", text="Packet Size") + + row = layout.row() + row.itemL(text="Audio:") + row = layout.row() + row.itemR(rd, "ffmpeg_audio_codec") + + split = layout.split() + + col = split.column() + col.itemR(rd, "ffmpeg_audio_bitrate") + col.itemR(rd, "ffmpeg_audio_mixrate") + col = split.column() + col.itemR(rd, "ffmpeg_multiplex_audio") + col.itemR(rd, "ffmpeg_audio_volume") + + +class RENDER_PT_antialiasing(RenderButtonsPanel): + bl_label = "Anti-Aliasing" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + rd = context.scene.render_data + + self.layout.itemR(rd, "antialiasing", text="") + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + layout.active = rd.antialiasing + + split = layout.split() + + col = split.column() + col.row().itemR(rd, "antialiasing_samples", expand=True) + col.itemR(rd, "full_sample") + + col = split.column() + col.itemR(rd, "pixel_filter", text="") + col.itemR(rd, "filter_size", text="Size", slider=True) + + +class RENDER_PT_dimensions(RenderButtonsPanel): + bl_label = "Dimensions" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + scene = context.scene + rd = scene.render_data + + split = layout.split() + + col = split.column() + sub = col.column(align=True) + sub.itemL(text="Resolution:") + sub.itemR(rd, "resolution_x", text="X") + sub.itemR(rd, "resolution_y", text="Y") + sub.itemR(rd, "resolution_percentage", text="") + + sub.itemL(text="Aspect Ratio:") + sub.itemR(rd, "pixel_aspect_x", text="X") + sub.itemR(rd, "pixel_aspect_y", text="Y") + + row = col.row() + row.itemR(rd, "use_border", text="Border") + rowsub = row.row() + rowsub.active = rd.use_border + rowsub.itemR(rd, "crop_to_border", text="Crop") + + col = split.column(align=True) + col.itemL(text="Frame Range:") + col.itemR(scene, "start_frame", text="Start") + col.itemR(scene, "end_frame", text="End") + col.itemR(scene, "frame_step", text="Step") + + col.itemL(text="Frame Rate:") + col.itemR(rd, "fps") + col.itemR(rd, "fps_base", text="/") + + +class RENDER_PT_stamp(RenderButtonsPanel): + bl_label = "Stamp" + bl_default_closed = True + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + rd = context.scene.render_data + + self.layout.itemR(rd, "render_stamp", text="") + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + layout.active = rd.render_stamp + + split = layout.split() + + col = split.column() + col.itemR(rd, "stamp_time", text="Time") + col.itemR(rd, "stamp_date", text="Date") + col.itemR(rd, "stamp_render_time", text="RenderTime") + col.itemR(rd, "stamp_frame", text="Frame") + col.itemR(rd, "stamp_scene", text="Scene") + col.itemR(rd, "stamp_camera", text="Camera") + col.itemR(rd, "stamp_filename", text="Filename") + col.itemR(rd, "stamp_marker", text="Marker") + col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip") + + col = split.column() + col.active = rd.render_stamp + col.itemR(rd, "stamp_foreground", slider=True) + col.itemR(rd, "stamp_background", slider=True) + col.itemR(rd, "stamp_font_size", text="Font Size") + + row = layout.split(percentage=0.2) + row.itemR(rd, "stamp_note", text="Note") + sub = row.row() + sub.active = rd.stamp_note + sub.itemR(rd, "stamp_note_text", text="") + +bpy.types.register(RENDER_PT_render) +bpy.types.register(RENDER_PT_layers) +bpy.types.register(RENDER_PT_dimensions) +bpy.types.register(RENDER_PT_antialiasing) +bpy.types.register(RENDER_PT_shading) +bpy.types.register(RENDER_PT_output) +bpy.types.register(RENDER_PT_encoding) +bpy.types.register(RENDER_PT_performance) +bpy.types.register(RENDER_PT_post_processing) +bpy.types.register(RENDER_PT_stamp) diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py new file mode 100644 index 00000000000..9ab431a2d6d --- /dev/null +++ b/release/scripts/ui/properties_scene.py @@ -0,0 +1,161 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class SceneButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "scene" + + def poll(self, context): + return context.scene + + +class SCENE_PT_scene(SceneButtonsPanel): + bl_label = "Scene" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + scene = context.scene + + layout.itemR(scene, "camera") + layout.itemR(scene, "set", text="Background") + + +class SCENE_PT_unit(SceneButtonsPanel): + bl_label = "Units" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + unit = context.scene.unit_settings + + col = layout.column() + col.row().itemR(unit, "system", expand=True) + + row = layout.row() + row.active = (unit.system != 'NONE') + row.itemR(unit, "scale_length", text="Scale") + row.itemR(unit, "use_separate") + + +class SCENE_PT_keying_sets(SceneButtonsPanel): + bl_label = "Keying Sets" + + def draw(self, context): + layout = self.layout + + scene = context.scene + + row = layout.row() + + col = row.column() + col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2) + + col = row.column(align=True) + col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="") + col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="") + + ks = scene.active_keying_set + if ks: + row = layout.row() + + col = row.column() + col.itemR(ks, "name") + col.itemR(ks, "absolute") + + col = row.column() + col.itemL(text="Keyframing Settings:") + col.itemR(ks, "insertkey_needed", text="Needed") + col.itemR(ks, "insertkey_visual", text="Visual") + + +class SCENE_PT_keying_set_paths(SceneButtonsPanel): + bl_label = "Active Keying Set" + + def poll(self, context): + return (context.scene != None) and (context.scene.active_keying_set != None) + + def draw(self, context): + layout = self.layout + + scene = context.scene + ks = scene.active_keying_set + + row = layout.row() + row.itemL(text="Paths:") + + row = layout.row() + + col = row.column() + col.template_list(ks, "paths", ks, "active_path_index", rows=2) + + col = row.column(align=True) + col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="") + col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="") + + ksp = ks.active_path + if ksp: + col = layout.column() + col.itemL(text="Target:") + col.template_any_ID(ksp, "id", "id_type") + col.template_path_builder(ksp, "rna_path", ksp.id) + + + row = layout.row() + + col = row.column() + col.itemL(text="Array Target:") + col.itemR(ksp, "entire_array") + if ksp.entire_array == False: + col.itemR(ksp, "array_index") + + col = row.column() + col.itemL(text="F-Curve Grouping:") + col.itemR(ksp, "grouping") + if ksp.grouping == 'NAMED': + col.itemR(ksp, "group") + + +class SCENE_PT_physics(SceneButtonsPanel): + bl_label = "Gravity" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + self.layout.itemR(context.scene, "use_gravity", text="") + + def draw(self, context): + layout = self.layout + + scene = context.scene + + layout.active = scene.use_gravity + + layout.itemR(scene, "gravity", text="") + +bpy.types.register(SCENE_PT_scene) +bpy.types.register(SCENE_PT_unit) +bpy.types.register(SCENE_PT_keying_sets) +bpy.types.register(SCENE_PT_keying_set_paths) +bpy.types.register(SCENE_PT_physics) diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py new file mode 100644 index 00000000000..69540f7dea7 --- /dev/null +++ b/release/scripts/ui/properties_texture.py @@ -0,0 +1,841 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +def active_node_mat(mat): + if mat: + mat_node = mat.active_node_material + if mat_node: + return mat_node + else: + return mat + + return None + + +def context_tex_datablock(context): + + idblock = active_node_mat(context.material) + if idblock: + return idblock + + idblock = context.lamp + if idblock: + return idblock + + idblock = context.world + if idblock: + return idblock + + idblock = context.brush + return idblock + + +class TextureButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "texture" + + def poll(self, context): + tex = context.texture + return (tex and (tex.type != 'NONE' or tex.use_nodes)) + + +class TEXTURE_PT_preview(TextureButtonsPanel): + bl_label = "Preview" + + def draw(self, context): + layout = self.layout + + tex = context.texture + slot = context.texture_slot + + idblock = context_tex_datablock(context) + + if idblock: + layout.template_preview(tex, parent=idblock, slot=slot) + else: + layout.template_preview(tex, slot=slot) + + +class TEXTURE_PT_context_texture(TextureButtonsPanel): + bl_label = "" + bl_show_header = False + + def poll(self, context): + return (context.material or context.world or context.lamp or context.brush or context.texture) + + def draw(self, context): + layout = self.layout + + tex = context.texture + + idblock = context_tex_datablock(context) + + space = context.space_data + + if idblock: + row = layout.row() + + row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2) + + col = row.column(align=True) + col.item_enumO("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP') + col.item_enumO("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN') + + + split = layout.split(percentage=0.65) + + if idblock: + split.template_ID(idblock, "active_texture", new="texture.new") + elif tex: + split.template_ID(space, "pin_id") + + if (not space.pin_id) and ( + context.sculpt_object or + context.vertex_paint_object or + context.weight_paint_object or + context.texture_paint_object): + + split.itemR(space, "brush_texture", text="Brush", toggle=True) + + if tex: + layout.itemR(tex, "use_nodes") + + split = layout.split(percentage=0.2) + + if tex.use_nodes: + slot = context.texture_slot + + if slot: + split.itemL(text="Output:") + split.itemR(slot, "output_node", text="") + + else: + split.itemL(text="Type:") + split.itemR(tex, "type", text="") + + +class TEXTURE_PT_colors(TextureButtonsPanel): + bl_label = "Colors" + bl_default_closed = True + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "use_color_ramp", text="Ramp") + if tex.use_color_ramp: + layout.template_color_ramp(tex, "color_ramp", expand=True) + + split = layout.split() + + col = split.column() + col.itemL(text="RGB Multiply:") + sub = col.column(align=True) + sub.itemR(tex, "factor_red", text="R") + sub.itemR(tex, "factor_green", text="G") + sub.itemR(tex, "factor_blue", text="B") + + col = split.column() + col.itemL(text="Adjust:") + col.itemR(tex, "brightness") + col.itemR(tex, "contrast") + +# Texture Slot Panels # + + +class TextureSlotPanel(TextureButtonsPanel): + + def poll(self, context): + return (context.texture_slot and + TextureButtonsPanel.poll(self, context)) + + +class TEXTURE_PT_mapping(TextureSlotPanel): + bl_label = "Mapping" + + def draw(self, context): + layout = self.layout + + idblock = context_tex_datablock(context) + + tex = context.texture_slot + textype = context.texture + + if type(idblock) != bpy.types.Brush: + split = layout.split(percentage=0.3) + col = split.column() + col.itemL(text="Coordinates:") + col = split.column() + col.itemR(tex, "texture_coordinates", text="") + + if tex.texture_coordinates == 'ORCO': + """ + ob = context.object + if ob and ob.type == 'MESH': + split = layout.split(percentage=0.3) + split.itemL(text="Mesh:") + split.itemR(ob.data, "texco_mesh", text="") + """ + elif tex.texture_coordinates == 'UV': + split = layout.split(percentage=0.3) + split.itemL(text="Layer:") + ob = context.object + if ob and ob.type == 'MESH': + split.item_pointerR(tex, "uv_layer", ob.data, "uv_textures", text="") + else: + split.itemR(tex, "uv_layer", text="") + + elif tex.texture_coordinates == 'OBJECT': + split = layout.split(percentage=0.3) + split.itemL(text="Object:") + split.itemR(tex, "object", text="") + + if type(idblock) == bpy.types.Brush: + layout.itemR(tex, "map_mode", expand=True) + + row = layout.row() + row.active = tex.map_mode in ('FIXED', 'TILED') + row.itemR(tex, "angle") + + row = layout.row() + row.active = tex.map_mode in ('TILED', '3D') + row.column().itemR(tex, "size") + else: + if type(idblock) == bpy.types.Material: + split = layout.split(percentage=0.3) + split.itemL(text="Projection:") + split.itemR(tex, "mapping", text="") + + split = layout.split() + + col = split.column() + if tex.texture_coordinates in ('ORCO', 'UV'): + col.itemR(tex, "from_dupli") + elif tex.texture_coordinates == 'OBJECT': + col.itemR(tex, "from_original") + else: + col.itemL() + + col = split.column() + row = col.row() + row.itemR(tex, "x_mapping", text="") + row.itemR(tex, "y_mapping", text="") + row.itemR(tex, "z_mapping", text="") + + # any non brush + row = layout.row() + row.column().itemR(tex, "offset") + row.column().itemR(tex, "size") + + +class TEXTURE_PT_influence(TextureSlotPanel): + bl_label = "Influence" + + def poll(self, context): + return context.texture_slot + + def draw(self, context): + + layout = self.layout + + idblock = context_tex_datablock(context) + + textype = context.texture + tex = context.texture_slot + + def factor_but(layout, active, toggle, factor, name): + row = layout.row(align=True) + row.itemR(tex, toggle, text="") + sub = row.row() + sub.active = active + sub.itemR(tex, factor, text=name, slider=True) + + if type(idblock) == bpy.types.Material: + if idblock.type in ('SURFACE', 'HALO', 'WIRE'): + split = layout.split() + + col = split.column() + col.itemL(text="Diffuse:") + factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity") + factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color") + factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha") + factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency") + + col.itemL(text="Specular:") + factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity") + factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color") + factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness") + + col = split.column() + col.itemL(text="Shading:") + factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient") + factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit") + factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror") + factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror") + + col.itemL(text="Geometry:") + factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal") + factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp") + factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace") + + #sub = col.column() + #sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror + #sub.itemR(tex, "default_value", text="Amount", slider=True) + elif idblock.type == 'VOLUME': + split = layout.split() + + col = split.column() + factor_but(col, tex.map_density, "map_density", "density_factor", "Density") + factor_but(col, tex.map_emission, "map_emission", "emission_factor", "Emission") + factor_but(col, tex.map_scattering, "map_scattering", "scattering_factor", "Scattering") + factor_but(col, tex.map_reflection, "map_reflection", "reflection_factor", "Reflection") + + col = split.column() + col.itemL(text=" ") + factor_but(col, tex.map_alpha, "map_coloremission", "coloremission_factor", "Emission Color") + factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color") + factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color") + + elif type(idblock) == bpy.types.Lamp: + row = layout.row() + factor_but(row, tex.map_color, "map_color", "color_factor", "Color") + factor_but(row, tex.map_shadow, "map_shadow", "shadow_factor", "Shadow") + + elif type(idblock) == bpy.types.World: + split = layout.split() + + col = split.column() + factor_but(col, tex.map_blend, "map_blend", "blend_factor", "Blend") + factor_but(col, tex.map_horizon, "map_horizon", "horizon_factor", "Horizon") + + col = split.column() + factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up") + factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down") + + layout.itemS() + + split = layout.split() + + col = split.column() + col.itemR(tex, "blend_type", text="Blend") + col.itemR(tex, "rgb_to_intensity") + sub = col.column() + sub.active = tex.rgb_to_intensity + sub.itemR(tex, "color", text="") + + col = split.column() + col.itemR(tex, "negate", text="Negative") + col.itemR(tex, "stencil") + + if type(idblock) in (bpy.types.Material, bpy.types.World): + col.itemR(tex, "default_value", text="DVar", slider=True) + +# Texture Type Panels # + + +class TextureTypePanel(TextureButtonsPanel): + + def poll(self, context): + tex = context.texture + return (tex and tex.type == self.tex_type and not tex.use_nodes) + + +class TEXTURE_PT_clouds(TextureTypePanel): + bl_label = "Clouds" + tex_type = 'CLOUDS' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "stype", expand=True) + layout.itemL(text="Noise:") + layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.itemR(tex, "noise_basis", text="Basis") + + flow = layout.column_flow() + flow.itemR(tex, "noise_size", text="Size") + flow.itemR(tex, "noise_depth", text="Depth") + flow.itemR(tex, "nabla", text="Nabla") + + +class TEXTURE_PT_wood(TextureTypePanel): + bl_label = "Wood" + tex_type = 'WOOD' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "noisebasis2", expand=True) + layout.itemR(tex, "stype", expand=True) + + col = layout.column() + col.active = tex.stype in ('RINGNOISE', 'BANDNOISE') + col.itemL(text="Noise:") + col.row().itemR(tex, "noise_type", text="Type", expand=True) + col.itemR(tex, "noise_basis", text="Basis") + + flow = layout.column_flow() + flow.active = tex.stype in ('RINGNOISE', 'BANDNOISE') + flow.itemR(tex, "noise_size", text="Size") + flow.itemR(tex, "turbulence") + flow.itemR(tex, "nabla") + + +class TEXTURE_PT_marble(TextureTypePanel): + bl_label = "Marble" + tex_type = 'MARBLE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "stype", expand=True) + layout.itemR(tex, "noisebasis2", expand=True) + layout.itemL(text="Noise:") + layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.itemR(tex, "noise_basis", text="Basis") + + flow = layout.column_flow() + flow.itemR(tex, "noise_size", text="Size") + flow.itemR(tex, "noise_depth", text="Depth") + flow.itemR(tex, "turbulence") + flow.itemR(tex, "nabla") + + +class TEXTURE_PT_magic(TextureTypePanel): + bl_label = "Magic" + tex_type = 'MAGIC' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + row = layout.row() + row.itemR(tex, "noise_depth", text="Depth") + row.itemR(tex, "turbulence") + + +class TEXTURE_PT_blend(TextureTypePanel): + bl_label = "Blend" + tex_type = 'BLEND' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "progression") + sub = layout.row() + + sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL')) + sub.itemR(tex, "flip_axis", expand=True) + + +class TEXTURE_PT_stucci(TextureTypePanel): + bl_label = "Stucci" + tex_type = 'STUCCI' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "stype", expand=True) + layout.itemL(text="Noise:") + layout.itemR(tex, "noise_type", text="Type", expand=True) + layout.itemR(tex, "noise_basis", text="Basis") + + row = layout.row() + row.itemR(tex, "noise_size", text="Size") + row.itemR(tex, "turbulence") + + +class TEXTURE_PT_image(TextureTypePanel): + bl_label = "Image" + tex_type = 'IMAGE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.template_image(tex, "image", tex.image_user) + + +class TEXTURE_PT_image_sampling(TextureTypePanel): + bl_label = "Image Sampling" + bl_default_closed = True + tex_type = 'IMAGE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + slot = context.texture_slot + + split = layout.split() + + col = split.column() + col.itemL(text="Alpha:") + col.itemR(tex, "use_alpha", text="Use") + col.itemR(tex, "calculate_alpha", text="Calculate") + col.itemR(tex, "invert_alpha", text="Invert") + + col.itemL(text="Flip:") + col.itemR(tex, "flip_axis", text="X/Y Axis") + + col = split.column() + col.itemR(tex, "normal_map") + row = col.row() + row.active = tex.normal_map + row.itemR(tex, "normal_space", text="") + + col.itemL(text="Filter:") + col.itemR(tex, "filter", text="") + col.itemR(tex, "filter_size") + col.itemR(tex, "filter_size_minimum") + col.itemR(tex, "mipmap") + + row = col.row() + row.active = tex.mipmap + row.itemR(tex, "mipmap_gauss") + + col.itemR(tex, "interpolation") + if tex.mipmap and tex.filter != 'DEFAULT': + if tex.filter == 'FELINE': + col.itemR(tex, "filter_probes", text="Probes") + else: + col.itemR(tex, "filter_eccentricity", text="Eccentricity") + + +class TEXTURE_PT_image_mapping(TextureTypePanel): + bl_label = "Image Mapping" + bl_default_closed = True + tex_type = 'IMAGE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "extension") + + split = layout.split() + + if tex.extension == 'REPEAT': + col = split.column(align=True) + col.itemL(text="Repeat:") + col.itemR(tex, "repeat_x", text="X") + col.itemR(tex, "repeat_y", text="Y") + + col = split.column(align=True) + col.itemL(text="Mirror:") + col.itemR(tex, "mirror_x", text="X") + col.itemR(tex, "mirror_y", text="Y") + layout.itemS() + + elif tex.extension == 'CHECKER': + col = split.column(align=True) + row = col.row() + row.itemR(tex, "checker_even", text="Even") + row.itemR(tex, "checker_odd", text="Odd") + + split.itemR(tex, "checker_distance", text="Distance") + layout.itemS() + + split = layout.split() + + col = split.column(align=True) + #col.itemR(tex, "crop_rectangle") + col.itemL(text="Crop Minimum:") + col.itemR(tex, "crop_min_x", text="X") + col.itemR(tex, "crop_min_y", text="Y") + + col = split.column(align=True) + col.itemL(text="Crop Maximum:") + col.itemR(tex, "crop_max_x", text="X") + col.itemR(tex, "crop_max_y", text="Y") + + +class TEXTURE_PT_plugin(TextureTypePanel): + bl_label = "Plugin" + tex_type = 'PLUGIN' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemL(text="Nothing yet") + + +class TEXTURE_PT_envmap(TextureTypePanel): + bl_label = "Environment Map" + tex_type = 'ENVIRONMENT_MAP' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemL(text="Nothing yet") + + +class TEXTURE_PT_musgrave(TextureTypePanel): + bl_label = "Musgrave" + tex_type = 'MUSGRAVE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "musgrave_type") + + split = layout.split() + + col = split.column() + col.itemR(tex, "highest_dimension", text="Dimension") + col.itemR(tex, "lacunarity") + col.itemR(tex, "octaves") + + col = split.column() + if (tex.musgrave_type in ('HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): + col.itemR(tex, "offset") + if (tex.musgrave_type in ('RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')): + col.itemR(tex, "gain") + col.itemR(tex, "noise_intensity", text="Intensity") + + layout.itemL(text="Noise:") + + layout.itemR(tex, "noise_basis", text="Basis") + + row = layout.row() + row.itemR(tex, "noise_size", text="Size") + row.itemR(tex, "nabla") + + +class TEXTURE_PT_voronoi(TextureTypePanel): + bl_label = "Voronoi" + tex_type = 'VORONOI' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + split = layout.split() + + col = split.column() + col.itemL(text="Distance Metric:") + col.itemR(tex, "distance_metric", text="") + sub = col.column() + sub.active = tex.distance_metric == 'MINKOVSKY' + sub.itemR(tex, "minkovsky_exponent", text="Exponent") + col.itemL(text="Coloring:") + col.itemR(tex, "coloring", text="") + col.itemR(tex, "noise_intensity", text="Intensity") + + col = split.column(align=True) + col.itemL(text="Feature Weights:") + col.itemR(tex, "weight_1", text="1", slider=True) + col.itemR(tex, "weight_2", text="2", slider=True) + col.itemR(tex, "weight_3", text="3", slider=True) + col.itemR(tex, "weight_4", text="4", slider=True) + + layout.itemL(text="Noise:") + + row = layout.row() + row.itemR(tex, "noise_size", text="Size") + row.itemR(tex, "nabla") + + +class TEXTURE_PT_distortednoise(TextureTypePanel): + bl_label = "Distorted Noise" + tex_type = 'DISTORTED_NOISE' + + def draw(self, context): + layout = self.layout + + tex = context.texture + + layout.itemR(tex, "noise_distortion") + layout.itemR(tex, "noise_basis", text="Basis") + + flow = layout.column_flow() + flow.itemR(tex, "distortion", text="Distortion") + flow.itemR(tex, "noise_size", text="Size") + flow.itemR(tex, "nabla") + + +class TEXTURE_PT_voxeldata(TextureButtonsPanel): + bl_label = "Voxel Data" + + def poll(self, context): + tex = context.texture + return (tex and tex.type == 'VOXEL_DATA') + + def draw(self, context): + layout = self.layout + + tex = context.texture + vd = tex.voxeldata + + layout.itemR(vd, "file_format") + if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']: + layout.itemR(vd, "source_path") + if vd.file_format == 'RAW_8BIT': + layout.itemR(vd, "resolution") + elif vd.file_format == 'SMOKE': + layout.itemR(vd, "domain_object") + + layout.itemR(vd, "still") + row = layout.row() + row.active = vd.still + row.itemR(vd, "still_frame_number") + + layout.itemR(vd, "interpolation") + layout.itemR(vd, "extension") + layout.itemR(vd, "intensity") + + +class TEXTURE_PT_pointdensity(TextureButtonsPanel): + bl_label = "Point Density" + + def poll(self, context): + tex = context.texture + return (tex and tex.type == 'POINT_DENSITY') + + def draw(self, context): + layout = self.layout + + tex = context.texture + pd = tex.pointdensity + + layout.itemR(pd, "point_source", expand=True) + + split = layout.split() + + col = split.column() + if pd.point_source == 'PARTICLE_SYSTEM': + col.itemL(text="Object:") + col.itemR(pd, "object", text="") + + sub = col.column() + sub.enabled = pd.object + if pd.object: + sub.itemL(text="System:") + sub.item_pointerR(pd, "particle_system", pd.object, "particle_systems", text="") + sub.itemL(text="Cache:") + sub.itemR(pd, "particle_cache", text="") + else: + col.itemL(text="Object:") + col.itemR(pd, "object", text="") + col.itemL(text="Cache:") + col.itemR(pd, "vertices_cache", text="") + + col.itemS() + + col.itemL(text="Color Source:") + col.itemR(pd, "color_source", text="") + if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'): + col.itemR(pd, "speed_scale") + if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'): + layout.template_color_ramp(pd, "color_ramp", expand=True) + + col = split.column() + col.itemL() + col.itemR(pd, "radius") + col.itemL(text="Falloff:") + col.itemR(pd, "falloff", text="") + if pd.falloff == 'SOFT': + col.itemR(pd, "falloff_softness") + + +class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel): + bl_label = "Turbulence" + + def poll(self, context): + tex = context.texture + return (tex and tex.type == 'POINT_DENSITY') + + def draw_header(self, context): + layout = self.layout + + tex = context.texture + pd = tex.pointdensity + + layout.itemR(pd, "turbulence", text="") + + def draw(self, context): + layout = self.layout + + tex = context.texture + pd = tex.pointdensity + layout.active = pd.turbulence + + split = layout.split() + + col = split.column() + col.itemL(text="Influence:") + col.itemR(pd, "turbulence_influence", text="") + col.itemL(text="Noise Basis:") + col.itemR(pd, "noise_basis", text="") + + col = split.column() + col.itemL() + col.itemR(pd, "turbulence_size") + col.itemR(pd, "turbulence_depth") + col.itemR(pd, "turbulence_strength") + +bpy.types.register(TEXTURE_PT_context_texture) +bpy.types.register(TEXTURE_PT_preview) + +bpy.types.register(TEXTURE_PT_clouds) # Texture Type Panels +bpy.types.register(TEXTURE_PT_wood) +bpy.types.register(TEXTURE_PT_marble) +bpy.types.register(TEXTURE_PT_magic) +bpy.types.register(TEXTURE_PT_blend) +bpy.types.register(TEXTURE_PT_stucci) +bpy.types.register(TEXTURE_PT_image) +bpy.types.register(TEXTURE_PT_image_sampling) +bpy.types.register(TEXTURE_PT_image_mapping) +bpy.types.register(TEXTURE_PT_plugin) +bpy.types.register(TEXTURE_PT_envmap) +bpy.types.register(TEXTURE_PT_musgrave) +bpy.types.register(TEXTURE_PT_voronoi) +bpy.types.register(TEXTURE_PT_distortednoise) +bpy.types.register(TEXTURE_PT_voxeldata) +bpy.types.register(TEXTURE_PT_pointdensity) +bpy.types.register(TEXTURE_PT_pointdensity_turbulence) + +bpy.types.register(TEXTURE_PT_colors) +bpy.types.register(TEXTURE_PT_mapping) +bpy.types.register(TEXTURE_PT_influence) diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py new file mode 100644 index 00000000000..d00592470f0 --- /dev/null +++ b/release/scripts/ui/properties_world.py @@ -0,0 +1,209 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy + + +class WorldButtonsPanel(bpy.types.Panel): + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "world" + # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here + + def poll(self, context): + rd = context.scene.render_data + return (context.world) and (not rd.use_game_engine) and (rd.engine in self.COMPAT_ENGINES) + + +class WORLD_PT_preview(WorldButtonsPanel): + bl_label = "Preview" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + self.layout.template_preview(context.world) + + +class WORLD_PT_context_world(WorldButtonsPanel): + bl_label = "" + bl_show_header = False + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def poll(self, context): + rd = context.scene.render_data + return (not rd.use_game_engine) and (rd.engine in self.COMPAT_ENGINES) + + def draw(self, context): + layout = self.layout + + scene = context.scene + world = context.world + space = context.space_data + + split = layout.split(percentage=0.65) + + if scene: + split.template_ID(scene, "world", new="world.new") + elif world: + split.template_ID(space, "pin_id") + + +class WORLD_PT_world(WorldButtonsPanel): + bl_label = "World" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw(self, context): + layout = self.layout + + world = context.world + + row = layout.row() + row.itemR(world, "paper_sky") + row.itemR(world, "blend_sky") + row.itemR(world, "real_sky") + + row = layout.row() + row.column().itemR(world, "horizon_color") + col = row.column() + col.itemR(world, "zenith_color") + col.active = world.blend_sky + row.column().itemR(world, "ambient_color") + + +class WORLD_PT_mist(WorldButtonsPanel): + bl_label = "Mist" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + world = context.world + + self.layout.itemR(world.mist, "enabled", text="") + + def draw(self, context): + layout = self.layout + + world = context.world + + layout.active = world.mist.enabled + + flow = layout.column_flow() + flow.itemR(world.mist, "intensity", slider=True) + flow.itemR(world.mist, "start") + flow.itemR(world.mist, "depth") + flow.itemR(world.mist, "height") + + layout.itemR(world.mist, "falloff") + + +class WORLD_PT_stars(WorldButtonsPanel): + bl_label = "Stars" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + world = context.world + + self.layout.itemR(world.stars, "enabled", text="") + + def draw(self, context): + layout = self.layout + + world = context.world + + layout.active = world.stars.enabled + + flow = layout.column_flow() + flow.itemR(world.stars, "size") + flow.itemR(world.stars, "color_randomization", text="Colors") + flow.itemR(world.stars, "min_distance", text="Min. Dist") + flow.itemR(world.stars, "average_separation", text="Separation") + + +class WORLD_PT_ambient_occlusion(WorldButtonsPanel): + bl_label = "Ambient Occlusion" + COMPAT_ENGINES = set(['BLENDER_RENDER']) + + def draw_header(self, context): + world = context.world + + self.layout.itemR(world.ambient_occlusion, "enabled", text="") + + def draw(self, context): + layout = self.layout + + ao = context.world.ambient_occlusion + + layout.active = ao.enabled + + layout.itemR(ao, "gather_method", expand=True) + + split = layout.split() + + col = split.column() + col.itemL(text="Attenuation:") + if ao.gather_method == 'RAYTRACE': + col.itemR(ao, "distance") + col.itemR(ao, "falloff") + sub = col.row() + sub.active = ao.falloff + sub.itemR(ao, "falloff_strength", text="Strength") + + if ao.gather_method == 'RAYTRACE': + col = split.column() + + col.itemL(text="Sampling:") + col.itemR(ao, "sample_method", text="") + + sub = col.column() + sub.itemR(ao, "samples") + + if ao.sample_method == 'ADAPTIVE_QMC': + sub.itemR(ao, "threshold") + sub.itemR(ao, "adapt_to_speed", slider=True) + elif ao.sample_method == 'CONSTANT_JITTERED': + sub.itemR(ao, "bias") + + if ao.gather_method == 'APPROXIMATE': + col = split.column() + + col.itemL(text="Sampling:") + col.itemR(ao, "passes") + col.itemR(ao, "error_tolerance", text="Error") + col.itemR(ao, "pixel_cache") + col.itemR(ao, "correction") + + col = layout.column() + col.itemL(text="Influence:") + + col.row().itemR(ao, "blend_mode", expand=True) + + split = layout.split() + + col = split.column() + col.itemR(ao, "energy") + + col = split.column() + sub = col.split(percentage=0.3) + sub.itemL(text="Color:") + sub.itemR(ao, "color", text="") + +bpy.types.register(WORLD_PT_context_world) +bpy.types.register(WORLD_PT_preview) +bpy.types.register(WORLD_PT_world) +bpy.types.register(WORLD_PT_ambient_occlusion) +bpy.types.register(WORLD_PT_mist) +bpy.types.register(WORLD_PT_stars) diff --git a/release/scripts/ui/space_buttons.py b/release/scripts/ui/space_buttons.py index 299e8bc9dae..d1b7f99cf5d 100644 --- a/release/scripts/ui/space_buttons.py +++ b/release/scripts/ui/space_buttons.py @@ -1,35 +1,55 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class Buttons_HT_header(bpy.types.Header): - __space_type__ = 'PROPERTIES' + bl_space_type = 'PROPERTIES' + + def draw(self, context): + layout = self.layout + + so = context.space_data + scene = context.scene + + row = layout.row(align=True) + row.template_header() - def draw(self, context): - layout = self.layout - - so = context.space_data - scene = context.scene + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("Buttons_MT_view", text="View") - row= layout.row(align=True) - row.template_header() + row = layout.row() + row.itemR(so, "buttons_context", expand=True, text="") + row.itemR(scene, "current_frame") - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("Buttons_MT_view", text="View") - - row = layout.row() - row.itemR(so, "buttons_context", expand=True, text="") - row.itemR(scene, "current_frame") class Buttons_MT_view(bpy.types.Menu): - __label__ = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout - so = context.space_data + def draw(self, context): + layout = self.layout + so = context.space_data - col = layout.column() - col.itemR(so, "panel_alignment", expand=True) + col = layout.column() + col.itemR(so, "panel_alignment", expand=True) bpy.types.register(Buttons_HT_header) bpy.types.register(Buttons_MT_view) diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py index 5bb211f7d98..06754ea81cb 100644 --- a/release/scripts/ui/space_console.py +++ b/release/scripts/ui/space_console.py @@ -1,240 +1,205 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import sys import bpy +from bpy.props import * + class CONSOLE_HT_header(bpy.types.Header): - __space_type__ = 'CONSOLE' - - def draw(self, context): - sc = context.space_data - # text = sc.text - layout = self.layout - - row= layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - - if sc.console_type == 'REPORT': - sub.itemM("CONSOLE_MT_report") - else: - sub.itemM("CONSOLE_MT_console") - - layout.itemS() - layout.itemR(sc, "console_type", expand=True) - - if sc.console_type == 'REPORT': - row = layout.row(align=True) - row.itemR(sc, "show_report_debug", text="Debug") - row.itemR(sc, "show_report_info", text="Info") - row.itemR(sc, "show_report_operator", text="Operators") - row.itemR(sc, "show_report_warn", text="Warnings") - row.itemR(sc, "show_report_error", text="Errors") - - row = layout.row() - row.enabled = sc.show_report_operator - row.itemO("console.report_replay") - else: - row = layout.row(align=True) - row.itemO("console.autocomplete", text="Autocomplete") + bl_space_type = 'CONSOLE' + + def draw(self, context): + sc = context.space_data + # text = sc.text + layout = self.layout + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + + if sc.console_type == 'REPORT': + sub.itemM("CONSOLE_MT_report") + else: + sub.itemM("CONSOLE_MT_console") + + layout.itemS() + layout.itemR(sc, "console_type", expand=True) + + if sc.console_type == 'REPORT': + row = layout.row(align=True) + row.itemR(sc, "show_report_debug", text="Debug") + row.itemR(sc, "show_report_info", text="Info") + row.itemR(sc, "show_report_operator", text="Operators") + row.itemR(sc, "show_report_warn", text="Warnings") + row.itemR(sc, "show_report_error", text="Errors") + + row = layout.row() + row.enabled = sc.show_report_operator + row.itemO("console.report_replay") + else: + row = layout.row(align=True) + row.itemO("console.autocomplete", text="Autocomplete") + class CONSOLE_MT_console(bpy.types.Menu): - __label__ = "Console" + bl_label = "Console" - def draw(self, context): - layout = self.layout - sc = context.space_data + def draw(self, context): + layout = self.layout + layout.column() + layout.itemO("console.clear") + layout.itemO("console.copy") + layout.itemO("console.paste") + layout.itemM("CONSOLE_MT_language") - layout.column() - layout.itemO("console.clear") - layout.itemO("console.copy") - layout.itemO("console.paste") class CONSOLE_MT_report(bpy.types.Menu): - __label__ = "Report" + bl_label = "Report" + + def draw(self, context): + layout = self.layout + layout.column() + layout.itemO("console.select_all_toggle") + layout.itemO("console.select_border") + layout.itemO("console.report_delete") + layout.itemO("console.report_copy") + +class CONSOLE_MT_language(bpy.types.Menu): + bl_label = "Languages..." + + def draw(self, context): + layout = self.layout + layout.column() + + mod = bpy.ops.console + languages = [] + for opname in dir(mod): + # execute_python, execute_shell etc. + if opname.startswith("execute_"): + languages.append(opname.split('_', 1)[-1]) + + languages.sort() + + for language in languages: + layout.item_stringO("console.language", "language", language, text=language[0].upper() + language[1:]) + +def add_scrollback(text, text_type): + for l in text.split('\n'): + bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), + type=text_type) - def draw(self, context): - layout = self.layout - sc = context.space_data - layout.column() - layout.itemO("console.select_all_toggle") - layout.itemO("console.select_border") - layout.itemO("console.report_delete") - layout.itemO("console.report_copy") +class ConsoleExec(bpy.types.Operator): + '''Execute the current console line as a python expression.''' + bl_idname = "console.execute" + bl_label = "Console Execute" + bl_register = False -def add_scrollback(text, text_type): - for l in text.split('\n'): - bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), type=text_type) - -def get_console(console_id): - ''' - helper function for console operators - currently each text datablock gets its own console - code.InteractiveConsole() - ...which is stored in this function. - - console_id can be any hashable type - ''' - import sys, code - - try: consoles = get_console.consoles - except:consoles = get_console.consoles = {} - - # clear all dead consoles, use text names as IDs - # TODO, find a way to clear IDs - ''' - for console_id in list(consoles.keys()): - if console_id not in bpy.data.texts: - del consoles[id] - ''' - - try: - namespace, console, stdout, stderr = consoles[console_id] - except: - namespace = {'__builtins__':__builtins__} # locals() - namespace['bpy'] = bpy - - console = code.InteractiveConsole(namespace) - - import io - stdout = io.StringIO() - stderr = io.StringIO() - - consoles[console_id]= namespace, console, stdout, stderr - - return namespace, console, stdout, stderr - -class CONSOLE_OT_exec(bpy.types.Operator): - '''Execute the current console line as a python expression.''' - __idname__ = "console.execute" - __label__ = "Console Execute" - __register__ = False - - # Both prompts must be the same length - PROMPT = '>>> ' - PROMPT_MULTI = '... ' - - # is this working??? - ''' - def poll(self, context): - return (context.space_data.type == 'PYTHON') - ''' # its not :| - - def execute(self, context): - import sys - - sc = context.space_data - - try: - line = sc.history[-1].line - except: - return ('CANCELLED',) - - if sc.console_type != 'PYTHON': - return ('CANCELLED',) - - namespace, console, stdout, stderr = get_console(hash(context.region)) - - # redirect output - sys.stdout = stdout - sys.stderr = stderr - - # run the console - if not line.strip(): - line_exec = '\n' # executes a multiline statement - else: - line_exec = line - - is_multiline = console.push(line_exec) - - stdout.seek(0) - stderr.seek(0) - - output = stdout.read() - output_err = stderr.read() - - # cleanup - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - sys.last_traceback = None - - # So we can reuse, clear all data - stdout.truncate(0) - stderr.truncate(0) - - bpy.ops.console.scrollback_append(text = sc.prompt+line, type='INPUT') - - if is_multiline: sc.prompt = self.PROMPT_MULTI - else: sc.prompt = self.PROMPT - - # insert a new blank line - bpy.ops.console.history_append(text="", current_character=0, remove_duplicates= True) - - # Insert the output into the editor - # not quite correct because the order might have changed, but ok 99% of the time. - if output: add_scrollback(output, 'OUTPUT') - if output_err: add_scrollback(output_err, 'ERROR') - - - return ('FINISHED',) - - -class CONSOLE_OT_autocomplete(bpy.types.Operator): - '''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one.''' - __idname__ = "console.autocomplete" - __label__ = "Console Autocomplete" - __register__ = False - - def poll(self, context): - return context.space_data.console_type == 'PYTHON' - - def execute(self, context): - - sc = context.space_data - - namespace, console, stdout, stderr = get_console(hash(context.region)) - - current_line = sc.history[-1] - line = current_line.line - - if not console: - return ('CANCELLED',) - - if sc.console_type != 'PYTHON': - return ('CANCELLED',) - - # fake cursor, use for autocomp func. - bcon = {} - bcon['cursor'] = current_line.current_character - bcon['console'] = console - bcon['edit_text'] = line - bcon['namespace'] = namespace - bcon['scrollback'] = '' # nor from the BGE console - - - # This function isnt aware of the text editor or being an operator - # just does the autocomp then copy its results back - import autocomplete - autocomplete.execute(bcon) - - # Now we need to copy back the line from blender back into the text editor. - # This will change when we dont use the text editor anymore - if bcon['scrollback']: - add_scrollback(bcon['scrollback'], 'INFO') - - # copy back - current_line.line = bcon['edit_text'] - current_line.current_character = bcon['cursor'] - - context.area.tag_redraw() - - return ('FINISHED',) + def execute(self, context): + sc = context.space_data + + execute = getattr(bpy.ops.console, "execute_" + sc.language, None) + + if execute: + execute() + else: + print("Error: bpy.ops.console.execute_" + sc.language + " - not found") + + return ('FINISHED',) + + +class ConsoleAutocomplete(bpy.types.Operator): + '''Evaluate the namespace up until the cursor and give a list of + options or complete the name if there is only one.''' + bl_idname = "console.autocomplete" + bl_label = "Console Autocomplete" + bl_register = False + + def poll(self, context): + return context.space_data.console_type != 'REPORT' + + def execute(self, context): + sc = context.space_data + + autocomplete = getattr(bpy.ops.console, "autocomplete_" + sc.language, None) + + if autocomplete: + autocomplete() + else: + print("Error: bpy.ops.console.autocomplete_" + sc.language + " - not found") + + return ('FINISHED',) + + +class ConsoleBanner(bpy.types.Operator): + bl_idname = "console.banner" + + def execute(self, context): + sc = context.space_data + + # default to python + if not sc.language: + sc.language = 'python' + + banner = getattr(bpy.ops.console, "banner_" + sc.language, None) + + if banner: + banner() + else: + print("Error: bpy.ops.console.banner_" + sc.language + " - not found") + + return ('FINISHED',) + + + +class ConsoleLanguage(bpy.types.Operator): + '''Set the current language for this console''' + bl_idname = "console.language" + language = StringProperty(name="Language", maxlen= 32, default= "") + + def execute(self, context): + sc = context.space_data + + # defailt to python + sc.language = self.language + + bpy.ops.console.banner() + + # insert a new blank line + bpy.ops.console.history_append(text="", current_character=0, + remove_duplicates=True) + return ('FINISHED',) bpy.types.register(CONSOLE_HT_header) bpy.types.register(CONSOLE_MT_console) bpy.types.register(CONSOLE_MT_report) +bpy.types.register(CONSOLE_MT_language) -bpy.ops.add(CONSOLE_OT_exec) -bpy.ops.add(CONSOLE_OT_autocomplete) +# Stubs that call the language operators +bpy.ops.add(ConsoleExec) +bpy.ops.add(ConsoleAutocomplete) +bpy.ops.add(ConsoleBanner) +# Set the language and call the banner +bpy.ops.add(ConsoleLanguage) diff --git a/release/scripts/ui/space_filebrowser.py b/release/scripts/ui/space_filebrowser.py index 5b0c189464f..2269cdd9a97 100644 --- a/release/scripts/ui/space_filebrowser.py +++ b/release/scripts/ui/space_filebrowser.py @@ -1,48 +1,67 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### +# <pep8 compliant> import bpy + class FILEBROWSER_HT_header(bpy.types.Header): - __space_type__ = 'FILE_BROWSER' - - def draw(self, context): - layout = self.layout - - st = context.space_data - params = st.params - - layout.template_header(menus=False) - - row = layout.row() - row.itemS() - - row = layout.row(align=True) - row.itemO("file.previous", text="", icon='ICON_BACK') - row.itemO("file.next", text="", icon='ICON_FORWARD') - row.itemO("file.parent", text="", icon='ICON_FILE_PARENT') - row.itemO("file.refresh", text="", icon='ICON_FILE_REFRESH') - - row = layout.row() - row.itemS() - - row = layout.row(align=True) - row.itemO("file.directory_new", text="", icon='ICON_NEWFOLDER') - - layout.itemR(params, "display", expand=True, text="") - layout.itemR(params, "sort", expand=True, text="") - - layout.itemR(params, "hide_dot", text="Hide Invisible") - layout.itemR(params, "do_filter", text="", icon='ICON_FILTER') - - row = layout.row(align=True) - row.itemR(params, "filter_folder", text=""); - row.itemR(params, "filter_blender", text=""); - row.itemR(params, "filter_image", text=""); - row.itemR(params, "filter_movie", text=""); - row.itemR(params, "filter_script", text=""); - row.itemR(params, "filter_font", text=""); - row.itemR(params, "filter_sound", text=""); - row.itemR(params, "filter_text", text=""); - - row.active = params.do_filter + bl_space_type = 'FILE_BROWSER' + + def draw(self, context): + layout = self.layout + + st = context.space_data + params = st.params + + layout.template_header(menus=False) + + row = layout.row() + row.itemS() + + row = layout.row(align=True) + row.itemO("file.previous", text="", icon='ICON_BACK') + row.itemO("file.next", text="", icon='ICON_FORWARD') + row.itemO("file.parent", text="", icon='ICON_FILE_PARENT') + row.itemO("file.refresh", text="", icon='ICON_FILE_REFRESH') + + row = layout.row() + row.itemS() + + row = layout.row(align=True) + row.itemO("file.directory_new", text="", icon='ICON_NEWFOLDER') + + layout.itemR(params, "display", expand=True, text="") + layout.itemR(params, "sort", expand=True, text="") + + layout.itemR(params, "hide_dot", text="Hide Invisible") + layout.itemR(params, "do_filter", text="", icon='ICON_FILTER') + + row = layout.row(align=True) + row.active = params.do_filter + + row.itemR(params, "filter_folder", text="") + row.itemR(params, "filter_blender", text="") + row.itemR(params, "filter_image", text="") + row.itemR(params, "filter_movie", text="") + row.itemR(params, "filter_script", text="") + row.itemR(params, "filter_font", text="") + row.itemR(params, "filter_sound", text="") + row.itemR(params, "filter_text", text="") bpy.types.register(FILEBROWSER_HT_header) diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py index 93d8043b61f..95425958f3e 100644 --- a/release/scripts/ui/space_image.py +++ b/release/scripts/ui/space_image.py @@ -1,481 +1,512 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class IMAGE_MT_view(bpy.types.Menu): - __label__ = "View" + bl_label = "View" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout - - sima = context.space_data - uv = sima.uv_editor - settings = context.tool_settings + sima = context.space_data + uv = sima.uv_editor + settings = context.tool_settings - show_uvedit = sima.show_uvedit + show_uvedit = sima.show_uvedit - layout.itemO("image.properties", icon='ICON_MENU_PANEL') + layout.itemO("image.properties", icon='ICON_MENU_PANEL') - layout.itemS() + layout.itemS() - layout.itemR(sima, "update_automatically") - if show_uvedit: - layout.itemR(settings, "uv_local_view") # Numpad / + layout.itemR(sima, "update_automatically") + if show_uvedit: + layout.itemR(settings, "uv_local_view") # Numpad / - layout.itemS() + layout.itemS() - layout.itemO("image.view_zoom_in") - layout.itemO("image.view_zoom_out") + layout.itemO("image.view_zoom_in") + layout.itemO("image.view_zoom_out") - layout.itemS() + layout.itemS() - ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]]; + ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]] - for a, b in ratios: - text = "Zoom %d:%d" % (a, b) - layout.item_floatO("image.view_zoom_ratio", "ratio", a/b, text=text) + for a, b in ratios: + text = "Zoom %d:%d" % (a, b) + layout.item_floatO("image.view_zoom_ratio", "ratio", a / b, text=text) - layout.itemS() + layout.itemS() - if show_uvedit: - layout.itemO("image.view_selected") + if show_uvedit: + layout.itemO("image.view_selected") + + layout.itemO("image.view_all") + layout.itemO("screen.screen_full_area") - layout.itemO("image.view_all") - layout.itemO("screen.screen_full_area") class IMAGE_MT_select(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("uv.select_border") + layout.item_booleanO("uv.select_border", "pinned", True) - layout.itemO("uv.select_border") - layout.item_booleanO("uv.select_border", "pinned", True) + layout.itemS() - layout.itemS() - - layout.itemO("uv.select_all_toggle") - layout.itemO("uv.select_inverse") - layout.itemO("uv.unlink_selection") - - layout.itemS() + layout.itemO("uv.select_all_toggle") + layout.itemO("uv.select_inverse") + layout.itemO("uv.unlink_selection") + + layout.itemS() + + layout.itemO("uv.select_pinned") + layout.itemO("uv.select_linked") - layout.itemO("uv.select_pinned") - layout.itemO("uv.select_linked") class IMAGE_MT_image(bpy.types.Menu): - __label__ = "Image" + bl_label = "Image" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + sima = context.space_data + ima = sima.image - sima = context.space_data - ima = sima.image + layout.itemO("image.new") + layout.itemO("image.open") - layout.itemO("image.new") - layout.itemO("image.open") + show_render = sima.show_render - show_render = sima.show_render + if ima: + if not show_render: + layout.itemO("image.replace") + layout.itemO("image.reload") - if ima: - if not show_render: - layout.itemO("image.replace") - layout.itemO("image.reload") + layout.itemO("image.save") + layout.itemO("image.save_as") - layout.itemO("image.save") - layout.itemO("image.save_as") + if ima.source == 'SEQUENCE': + layout.itemO("image.save_sequence") - if ima.source == 'SEQUENCE': - layout.itemO("image.save_sequence") + if not show_render: + layout.itemS() - if not show_render: - layout.itemS() + if ima.packed_file: + layout.itemO("image.unpack") + else: + layout.itemO("image.pack") - if ima.packed_file: - layout.itemO("image.unpack") - else: - layout.itemO("image.pack") + # only for dirty && specific image types, perhaps + # this could be done in operator poll too + if ima.dirty: + if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER': + layout.item_booleanO("image.pack", "as_png", True, text="Pack As PNG") - # only for dirty && specific image types, perhaps - # this could be done in operator poll too - if ima.dirty: - if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER': - layout.item_booleanO("image.pack", "as_png", True, text="Pack As PNG") + layout.itemS() - layout.itemS() + layout.itemR(sima, "image_painting") - layout.itemR(sima, "image_painting") class IMAGE_MT_uvs_showhide(bpy.types.Menu): - __label__ = "Show/Hide Faces" + bl_label = "Show/Hide Faces" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout + + layout.itemO("uv.reveal") + layout.itemO("uv.hide") + layout.item_booleanO("uv.hide", "unselected", True) - layout.itemO("uv.reveal") - layout.itemO("uv.hide") - layout.item_booleanO("uv.hide", "unselected", True) class IMAGE_MT_uvs_transform(bpy.types.Menu): - __label__ = "Transform" + bl_label = "Transform" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("tfm.translate") + layout.itemO("tfm.rotate") + layout.itemO("tfm.resize") - layout.itemO("tfm.translate") - layout.itemO("tfm.rotate") - layout.itemO("tfm.resize") class IMAGE_MT_uvs_mirror(bpy.types.Menu): - __label__ = "Mirror" + bl_label = "Mirror" - def draw(self, context): - layout = self.layout - layout.operator_context = "EXEC_REGION_WIN" + def draw(self, context): + layout = self.layout + layout.operator_context = "EXEC_REGION_WIN" - props= layout.itemO("tfm.mirror", text="X Axis", properties=True) - props.constraint_axis[0]= True + props = layout.itemO("tfm.mirror", text="X Axis", properties=True) + props.constraint_axis[0] = True + + props = layout.itemO("tfm.mirror", text="Y Axis", properties=True) + props.constraint_axis[1] = True - props= layout.itemO("tfm.mirror", text="Y Axis", properties=True) - props.constraint_axis[1]= True class IMAGE_MT_uvs_weldalign(bpy.types.Menu): - __label__ = "Weld/Align" + bl_label = "Weld/Align" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("uv.weld") # W, 1 + layout.items_enumO("uv.align", "axis") # W, 2/3/4 - layout.itemO("uv.weld") # W, 1 - layout.items_enumO("uv.align", "axis") # W, 2/3/4 class IMAGE_MT_uvs(bpy.types.Menu): - __label__ = "UVs" + bl_label = "UVs" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout - - sima = context.space_data - uv = sima.uv_editor - settings = context.tool_settings + sima = context.space_data + uv = sima.uv_editor + settings = context.tool_settings - layout.itemR(uv, "snap_to_pixels") - layout.itemR(uv, "constrain_to_image_bounds") + layout.itemR(uv, "snap_to_pixels") + layout.itemR(uv, "constrain_to_image_bounds") - layout.itemS() + layout.itemS() - layout.itemR(uv, "live_unwrap") - layout.itemO("uv.unwrap") - layout.item_booleanO("uv.pin", "clear", True, text="Unpin") - layout.itemO("uv.pin") + layout.itemR(uv, "live_unwrap") + layout.itemO("uv.unwrap") + layout.item_booleanO("uv.pin", "clear", True, text="Unpin") + layout.itemO("uv.pin") - layout.itemS() + layout.itemS() - layout.itemO("uv.pack_islands") - layout.itemO("uv.average_islands_scale") - layout.itemO("uv.minimize_stretch") - layout.itemO("uv.stitch") + layout.itemO("uv.pack_islands") + layout.itemO("uv.average_islands_scale") + layout.itemO("uv.minimize_stretch") + layout.itemO("uv.stitch") - layout.itemS() + layout.itemS() - layout.itemM("IMAGE_MT_uvs_transform") - layout.itemM("IMAGE_MT_uvs_mirror") - layout.itemM("IMAGE_MT_uvs_weldalign") + layout.itemM("IMAGE_MT_uvs_transform") + layout.itemM("IMAGE_MT_uvs_mirror") + layout.itemM("IMAGE_MT_uvs_weldalign") - layout.itemS() + layout.itemS() - layout.itemR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") + layout.item_menu_enumR(settings, "proportional_editing") + layout.item_menu_enumR(settings, "proportional_editing_falloff") - layout.itemS() + layout.itemS() + + layout.itemM("IMAGE_MT_uvs_showhide") - layout.itemM("IMAGE_MT_uvs_showhide") class IMAGE_HT_header(bpy.types.Header): - __space_type__ = 'IMAGE_EDITOR' - - def draw(self, context): - layout = self.layout - - sima = context.space_data - ima = sima.image - iuser = sima.image_user - settings = context.tool_settings - - show_render = sima.show_render - show_paint = sima.show_paint - show_uvedit = sima.show_uvedit - - row = layout.row(align=True) - row.template_header() - - # menus - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("IMAGE_MT_view") - - if show_uvedit: - sub.itemM("IMAGE_MT_select") - - if ima and ima.dirty: - sub.itemM("IMAGE_MT_image", text="Image*") - else: - sub.itemM("IMAGE_MT_image", text="Image") - - if show_uvedit: - sub.itemM("IMAGE_MT_uvs") - - layout.template_ID(sima, "image", new="image.new") - - # uv editing - if show_uvedit: - uvedit = sima.uv_editor - - layout.itemR(uvedit, "pivot", text="", icon_only=True) - layout.itemR(settings, "uv_sync_selection", text="") - - if settings.uv_sync_selection: - layout.itemR(settings, "mesh_selection_mode", text="", expand=True) - else: - layout.itemR(settings, "uv_selection_mode", text="", expand=True) - layout.itemR(uvedit, "sticky_selection_mode", text="", icon_only=True) - pass - - row = layout.row(align=True) - row.itemR(settings, "snap", text="") - if settings.snap: - row.itemR(settings, "snap_mode", text="") - - """ - mesh = context.edit_object.data - row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_textures") - """ - - if ima: - # layers - layout.template_image_layers(ima, iuser) - - # painting - layout.itemR(sima, "image_painting", text="") - - # draw options - row = layout.row(align=True) - row.itemR(sima, "draw_channels", text="", expand=True) - - row = layout.row(align=True) - if ima.type == 'COMPOSITE': - row.itemO("image.record_composite", icon='ICON_REC') - if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'): - row.itemO("image.play_composite", icon='ICON_PLAY') - - if show_uvedit or sima.image_painting: - layout.itemR(sima, "update_automatically", text="") + bl_space_type = 'IMAGE_EDITOR' + + def draw(self, context): + layout = self.layout + + sima = context.space_data + ima = sima.image + iuser = sima.image_user + settings = context.tool_settings + + show_render = sima.show_render + show_paint = sima.show_paint + show_uvedit = sima.show_uvedit + + row = layout.row(align=True) + row.template_header() + + # menus + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("IMAGE_MT_view") + + if show_uvedit: + sub.itemM("IMAGE_MT_select") + + if ima and ima.dirty: + sub.itemM("IMAGE_MT_image", text="Image*") + else: + sub.itemM("IMAGE_MT_image", text="Image") + + if show_uvedit: + sub.itemM("IMAGE_MT_uvs") + + layout.template_ID(sima, "image", new="image.new") + + # uv editing + if show_uvedit: + uvedit = sima.uv_editor + + layout.itemR(uvedit, "pivot", text="", icon_only=True) + layout.itemR(settings, "uv_sync_selection", text="") + + if settings.uv_sync_selection: + layout.itemR(settings, "mesh_selection_mode", text="", expand=True) + else: + layout.itemR(settings, "uv_selection_mode", text="", expand=True) + layout.itemR(uvedit, "sticky_selection_mode", text="", icon_only=True) + pass + + row = layout.row(align=True) + row.itemR(settings, "snap", text="") + if settings.snap: + row.itemR(settings, "snap_mode", text="") + + """ + mesh = context.edit_object.data + row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_textures") + """ + + if ima: + # layers + layout.template_image_layers(ima, iuser) + + # painting + layout.itemR(sima, "image_painting", text="") + + # draw options + row = layout.row(align=True) + row.itemR(sima, "draw_channels", text="", expand=True) + + row = layout.row(align=True) + if ima.type == 'COMPOSITE': + row.itemO("image.record_composite", icon='ICON_REC') + if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'): + row.itemO("image.play_composite", icon='ICON_PLAY') + + if show_uvedit or sima.image_painting: + layout.itemR(sima, "update_automatically", text="") + class IMAGE_PT_image_properties(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Image" + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Image" + + def poll(self, context): + sima = context.space_data + return (sima.image) - def poll(self, context): - sima = context.space_data - return (sima.image) + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + sima = context.space_data + ima = sima.image + iuser = sima.image_user - sima = context.space_data - ima = sima.image - iuser = sima.image_user + layout.template_image(sima, "image", iuser, compact=True) - layout.template_image(sima, "image", iuser, compact=True) class IMAGE_PT_game_properties(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Game Properties" - - def poll(self, context): - rd = context.scene.render_data - sima = context.space_data - return (sima and sima.image) and (rd.engine == 'BLENDER_GAME') - - def draw(self, context): - layout = self.layout - - sima = context.space_data - ima = sima.image - - split = layout.split() - - col = split.column() - - sub = col.column(align=True) - sub.itemR(ima, "animated") - - subsub = sub.column() - subsub.active = ima.animated - subsub.itemR(ima, "animation_start", text="Start") - subsub.itemR(ima, "animation_end", text="End") - subsub.itemR(ima, "animation_speed", text="Speed") - - col.itemR(ima, "tiles") - sub = col.column(align=True) - sub.active = ima.tiles or ima.animated - sub.itemR(ima, "tiles_x", text="X") - sub.itemR(ima, "tiles_y", text="Y") - - col = split.column() - col.itemL(text="Clamp:") - col.itemR(ima, "clamp_x", text="X") - col.itemR(ima, "clamp_y", text="Y") - col.itemS() - col.itemR(ima, "mapping", expand=True) - - + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Game Properties" + + def poll(self, context): + rd = context.scene.render_data + sima = context.space_data + return (sima and sima.image) and (rd.engine == 'BLENDER_GAME') + + def draw(self, context): + layout = self.layout + + sima = context.space_data + ima = sima.image + + split = layout.split() + + col = split.column() + + sub = col.column(align=True) + sub.itemR(ima, "animated") + + subsub = sub.column() + subsub.active = ima.animated + subsub.itemR(ima, "animation_start", text="Start") + subsub.itemR(ima, "animation_end", text="End") + subsub.itemR(ima, "animation_speed", text="Speed") + + col.itemR(ima, "tiles") + sub = col.column(align=True) + sub.active = ima.tiles or ima.animated + sub.itemR(ima, "tiles_x", text="X") + sub.itemR(ima, "tiles_y", text="Y") + + col = split.column() + col.itemL(text="Clamp:") + col.itemR(ima, "clamp_x", text="X") + col.itemR(ima, "clamp_y", text="Y") + col.itemS() + col.itemR(ima, "mapping", expand=True) + class IMAGE_PT_view_properties(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Display" - - def poll(self, context): - sima = context.space_data - return (sima and (sima.image or sima.show_uvedit)) - - def draw(self, context): - layout = self.layout - - sima = context.space_data - ima = sima.image - show_uvedit = sima.show_uvedit - uvedit = sima.uv_editor - - split = layout.split() - - col = split.column() - if ima: - col.itemR(ima, "display_aspect", text="Aspect Ratio") - - col = split.column() - col.itemL(text="Coordinates:") - col.itemR(sima, "draw_repeated", text="Repeat") - if show_uvedit: - col.itemR(uvedit, "normalized_coordinates", text="Normalized") - elif show_uvedit: - col.itemL(text="Coordinates:") - col.itemR(uvedit, "normalized_coordinates", text="Normalized") - - if show_uvedit: - - col = layout.column() - col.itemL(text="UVs:") - row = col.row() - row.itemR(uvedit, "edge_draw_type", expand=True) - - split = layout.split() - - col = split.column() - col.itemR(uvedit, "draw_stretch", text="Stretch") - sub = col.column() - sub.active = uvedit.draw_stretch - sub.row().itemR(uvedit, "draw_stretch_type", expand=True) - - col = split.column() - col.itemR(uvedit, "draw_smooth_edges", text="Smooth") - col.itemR(uvedit, "draw_modified_edges", text="Modified") - #col.itemR(uvedit, "draw_edges") - #col.itemR(uvedit, "draw_faces") + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Display" + + def poll(self, context): + sima = context.space_data + return (sima and (sima.image or sima.show_uvedit)) + + def draw(self, context): + layout = self.layout + + sima = context.space_data + ima = sima.image + show_uvedit = sima.show_uvedit + uvedit = sima.uv_editor + + split = layout.split() + + col = split.column() + if ima: + col.itemR(ima, "display_aspect", text="Aspect Ratio") + + col = split.column() + col.itemL(text="Coordinates:") + col.itemR(sima, "draw_repeated", text="Repeat") + if show_uvedit: + col.itemR(uvedit, "normalized_coordinates", text="Normalized") + elif show_uvedit: + col.itemL(text="Coordinates:") + col.itemR(uvedit, "normalized_coordinates", text="Normalized") + + if show_uvedit: + + col = layout.column() + col.itemL(text="UVs:") + row = col.row() + row.itemR(uvedit, "edge_draw_type", expand=True) + + split = layout.split() + + col = split.column() + col.itemR(uvedit, "draw_stretch", text="Stretch") + sub = col.column() + sub.active = uvedit.draw_stretch + sub.row().itemR(uvedit, "draw_stretch_type", expand=True) + + col = split.column() + col.itemR(uvedit, "draw_smooth_edges", text="Smooth") + col.itemR(uvedit, "draw_modified_edges", text="Modified") + #col.itemR(uvedit, "draw_edges") + #col.itemR(uvedit, "draw_faces") + class IMAGE_PT_paint(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Paint" - - def poll(self, context): - sima = context.space_data - return sima.show_paint - - def draw(self, context): - layout = self.layout - - settings = context.tool_settings.image_paint - brush = settings.brush - - col = layout.split().column() - row = col.row() - row.template_list(settings, "brushes", settings, "active_brush_index", rows=2) - - col.template_ID(settings, "brush", new="brush.add") - - row = layout.row(align=True) - row.item_enumR(settings, "tool", 'DRAW') - row.item_enumR(settings, "tool", 'SOFTEN') - row.item_enumR(settings, "tool", 'CLONE') - row.item_enumR(settings, "tool", 'SMEAR') - - if brush: - col = layout.column() - col.itemR(brush, "color", text="") - - row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") - - col.itemR(brush, "blend", text="Blend") + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Paint" + + def poll(self, context): + sima = context.space_data + return sima.show_paint + + def draw(self, context): + layout = self.layout + + settings = context.tool_settings.image_paint + brush = settings.brush + + col = layout.split().column() + row = col.row() + row.template_list(settings, "brushes", settings, "active_brush_index", rows=2) + + col.template_ID(settings, "brush", new="brush.add") + + row = layout.row(align=True) + row.item_enumR(settings, "tool", 'DRAW') + row.item_enumR(settings, "tool", 'SOFTEN') + row.item_enumR(settings, "tool", 'CLONE') + row.item_enumR(settings, "tool", 'SMEAR') + + if brush: + col = layout.column() + col.itemR(brush, "color", text="") + + row = col.row(align=True) + row.itemR(brush, "size", slider=True) + row.itemR(brush, "use_size_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "strength", slider=True) + row.itemR(brush, "use_strength_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "jitter", slider=True) + row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + + col.itemR(brush, "blend", text="Blend") + class IMAGE_PT_paint_stroke(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Paint Stroke" - __default_closed__ = True - - def poll(self, context): - sima = context.space_data - settings = context.tool_settings.image_paint - return sima.show_paint and settings.brush - - def draw(self, context): - layout = self.layout - - settings = context.tool_settings.image_paint - brush = settings.brush - - layout.itemR(brush, "use_airbrush") - col = layout.column() - col.active = brush.use_airbrush - col.itemR(brush, "rate", slider=True) - - layout.itemR(brush, "use_space") - row = layout.row(align=True) - row.active = brush.use_space - row.itemR(brush, "spacing", text="Distance", slider=True) - row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Paint Stroke" + bl_default_closed = True + + def poll(self, context): + sima = context.space_data + settings = context.tool_settings.image_paint + return sima.show_paint and settings.brush + + def draw(self, context): + layout = self.layout + + settings = context.tool_settings.image_paint + brush = settings.brush + + layout.itemR(brush, "use_airbrush") + col = layout.column() + col.active = brush.use_airbrush + col.itemR(brush, "rate", slider=True) + + layout.itemR(brush, "use_space") + row = layout.row(align=True) + row.active = brush.use_space + row.itemR(brush, "spacing", text="Distance", slider=True) + row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + class IMAGE_PT_paint_curve(bpy.types.Panel): - __space_type__ = 'IMAGE_EDITOR' - __region_type__ = 'UI' - __label__ = "Paint Curve" - __default_closed__ = True + bl_space_type = 'IMAGE_EDITOR' + bl_region_type = 'UI' + bl_label = "Paint Curve" + bl_default_closed = True - def poll(self, context): - sima = context.space_data - settings = context.tool_settings.image_paint - return sima.show_paint and settings.brush + def poll(self, context): + sima = context.space_data + settings = context.tool_settings.image_paint + return sima.show_paint and settings.brush - def draw(self, context): - layout = self.layout - - settings = context.tool_settings.image_paint - brush = settings.brush + def draw(self, context): + layout = self.layout - layout.template_curve_mapping(brush, "curve") - layout.item_menu_enumO("brush.curve_preset", property="shape") + settings = context.tool_settings.image_paint + brush = settings.brush + + layout.template_curve_mapping(brush, "curve") + layout.item_menu_enumO("brush.curve_preset", property="shape") bpy.types.register(IMAGE_MT_view) bpy.types.register(IMAGE_MT_select) @@ -492,4 +523,3 @@ bpy.types.register(IMAGE_PT_paint_stroke) bpy.types.register(IMAGE_PT_paint_curve) bpy.types.register(IMAGE_PT_game_properties) bpy.types.register(IMAGE_PT_view_properties) - diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py index d1e4ac13ab7..cb1112c9dac 100644 --- a/release/scripts/ui/space_info.py +++ b/release/scripts/ui/space_info.py @@ -1,230 +1,274 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy import dynamic_menu # reload(dynamic_menu) + class INFO_HT_header(bpy.types.Header): - __space_type__ = 'INFO' + bl_space_type = 'INFO' - def draw(self, context): - layout = self.layout - - st = context.space_data - scene = context.scene - rd = scene.render_data + def draw(self, context): + layout = self.layout - row = layout.row(align=True) - row.template_header() + st = context.space_data + scene = context.scene + rd = scene.render_data - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("INFO_MT_file") - sub.itemM("INFO_MT_add") - if rd.use_game_engine: - sub.itemM("INFO_MT_game") - else: - sub.itemM("INFO_MT_render") - sub.itemM("INFO_MT_help") + row = layout.row(align=True) + row.template_header() - layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") - layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete") + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("INFO_MT_file") + sub.itemM("INFO_MT_add") + if rd.use_game_engine: + sub.itemM("INFO_MT_game") + else: + sub.itemM("INFO_MT_render") + sub.itemM("INFO_MT_help") - if rd.multiple_engines: - layout.itemR(rd, "engine", text="") + layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete") + layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete") - layout.itemS() + layout.itemS() - layout.template_operator_search() - layout.template_running_jobs() + if rd.multiple_engines: + layout.itemR(rd, "engine", text="") - layout.itemL(text=scene.statistics()) - - layout.itemO("wm.window_fullscreen_toggle", icon='ICON_ARROW_LEFTRIGHT', text="") + layout.itemS() -class INFO_MT_file(bpy.types.Menu): - __label__ = "File" + layout.template_operator_search() + layout.template_running_jobs() + + layout.itemL(text=scene.statistics()) - def draw(self, context): - layout = self.layout + layout.itemO("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="") - layout.operator_context = "EXEC_AREA" - layout.itemO("wm.read_homefile", text="New", icon='ICON_NEW') - layout.operator_context = "INVOKE_AREA" - layout.itemO("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER') - layout.item_menu_enumO("wm.open_recentfile", "file", text="Open Recent") - layout.itemO("wm.recover_last_session") - layout.itemO("wm.recover_auto_save", text="Recover Auto Save...") - layout.itemS() +class INFO_MT_file(bpy.types.Menu): + bl_label = "File" + + def draw(self, context): + layout = self.layout - layout.operator_context = "EXEC_AREA" - layout.itemO("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') - layout.operator_context = "INVOKE_AREA" - layout.itemO("wm.save_as_mainfile", text="Save As...") - layout.itemO("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') + layout.operator_context = "EXEC_AREA" + layout.itemO("wm.read_homefile", text="New", icon='ICON_NEW') + layout.operator_context = "INVOKE_AREA" + layout.itemO("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER') + layout.item_menu_enumO("wm.open_recentfile", "file", text="Open Recent") + layout.itemO("wm.recover_last_session") + layout.itemO("wm.recover_auto_save", text="Recover Auto Save...") - layout.itemS() - layout.operator_context = "INVOKE_AREA" - layout.itemO("wm.link_append", text="Link") - layout.item_booleanO("wm.link_append", "link", False, text="Append") - layout.itemS() + layout.itemS() - layout.itemM("INFO_MT_file_import") - layout.itemM("INFO_MT_file_export") + layout.operator_context = "EXEC_AREA" + layout.itemO("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK') + layout.operator_context = "INVOKE_AREA" + layout.itemO("wm.save_as_mainfile", text="Save As...") + layout.itemO("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES') - layout.itemS() + layout.itemS() + layout.operator_context = "INVOKE_AREA" + layout.itemO("wm.link_append", text="Link") + layout.item_booleanO("wm.link_append", "link", False, text="Append") + layout.itemS() - layout.itemM("INFO_MT_file_external_data") + layout.itemM("INFO_MT_file_import") + layout.itemM("INFO_MT_file_export") - layout.itemS() + layout.itemS() - layout.operator_context = "EXEC_AREA" - layout.itemO("wm.exit_blender", text="Quit", icon='ICON_QUIT') + layout.itemM("INFO_MT_file_external_data") + layout.itemS() + + layout.operator_context = "EXEC_AREA" + layout.itemO("wm.exit_blender", text="Quit", icon='ICON_QUIT') # test for expanding menus ''' class INFO_MT_file_more(INFO_MT_file): - __label__ = "File" + bl_label = "File" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("wm.read_homefile", text="TESTING ") + layout.itemO("wm.read_homefile", text="TESTING ") dynamic_menu.setup(INFO_MT_file_more) ''' + class INFO_MT_file_import(dynamic_menu.DynMenu): - __label__ = "Import" + bl_idname = "INFO_MT_file_import" + bl_label = "Import" + + def draw(self, context): + self.layout.itemO("WM_OT_collada_import", text="COLLADA (.dae)...") - def draw(self, context): - pass # dynamic menu class INFO_MT_file_export(dynamic_menu.DynMenu): - __label__ = "Export" + bl_idname = "INFO_MT_file_export" + bl_label = "Export" + + def draw(self, context): + self.layout.itemO("WM_OT_collada_export", text="COLLADA (.dae)...") - def draw(self, context): - pass # dynamic menu class INFO_MT_file_external_data(bpy.types.Menu): - __label__ = "External Data" + bl_label = "External Data" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("file.pack_all", text="Pack into .blend file") - layout.itemO("file.unpack_all", text="Unpack into Files...") + layout.itemO("file.pack_all", text="Pack into .blend file") + layout.itemO("file.unpack_all", text="Unpack into Files...") - layout.itemS() + layout.itemS() - layout.itemO("file.make_paths_relative") - layout.itemO("file.make_paths_absolute") - layout.itemO("file.report_missing_files") - layout.itemO("file.find_missing_files") + layout.itemO("file.make_paths_relative") + layout.itemO("file.make_paths_absolute") + layout.itemO("file.report_missing_files") + layout.itemO("file.find_missing_files") class INFO_MT_mesh_add(dynamic_menu.DynMenu): - __label__ = "Mesh" - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - layout.itemO("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane") - layout.itemO("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube") - layout.itemO("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle") - layout.itemO("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere") - layout.itemO("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere") - layout.itemO("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube") - layout.itemO("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone") - layout.itemS() - layout.itemO("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid") - layout.itemO("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey") + bl_idname = "INFO_MT_mesh_add" + bl_label = "Mesh" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + layout.itemO("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane") + layout.itemO("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube") + layout.itemO("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle") + layout.itemO("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere") + layout.itemO("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere") + layout.itemO("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube") + layout.itemO("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone") + layout.itemS() + layout.itemO("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid") + layout.itemO("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey") + class INFO_MT_add(bpy.types.Menu): - __label__ = "Add" + bl_label = "Add" + + def draw(self, context): + layout = self.layout + + layout.operator_context = "EXEC_SCREEN" + + # layout.item_menu_enumO("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') + layout.itemM("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') + + layout.item_menu_enumO("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') + layout.item_menu_enumO("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE') + layout.item_menu_enumO("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META') + layout.itemO("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT') - def draw(self, context): - layout = self.layout + layout.itemS() + + layout.operator_context = "INVOKE_SCREEN" + + layout.itemO("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') + layout.item_enumO("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE') + layout.item_enumO("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY') - layout.operator_context = "EXEC_SCREEN" + layout.itemS() - # layout.item_menu_enumO("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH') - layout.itemM("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH') - - layout.item_menu_enumO("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE') - layout.item_menu_enumO("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE') - layout.item_menu_enumO("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META') - layout.itemO("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT') + layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA') + + layout.operator_context = "EXEC_SCREEN" + + layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP') - layout.itemS() + layout.itemS() - layout.itemO("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE') - layout.item_enumO("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE') - layout.item_enumO("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY') + layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY') - layout.itemS() + layout.itemS() - layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA') - layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP') - - layout.itemS() - - layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY') + layout.item_menu_enumO("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY') - layout.itemS() - - layout.item_menu_enumO("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY') class INFO_MT_game(bpy.types.Menu): - __label__ = "Game" + bl_label = "Game" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - gs = context.scene.game_data + gs = context.scene.game_data - layout.itemO("view3d.game_start") + layout.itemO("view3d.game_start") - layout.itemS() + layout.itemS() + + layout.itemR(gs, "show_debug_properties") + layout.itemR(gs, "show_framerate_profile") + layout.itemR(gs, "show_physics_visualization") + layout.itemR(gs, "deprecation_warnings") - layout.itemR(gs, "show_debug_properties") - layout.itemR(gs, "show_framerate_profile") - layout.itemR(gs, "show_physics_visualization") - layout.itemR(gs, "deprecation_warnings") class INFO_MT_render(bpy.types.Menu): - __label__ = "Render" + bl_label = "Render" + + def draw(self, context): + layout = self.layout + + rd = context.scene.render_data + + layout.itemO("screen.render", text="Render Image", icon='ICON_RENDER_STILL') + layout.item_booleanO("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION') - def draw(self, context): - layout = self.layout - - rd = context.scene.render_data + layout.itemS() - layout.itemO("screen.render", text="Render Image", icon='ICON_RENDER_STILL') - layout.item_booleanO("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION') + layout.itemO("screen.opengl_render", text="OpenGL Render Image") + layout.item_booleanO("screen.opengl_render", "animation", True, text="OpenGL Render Animation") - layout.itemS() + layout.itemS() + + layout.itemO("screen.render_view_show") - layout.itemO("screen.render_view_show") class INFO_MT_help(bpy.types.Menu): - __label__ = "Help" + bl_label = "Help" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("help.manual", icon='ICON_HELP') - layout.itemO("help.release_logs", icon='ICON_URL') + layout.itemO("help.manual", icon='ICON_HELP') + layout.itemO("help.release_logs", icon='ICON_URL') - layout.itemS() + layout.itemS() - layout.itemO("help.blender_website", icon='ICON_URL') - layout.itemO("help.blender_eshop", icon='ICON_URL') - layout.itemO("help.developer_community", icon='ICON_URL') - layout.itemO("help.user_community", icon='ICON_URL') - layout.itemS() - layout.itemO("help.operator_cheat_sheet") + layout.itemO("help.blender_website", icon='ICON_URL') + layout.itemO("help.blender_eshop", icon='ICON_URL') + layout.itemO("help.developer_community", icon='ICON_URL') + layout.itemO("help.user_community", icon='ICON_URL') + layout.itemS() + layout.itemO("help.report_bug", icon='ICON_URL') + layout.itemS() + layout.itemO("help.operator_cheat_sheet") bpy.types.register(INFO_HT_header) bpy.types.register(INFO_MT_file) @@ -239,78 +283,89 @@ bpy.types.register(INFO_MT_help) # Help operators + class HelpOperator(bpy.types.Operator): - def execute(self, context): - try: import webbrowser - except: webbrowser = None - if webbrowser: - webbrowser.open(self.__URL__) - else: - raise Exception("Operator requires a full Python installation") + def execute(self, context): + import webbrowser + webbrowser.open(self._url) + return ('FINISHED',) - return ('FINISHED',) class HELP_OT_manual(HelpOperator): - '''The Blender Wiki manual''' - __idname__ = "help.manual" - __label__ = "Manual" - __URL__ = 'http://wiki.blender.org/index.php/Manual' + '''The Blender Wiki manual''' + bl_idname = "help.manual" + bl_label = "Manual" + _url = 'http://wiki.blender.org/index.php/Manual' + class HELP_OT_release_logs(HelpOperator): - '''Information about the changes in this version of Blender''' - __idname__ = "help.release_logs" - __label__ = "Release Logs" - __URL__ = 'http://www.blender.org/development/release-logs/' + '''Information about the changes in this version of Blender''' + bl_idname = "help.release_logs" + bl_label = "Release Logs" + _url = 'http://www.blender.org/development/release-logs/' + class HELP_OT_blender_website(HelpOperator): - '''The official Blender website''' - __idname__ = "help.blender_website" - __label__ = "Blender Website" - __URL__ = 'http://www.blender.org/' + '''The official Blender website''' + bl_idname = "help.blender_website" + bl_label = "Blender Website" + _url = 'http://www.blender.org/' + class HELP_OT_blender_eshop(HelpOperator): - '''Buy official Blender resources and merchandise online''' - __idname__ = "help.blender_eshop" - __label__ = "Blender e-Shop" - __URL__ = 'http://www.blender3d.org/e-shop' + '''Buy official Blender resources and merchandise online''' + bl_idname = "help.blender_eshop" + bl_label = "Blender e-Shop" + _url = 'http://www.blender3d.org/e-shop' + class HELP_OT_developer_community(HelpOperator): - '''Get involved with Blender development''' - __idname__ = "help.developer_community" - __label__ = "Developer Community" - __URL__ = 'http://www.blender.org/community/get-involved/' + '''Get involved with Blender development''' + bl_idname = "help.developer_community" + bl_label = "Developer Community" + _url = 'http://www.blender.org/community/get-involved/' + class HELP_OT_user_community(HelpOperator): - '''Get involved with other Blender users''' - __idname__ = "help.user_community" - __label__ = "User Community" - __URL__ = 'http://www.blender.org/community/user-community/' + '''Get involved with other Blender users''' + bl_idname = "help.user_community" + bl_label = "User Community" + _url = 'http://www.blender.org/community/user-community/' + + +class HELP_OT_report_bug(HelpOperator): + '''Report a bug in the Blender bug tracker''' + bl_idname = "help.report_bug" + bl_label = "Report a Bug" + _url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse' + class HELP_OT_operator_cheat_sheet(bpy.types.Operator): - __idname__ = "help.operator_cheat_sheet" - __label__ = "Operator Cheat Sheet (new textblock)" - def execute(self, context): - op_strings = [] - tot = 0 - for op_module_name in dir(bpy.ops): - op_module = getattr(bpy.ops, op_module_name) - for op_submodule_name in dir(op_module): - op = getattr(op_module, op_submodule_name) - text = repr(op) - if text.startswith('bpy.ops.'): - op_strings.append(text) - tot += 1 - - op_strings.append('') - - bpy.ops.text.new() # XXX - assumes new text is always at the end! - textblock = bpy.data.texts[-1] - textblock.write('# %d Operators\n\n' % tot) - textblock.write('\n'.join(op_strings)) - textblock.name = "OperatorList.txt" - print("See OperatorList.txt textblock") - return ('FINISHED',) + bl_idname = "help.operator_cheat_sheet" + bl_label = "Operator Cheat Sheet (new textblock)" + + def execute(self, context): + op_strings = [] + tot = 0 + for op_module_name in dir(bpy.ops): + op_module = getattr(bpy.ops, op_module_name) + for op_submodule_name in dir(op_module): + op = getattr(op_module, op_submodule_name) + text = repr(op) + if text.startswith('bpy.ops.'): + op_strings.append(text) + tot += 1 + + op_strings.append('') + + bpy.ops.text.new() # XXX - assumes new text is always at the end! + textblock = bpy.data.texts[-1] + textblock.write('# %d Operators\n\n' % tot) + textblock.write('\n'.join(op_strings)) + textblock.name = "OperatorList.txt" + print("See OperatorList.txt textblock") + return ('FINISHED',) bpy.ops.add(HELP_OT_manual) bpy.ops.add(HELP_OT_release_logs) @@ -318,4 +373,5 @@ bpy.ops.add(HELP_OT_blender_website) bpy.ops.add(HELP_OT_blender_eshop) bpy.ops.add(HELP_OT_developer_community) bpy.ops.add(HELP_OT_user_community) +bpy.ops.add(HELP_OT_report_bug) bpy.ops.add(HELP_OT_operator_cheat_sheet) diff --git a/release/scripts/ui/space_logic.py b/release/scripts/ui/space_logic.py index 5748d15a53a..42daa4ace07 100644 --- a/release/scripts/ui/space_logic.py +++ b/release/scripts/ui/space_logic.py @@ -1,29 +1,49 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class LOGIC_PT_properties(bpy.types.Panel): - __space_type__ = 'LOGIC_EDITOR' - __region_type__ = 'UI' - __label__ = "Properties" - - def poll(self, context): - ob = context.active_object - return ob and ob.game - - def draw(self, context): - layout = self.layout - - ob = context.active_object - game = ob.game - - layout.itemO("object.game_property_new", text="Add Game Property") - - for i, prop in enumerate(game.properties): - - row = layout.row(align=True) - row.itemR(prop, "name", text="") - row.itemR(prop, "type", text="") - row.itemR(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly - row.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO') - row.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X') - + bl_space_type = 'LOGIC_EDITOR' + bl_region_type = 'UI' + bl_label = "Properties" + + def poll(self, context): + ob = context.active_object + return ob and ob.game + + def draw(self, context): + layout = self.layout + + ob = context.active_object + game = ob.game + + layout.itemO("object.game_property_new", text="Add Game Property") + + for i, prop in enumerate(game.properties): + + row = layout.row(align=True) + row.itemR(prop, "name", text="") + row.itemR(prop, "type", text="") + row.itemR(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly + row.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO') + row.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X') + bpy.types.register(LOGIC_PT_properties) diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py index 5c5c49afbc7..9880a320e25 100644 --- a/release/scripts/ui/space_node.py +++ b/release/scripts/ui/space_node.py @@ -1,113 +1,135 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class NODE_HT_header(bpy.types.Header): - __space_type__ = 'NODE_EDITOR' - - def draw(self, context): - layout = self.layout - - snode = context.space_data - - row = layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("NODE_MT_view") - sub.itemM("NODE_MT_select") - sub.itemM("NODE_MT_add") - sub.itemM("NODE_MT_node") - - row = layout.row() - row.itemR(snode, "tree_type", text="", expand=True) - - if snode.tree_type == 'MATERIAL': - ob = snode.id_from - id = snode.id - if ob: - layout.template_ID(ob, "active_material", new="material.new") - if id: - layout.itemR(id, "use_nodes") - - elif snode.tree_type == 'TEXTURE': - row.itemR(snode, "texture_type", text="", expand=True) - - id = snode.id - id_from = snode.id_from - if id_from: - layout.template_ID(id_from, "active_texture", new="texture.new") - if id: - layout.itemR(id, "use_nodes") - - elif snode.tree_type == 'COMPOSITING': - id = snode.id - - layout.itemR(id, "use_nodes") - layout.itemR(id.render_data, "free_unused_nodes", text="Free Unused") - layout.itemR(snode, "backdrop") + bl_space_type = 'NODE_EDITOR' + + def draw(self, context): + layout = self.layout + + snode = context.space_data + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("NODE_MT_view") + sub.itemM("NODE_MT_select") + sub.itemM("NODE_MT_add") + sub.itemM("NODE_MT_node") + + row = layout.row() + row.itemR(snode, "tree_type", text="", expand=True) + + if snode.tree_type == 'MATERIAL': + ob = snode.id_from + id = snode.id + if ob: + layout.template_ID(ob, "active_material", new="material.new") + if id: + layout.itemR(id, "use_nodes") + + elif snode.tree_type == 'TEXTURE': + row.itemR(snode, "texture_type", text="", expand=True) + + id = snode.id + id_from = snode.id_from + if id_from: + layout.template_ID(id_from, "active_texture", new="texture.new") + if id: + layout.itemR(id, "use_nodes") + + elif snode.tree_type == 'COMPOSITING': + id = snode.id + + layout.itemR(id, "use_nodes") + layout.itemR(id.render_data, "free_unused_nodes", text="Free Unused") + layout.itemR(snode, "backdrop") + class NODE_MT_view(bpy.types.Menu): - __label__ = "View" + bl_label = "View" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + # layout.itemO("grease_pencil..") + # layout.itemS() - # layout.itemO("grease_pencil..") - # layout.itemS() + layout.itemO("view2d.zoom_in") + layout.itemO("view2d.zoom_out") - layout.itemO("view2d.zoom_in") - layout.itemO("view2d.zoom_out") + layout.itemS() - layout.itemS() + layout.itemO("node.view_all") + layout.itemO("screen.screen_full_area") - layout.itemO("node.view_all") - layout.itemO("screen.screen_full_area") class NODE_MT_select(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("node.select_border") - layout.itemO("node.select_border") + layout.itemS() + layout.itemO("node.select_all") + layout.itemO("node.select_linked_from") + layout.itemO("node.select_linked_to") - layout.itemS() - layout.itemO("node.select_all") - layout.itemO("node.select_linked_from") - layout.itemO("node.select_linked_to") class NODE_MT_node(bpy.types.Menu): - __label__ = "Node" + bl_label = "Node" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("tfm.translate") - layout.itemO("tfm.resize") - layout.itemO("tfm.rotate") + layout.itemO("tfm.translate") + layout.itemO("tfm.resize") + layout.itemO("tfm.rotate") - layout.itemS() + layout.itemS() - layout.itemO("node.duplicate") - layout.itemO("node.delete") + layout.itemO("node.duplicate") + layout.itemO("node.delete") - # XXX - # layout.itemS() - # layout.itemO("node.make_link") - layout.itemS() - layout.itemO("node.group_edit") - layout.itemO("node.group_ungroup") - layout.itemO("node.group_make") + # XXX + # layout.itemS() + # layout.itemO("node.make_link") + layout.itemS() + layout.itemO("node.group_edit") + layout.itemO("node.group_ungroup") + layout.itemO("node.group_make") - layout.itemS() + layout.itemS() - layout.itemO("node.visibility_toggle") + layout.itemO("node.visibility_toggle") - # XXX - # layout.itemO("node.rename") - # layout.itemS() - # layout.itemO("node.show_cyclic_dependencies") + # XXX + # layout.itemO("node.rename") + # layout.itemS() + # layout.itemO("node.show_cyclic_dependencies") bpy.types.register(NODE_HT_header) bpy.types.register(NODE_MT_view) diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py index 40816309e7e..4d517cd9046 100644 --- a/release/scripts/ui/space_outliner.py +++ b/release/scripts/ui/space_outliner.py @@ -1,77 +1,98 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### +# <pep8 compliant> import bpy + class OUTLINER_HT_header(bpy.types.Header): - __space_type__ = 'OUTLINER' - - def draw(self, context): - layout = self.layout - - space = context.space_data - scene = context.scene - ks = context.scene.active_keying_set - - row = layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("OUTLINER_MT_view") - if space.display_mode == 'DATABLOCKS': - sub.itemM("OUTLINER_MT_edit_datablocks") - - layout.itemR(space, "display_mode", text="") - - layout.itemS() - - if space.display_mode == 'DATABLOCKS': - row = layout.row(align=True) - row.itemO("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="") - row.itemO("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="") - - if ks: - row = layout.row(align=False) - row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") - - row = layout.row(align=True) - row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') - else: - row = layout.row(align=False) - row.itemL(text="No Keying Set active") + bl_space_type = 'OUTLINER' + + def draw(self, context): + layout = self.layout + + space = context.space_data + scene = context.scene + ks = context.scene.active_keying_set + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("OUTLINER_MT_view") + if space.display_mode == 'DATABLOCKS': + sub.itemM("OUTLINER_MT_edit_datablocks") + + layout.itemR(space, "display_mode", text="") + + layout.itemS() + + if space.display_mode == 'DATABLOCKS': + row = layout.row(align=True) + row.itemO("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="") + row.itemO("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="") + + if ks: + row = layout.row(align=False) + row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") + + row = layout.row(align=True) + row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') + row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + else: + row = layout.row(align=False) + row.itemL(text="No Keying Set active") + class OUTLINER_MT_view(bpy.types.Menu): - __label__ = "View" - - def draw(self, context): - layout = self.layout - - space = context.space_data - - col = layout.column() - if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'): - col.itemR(space, "show_restriction_columns") - col.itemS() - col.itemO("outliner.show_active") - - col.itemO("outliner.show_one_level") - col.itemO("outliner.show_hierarchy") - + bl_label = "View" + + def draw(self, context): + layout = self.layout + + space = context.space_data + + col = layout.column() + if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'): + col.itemR(space, "show_restriction_columns") + col.itemS() + col.itemO("outliner.show_active") + + col.itemO("outliner.show_one_level") + col.itemO("outliner.show_hierarchy") + + class OUTLINER_MT_edit_datablocks(bpy.types.Menu): - __label__ = "Edit" - - def draw(self, context): - layout = self.layout - - col = layout.column() - - col.itemO("outliner.keyingset_add_selected") - col.itemO("outliner.keyingset_remove_selected") - - col.itemS() - - col.itemO("outliner.drivers_add_selected") - col.itemO("outliner.drivers_delete_selected") + bl_label = "Edit" + + def draw(self, context): + layout = self.layout + + col = layout.column() + + col.itemO("outliner.keyingset_add_selected") + col.itemO("outliner.keyingset_remove_selected") + + col.itemS() + + col.itemO("outliner.drivers_add_selected") + col.itemO("outliner.drivers_delete_selected") bpy.types.register(OUTLINER_HT_header) bpy.types.register(OUTLINER_MT_view) diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py index ca84e345885..ec90d15968d 100644 --- a/release/scripts/ui/space_sequencer.py +++ b/release/scripts/ui/space_sequencer.py @@ -1,581 +1,618 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + def act_strip(context): - try: return context.scene.sequence_editor.active_strip - except: return None + try: + return context.scene.sequence_editor.active_strip + except: + return None + -# Header class SEQUENCER_HT_header(bpy.types.Header): - __space_type__ = 'SEQUENCE_EDITOR' - - def draw(self, context): - layout = self.layout - - st = context.space_data - - row = layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("SEQUENCER_MT_view") - - row.itemS() - - if st.display_mode == 'SEQUENCER': - sub.itemM("SEQUENCER_MT_select") - sub.itemM("SEQUENCER_MT_marker") - sub.itemM("SEQUENCER_MT_add") - sub.itemM("SEQUENCER_MT_strip") - - layout.itemR(st, "display_mode", text="") - - if st.display_mode == 'SEQUENCER': - layout.itemS() - layout.itemO("sequencer.reload") - else: - layout.itemR(st, "display_channel", text="Channel") + bl_space_type = 'SEQUENCE_EDITOR' + + def draw(self, context): + layout = self.layout + + st = context.space_data + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("SEQUENCER_MT_view") + + row.itemS() + + if st.display_mode == 'SEQUENCER': + sub.itemM("SEQUENCER_MT_select") + sub.itemM("SEQUENCER_MT_marker") + sub.itemM("SEQUENCER_MT_add") + sub.itemM("SEQUENCER_MT_strip") + + layout.itemR(st, "display_mode", text="") + + if st.display_mode == 'SEQUENCER': + layout.itemS() + layout.itemO("sequencer.reload") + else: + layout.itemR(st, "display_channel", text="Channel") + class SEQUENCER_MT_view(bpy.types.Menu): - __label__ = "View" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - layout.column() - - """ - uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP); - short yco= 0, menuwidth=120; - - if (sseq->mainb == SEQ_DRAW_SEQUENCE) { - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, - "Play Back Animation " - "in all Sequence Areas|Alt A", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - } - else { - uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, - "Grease Pencil...", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); - uiDefMenuSep(block); - - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, - "Play Back Animation " - "in this window|Alt A", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - } - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, - "Play Back Animation in all " - "3D Views and Sequence Areas|Alt Shift A", - 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); - - """ - layout.itemS() - layout.itemO("sequencer.view_all") - layout.itemO("sequencer.view_selected") - layout.itemS() - layout.itemO("screen.screen_full_area", text="Toggle Full Screen") - """ - - - /* Lock Time */ - uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, - "Lock Time to Other Windows|", 0, yco-=20, - menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); - - /* Draw time or frames.*/ - uiDefMenuSep(block); - """ - - layout.itemR(st, "draw_frames") - if st.display_mode == 'IMAGE': - layout.itemR(st, "draw_safe_margin") - if st.display_mode == 'WAVEFORM': - layout.itemR(st, "seperate_color_preview") - - """ - if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, ""); - else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); - - """ + bl_label = "View" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + + """ + uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP); + short yco= 0, menuwidth=120; + + if (sseq->mainb == SEQ_DRAW_SEQUENCE) { + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Play Back Animation " + "in all Sequence Areas|Alt A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + } + else { + uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, + "Grease Pencil...", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); + uiDefMenuSep(block); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Play Back Animation " + "in this window|Alt A", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + } + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, + "Play Back Animation in all " + "3D Views and Sequence Areas|Alt Shift A", + 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + + """ + layout.itemS() + layout.itemO("sequencer.view_all") + layout.itemO("sequencer.view_selected") + layout.itemS() + layout.itemO("screen.screen_full_area", text="Toggle Full Screen") + """ + + + /* Lock Time */ + uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_SCREEN_TIME)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + "Lock Time to Other Windows|", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); + + /* Draw time or frames.*/ + uiDefMenuSep(block); + """ + + layout.itemR(st, "draw_frames") + if st.display_mode == 'IMAGE': + layout.itemR(st, "draw_safe_margin") + if st.display_mode == 'WAVEFORM': + layout.itemR(st, "separate_color_preview") + + """ + if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, ""); + else uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Tile Window|Ctrl DownArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); + + """ + class SEQUENCER_MT_select(bpy.types.Menu): - __label__ = "Select" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - layout.column() - layout.item_enumO("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left") - layout.item_enumO("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right") - layout.itemS() - layout.item_enumO("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles") - layout.item_enumO("sequencer.select_handles", "side", 'LEFT', text="Left Handle") - layout.item_enumO("sequencer.select_handles", "side", 'RIGHT', text="Right Handle") - layout.itemS() - layout.itemO("sequencer.select_linked") - layout.itemO("sequencer.select_all_toggle") - layout.itemO("sequencer.select_inverse") + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + layout.item_enumO("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left") + layout.item_enumO("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right") + layout.itemS() + layout.item_enumO("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles") + layout.item_enumO("sequencer.select_handles", "side", 'LEFT', text="Left Handle") + layout.item_enumO("sequencer.select_handles", "side", 'RIGHT', text="Right Handle") + layout.itemS() + layout.itemO("sequencer.select_linked") + layout.itemO("sequencer.select_all_toggle") + layout.itemO("sequencer.select_inverse") + class SEQUENCER_MT_marker(bpy.types.Menu): - __label__ = "Marker (TODO)" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - layout.column() - layout.itemO("marker.add", text="Add Marker") - layout.itemO("marker.duplicate", text="Duplicate Marker") - layout.itemO("marker.move", text="Grab/Move Marker") - layout.itemO("marker.delete", text="Delete Marker") - layout.itemS() - layout.itemL(text="ToDo: Name Marker") - - #layout.itemO("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) + bl_label = "Marker (TODO)" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.column() + layout.itemO("marker.add", text="Add Marker") + layout.itemO("marker.duplicate", text="Duplicate Marker") + layout.itemO("marker.move", text="Grab/Move Marker") + layout.itemO("marker.delete", text="Delete Marker") + layout.itemS() + layout.itemL(text="ToDo: Name Marker") + + #layout.itemO("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) + class SEQUENCER_MT_add(bpy.types.Menu): - __label__ = "Add" - - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - - st = context.space_data - - layout.column() - layout.itemO("sequencer.scene_strip_add", text="Scene") - layout.itemO("sequencer.movie_strip_add", text="Movie") - layout.itemO("sequencer.image_strip_add", text="Image") - layout.itemO("sequencer.sound_strip_add", text="Sound") - - layout.itemM("SEQUENCER_MT_add_effect") + bl_label = "Add" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + + st = context.space_data + + layout.column() + layout.itemO("sequencer.scene_strip_add", text="Scene") + layout.itemO("sequencer.movie_strip_add", text="Movie") + layout.itemO("sequencer.image_strip_add", text="Image") + layout.itemO("sequencer.sound_strip_add", text="Sound") + + layout.itemM("SEQUENCER_MT_add_effect") + class SEQUENCER_MT_add_effect(bpy.types.Menu): - __label__ = "Effect Strip..." - - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - st = context.space_data - - layout.column() - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ADD') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'SUBTRACT') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_OVER') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'MULTIPLY') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'OVER_DROP') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'PLUGIN') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'WIPE') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'GLOW') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'TRANSFORM') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'COLOR') - layout.item_enumO("sequencer.effect_strip_add", 'type', 'SPEED') + bl_label = "Effect Strip..." + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + st = context.space_data + + layout.column() + layout.item_enumO("sequencer.effect_strip_add", 'type', 'ADD') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'SUBTRACT') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_OVER') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'MULTIPLY') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'OVER_DROP') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'PLUGIN') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'WIPE') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'GLOW') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'TRANSFORM') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'COLOR') + layout.item_enumO("sequencer.effect_strip_add", 'type', 'SPEED') + class SEQUENCER_MT_strip(bpy.types.Menu): - __label__ = "Strip" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - layout.operator_context = 'INVOKE_REGION_WIN' - - layout.column() - layout.item_enumO("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move") - layout.item_enumO("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame") - # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator - layout.itemS() - - layout.item_enumO("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame") - layout.item_enumO("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame") - layout.itemO("sequencer.images_separate") - layout.itemS() - - layout.itemO("sequencer.duplicate") - layout.itemO("sequencer.delete") - - strip = act_strip(context) - - if strip: - stype = strip.type - - if stype=='EFFECT': - layout.itemS() - layout.itemO("sequencer.effect_change") - layout.itemO("sequencer.effect_reassign_inputs") - elif stype=='IMAGE': - layout.itemS() - layout.itemO("sequencer.image_change") - elif stype=='SCENE': - layout.itemS() - layout.itemO("sequencer.scene_change", text="Change Scene") - elif stype=='MOVIE': - layout.itemS() - layout.itemO("sequencer.movie_change") - - layout.itemS() - - layout.itemO("sequencer.meta_make") - layout.itemO("sequencer.meta_separate") - - #if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) { - # uiItemS(layout); - # uiItemO(layout, NULL, 0, "sequencer.meta_toggle"); - #} - - layout.itemS() - layout.itemO("sequencer.reload") - layout.itemS() - layout.itemO("sequencer.lock") - layout.itemO("sequencer.unlock") - layout.itemO("sequencer.mute") - layout.itemO("sequencer.unmute") - - layout.item_booleanO("sequencer.mute", "unselected", 1, text="Mute Deselected Strips") - - layout.itemO("sequencer.snap") - -# Panels + bl_label = "Strip" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.operator_context = 'INVOKE_REGION_WIN' + + layout.column() + layout.item_enumO("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move") + layout.item_enumO("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame") + # uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator + layout.itemS() + + layout.item_enumO("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame") + layout.item_enumO("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame") + layout.itemO("sequencer.images_separate") + layout.itemS() + + layout.itemO("sequencer.duplicate") + layout.itemO("sequencer.delete") + + strip = act_strip(context) + + if strip: + stype = strip.type + + if stype == 'EFFECT': + layout.itemS() + layout.itemO("sequencer.effect_change") + layout.itemO("sequencer.effect_reassign_inputs") + elif stype == 'IMAGE': + layout.itemS() + layout.itemO("sequencer.image_change") + elif stype == 'SCENE': + layout.itemS() + layout.itemO("sequencer.scene_change", text="Change Scene") + elif stype == 'MOVIE': + layout.itemS() + layout.itemO("sequencer.movie_change") + + layout.itemS() + + layout.itemO("sequencer.meta_make") + layout.itemO("sequencer.meta_separate") + + #if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) { + # uiItemS(layout); + # uiItemO(layout, NULL, 0, "sequencer.meta_toggle"); + #} + + layout.itemS() + layout.itemO("sequencer.reload") + layout.itemS() + layout.itemO("sequencer.lock") + layout.itemO("sequencer.unlock") + layout.itemO("sequencer.mute") + layout.itemO("sequencer.unmute") + + layout.item_booleanO("sequencer.mute", "unselected", 1, text="Mute Deselected Strips") + + layout.itemO("sequencer.snap") + + layout.itemO("sequencer.swap_right") + layout.itemO("sequencer.swap_left") + + class SequencerButtonsPanel(bpy.types.Panel): - __space_type__ = 'SEQUENCE_EDITOR' - __region_type__ = 'UI' + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'UI' + + def poll(self, context): + return context.space_data.display_mode == 'SEQUENCER' and act_strip(context) != None + - def poll(self, context): - return context.space_data.display_mode == 'SEQUENCER' and act_strip(context) != None - class SequencerButtonsPanel_Output(bpy.types.Panel): - __space_type__ = 'SEQUENCE_EDITOR' - __region_type__ = 'UI' + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'UI' + + def poll(self, context): + return context.space_data.display_mode != 'SEQUENCER' - def poll(self, context): - return context.space_data.display_mode != 'SEQUENCER' class SEQUENCER_PT_edit(SequencerButtonsPanel): - __label__ = "Edit Strip" - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - split = layout.split(percentage=0.3) - split.itemL(text="Name:") - split.itemR(strip, "name", text="") - - split = layout.split(percentage=0.3) - split.itemL(text="Type:") - split.itemR(strip, "type", text="") - - split = layout.split(percentage=0.3) - split.itemL(text="Blend:") - split.itemR(strip, "blend_mode", text="") - - row = layout.row() - if strip.mute == True: - row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="") - elif strip.mute == False: - row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="") - - sub = row.row() - sub.active = (not strip.mute) - - sub.itemR(strip, "blend_opacity", text="Opacity", slider=True) - - row = layout.row() - row.itemR(strip, "lock") - row.itemR(strip, "frame_locked", text="Frame Lock") - - col = layout.column() - col.enabled = not strip.lock - col.itemR(strip, "channel") - col.itemR(strip, "start_frame") - col.itemR(strip, "length") - - col = layout.column(align=True) - col.itemL(text="Offset:") - col.itemR(strip, "start_offset", text="Start") - col.itemR(strip, "end_offset", text="End") - - col = layout.column(align=True) - col.itemL(text="Still:") - col.itemR(strip, "start_still", text="Start") - col.itemR(strip, "end_still", text="End") - + bl_label = "Edit Strip" + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + split = layout.split(percentage=0.3) + split.itemL(text="Name:") + split.itemR(strip, "name", text="") + + split = layout.split(percentage=0.3) + split.itemL(text="Type:") + split.itemR(strip, "type", text="") + + split = layout.split(percentage=0.3) + split.itemL(text="Blend:") + split.itemR(strip, "blend_mode", text="") + + row = layout.row() + if strip.mute == True: + row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="") + elif strip.mute == False: + row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="") + + sub = row.row() + sub.active = (not strip.mute) + + sub.itemR(strip, "blend_opacity", text="Opacity", slider=True) + + row = layout.row() + row.itemR(strip, "lock") + row.itemR(strip, "frame_locked", text="Frame Lock") + + col = layout.column() + col.enabled = not strip.lock + col.itemR(strip, "channel") + col.itemR(strip, "start_frame") + col.itemR(strip, "length") + + col = layout.column(align=True) + col.itemL(text="Offset:") + col.itemR(strip, "start_offset", text="Start") + col.itemR(strip, "end_offset", text="End") + + col = layout.column(align=True) + col.itemL(text="Still:") + col.itemR(strip, "start_still", text="Start") + col.itemR(strip, "end_still", text="End") + + class SEQUENCER_PT_effect(SequencerButtonsPanel): - __label__ = "Effect Strip" - - def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type in ('COLOR', 'WIPE', 'GLOW', 'SPEED', 'TRANSFORM') - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - if strip.type == 'COLOR': - layout.itemR(strip, "color") - - elif strip.type == 'WIPE': - - col = layout.column() - col.itemR(strip, "transition_type") - col.itemL(text="Direction:") - col.row().itemR(strip, "direction", expand=True) - - col = layout.column() - col.itemR(strip, "blur_width", slider=True) - if strip.transition_type in ('SINGLE', 'DOUBLE'): - col.itemR(strip, "angle") - - elif strip.type == 'GLOW': - flow = layout.column_flow() - flow.itemR(strip, "threshold", slider=True) - flow.itemR(strip, "clamp", slider=True) - flow.itemR(strip, "boost_factor") - flow.itemR(strip, "blur_distance") - - row = layout.row() - row.itemR(strip, "quality", slider=True) - row.itemR(strip, "only_boost") - - elif strip.type == 'SPEED': - layout.itemR(strip, "global_speed") - - flow = layout.column_flow() - flow.itemR(strip, "curve_velocity") - flow.itemR(strip, "curve_compress_y") - flow.itemR(strip, "frame_blending") - - elif strip.type == 'TRANSFORM': - - col = layout.column() - col.itemR(strip, "interpolation") - col.itemR(strip, "translation_unit") - - col = layout.column(align=True) - col.itemL(text="Position X:") - col.itemR(strip, "translate_start_x", text="Start") - col.itemR(strip, "translate_end_x", text="End") - - col = layout.column(align=True) - col.itemL(text="Position Y:") - col.itemR(strip, "translate_start_y", text="Start") - col.itemR(strip, "translate_end_y", text="End") - - layout.itemS() - - col = layout.column(align=True) - col.itemL(text="Scale X:") - col.itemR(strip, "scale_start_x", text="Start") - col.itemR(strip, "scale_end_x", text="End") - - col = layout.column(align=True) - col.itemL(text="Scale Y:") - col.itemR(strip, "scale_start_y", text="Start") - col.itemR(strip, "scale_end_y", text="End") - - layout.itemS() - - col = layout.column(align=True) - col.itemL(text="Rotation:") - col.itemR(strip, "rotation_start", text="Start") - col.itemR(strip, "rotation_end", text="End") + bl_label = "Effect Strip" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False + + strip = act_strip(context) + if not strip: + return False + + return strip.type in ('COLOR', 'WIPE', 'GLOW', 'SPEED', 'TRANSFORM') + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + if strip.type == 'COLOR': + layout.itemR(strip, "color") + + elif strip.type == 'WIPE': + + col = layout.column() + col.itemR(strip, "transition_type") + col.itemL(text="Direction:") + col.row().itemR(strip, "direction", expand=True) + + col = layout.column() + col.itemR(strip, "blur_width", slider=True) + if strip.transition_type in ('SINGLE', 'DOUBLE'): + col.itemR(strip, "angle") + + elif strip.type == 'GLOW': + flow = layout.column_flow() + flow.itemR(strip, "threshold", slider=True) + flow.itemR(strip, "clamp", slider=True) + flow.itemR(strip, "boost_factor") + flow.itemR(strip, "blur_distance") + + row = layout.row() + row.itemR(strip, "quality", slider=True) + row.itemR(strip, "only_boost") + + elif strip.type == 'SPEED': + layout.itemR(strip, "global_speed") + + flow = layout.column_flow() + flow.itemR(strip, "curve_velocity") + flow.itemR(strip, "curve_compress_y") + flow.itemR(strip, "frame_blending") + + elif strip.type == 'TRANSFORM': + + col = layout.column() + col.itemR(strip, "interpolation") + col.itemR(strip, "translation_unit") + + col = layout.column(align=True) + col.itemL(text="Position X:") + col.itemR(strip, "translate_start_x", text="Start") + col.itemR(strip, "translate_end_x", text="End") + + col = layout.column(align=True) + col.itemL(text="Position Y:") + col.itemR(strip, "translate_start_y", text="Start") + col.itemR(strip, "translate_end_y", text="End") + + layout.itemS() + + col = layout.column(align=True) + col.itemL(text="Scale X:") + col.itemR(strip, "scale_start_x", text="Start") + col.itemR(strip, "scale_end_x", text="End") + + col = layout.column(align=True) + col.itemL(text="Scale Y:") + col.itemR(strip, "scale_start_y", text="Start") + col.itemR(strip, "scale_end_y", text="End") + + layout.itemS() + + col = layout.column(align=True) + col.itemL(text="Rotation:") + col.itemR(strip, "rotation_start", text="Start") + col.itemR(strip, "rotation_end", text="End") + class SEQUENCER_PT_input(SequencerButtonsPanel): - __label__ = "Strip Input" - - def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type in ('MOVIE', 'IMAGE') - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - split = layout.split(percentage=0.2) - col = split.column() - col.itemL(text="Path:") - col = split.column() - col.itemR(strip, "directory", text="") - - # Current element for the filename - - - elem = strip.getStripElem(context.scene.current_frame) - if elem: - split = layout.split(percentage=0.2) - col = split.column() - col.itemL(text="File:") - col = split.column() - col.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback - - layout.itemR(strip, "use_translation", text="Image Offset:") - if strip.transform: - col = layout.column(align=True) - col.active = strip.use_translation - col.itemR(strip.transform, "offset_x", text="X") - col.itemR(strip.transform, "offset_y", text="Y") - - layout.itemR(strip, "use_crop", text="Image Crop:") - if strip.crop: - col = layout.column(align=True) - col.active = strip.use_crop - col.itemR(strip.crop, "top") - col.itemR(strip.crop, "left") - col.itemR(strip.crop, "bottom") - col.itemR(strip.crop, "right") - - col = layout.column(align=True) - col.itemL(text="Trim Duration:") - col.itemR(strip, "animation_start_offset", text="Start") - col.itemR(strip, "animation_end_offset", text="End") + bl_label = "Strip Input" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False + + strip = act_strip(context) + if not strip: + return False + + return strip.type in ('MOVIE', 'IMAGE') + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + split = layout.split(percentage=0.2) + col = split.column() + col.itemL(text="Path:") + col = split.column() + col.itemR(strip, "directory", text="") + + # Current element for the filename + + elem = strip.getStripElem(context.scene.current_frame) + if elem: + split = layout.split(percentage=0.2) + col = split.column() + col.itemL(text="File:") + col = split.column() + col.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback + + layout.itemR(strip, "use_translation", text="Image Offset:") + if strip.transform: + col = layout.column(align=True) + col.active = strip.use_translation + col.itemR(strip.transform, "offset_x", text="X") + col.itemR(strip.transform, "offset_y", text="Y") + + layout.itemR(strip, "use_crop", text="Image Crop:") + if strip.crop: + col = layout.column(align=True) + col.active = strip.use_crop + col.itemR(strip.crop, "top") + col.itemR(strip.crop, "left") + col.itemR(strip.crop, "bottom") + col.itemR(strip.crop, "right") + + col = layout.column(align=True) + col.itemL(text="Trim Duration:") + col.itemR(strip, "animation_start_offset", text="Start") + col.itemR(strip, "animation_end_offset", text="End") + class SEQUENCER_PT_sound(SequencerButtonsPanel): - __label__ = "Sound" - - def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type in ('SOUND', ) - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - layout.template_ID(strip, "sound", new="sound.open") - - layout.itemS() - layout.itemR(strip.sound, "filename", text="") - - row = layout.row() - if strip.sound.packed_file: - row.itemO("sound.unpack", icon='ICON_PACKAGE', text="Unpack") - else: - row.itemO("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack") - - row.itemR(strip.sound, "caching") + bl_label = "Sound" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False + + strip = act_strip(context) + if not strip: + return False + + return strip.type in ('SOUND', ) + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + layout.template_ID(strip, "sound", new="sound.open") + + layout.itemS() + layout.itemR(strip.sound, "filename", text="") + + row = layout.row() + if strip.sound.packed_file: + row.itemO("sound.unpack", icon='ICON_PACKAGE', text="Unpack") + else: + row.itemO("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack") + + row.itemR(strip.sound, "caching") + class SEQUENCER_PT_filter(SequencerButtonsPanel): - __label__ = "Filter" - - def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - col = layout.column() - col.itemL(text="Video:") - col.itemR(strip, "strobe") - col.itemR(strip, "de_interlace") - - col = layout.column() - col.itemL(text="Colors:") - col.itemR(strip, "multiply_colors", text="Multiply") - col.itemR(strip, "premultiply") - col.itemR(strip, "convert_float") - - col = layout.column() - col.itemL(text="Flip:") - col.itemR(strip, "flip_x", text="X") - col.itemR(strip, "flip_y", text="Y") - col.itemR(strip, "reverse_frames", text="Backwards") - - layout.itemR(strip, "use_color_balance") - if strip.color_balance: # TODO - need to add this somehow - row = layout.row() - row.active = strip.use_color_balance - col = row.column() - col.itemR(strip.color_balance, "lift") - col.itemR(strip.color_balance, "inverse_lift", text="Inverse") - col = row.column() - col.itemR(strip.color_balance, "gamma") - col.itemR(strip.color_balance, "inverse_gamma", text="Inverse") - col = row.column() - col.itemR(strip.color_balance, "gain") - col.itemR(strip.color_balance, "inverse_gain", text="Inverse") + bl_label = "Filter" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False + + strip = act_strip(context) + if not strip: + return False + + return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + col = layout.column() + col.itemL(text="Video:") + col.itemR(strip, "strobe") + col.itemR(strip, "de_interlace") + + col = layout.column() + col.itemL(text="Colors:") + col.itemR(strip, "multiply_colors", text="Multiply") + col.itemR(strip, "premultiply") + col.itemR(strip, "convert_float") + + col = layout.column() + col.itemL(text="Flip:") + col.itemR(strip, "flip_x", text="X") + col.itemR(strip, "flip_y", text="Y") + col.itemR(strip, "reverse_frames", text="Backwards") + + layout.itemR(strip, "use_color_balance") + if strip.color_balance: # TODO - need to add this somehow + row = layout.row() + row.active = strip.use_color_balance + col = row.column() + col.itemR(strip.color_balance, "lift") + col.itemR(strip.color_balance, "inverse_lift", text="Inverse") + col = row.column() + col.itemR(strip.color_balance, "gamma") + col.itemR(strip.color_balance, "inverse_gamma", text="Inverse") + col = row.column() + col.itemR(strip.color_balance, "gain") + col.itemR(strip.color_balance, "inverse_gain", text="Inverse") + class SEQUENCER_PT_proxy(SequencerButtonsPanel): - __label__ = "Proxy" - - def poll(self, context): - if context.space_data.display_mode != 'SEQUENCER': - return False - - strip = act_strip(context) - if not strip: - return False - - return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') - - def draw_header(self, context): - strip = act_strip(context) - - self.layout.itemR(strip, "use_proxy", text="") - - def draw(self, context): - layout = self.layout - - strip = act_strip(context) - - flow = layout.column_flow() - flow.itemR(strip, "proxy_custom_directory") - if strip.proxy: # TODO - need to add this somehow - flow.itemR(strip.proxy, "directory") - flow.itemR(strip.proxy, "file") + bl_label = "Proxy" + + def poll(self, context): + if context.space_data.display_mode != 'SEQUENCER': + return False + + strip = act_strip(context) + if not strip: + return False + + return strip.type in ('MOVIE', 'IMAGE', 'SCENE', 'META') + + def draw_header(self, context): + strip = act_strip(context) + + self.layout.itemR(strip, "use_proxy", text="") + + def draw(self, context): + layout = self.layout + + strip = act_strip(context) + + flow = layout.column_flow() + flow.itemR(strip, "proxy_custom_directory") + if strip.proxy: # TODO - need to add this somehow + flow.itemR(strip.proxy, "directory") + flow.itemR(strip.proxy, "file") + class SEQUENCER_PT_view(SequencerButtonsPanel_Output): - __label__ = "View Settings" + bl_label = "View Settings" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout - - st = context.space_data + st = context.space_data - col = layout.column() - col.itemR(st, "draw_overexposed") # text="Zebra" - col.itemR(st, "draw_safe_margin") + col = layout.column() + col.itemR(st, "draw_overexposed") # text="Zebra" + col.itemR(st, "draw_safe_margin") bpy.types.register(SEQUENCER_HT_header) # header/menu classes bpy.types.register(SEQUENCER_MT_view) diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py index 4860767d69d..0d33f181a06 100644 --- a/release/scripts/ui/space_text.py +++ b/release/scripts/ui/space_text.py @@ -1,235 +1,297 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class TEXT_HT_header(bpy.types.Header): - __space_type__ = 'TEXT_EDITOR' - - def draw(self, context): - layout = self.layout - - st = context.space_data - text = st.text - - row = layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("TEXT_MT_text") - if text: - sub.itemM("TEXT_MT_edit") - sub.itemM("TEXT_MT_format") - - if text and text.modified: - row = layout.row() - # row.color(redalert) - row.itemO("text.resolve_conflict", text="", icon='ICON_HELP') - - layout.template_ID(st, "text", new="text.new", unlink="text.unlink") - - row = layout.row(align=True) - row.itemR(st, "line_numbers", text="") - row.itemR(st, "word_wrap", text="") - row.itemR(st, "syntax_highlight", text="") - - if text: - row = layout.row() - if text.filename != "": - if text.dirty: - row.itemL(text="File: *%s (unsaved)" % text.filename) - else: - row.itemL(text="File: %s" % text.filename ) - else: - if text.library: - row.itemL(text="Text: External") - else: - row.itemL(text="Text: Internal") + bl_space_type = 'TEXT_EDITOR' + + def draw(self, context): + layout = self.layout + + st = context.space_data + text = st.text + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("TEXT_MT_text") + if text: + sub.itemM("TEXT_MT_edit") + sub.itemM("TEXT_MT_format") + + if text and text.modified: + row = layout.row() + # row.color(redalert) + row.itemO("text.resolve_conflict", text="", icon='ICON_HELP') + + layout.template_ID(st, "text", new="text.new", unlink="text.unlink") + + row = layout.row(align=True) + row.itemR(st, "line_numbers", text="") + row.itemR(st, "word_wrap", text="") + row.itemR(st, "syntax_highlight", text="") + + if text: + row = layout.row() + if text.filename != "": + if text.dirty: + row.itemL(text="File: *%s (unsaved)" % text.filename) + else: + row.itemL(text="File: %s" % text.filename) + else: + if text.library: + row.itemL(text="Text: External") + else: + row.itemL(text="Text: Internal") + + row = layout.row() + row.itemO("text.run_script") + class TEXT_PT_properties(bpy.types.Panel): - __space_type__ = 'TEXT_EDITOR' - __region_type__ = 'UI' - __label__ = "Properties" + bl_space_type = 'TEXT_EDITOR' + bl_region_type = 'UI' + bl_label = "Properties" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout - - st = context.space_data + st = context.space_data - flow = layout.column_flow() - flow.itemR(st, "line_numbers") - flow.itemR(st, "word_wrap") - flow.itemR(st, "syntax_highlight") - flow.itemR(st, "live_edit") + flow = layout.column_flow() + flow.itemR(st, "line_numbers") + flow.itemR(st, "word_wrap") + flow.itemR(st, "syntax_highlight") + flow.itemR(st, "live_edit") + + flow = layout.column_flow() + flow.itemR(st, "font_size") + flow.itemR(st, "tab_width") - flow = layout.column_flow() - flow.itemR(st, "font_size") - flow.itemR(st, "tab_width") class TEXT_PT_find(bpy.types.Panel): - __space_type__ = 'TEXT_EDITOR' - __region_type__ = 'UI' - __label__ = "Find" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - # find - col = layout.column(align=True) - row = col.row() - row.itemR(st, "find_text", text="") - row.itemO("text.find_set_selected", text="", icon='ICON_TEXT') - col.itemO("text.find") - - # replace - col = layout.column(align=True) - row = col.row() - row.itemR(st, "replace_text", text="") - row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT') - col.itemO("text.replace") - - # mark - layout.itemO("text.mark_all") - - # settings - row = layout.row() - row.itemR(st, "find_wrap", text="Wrap") - row.itemR(st, "find_all", text="All") + bl_space_type = 'TEXT_EDITOR' + bl_region_type = 'UI' + bl_label = "Find" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + # find + col = layout.column(align=True) + row = col.row() + row.itemR(st, "find_text", text="") + row.itemO("text.find_set_selected", text="", icon='ICON_TEXT') + col.itemO("text.find") + + # replace + col = layout.column(align=True) + row = col.row() + row.itemR(st, "replace_text", text="") + row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT') + col.itemO("text.replace") + + # mark + layout.itemO("text.mark_all") + + # settings + row = layout.row() + row.itemR(st, "find_wrap", text="Wrap") + row.itemR(st, "find_all", text="All") + class TEXT_MT_text(bpy.types.Menu): - __label__ = "Text" + bl_label = "Text" + + def draw(self, context): + layout = self.layout + + st = context.space_data + text = st.text + + layout.column() + layout.itemO("text.new") + layout.itemO("text.open") + + if text: + layout.itemO("text.reload") + + layout.column() + layout.itemO("text.save") + layout.itemO("text.save_as") + + if text.filename != "": + layout.itemO("text.make_internal") + + layout.column() + layout.itemO("text.run_script") + + #ifndef DISABLE_PYTHON + # XXX if(BPY_is_pyconstraint(text)) + # XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints"); + #endif + + layout.itemS() - def draw(self, context): - layout = self.layout - - st = context.space_data - text = st.text + layout.itemO("text.properties", icon='ICON_MENU_PANEL') - layout.column() - layout.itemO("text.new") - layout.itemO("text.open") - if text: - layout.itemO("text.reload") - layout.column() - layout.itemO("text.save") - layout.itemO("text.save_as") + #ifndef DISABLE_PYTHON + # XXX layout.column() + # XXX uiDefIconTextBlockBut(block, text_template_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Script Templates", 0, yco-=20, 120, 19, ""); + # XXX uiDefIconTextBlockBut(block, text_plugin_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Text Plugins", 0, yco-=20, 120, 19, ""); + #endif - if text.filename != "": - layout.itemO("text.make_internal") + layout.itemM("TEXT_MT_templates") - layout.column() - layout.itemO("text.run_script") - #ifndef DISABLE_PYTHON - # XXX if(BPY_is_pyconstraint(text)) - # XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints"); - #endif +class TEXT_MT_templates(bpy.types.Menu): + ''' + Creates the menu items by scanning scripts/templates + ''' + bl_label = "Script Templates" - layout.itemS() + def draw(self, context): + import os + + def path_to_name(f): + f_base = os.path.splitext(f)[0] + f_base = f_base.replace("_", " ") + return ' '.join([w[0].upper() + w[1:] for w in f_base.split()]) + + layout = self.layout + template_dir = os.path.join(os.path.dirname(__file__), os.path.pardir, "templates") + + for f in sorted(os.listdir(template_dir)): + + if f.startswith("."): + continue + + path = os.path.join(template_dir, f) + layout.item_stringO("text.open", "path", path, text=path_to_name(f)) - layout.itemO("text.properties", icon='ICON_MENU_PANEL') - - #ifndef DISABLE_PYTHON - # XXX layout.column() - # XXX uiDefIconTextBlockBut(block, text_template_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Script Templates", 0, yco-=20, 120, 19, ""); - # XXX uiDefIconTextBlockBut(block, text_plugin_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Text Plugins", 0, yco-=20, 120, 19, ""); - #endif class TEXT_MT_edit_view(bpy.types.Menu): - __label__ = "View" + bl_label = "View" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout + + layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File") + layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File") - layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File") - layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File") class TEXT_MT_edit_select(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("text.select_all") + layout.itemO("text.select_line") - layout.itemO("text.select_all") - layout.itemO("text.select_line") class TEXT_MT_edit_markers(bpy.types.Menu): - __label__ = "Markers" + bl_label = "Markers" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("text.markers_clear") + layout.itemO("text.next_marker") + layout.itemO("text.previous_marker") - layout.itemO("text.markers_clear") - layout.itemO("text.next_marker") - layout.itemO("text.previous_marker") class TEXT_MT_format(bpy.types.Menu): - __label__ = "Format" + bl_label = "Format" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("text.indent") - layout.itemO("text.unindent") + layout.itemO("text.indent") + layout.itemO("text.unindent") - layout.itemS() + layout.itemS() - layout.itemO("text.comment") - layout.itemO("text.uncomment") + layout.itemO("text.comment") + layout.itemO("text.uncomment") - layout.itemS() + layout.itemS() + + layout.item_menu_enumO("text.convert_whitespace", "type") - layout.item_menu_enumO("text.convert_whitespace", "type") class TEXT_MT_edit_to3d(bpy.types.Menu): - __label__ = "Text To 3D Object" + bl_label = "Text To 3D Object" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object") + layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line") - layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object"); - layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line"); class TEXT_MT_edit(bpy.types.Menu): - __label__ = "Edit" + bl_label = "Edit" - def poll(self, context): - return (context.space_data.text) + def poll(self, context): + return (context.space_data.text) - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("ed.undo") - layout.itemO("ed.redo") + layout.itemO("ed.undo") + layout.itemO("ed.redo") - layout.itemS() + layout.itemS() - layout.itemO("text.cut") - layout.itemO("text.copy") - layout.itemO("text.paste") + layout.itemO("text.cut") + layout.itemO("text.copy") + layout.itemO("text.paste") - layout.itemS() + layout.itemS() - layout.itemM("TEXT_MT_edit_view") - layout.itemM("TEXT_MT_edit_select") - layout.itemM("TEXT_MT_edit_markers") + layout.itemM("TEXT_MT_edit_view") + layout.itemM("TEXT_MT_edit_select") + layout.itemM("TEXT_MT_edit_markers") - layout.itemS() + layout.itemS() - layout.itemO("text.jump") - layout.itemO("text.properties", text="Find...") + layout.itemO("text.jump") + layout.itemO("text.properties", text="Find...") - layout.itemS() + layout.itemS() - layout.itemM("TEXT_MT_edit_to3d") + layout.itemM("TEXT_MT_edit_to3d") bpy.types.register(TEXT_HT_header) bpy.types.register(TEXT_PT_properties) bpy.types.register(TEXT_PT_find) bpy.types.register(TEXT_MT_text) +bpy.types.register(TEXT_MT_templates) bpy.types.register(TEXT_MT_format) bpy.types.register(TEXT_MT_edit) bpy.types.register(TEXT_MT_edit_view) diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py index 2ead4305960..42734589d48 100644 --- a/release/scripts/ui/space_time.py +++ b/release/scripts/ui/space_time.py @@ -1,144 +1,167 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class TIME_HT_header(bpy.types.Header): - __space_type__ = 'TIMELINE' - - def draw(self, context): - layout = self.layout - - st = context.space_data - scene = context.scene - tools = context.tool_settings - screen = context.screen - - row = layout.row(align=True) - row.template_header() - - if context.area.show_menus: - sub = row.row(align=True) - sub.itemM("TIME_MT_view") - sub.itemM("TIME_MT_frame") - sub.itemM("TIME_MT_playback") - - layout.itemR(scene, "use_preview_range", text="PR") - - row = layout.row(align=True) - if not scene.use_preview_range: - row.itemR(scene, "start_frame", text="Start") - row.itemR(scene, "end_frame", text="End") - else: - row.itemR(scene, "preview_range_start_frame", text="Start") - row.itemR(scene, "preview_range_end_frame", text="End") - - layout.itemR(scene, "current_frame", text="") - - layout.itemS() - - row = layout.row(align=True) - row.item_booleanO("screen.frame_jump", "end", False, text="", icon='ICON_REW') - row.item_booleanO("screen.keyframe_jump", "next", False, text="", icon='ICON_PREV_KEYFRAME') - if not screen.animation_playing: - row.item_booleanO("screen.animation_play", "reverse", True, text="", icon='ICON_PLAY_REVERSE') - row.itemO("screen.animation_play", text="", icon='ICON_PLAY') - else: - sub = row.row() - sub.scale_x = 2.0 - sub.itemO("screen.animation_play", text="", icon='ICON_PAUSE') - row.item_booleanO("screen.keyframe_jump", "next", True, text="", icon='ICON_NEXT_KEYFRAME') - row.item_booleanO("screen.frame_jump", "end", True, text="", icon='ICON_FF') - - row = layout.row(align=True) - row.itemR(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC') - if screen.animation_playing and tools.enable_auto_key: - subsub = row.row() - subsub.itemR(tools, "record_with_nla", toggle=True) - - layout.itemR(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER') - - layout.itemS() - - row = layout.row(align=True) - row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") - row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') - row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + bl_space_type = 'TIMELINE' + + def draw(self, context): + layout = self.layout + + st = context.space_data + scene = context.scene + tools = context.tool_settings + screen = context.screen + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.itemM("TIME_MT_view") + sub.itemM("TIME_MT_frame") + sub.itemM("TIME_MT_playback") + + layout.itemR(scene, "use_preview_range", text="PR") + + row = layout.row(align=True) + if not scene.use_preview_range: + row.itemR(scene, "start_frame", text="Start") + row.itemR(scene, "end_frame", text="End") + else: + row.itemR(scene, "preview_range_start_frame", text="Start") + row.itemR(scene, "preview_range_end_frame", text="End") + + layout.itemR(scene, "current_frame", text="") + + layout.itemS() + + row = layout.row(align=True) + row.item_booleanO("screen.frame_jump", "end", False, text="", icon='ICON_REW') + row.item_booleanO("screen.keyframe_jump", "next", False, text="", icon='ICON_PREV_KEYFRAME') + if not screen.animation_playing: + row.item_booleanO("screen.animation_play", "reverse", True, text="", icon='ICON_PLAY_REVERSE') + row.itemO("screen.animation_play", text="", icon='ICON_PLAY') + else: + sub = row.row() + sub.scale_x = 2.0 + sub.itemO("screen.animation_play", text="", icon='ICON_PAUSE') + row.item_booleanO("screen.keyframe_jump", "next", True, text="", icon='ICON_NEXT_KEYFRAME') + row.item_booleanO("screen.frame_jump", "end", True, text="", icon='ICON_FF') + + row = layout.row(align=True) + row.itemR(tools, "enable_auto_key", text="", toggle=True, icon='ICON_REC') + if screen.animation_playing and tools.enable_auto_key: + subsub = row.row() + subsub.itemR(tools, "record_with_nla", toggle=True) + + layout.itemR(scene, "sync_audio", text="", toggle=True, icon='ICON_SPEAKER') + + layout.itemS() + + row = layout.row(align=True) + row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="") + row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT') + row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT') + class TIME_MT_view(bpy.types.Menu): - __label__ = "View" - - def draw(self, context): - layout = self.layout - - st = context.space_data - - layout.itemO("anim.time_toggle") - - layout.itemS() - - layout.itemR(st, "only_selected") + bl_label = "View" + + def draw(self, context): + layout = self.layout + + st = context.space_data + + layout.itemO("anim.time_toggle") + + layout.itemS() + + layout.itemR(st, "only_selected") + class TIME_MT_frame(bpy.types.Menu): - __label__ = "Frame" - - def draw(self, context): - layout = self.layout - tools = context.tool_settings - - layout.itemO("marker.add", text="Add Marker") - layout.itemO("marker.duplicate", text="Duplicate Marker") - layout.itemO("marker.move", text="Grab/Move Marker") - layout.itemO("marker.delete", text="Delete Marker") - layout.itemL(text="ToDo: Name Marker") - - layout.itemS() - - layout.itemO("time.start_frame_set") - layout.itemO("time.end_frame_set") - - layout.itemS() - - sub = layout.row() - #sub.active = tools.enable_auto_key - sub.itemM("TIME_MT_autokey") + bl_label = "Frame" + + def draw(self, context): + layout = self.layout + tools = context.tool_settings + + layout.itemO("marker.add", text="Add Marker") + layout.itemO("marker.duplicate", text="Duplicate Marker") + layout.itemO("marker.move", text="Grab/Move Marker") + layout.itemO("marker.delete", text="Delete Marker") + layout.itemL(text="ToDo: Name Marker") + + layout.itemS() + + layout.itemO("time.start_frame_set") + layout.itemO("time.end_frame_set") + + layout.itemS() + + sub = layout.row() + #sub.active = tools.enable_auto_key + sub.itemM("TIME_MT_autokey") + class TIME_MT_playback(bpy.types.Menu): - __label__ = "Playback" - - def draw(self, context): - layout = self.layout - - st = context.space_data - scene = context.scene - - layout.itemR(st, "play_top_left") - layout.itemR(st, "play_all_3d") - layout.itemR(st, "play_anim") - layout.itemR(st, "play_buttons") - layout.itemR(st, "play_image") - layout.itemR(st, "play_sequencer") - layout.itemR(st, "play_nodes") - - layout.itemS() - - layout.itemR(st, "continue_physics") - - layout.itemS() - - layout.itemR(scene, "sync_audio", icon='ICON_SPEAKER') - layout.itemR(scene, "mute_audio") - layout.itemR(scene, "scrub_audio") + bl_label = "Playback" + + def draw(self, context): + layout = self.layout + + st = context.space_data + scene = context.scene + + layout.itemR(st, "play_top_left") + layout.itemR(st, "play_all_3d") + layout.itemR(st, "play_anim") + layout.itemR(st, "play_buttons") + layout.itemR(st, "play_image") + layout.itemR(st, "play_sequencer") + layout.itemR(st, "play_nodes") + + layout.itemS() + + layout.itemR(st, "continue_physics") + + layout.itemS() + + layout.itemR(scene, "sync_audio", icon='ICON_SPEAKER') + layout.itemR(scene, "mute_audio") + layout.itemR(scene, "scrub_audio") + class TIME_MT_autokey(bpy.types.Menu): - __label__ = "Auto-Keyframing Mode" - - def draw(self, context): - layout = self.layout - tools = context.tool_settings - - layout.active = tools.enable_auto_key - - layout.item_enumR(tools, "autokey_mode", 'ADD_REPLACE_KEYS') - layout.item_enumR(tools, "autokey_mode", 'REPLACE_KEYS') + bl_label = "Auto-Keyframing Mode" + + def draw(self, context): + layout = self.layout + tools = context.tool_settings + + layout.active = tools.enable_auto_key + + layout.item_enumR(tools, "autokey_mode", 'ADD_REPLACE_KEYS') + layout.item_enumR(tools, "autokey_mode", 'REPLACE_KEYS') bpy.types.register(TIME_HT_header) bpy.types.register(TIME_MT_view) diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py index c887289e45d..935e3b40874 100644 --- a/release/scripts/ui/space_userpref.py +++ b/release/scripts/ui/space_userpref.py @@ -1,696 +1,1462 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class USERPREF_HT_header(bpy.types.Header): - __space_type__ = 'USER_PREFERENCES' - - def draw(self, context): - layout = self.layout - layout.template_header(menus=False) - - userpref = context.user_preferences - - layout.operator_context = "EXEC_AREA" - layout.itemO("wm.save_homefile", text="Save As Default") - - if userpref.active_section == 'INPUT': - layout.operator_context = "INVOKE_DEFAULT" - layout.itemO("wm.keyconfig_export", "Export Key Configuration...") - + bl_space_type = 'USER_PREFERENCES' + + def draw(self, context): + layout = self.layout + layout.template_header(menus=False) + + userpref = context.user_preferences + + layout.operator_context = "EXEC_AREA" + layout.itemO("wm.save_homefile", text="Save As Default") + + if userpref.active_section == 'INPUT': + layout.operator_context = "INVOKE_DEFAULT" + layout.itemO("wm.keyconfig_export", "Export Key Configuration...") + + class USERPREF_MT_view(bpy.types.Menu): - __label__ = "View" + bl_label = "View" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout class USERPREF_PT_tabs(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __show_header__ = False + bl_label = "" + bl_space_type = 'USER_PREFERENCES' + bl_region_type = 'WINDOW' + bl_show_header = False - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + + layout.itemR(userpref, "active_section", expand=True) - layout.itemR(userpref, "active_section", expand=True) class USERPREF_PT_interface(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __label__ = "Interface" - __show_header__ = False - - def poll(self, context): - userpref = context.user_preferences - return (userpref.active_section == 'INTERFACE') - - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - view = userpref.view - - split = layout.split() - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Display:") - sub1.itemR(view, "tooltips") - sub1.itemR(view, "display_object_info", text="Object Info") - sub1.itemR(view, "use_large_cursors") - sub1.itemR(view, "show_view_name", text="View Name") - sub1.itemR(view, "show_playback_fps", text="Playback FPS") - sub1.itemR(view, "global_scene") - sub1.itemR(view, "pin_floating_panels") - sub1.itemR(view, "object_center_size") - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemR(view, "show_mini_axis", text="Display Mini Axis") - sub2 = sub1.column() - sub2.enabled = view.show_mini_axis - sub2.itemR(view, "mini_axis_size", text="Size") - sub2.itemR(view, "mini_axis_brightness", text="Brightness") - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="View Manipulation:") - sub1.itemR(view, "auto_depth") - sub1.itemR(view, "global_pivot") - sub1.itemR(view, "zoom_to_mouse") - sub1.itemR(view, "rotate_around_selection") - sub1.itemS() - sub1.itemL(text="Zoom Style:") - sub1.row().itemR(view, "viewport_zoom_style", expand=True) - sub1.itemL(text="Orbit Style:") - sub1.row().itemR(view, "view_rotation", expand=True) - sub1.itemR(view, "perspective_orthographic_switch") - sub1.itemR(view, "smooth_view") - sub1.itemR(view, "rotation_angle") - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Menus:") - sub1.itemR(view, "open_mouse_over") - sub1.itemL(text="Menu Open Delay:") - sub1.itemR(view, "open_toplevel_delay", text="Top Level") - sub1.itemR(view, "open_sublevel_delay", text="Sub Level") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Toolbox:") - sub1.itemR(view, "use_column_layout") - sub1.itemL(text="Open Toolbox Delay:") - sub1.itemR(view, "open_left_mouse_delay", text="Hold LMB") - sub1.itemR(view, "open_right_mouse_delay", text="Hold RMB") - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - #manipulator - sub1.itemR(view, "use_manipulator") - sub2 = sub1.column() - sub2.enabled = view.use_manipulator - sub2.itemR(view, "manipulator_size", text="Size") - sub2.itemR(view, "manipulator_handle_size", text="Handle Size") - sub2.itemR(view, "manipulator_hotspot", text="Hotspot") + bl_space_type = 'USER_PREFERENCES' + bl_label = "Interface" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + return (userpref.active_section == 'INTERFACE') + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + view = userpref.view + + split = layout.split() + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="Display:") + sub1.itemR(view, "tooltips") + sub1.itemR(view, "display_object_info", text="Object Info") + sub1.itemR(view, "use_large_cursors") + sub1.itemR(view, "show_view_name", text="View Name") + sub1.itemR(view, "show_playback_fps", text="Playback FPS") + sub1.itemR(view, "global_scene") + sub1.itemR(view, "pin_floating_panels") + sub1.itemR(view, "object_center_size") + sub1.itemS() + sub1.itemS() + sub1.itemS() + sub1.itemR(view, "show_mini_axis", text="Display Mini Axis") + sub2 = sub1.column() + sub2.enabled = view.show_mini_axis + sub2.itemR(view, "mini_axis_size", text="Size") + sub2.itemR(view, "mini_axis_brightness", text="Brightness") + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="View Manipulation:") + sub1.itemR(view, "auto_depth") + sub1.itemR(view, "global_pivot") + sub1.itemR(view, "zoom_to_mouse") + sub1.itemR(view, "rotate_around_selection") + sub1.itemS() + + + sub1.itemR(view, "auto_perspective") + sub1.itemR(view, "smooth_view") + sub1.itemR(view, "rotation_angle") + + col = split.column() + sub = col.split(percentage=0.85) + sub1 = sub.column() + +#Toolbox doesn't exist yet +# sub1.itemL(text="Toolbox:") +# sub1.itemR(view, "use_column_layout") +# sub1.itemL(text="Open Toolbox Delay:") +# sub1.itemR(view, "open_left_mouse_delay", text="Hold LMB") +# sub1.itemR(view, "open_right_mouse_delay", text="Hold RMB") + + #manipulator + sub1.itemR(view, "use_manipulator") + sub2 = sub1.column() + sub2.enabled = view.use_manipulator + sub2.itemR(view, "manipulator_size", text="Size") + sub2.itemR(view, "manipulator_handle_size", text="Handle Size") + sub2.itemR(view, "manipulator_hotspot", text="Hotspot") + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemL(text="Menus:") + sub1.itemR(view, "open_mouse_over") + sub1.itemL(text="Menu Open Delay:") + sub1.itemR(view, "open_toplevel_delay", text="Top Level") + sub1.itemR(view, "open_sublevel_delay", text="Sub Level") + class USERPREF_PT_edit(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __label__ = "Edit" - __show_header__ = False - - def poll(self, context): - userpref = context.user_preferences - return (userpref.active_section == 'EDITING') - - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - edit = userpref.edit - view = userpref.view - - split = layout.split() - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Link Materials To:") - sub1.row().itemR(edit, "material_link", expand=True) - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemL(text="New Objects:") - sub1.itemR(edit, "enter_edit_mode") - sub1.itemL(text="Align To:") - sub1.row().itemR(edit, "object_align", expand=True) - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemL(text="Transform:") - sub1.itemR(edit, "drag_immediately") - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Snap:") - sub1.itemR(edit, "snap_translate", text="Translate") - sub1.itemR(edit, "snap_rotate", text="Rotate") - sub1.itemR(edit, "snap_scale", text="Scale") - sub1.itemS() - sub1.itemS() - sub1.itemS() - sub1.itemL(text="Grease Pencil:") - sub1.itemR(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") - sub1.itemR(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") - # sub1.itemR(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") - sub1.itemR(edit, "grease_pencil_eraser_radius", text="Eraser Radius") - sub1.itemR(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Keyframing:") - sub1.itemR(edit, "use_visual_keying") - sub1.itemR(edit, "keyframe_insert_needed", text="Only Insert Needed") - sub1.itemS() - sub1.itemL(text="New F-Curve Defaults:") - sub1.itemR(edit, "new_interpolation_type", text="Interpolation") - sub1.itemS() - sub1.itemR(edit, "auto_keying_enable", text="Auto Keyframing:") - sub2 = sub1.column() - sub2.active = edit.auto_keying_enable - sub2.itemR(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") - sub2.itemR(edit, "auto_keyframe_insert_available", text="Only Insert Available") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Undo:") - sub1.itemR(edit, "global_undo") - sub1.itemR(edit, "undo_steps", text="Steps") - sub1.itemR(edit, "undo_memory_limit", text="Memory Limit") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - col = split.column() - sub = col.split(percentage=0.85) - - sub1 = sub.column() - sub1.itemL(text="Duplicate Data:") - sub1.itemR(edit, "duplicate_mesh", text="Mesh") - sub1.itemR(edit, "duplicate_surface", text="Surface") - sub1.itemR(edit, "duplicate_curve", text="Curve") - sub1.itemR(edit, "duplicate_text", text="Text") - sub1.itemR(edit, "duplicate_metaball", text="Metaball") - sub1.itemR(edit, "duplicate_armature", text="Armature") - sub1.itemR(edit, "duplicate_lamp", text="Lamp") - sub1.itemR(edit, "duplicate_material", text="Material") - sub1.itemR(edit, "duplicate_texture", text="Texture") - sub1.itemR(edit, "duplicate_ipo", text="F-Curve") - sub1.itemR(edit, "duplicate_action", text="Action") - sub1.itemR(edit, "duplicate_particle", text="Particle") - + bl_space_type = 'USER_PREFERENCES' + bl_label = "Edit" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + return (userpref.active_section == 'EDITING') + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + edit = userpref.edit + + split = layout.split() + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="Link Materials To:") + sub1.row().itemR(edit, "material_link", expand=True) + sub1.itemS() + sub1.itemS() + sub1.itemS() + sub1.itemL(text="New Objects:") + sub1.itemR(edit, "enter_edit_mode") + sub1.itemL(text="Align To:") + sub1.row().itemR(edit, "object_align", expand=True) + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemL(text="Undo:") + sub1.itemR(edit, "global_undo") + sub1.itemR(edit, "undo_steps", text="Steps") + sub1.itemR(edit, "undo_memory_limit", text="Memory Limit") + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="Snap:") + sub1.itemR(edit, "snap_translate", text="Translate") + sub1.itemR(edit, "snap_rotate", text="Rotate") + sub1.itemR(edit, "snap_scale", text="Scale") + sub1.itemS() + sub1.itemS() + sub1.itemS() + sub1.itemL(text="Grease Pencil:") + sub1.itemR(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance") + sub1.itemR(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance") + # sub1.itemR(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke") + sub1.itemR(edit, "grease_pencil_eraser_radius", text="Eraser Radius") + sub1.itemR(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke") + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="Keyframing:") + sub1.itemR(edit, "use_visual_keying") + sub1.itemR(edit, "keyframe_insert_needed", text="Only Insert Needed") + sub1.itemS() + sub1.itemL(text="New F-Curve Defaults:") + sub1.itemR(edit, "new_interpolation_type", text="Interpolation") + sub1.itemS() + sub1.itemR(edit, "auto_keying_enable", text="Auto Keyframing:") + sub2 = sub1.column() + sub2.active = edit.auto_keying_enable + sub2.itemR(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set") + sub2.itemR(edit, "auto_keyframe_insert_available", text="Only Insert Available") + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemL(text="Transform:") + sub1.itemR(edit, "drag_immediately") + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + col = split.column() + sub = col.split(percentage=0.85) + + sub1 = sub.column() + sub1.itemL(text="Duplicate Data:") + sub1.itemR(edit, "duplicate_mesh", text="Mesh") + sub1.itemR(edit, "duplicate_surface", text="Surface") + sub1.itemR(edit, "duplicate_curve", text="Curve") + sub1.itemR(edit, "duplicate_text", text="Text") + sub1.itemR(edit, "duplicate_metaball", text="Metaball") + sub1.itemR(edit, "duplicate_armature", text="Armature") + sub1.itemR(edit, "duplicate_lamp", text="Lamp") + sub1.itemR(edit, "duplicate_material", text="Material") + sub1.itemR(edit, "duplicate_texture", text="Texture") + sub1.itemR(edit, "duplicate_ipo", text="F-Curve") + sub1.itemR(edit, "duplicate_action", text="Action") + sub1.itemR(edit, "duplicate_particle", text="Particle") + + class USERPREF_PT_system(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __label__ = "System" - __show_header__ = False - - def poll(self, context): - userpref = context.user_preferences - return (userpref.active_section == 'SYSTEM') - - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - system = userpref.system - - split = layout.split() - - col = split.column() - sub = col.split(percentage=0.9) - - sub1 = sub.column() - sub1.itemL(text="General:") - sub1.itemR(system, "dpi") - sub1.itemR(system, "frame_server_port") - sub1.itemR(system, "scrollback", text="Console Scrollback") - sub1.itemR(system, "emulate_numpad") - sub1.itemR(system, "auto_run_python_scripts") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Sound:") - sub1.row().itemR(system, "audio_device", expand=True) - sub2 = sub1.column() - sub2.active = system.audio_device != 'NONE' - sub2.itemR(system, "enable_all_codecs") - sub2.itemR(system, "game_sound") - sub2.itemR(system, "audio_channels", text="Channels") - sub2.itemR(system, "audio_mixing_buffer", text="Mixing Buffer") - sub2.itemR(system, "audio_sample_rate", text="Sample Rate") - sub2.itemR(system, "audio_sample_format", text="Sample Format") - - col = split.column() - sub = col.split(percentage=0.9) - - sub1 = sub .column() - sub1.itemL(text="Weight Colors:") - sub1.itemR(system, "use_weight_color_range", text="Use Custom Range") - sub2 = sub1.column() - sub2.active = system.use_weight_color_range - sub2.template_color_ramp(system, "weight_color_range", expand=True) - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemR(system, "language") - sub1.itemL(text="Translate:") - sub1.itemR(system, "translate_tooltips", text="Tooltips") - sub1.itemR(system, "translate_buttons", text="Labels") - sub1.itemR(system, "translate_toolbox", text="Toolbox") - - sub1.itemS() - - sub1.itemR(system, "use_textured_fonts") - - col = split.column() - sub = col.split(percentage=0.9) - - sub1 = sub.column() - - sub1.itemL(text="OpenGL:") - sub1.itemR(system, "clip_alpha", slider=True) - sub1.itemR(system, "use_mipmaps") - sub1.itemR(system, "use_vbos") - sub1.itemL(text="Window Draw Method:") - sub1.row().itemR(system, "window_draw_method", expand=True) - sub1.itemL(text="Textures:") - sub1.itemR(system, "gl_texture_limit", text="Limit Size") - sub1.itemR(system, "texture_time_out", text="Time Out") - sub1.itemR(system, "texture_collection_rate", text="Collection Rate") - - sub1.itemS() - sub1.itemS() - sub1.itemS() - - sub1.itemL(text="Sequencer:") - sub1.itemR(system, "prefetch_frames") - sub1.itemR(system, "memory_cache_limit") - + bl_space_type = 'USER_PREFERENCES' + bl_label = "System" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + return (userpref.active_section == 'SYSTEM') + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + system = userpref.system + + split = layout.split() + + col = split.column() + sub = col.split(percentage=0.9) + + sub1 = sub.column() + sub1.itemL(text="General:") + sub1.itemR(system, "dpi") + sub1.itemR(system, "frame_server_port") + sub1.itemR(system, "scrollback", text="Console Scrollback") + sub1.itemR(system, "emulate_numpad") + sub1.itemR(system, "auto_run_python_scripts") + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemL(text="Sound:") + sub1.row().itemR(system, "audio_device", expand=True) + sub2 = sub1.column() + sub2.active = system.audio_device != 'NONE' + sub2.itemR(system, "enable_all_codecs") + sub2.itemR(system, "game_sound") + sub2.itemR(system, "audio_channels", text="Channels") + sub2.itemR(system, "audio_mixing_buffer", text="Mixing Buffer") + sub2.itemR(system, "audio_sample_rate", text="Sample Rate") + sub2.itemR(system, "audio_sample_format", text="Sample Format") + + col = split.column() + sub = col.split(percentage=0.9) + + sub1 = sub .column() + sub1.itemL(text="Weight Colors:") + sub1.itemR(system, "use_weight_color_range", text="Use Custom Range") + sub2 = sub1.column() + sub2.active = system.use_weight_color_range + sub2.template_color_ramp(system, "weight_color_range", expand=True) + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemR(system, "language") + sub1.itemL(text="Translate:") + sub1.itemR(system, "translate_tooltips", text="Tooltips") + sub1.itemR(system, "translate_buttons", text="Labels") + sub1.itemR(system, "translate_toolbox", text="Toolbox") + + sub1.itemS() + + sub1.itemR(system, "use_textured_fonts") + + col = split.column() + sub = col.split(percentage=0.9) + + sub1 = sub.column() + + sub1.itemL(text="OpenGL:") + sub1.itemR(system, "clip_alpha", slider=True) + sub1.itemR(system, "use_mipmaps") + sub1.itemR(system, "use_vbos") + sub1.itemL(text="Window Draw Method:") + sub1.row().itemR(system, "window_draw_method", expand=True) + sub1.itemL(text="Textures:") + sub1.itemR(system, "gl_texture_limit", text="Limit Size") + sub1.itemR(system, "texture_time_out", text="Time Out") + sub1.itemR(system, "texture_collection_rate", text="Collection Rate") + + sub1.itemS() + sub1.itemS() + sub1.itemS() + + sub1.itemL(text="Sequencer:") + sub1.itemR(system, "prefetch_frames") + sub1.itemR(system, "memory_cache_limit") + + +class USERPREF_PT_theme(bpy.types.Panel): + bl_space_type = 'USER_PREFERENCES' + bl_label = "Themes" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + + return (userpref.active_section == 'THEMES') + + def draw(self, context): + layout = self.layout + + theme = context.user_preferences.themes[0] + + + split = layout.split(percentage=0.33) + split.itemR(theme, "active_theme", text="") + + layout.itemS() + + split = layout.split() + + if theme.active_theme == 'VIEW_3D': + v3d = theme.view_3d + + col = split.column() + col.itemR(v3d, "back") + col.itemR(v3d, "title") + col.itemR(v3d, "text") + col.itemR(v3d, "text_hi") + col.itemR(v3d, "header") + col.itemR(v3d, "header_text") + + col = split.column() + col.itemR(v3d, "header_text_hi") + col.itemR(v3d, "grid") + col.itemR(v3d, "panel", slider=True) + col.itemR(v3d, "wire") + col.itemR(v3d, "lamp", slider=True) + + col = split.column() + col.itemR(v3d, "current_frame") + col.itemR(v3d, "editmesh_active", slider=True) + col.itemR(v3d, "object_selected") + col.itemR(v3d, "object_active") + col.itemR(v3d, "object_grouped") + col.itemR(v3d, "object_grouped_active") + + col = split.column() + col.itemR(v3d, "transform") + col.itemR(v3d, "vertex") + col.itemR(v3d, "face", slider=True) + col.itemR(v3d, "normal") + col.itemR(v3d, "bone_solid") + col.itemR(v3d, "bone_pose") + +# col.itemR(v3d, "edge") Doesn't seem to work + elif theme.active_theme == 'USER_INTERFACE': + + ui = theme.user_interface.wcol_regular + + layout.itemL(text="Regular:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + layout.itemS() + + ui = theme.user_interface.wcol_tool + layout.itemL(text="Tool:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_radio + layout.itemL(text="Radio Buttons:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_text + layout.itemL(text="Text:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_option + layout.itemL(text="Option:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_toggle + layout.itemL(text="Toggle:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_num + layout.itemL(text="Number Field:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_numslider + layout.itemL(text="Value Slider:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_box + layout.itemL(text="Box:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_menu + layout.itemL(text="Menu:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_pulldown + layout.itemL(text="Pulldown:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_menu_back + layout.itemL(text="Menu Back:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_menu_item + layout.itemL(text="Menu Item:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_scroll + layout.itemL(text="Scroll Bar:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_list_item + layout.itemL(text="List Item:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "outline") + sub1.itemR(ui, "item", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "inner", slider=True) + sub1.itemR(ui, "inner_sel", slider=True) + sub1 = sub.column() + sub1.itemR(ui, "text") + sub1.itemR(ui, "text_sel") + sub1 = sub.column() + sub1.itemR(ui, "shaded") + sub2 = sub1.column(align=True) + sub2.active = ui.shaded + sub2.itemR(ui, "shadetop") + sub2.itemR(ui, "shadedown") + + ui = theme.user_interface.wcol_state + layout.itemL(text="State:") + + sub = layout.row() + sub1 = sub.column() + sub1.itemR(ui, "inner_anim") + sub1.itemR(ui, "inner_anim_sel") + sub1 = sub.column() + sub1.itemR(ui, "inner_driven") + sub1.itemR(ui, "inner_driven_sel") + sub1 = sub.column() + sub1.itemR(ui, "inner_key") + sub1.itemR(ui, "inner_key_sel") + sub1 = sub.column() + sub1.itemR(ui, "blend") + + ui = theme.user_interface + layout.itemS() + + sub = layout.row() + sub.itemR(ui, "icon_file") + + layout.itemS() + layout.itemS() + + + elif theme.active_theme == 'GRAPH_EDITOR': + graph = theme.graph_editor + + col = split.column() + col.itemR(graph, "back") + col.itemR(graph, "title") + col.itemR(graph, "text") + col.itemR(graph, "text_hi") + col.itemR(graph, "header") + + col = split.column() + col.itemR(graph, "header_text") + col.itemR(graph, "header_text_hi") + col.itemR(graph, "grid") + col.itemR(graph, "panel") + col.itemR(graph, "window_sliders") + + col = split.column() + col.itemR(graph, "channels_region") + col.itemR(graph, "vertex") + col.itemR(graph, "current_frame") + col.itemR(graph, "handle_vertex") + col.itemR(graph, "handle_vertex_select") + + col = split.column() + col.itemR(graph, "handle_vertex_size") + col.itemR(graph, "channel_group") + col.itemR(graph, "active_channels_group") + col.itemR(graph, "dopesheet_channel") + col.itemR(graph, "dopesheet_subchannel") + + + elif theme.active_theme == 'FILE_BROWSER': + file = theme.file_browser + + col = split.column() + col.itemR(file, "back") + col.itemR(file, "title") + col.itemR(file, "text") + col.itemR(file, "text_hi") + + col = split.column() + col.itemR(file, "header") + col.itemR(file, "header_text") + col.itemR(file, "header_text_hi") + + col = split.column() + col.itemR(file, "selected_file") + col.itemR(file, "tiles") + col.itemR(file, "scrollbar") + + col = split.column() + col.itemR(file, "scroll_handle") + col.itemR(file, "active_file") + col.itemR(file, "active_file_text") + + elif theme.active_theme == 'NLA_EDITOR': + nla = theme.nla_editor + + col = split.column() + col.itemR(nla, "back") + col.itemR(nla, "title") + col.itemR(nla, "text") + col.itemR(nla, "text_hi") + + col = split.column() + col.itemR(nla, "header") + col.itemR(nla, "header_text") + col.itemR(nla, "header_text_hi") + col.itemR(nla, "grid") + + col = split.column() + col.itemR(nla, "view_sliders") + col.itemR(nla, "bars") + col.itemR(nla, "bars_selected") + + col = split.column() + col.itemR(nla, "strips") + col.itemR(nla, "strips_selected") + col.itemR(nla, "current_frame") + + elif theme.active_theme == 'DOPESHEET_EDITOR': + dope = theme.dopesheet_editor + + col = split.column() + col.itemR(dope, "back") + col.itemR(dope, "title") + col.itemR(dope, "text") + col.itemR(dope, "text_hi") + col.itemR(dope, "header") + + col = split.column() + col.itemR(dope, "header_text") + col.itemR(dope, "header_text_hi") + col.itemR(dope, "grid") + col.itemR(dope, "value_sliders") + col.itemR(dope, "view_sliders") + + col = split.column() + col.itemR(dope, "channels") + col.itemR(dope, "channels_selected") + col.itemR(dope, "channel_group") + col.itemR(dope, "active_channels_group") + col.itemR(dope, "long_key") + + col = split.column() + col.itemR(dope, "long_key_selected") + col.itemR(dope, "current_frame") + col.itemR(dope, "dopesheet_channel") + col.itemR(dope, "dopesheet_subchannel") + + elif theme.active_theme == 'IMAGE_EDITOR': + image = theme.image_editor + + col = split.column() + col.itemR(image, "back") + col.itemR(image, "title") + + col = split.column() + col.itemR(image, "text") + col.itemR(image, "text_hi") + + col = split.column() + col.itemR(image, "header") + col.itemR(image, "header_text") + + col = split.column() + col.itemR(image, "header_text_hi") + col.itemR(image, "editmesh_active", slider=True) + + elif theme.active_theme == 'SEQUENCE_EDITOR': + seq = theme.sequence_editor + + col = split.column() + col.itemR(seq, "back") + col.itemR(seq, "title") + col.itemR(seq, "text") + col.itemR(seq, "text_hi") + col.itemR(seq, "header") + + col = split.column() + col.itemR(seq, "header_text") + col.itemR(seq, "header_text_hi") + col.itemR(seq, "grid") + col.itemR(seq, "window_sliders") + col.itemR(seq, "movie_strip") + + col = split.column() + col.itemR(seq, "image_strip") + col.itemR(seq, "scene_strip") + col.itemR(seq, "audio_strip") + col.itemR(seq, "effect_strip") + col.itemR(seq, "plugin_strip") + + col = split.column() + col.itemR(seq, "transition_strip") + col.itemR(seq, "meta_strip") + col.itemR(seq, "current_frame") + col.itemR(seq, "keyframe") + col.itemR(seq, "draw_action") + + elif theme.active_theme == 'PROPERTIES': + prop = theme.properties + + col = split.column() + col.itemR(prop, "back") + col.itemR(prop, "title") + + col = split.column() + col.itemR(prop, "text") + col.itemR(prop, "text_hi") + + col = split.column() + col.itemR(prop, "header") + col.itemR(prop, "header_text") + + col = split.column() + col.itemR(prop, "header_text_hi") + col.itemR(prop, "panel") + + elif theme.active_theme == 'TEXT_EDITOR': + text = theme.text_editor + + col = split.column() + col.itemR(text, "back") + col.itemR(text, "title") + col.itemR(text, "text") + col.itemR(text, "text_hi") + + col = split.column() + col.itemR(text, "header") + col.itemR(text, "header_text") + col.itemR(text, "header_text_hi") + col.itemR(text, "line_numbers_background") + + col = split.column() + col.itemR(text, "scroll_bar") + col.itemR(text, "selected_text") + col.itemR(text, "cursor") + col.itemR(text, "syntax_builtin") + + col = split.column() + col.itemR(text, "syntax_special") + col.itemR(text, "syntax_comment") + col.itemR(text, "syntax_string") + col.itemR(text, "syntax_numbers") + + elif theme.active_theme == 'TIMELINE': + time = theme.timeline + + col = split.column() + col.itemR(time, "back") + col.itemR(time, "title") + col.itemR(time, "text") + + col = split.column() + col.itemR(time, "text_hi") + col.itemR(time, "header") + + col = split.column() + col.itemR(time, "header_text") + col.itemR(time, "header_text_hi") + + col = split.column() + col.itemR(time, "grid") + col.itemR(time, "current_frame") + + elif theme.active_theme == 'NODE_EDITOR': + node = theme.node_editor + + col = split.column() + col.itemR(node, "back") + col.itemR(node, "title") + col.itemR(node, "text") + col.itemR(node, "text_hi") + + col = split.column() + col.itemR(node, "header") + col.itemR(node, "header_text") + col.itemR(node, "header_text_hi") + col.itemR(node, "wires") + + col = split.column() + col.itemR(node, "wire_select") + col.itemR(node, "selected_text") + col.itemR(node, "node_backdrop") + col.itemR(node, "in_out_node") + + col = split.column() + col.itemR(node, "converter_node") + col.itemR(node, "operator_node") + col.itemR(node, "group_node") + + elif theme.active_theme == 'LOGIC_EDITOR': + logic = theme.logic_editor + + col = split.column() + col.itemR(logic, "back") + col.itemR(logic, "title") + + col = split.column() + col.itemR(logic, "text") + col.itemR(logic, "text_hi") + + col = split.column() + col.itemR(logic, "header") + col.itemR(logic, "header_text") + + col = split.column() + col.itemR(logic, "header_text_hi") + col.itemR(logic, "panel") + + elif theme.active_theme == 'OUTLINER': + out = theme.outliner + + col = split.column() + col.itemR(out, "back") + col.itemR(out, "title") + + col = split.column() + col.itemR(out, "text") + col.itemR(out, "text_hi") + + col = split.column() + col.itemR(out, "header") + col.itemR(out, "header_text") + + col = split.column() + col.itemR(out, "header_text_hi") + + elif theme.active_theme == 'INFO': + info = theme.info + + col = split.column() + col.itemR(info, "back") + col.itemR(info, "title") + + col = split.column() + col.itemR(info, "text") + col.itemR(info, "text_hi") + + col = split.column() + col.itemR(info, "header") + col.itemR(info, "header_text") + + col = split.column() + col.itemR(info, "header_text_hi") + + elif theme.active_theme == 'USER_PREFERENCES': + prefs = theme.user_preferences + + col = split.column() + col.itemR(prefs, "back") + col.itemR(prefs, "title") + + col = split.column() + col.itemR(prefs, "text") + col.itemR(prefs, "text_hi") + + col = split.column() + col.itemR(prefs, "header") + col.itemR(prefs, "header_text") + + col = split.column() + col.itemR(prefs, "header_text_hi") + + class USERPREF_PT_file(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __label__ = "Files" - __show_header__ = False - - def poll(self, context): - userpref = context.user_preferences - return (userpref.active_section == 'FILES') - - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - paths = userpref.filepaths - - split = layout.split(percentage=0.6) - - col = split.column() - col.itemL(text="File Paths:") - sub = col.split(percentage=0.3) - - sub.itemL(text="Fonts:") - sub.itemR(paths, "fonts_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Textures:") - sub.itemR(paths, "textures_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Texture Plugins:") - sub.itemR(paths, "texture_plugin_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Sequence Plugins:") - sub.itemR(paths, "sequence_plugin_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Render Output:") - sub.itemR(paths, "render_output_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Scripts:") - sub.itemR(paths, "python_scripts_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Sounds:") - sub.itemR(paths, "sounds_directory", text="") - sub = col.split(percentage=0.3) - sub.itemL(text="Temp:") - sub.itemR(paths, "temporary_directory", text="") - - col = split.column() - sub = col.split(percentage=0.2) - sub1 = sub.column() - sub2 = sub.column() - sub2.itemL(text="Save & Load:") - sub2.itemR(paths, "use_relative_paths") - sub2.itemR(paths, "compress_file") - sub2.itemR(paths, "load_ui") - sub2.itemR(paths, "filter_file_extensions") - sub2.itemR(paths, "hide_dot_files_datablocks") - sub2.itemS() - sub2.itemS() - sub2.itemL(text="Auto Save:") - sub2.itemR(paths, "save_version") - sub2.itemR(paths, "recent_files") - sub2.itemR(paths, "save_preview_images") - sub2.itemR(paths, "auto_save_temporary_files") - sub3 = sub2.column() - sub3.enabled = paths.auto_save_temporary_files - sub3.itemR(paths, "auto_save_time", text="Timer (mins)") + bl_space_type = 'USER_PREFERENCES' + bl_label = "Files" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + return (userpref.active_section == 'FILES') + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + paths = userpref.filepaths + + split = layout.split(percentage=0.6) + + col = split.column() + col.itemL(text="File Paths:") + sub = col.split(percentage=0.3) + + sub.itemL(text="Fonts:") + sub.itemR(paths, "fonts_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Textures:") + sub.itemR(paths, "textures_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Texture Plugins:") + sub.itemR(paths, "texture_plugin_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Sequence Plugins:") + sub.itemR(paths, "sequence_plugin_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Render Output:") + sub.itemR(paths, "render_output_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Scripts:") + sub.itemR(paths, "python_scripts_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Sounds:") + sub.itemR(paths, "sounds_directory", text="") + sub = col.split(percentage=0.3) + sub.itemL(text="Temp:") + sub.itemR(paths, "temporary_directory", text="") + + col = split.column() + sub = col.split(percentage=0.2) + sub1 = sub.column() + sub2 = sub.column() + sub2.itemL(text="Save & Load:") + sub2.itemR(paths, "use_relative_paths") + sub2.itemR(paths, "compress_file") + sub2.itemR(paths, "load_ui") + sub2.itemR(paths, "filter_file_extensions") + sub2.itemR(paths, "hide_dot_files_datablocks") + sub2.itemS() + sub2.itemS() + sub2.itemL(text="Auto Save:") + sub2.itemR(paths, "save_version") + sub2.itemR(paths, "recent_files") + sub2.itemR(paths, "save_preview_images") + sub2.itemR(paths, "auto_save_temporary_files") + sub3 = sub2.column() + sub3.enabled = paths.auto_save_temporary_files + sub3.itemR(paths, "auto_save_time", text="Timer (mins)") + class USERPREF_PT_input(bpy.types.Panel): - __space_type__ = 'USER_PREFERENCES' - __label__ = "Input" - __show_header__ = False - - def poll(self, context): - userpref = context.user_preferences - return (userpref.active_section == 'INPUT') - - def draw(self, context): - layout = self.layout - - userpref = context.user_preferences - wm = context.manager - #input = userpref.input - input = userpref - view = userpref.view - - split = layout.split(percentage=0.25) - - # General settings - row = split.row() - col = row.column() - - sub = col.column() - sub.itemL(text="Configuration:") - sub.item_pointerR(wm, "active_keyconfig", wm, "keyconfigs", text="") - - col.itemS() - - sub = col.column() - sub.itemL(text="Mouse:") - sub1 = sub.column() - sub1.enabled = (view.select_mouse == 'RIGHT') - sub1.itemR(view, "emulate_3_button_mouse") - sub.itemR(view, "continuous_mouse") - - sub.itemL(text="Select With:") - sub.row().itemR(view, "select_mouse", expand=True) - #sub.itemL(text="Middle Mouse:") - #sub.row().itemR(view, "middle_mouse", expand=True) - #sub.itemR(view, "use_middle_mouse_paste") - - #col.itemS() - - #sub = col.column() - #sub.itemL(text="Mouse Wheel:") - #sub.itemR(view, "wheel_invert_zoom", text="Invert Zoom") - #sub.itemR(view, "wheel_scroll_lines", text="Scroll Lines") - - col.itemS() - - sub = col.column() - sub.itemL(text="NDOF Device:") - sub.itemR(view, "ndof_pan_speed", text="Pan Speed") - sub.itemR(view, "ndof_rotate_speed", text="Orbit Speed") - - row.itemS() - - # Keymap Settings - col = split.column() - - kc = wm.active_keyconfig - defkc = wm.default_keyconfig - km = wm.active_keymap - - subsplit = col.split() - subsplit.item_pointerR(wm, "active_keymap", defkc, "keymaps", text="Map:") - if km.user_defined: - row = subsplit.row() - row.itemO("WM_OT_keymap_restore", text="Restore") - row.item_booleanO("WM_OT_keymap_restore", "all", True, text="Restore All") - else: - row = subsplit.row() - row.itemO("WM_OT_keymap_edit", text="Edit") - row.itemL() - - col.itemS() - - for kmi in km.items: - subcol = col.column() - subcol.set_context_pointer("keyitem", kmi) - - row = subcol.row() - - if kmi.expanded: - row.itemR(kmi, "expanded", text="", icon="ICON_TRIA_RIGHT") - else: - row.itemR(kmi, "expanded", text="", icon="ICON_TRIA_RIGHT") - - itemrow = row.row() - itemrow.enabled = km.user_defined - itemrow.itemR(kmi, "active", text="", icon="ICON_CHECKBOX_DEHLT") - - itemcol = itemrow.column() - itemcol.active = kmi.active - row = itemcol.row() - row.itemR(kmi, "idname", text="") - - sub = row.row() - sub.scale_x = 0.6 - sub.itemR(kmi, "map_type", text="") - - sub = row.row(align=True) - if kmi.map_type == 'KEYBOARD': - sub.itemR(kmi, "type", text="", full_event=True) - elif kmi.map_type == 'MOUSE': - sub.itemR(kmi, "type", text="", full_event=True) - elif kmi.map_type == 'TWEAK': - sub.scale_x = 0.5 - sub.itemR(kmi, "type", text="") - sub.itemR(kmi, "value", text="") - elif kmi.map_type == 'TIMER': - sub.itemR(kmi, "type", text="") - else: - sub.itemL() - - if kmi.expanded: - if kmi.map_type not in ('TEXTINPUT', 'TIMER'): - sub = itemcol.row(align=True) - - if kmi.map_type == 'KEYBOARD': - sub.itemR(kmi, "type", text="", event=True) - sub.itemR(kmi, "value", text="") - elif kmi.map_type == 'MOUSE': - sub.itemR(kmi, "type", text="") - sub.itemR(kmi, "value", text="") - else: - sub.itemL() - sub.itemL() - - subrow = sub.row() - subrow.scale_x = 0.75 - subrow.itemR(kmi, "shift") - subrow.itemR(kmi, "ctrl") - subrow.itemR(kmi, "alt") - subrow.itemR(kmi, "oskey", text="Cmd") - sub.itemR(kmi, "key_modifier", text="", event=True) - - flow = itemcol.column_flow(columns=2) - props = kmi.properties - - if props != None: - for pname in dir(props): - if not props.is_property_hidden(pname): - flow.itemR(props, pname) - - itemcol.itemS() - - itemrow.itemO("wm.keyitem_remove", text="", icon="ICON_ZOOMOUT") - - itemrow = col.row() - itemrow.itemL() - itemrow.itemO("wm.keyitem_add", text="", icon="ICON_ZOOMIN") - itemrow.enabled = km.user_defined + bl_space_type = 'USER_PREFERENCES' + bl_label = "Input" + bl_region_type = 'WINDOW' + bl_show_header = False + + def poll(self, context): + userpref = context.user_preferences + return (userpref.active_section == 'INPUT') + + def draw(self, context): + layout = self.layout + + userpref = context.user_preferences + wm = context.manager + #input = userpref.input + input = userpref + inputs = userpref.inputs + + split = layout.split(percentage=0.25) + + # General settings + row = split.row() + col = row.column() + + sub = col.column() + sub.itemL(text="Configuration:") + sub.item_pointerR(wm, "active_keyconfig", wm, "keyconfigs", text="") + + col.itemS() + + sub = col.column() + sub.itemL(text="Mouse:") + sub1 = sub.column() + sub1.enabled = (inputs.select_mouse == 'RIGHT') + sub1.itemR(inputs, "emulate_3_button_mouse") + sub.itemR(inputs, "continuous_mouse") + + sub.itemL(text="Select With:") + sub.row().itemR(inputs, "select_mouse", expand=True) + sub.itemL(text="Middle Mouse:") + sub.row().itemR(inputs, "middle_mouse", expand=True) + + sub.itemS() + sub.itemS() + sub.itemS() + + sub.itemL(text="Orbit Style:") + sub.row().itemR(inputs, "view_rotation", expand=True) + + sub.itemL(text="Zoom Style:") + sub.row().itemR(inputs, "viewport_zoom_style", expand=True) + + #sub.itemR(inputs, "use_middle_mouse_paste") + + #col.itemS() + + #sub = col.column() + #sub.itemL(text="Mouse Wheel:") + #sub.itemR(view, "wheel_invert_zoom", text="Invert Zoom") + #sub.itemR(view, "wheel_scroll_lines", text="Scroll Lines") + + col.itemS() + + sub = col.column() + sub.itemL(text="NDOF Device:") + sub.itemR(inputs, "ndof_pan_speed", text="Pan Speed") + sub.itemR(inputs, "ndof_rotate_speed", text="Orbit Speed") + + row.itemS() + + # Keymap Settings + col = split.column() + + kc = wm.active_keyconfig + defkc = wm.default_keyconfig + km = wm.active_keymap + + subsplit = col.split() + subsplit.item_pointerR(wm, "active_keymap", defkc, "keymaps", text="Map:") + if km.user_defined: + row = subsplit.row() + row.itemO("WM_OT_keymap_restore", text="Restore") + row.item_booleanO("WM_OT_keymap_restore", "all", True, text="Restore All") + else: + row = subsplit.row() + row.itemO("WM_OT_keymap_edit", text="Edit") + row.itemL() + + col.itemS() + + for kmi in km.items: + subcol = col.column() + subcol.set_context_pointer("keyitem", kmi) + + row = subcol.row() + + if kmi.expanded: + row.itemR(kmi, "expanded", text="", icon="ICON_TRIA_DOWN") + else: + row.itemR(kmi, "expanded", text="", icon="ICON_TRIA_RIGHT") + + itemrow = row.row() + itemrow.enabled = km.user_defined + if kmi.active: + itemrow.itemR(kmi, "active", text="", icon="ICON_CHECKBOX_HLT") + else: + itemrow.itemR(kmi, "active", text="", icon="ICON_CHECKBOX_DEHLT") + + itemcol = itemrow.column() + itemcol.active = kmi.active + row = itemcol.row() + row.itemR(kmi, "idname", text="") + + sub = row.row() + sub.scale_x = 0.6 + sub.itemR(kmi, "map_type", text="") + + sub = row.row(align=True) + if kmi.map_type == 'KEYBOARD': + sub.itemR(kmi, "type", text="", full_event=True) + elif kmi.map_type == 'MOUSE': + sub.itemR(kmi, "type", text="", full_event=True) + elif kmi.map_type == 'TWEAK': + sub.scale_x = 0.5 + sub.itemR(kmi, "type", text="") + sub.itemR(kmi, "value", text="") + elif kmi.map_type == 'TIMER': + sub.itemR(kmi, "type", text="") + else: + sub.itemL() + + if kmi.expanded: + if kmi.map_type not in ('TEXTINPUT', 'TIMER'): + sub = itemcol.row(align=True) + + if kmi.map_type == 'KEYBOARD': + sub.itemR(kmi, "type", text="", event=True) + sub.itemR(kmi, "value", text="") + elif kmi.map_type == 'MOUSE': + sub.itemR(kmi, "type", text="") + sub.itemR(kmi, "value", text="") + else: + sub.itemL() + sub.itemL() + + subrow = sub.row() + subrow.scale_x = 0.75 + subrow.itemR(kmi, "shift") + subrow.itemR(kmi, "ctrl") + subrow.itemR(kmi, "alt") + subrow.itemR(kmi, "oskey", text="Cmd") + sub.itemR(kmi, "key_modifier", text="", event=True) + + flow = itemcol.column_flow(columns=2) + props = kmi.properties + + if props != None: + for pname in dir(props): + if not props.is_property_hidden(pname): + flow.itemR(props, pname) + + itemcol.itemS() + + itemrow.itemO("wm.keyitem_remove", text="", icon="ICON_ZOOMOUT") + + itemrow = col.row() + itemrow.itemL() + itemrow.itemO("wm.keyitem_add", text="", icon="ICON_ZOOMIN") + itemrow.enabled = km.user_defined bpy.types.register(USERPREF_HT_header) bpy.types.register(USERPREF_MT_view) bpy.types.register(USERPREF_PT_tabs) bpy.types.register(USERPREF_PT_interface) +bpy.types.register(USERPREF_PT_theme) bpy.types.register(USERPREF_PT_edit) bpy.types.register(USERPREF_PT_system) bpy.types.register(USERPREF_PT_file) bpy.types.register(USERPREF_PT_input) +from bpy.props import * + + class WM_OT_keyconfig_export(bpy.types.Operator): - "Export key configuration to a python script." - __idname__ = "wm.keyconfig_export" - __label__ = "Export Key Configuration..." - __props__ = [ - bpy.props.StringProperty(attr="path", name="File Path", description="File path to write file to.")] - - def _string_value(self, value): - result = "" - if isinstance(value, str): - if value != "": - result = "\'%s\'" % value - elif isinstance(value, bool): - if value: - result = "True" - else: - result = "False" - elif isinstance(value, float): - result = "%.10f" % value - elif isinstance(value, int): - result = "%d" % value - elif getattr(value, '__len__', False): - if len(value): - result = "[" - for i in range(0, len(value)): - result += self._string_value(value[i]) - if i != len(value)-1: - result += ", " - result += "]" - else: - print("Export key configuration: can't write ", value) - - return result - - def execute(self, context): - if not self.path: - raise Exception("File path not set.") - - f = open(self.path, "w") - if not f: - raise Exception("Could not open file.") - - wm = context.manager - kc = wm.active_keyconfig - - f.write('# Configuration %s\n' % kc.name) - - f.write("wm = bpy.data.windowmanagers[0]\n"); - f.write("kc = wm.add_keyconfig(\'%s\')\n\n" % kc.name) - - for km in kc.keymaps: - f.write("# Map %s\n" % km.name) - f.write("km = kc.add_keymap(\'%s\', space_type=\'%s\', region_type=\'%s\')\n\n" % (km.name, km.space_type, km.region_type)) - for kmi in km.items: - f.write("kmi = km.add_item(\'%s\', \'%s\', \'%s\'" % (kmi.idname, kmi.type, kmi.value)) - if kmi.shift: - f.write(", shift=True") - if kmi.ctrl: - f.write(", ctrl=True") - if kmi.alt: - f.write(", alt=True") - if kmi.oskey: - f.write(", oskey=True") - if kmi.key_modifier and kmi.key_modifier != 'NONE': - f.write(", key_modifier=\'%s\'" % kmi.key_modifier) - f.write(")\n") - - props = kmi.properties - - if props != None: - for pname in dir(props): - if props.is_property_set(pname) and not props.is_property_hidden(pname): - value = eval("props.%s" % pname) - value = self._string_value(value) - if value != "": - f.write("kmi.properties.%s = %s\n" % (pname, value)) - - f.write("\n") - - f.close() - - return ('FINISHED',) - - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self.__operator__) - return ('RUNNING_MODAL',) + "Export key configuration to a python script." + bl_idname = "wm.keyconfig_export" + bl_label = "Export Key Configuration..." + + path = bpy.props.StringProperty(name="File Path", description="File path to write file to.") + + def _string_value(self, value): + result = "" + if isinstance(value, str): + if value != "": + result = "\'%s\'" % value + elif isinstance(value, bool): + if value: + result = "True" + else: + result = "False" + elif isinstance(value, float): + result = "%.10f" % value + elif isinstance(value, int): + result = "%d" % value + elif getattr(value, '__len__', False): + if len(value): + result = "[" + for i in range(0, len(value)): + result += self._string_value(value[i]) + if i != len(value)-1: + result += ", " + result += "]" + else: + print("Export key configuration: can't write ", value) + + return result + + def execute(self, context): + if not self.path: + raise Exception("File path not set.") + + f = open(self.path, "w") + if not f: + raise Exception("Could not open file.") + + wm = context.manager + kc = wm.active_keyconfig + + f.write('# Configuration %s\n' % kc.name) + + f.write("wm = bpy.data.windowmanagers[0]\n") + f.write("kc = wm.add_keyconfig(\'%s\')\n\n" % kc.name) + + for km in kc.keymaps: + f.write("# Map %s\n" % km.name) + f.write("km = kc.add_keymap(\'%s\', space_type=\'%s\', region_type=\'%s\')\n\n" % (km.name, km.space_type, km.region_type)) + for kmi in km.items: + f.write("kmi = km.add_item(\'%s\', \'%s\', \'%s\'" % (kmi.idname, kmi.type, kmi.value)) + if kmi.shift: + f.write(", shift=True") + if kmi.ctrl: + f.write(", ctrl=True") + if kmi.alt: + f.write(", alt=True") + if kmi.oskey: + f.write(", oskey=True") + if kmi.key_modifier and kmi.key_modifier != 'NONE': + f.write(", key_modifier=\'%s\'" % kmi.key_modifier) + f.write(")\n") + + props = kmi.properties + + if props != None: + for pname in dir(props): + if props.is_property_set(pname) and not props.is_property_hidden(pname): + value = eval("props.%s" % pname) + value = self._string_value(value) + if value != "": + f.write("kmi.properties.%s = %s\n" % (pname, value)) + + f.write("\n") + + f.close() + + return ('FINISHED',) + + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + class WM_OT_keymap_edit(bpy.types.Operator): - "Edit key map." - __idname__ = "wm.keymap_edit" - __label__ = "Edit Key Map" + "Edit key map." + bl_idname = "wm.keymap_edit" + bl_label = "Edit Key Map" + + def execute(self, context): + wm = context.manager + km = wm.active_keymap + km.copy_to_user() + return ('FINISHED',) - def execute(self, context): - wm = context.manager - km = wm.active_keymap - km.copy_to_user() - return ('FINISHED',) class WM_OT_keymap_restore(bpy.types.Operator): - "Restore key map" - __idname__ = "wm.keymap_restore" - __label__ = "Restore Key Map" - __props__ = [bpy.props.BoolProperty(attr="all", name="All Keymaps", description="Restore all keymaps to default.")] - - def execute(self, context): - wm = context.manager - - if self.all: - for km in wm.default_keyconfig.keymaps: - km.restore_to_default() - else: - km = wm.active_keymap - km.restore_to_default() - - return ('FINISHED',) - + "Restore key map" + bl_idname = "wm.keymap_restore" + bl_label = "Restore Key Map" + + all = BoolProperty(attr="all", name="All Keymaps", description="Restore all keymaps to default.") + + def execute(self, context): + wm = context.manager + + if self.all: + for km in wm.default_keyconfig.keymaps: + km.restore_to_default() + else: + km = wm.active_keymap + km.restore_to_default() + + return ('FINISHED',) + + class WM_OT_keyitem_add(bpy.types.Operator): - "Add key map item." - __idname__ = "wm.keyitem_add" - __label__ = "Add Key Map Item" - - def execute(self, context): - wm = context.manager - km = wm.active_keymap - kmi = km.add_item("", "A", "PRESS") - return ('FINISHED',) - + "Add key map item." + bl_idname = "wm.keyitem_add" + bl_label = "Add Key Map Item" + + def execute(self, context): + wm = context.manager + km = wm.active_keymap + kmi = km.add_item("", "A", "PRESS") + return ('FINISHED',) + + class WM_OT_keyitem_remove(bpy.types.Operator): - "Remove key map item." - __idname__ = "wm.keyitem_remove" - __label__ = "Remove Key Map Item" + "Remove key map item." + bl_idname = "wm.keyitem_remove" + bl_label = "Remove Key Map Item" - def execute(self, context): - wm = context.manager - kmi = context.keyitem - km = wm.active_keymap - km.remove_item(kmi) - return ('FINISHED',) + def execute(self, context): + wm = context.manager + kmi = context.keyitem + km = wm.active_keymap + km.remove_item(kmi) + return ('FINISHED',) bpy.ops.add(WM_OT_keyconfig_export) bpy.ops.add(WM_OT_keymap_edit) bpy.ops.add(WM_OT_keymap_restore) bpy.ops.add(WM_OT_keyitem_add) bpy.ops.add(WM_OT_keyitem_remove) - diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py index ad2597d6c24..863bab35f13 100644 --- a/release/scripts/ui/space_view3d.py +++ b/release/scripts/ui/space_view3d.py @@ -1,1475 +1,1657 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy - import dynamic_menu -# ********** Header ********** class VIEW3D_HT_header(bpy.types.Header): - __space_type__ = 'VIEW_3D' - - def draw(self, context): - layout = self.layout - - view = context.space_data - mode_string = context.mode - edit_object = context.edit_object - object = context.active_object - - row = layout.row(align=True) - row.template_header() - - # Menus - if context.area.show_menus: - sub = row.row(align=True) - - sub.itemM("VIEW3D_MT_view") - - # Select Menu - if mode_string not in ('EDIT_TEXT', 'SCULPT', 'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'): - sub.itemM("VIEW3D_MT_select_%s" % mode_string.lower()) - - if edit_object: - sub.itemM("VIEW3D_MT_edit_%s" % edit_object.type.lower()) - elif object: - ob_mode_string = object.mode - - if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']: - sub.itemM("VIEW3D_MT_%s" % mode_string.lower()) - else: - sub.itemM("VIEW3D_MT_object") - - layout.template_header_3D() + bl_space_type = 'VIEW_3D' + + def draw(self, context): + layout = self.layout + + view = context.space_data + mode_string = context.mode + edit_object = context.edit_object + object = context.active_object + + row = layout.row(align=True) + row.template_header() + + # Menus + if context.area.show_menus: + sub = row.row(align=True) + + sub.itemM("VIEW3D_MT_view") + + # Select Menu + if mode_string not in ('EDIT_TEXT', 'SCULPT', 'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'): + sub.itemM("VIEW3D_MT_select_%s" % mode_string.lower()) + + if edit_object: + sub.itemM("VIEW3D_MT_edit_%s" % edit_object.type.lower()) + elif object: + ob_mode_string = object.mode + + if mode_string not in ['PAINT_WEIGHT', 'PAINT_TEXTURE']: + sub.itemM("VIEW3D_MT_%s" % mode_string.lower()) + else: + sub.itemM("VIEW3D_MT_object") + + layout.template_header_3D() # ********** Menu ********** # ********** Utilities ********** + class VIEW3D_MT_showhide(bpy.types.Menu): - __label__ = "Show/Hide" - _operator_name = "" + bl_label = "Show/Hide" + _operator_name = "" + + def draw(self, context): + layout = self.layout + + layout.itemO("%s.reveal" % self._operator_name, text="Show Hidden") + layout.itemO("%s.hide" % self._operator_name, text="Hide Selected") + layout.item_booleanO("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected") - def draw(self, context): - layout = self.layout - - layout.itemO("%s.reveal" % self._operator_name, text="Show Hidden") - layout.itemO("%s.hide" % self._operator_name, text="Hide Selected") - layout.item_booleanO("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected") class VIEW3D_MT_snap(bpy.types.Menu): - __label__ = "Snap" - - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.snap_selected_to_grid", text="Selection to Grid") - layout.itemO("view3d.snap_selected_to_cursor", text="Selection to Cursor") - layout.itemO("view3d.snap_selected_to_center", text="Selection to Center") - - layout.itemS() - - layout.itemO("view3d.snap_cursor_to_selected", text="Cursor to Selected") - layout.itemO("view3d.snap_cursor_to_grid", text="Cursor to Grid") - layout.itemO("view3d.snap_cursor_to_active", text="Cursor to Active") + bl_label = "Snap" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.snap_selected_to_grid", text="Selection to Grid") + layout.itemO("view3d.snap_selected_to_cursor", text="Selection to Cursor") + layout.itemO("view3d.snap_selected_to_center", text="Selection to Center") + + layout.itemS() + + layout.itemO("view3d.snap_cursor_to_selected", text="Cursor to Selected") + layout.itemO("view3d.snap_cursor_to_grid", text="Cursor to Grid") + layout.itemO("view3d.snap_cursor_to_active", text="Cursor to Active") + +class VIEW3D_MT_uv_map(dynamic_menu.DynMenu): + bl_label = "UV Mapping" + + def draw(self, context): + layout = self.layout + + layout.itemO("uv.unwrap") + layout.itemO("uv.cube_project") + layout.itemO("uv.cylinder_project") + layout.itemO("uv.sphere_project") + layout.itemO("uv.project_from_view") + + layout.itemS() + + layout.itemO("uv.reset") # ********** View menus ********** + class VIEW3D_MT_view(bpy.types.Menu): - __label__ = "View" - - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.properties", icon='ICON_MENU_PANEL') - layout.itemO("view3d.toolbar", icon='ICON_MENU_PANEL') - - layout.itemS() - - layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA') - layout.item_enumO("view3d.viewnumpad", "type", 'TOP') - layout.item_enumO("view3d.viewnumpad", "type", 'FRONT') - layout.item_enumO("view3d.viewnumpad", "type", 'RIGHT') - - layout.itemM("VIEW3D_MT_view_cameras", text="Cameras") - - layout.itemS() - - layout.itemO("view3d.view_persportho") - - layout.itemS() - - layout.itemM("VIEW3D_MT_view_navigation") - layout.itemM("VIEW3D_MT_view_align") - - layout.itemS() - - layout.operator_context = "INVOKE_REGION_WIN" - - layout.itemO("view3d.clip_border", text="Clipping Border...") - layout.itemO("view3d.zoom_border", text="Zoom Border...") - - layout.itemS() - - layout.itemO("view3d.localview", text="View Global/Local") - layout.itemO("view3d.view_center") - layout.itemO("view3d.view_all") - - layout.itemS() - - layout.itemO("screen.region_foursplit", text="Toggle Quad View") - layout.itemO("screen.screen_full_area", text="Toggle Full Screen") + bl_label = "View" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.properties", icon='ICON_MENU_PANEL') + layout.itemO("view3d.toolbar", icon='ICON_MENU_PANEL') + + layout.itemS() + + layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA') + layout.item_enumO("view3d.viewnumpad", "type", 'TOP') + layout.item_enumO("view3d.viewnumpad", "type", 'FRONT') + layout.item_enumO("view3d.viewnumpad", "type", 'RIGHT') + + layout.itemM("VIEW3D_MT_view_cameras", text="Cameras") + + layout.itemS() + + layout.itemO("view3d.view_persportho") + + layout.itemS() + + layout.itemM("VIEW3D_MT_view_navigation") + layout.itemM("VIEW3D_MT_view_align") + + layout.itemS() + + layout.operator_context = "INVOKE_REGION_WIN" + + layout.itemO("view3d.clip_border", text="Clipping Border...") + layout.itemO("view3d.zoom_border", text="Zoom Border...") + + layout.itemS() + + layout.item_intO("view3d.layers", "nr", 0, text="Show All Layers") + + layout.itemS() + + layout.itemO("view3d.localview", text="View Global/Local") + layout.itemO("view3d.view_center") + layout.itemO("view3d.view_all") + + layout.itemS() + + layout.itemO("screen.region_foursplit", text="Toggle Quad View") + layout.itemO("screen.screen_full_area", text="Toggle Full Screen") + + layout.itemS() + + layout.itemO("screen.animation_play", text="Playback Animation", icon='ICON_PLAY') + class VIEW3D_MT_view_navigation(bpy.types.Menu): - __label__ = "Navigation" - - def draw(self, context): - layout = self.layout - - layout.items_enumO("view3d.view_orbit", "type") - - layout.itemS() - - layout.items_enumO("view3d.view_pan", "type") - - layout.itemS() - - layout.item_floatO("view3d.zoom", "delta", 1.0, text="Zoom In") - layout.item_floatO("view3d.zoom", "delta", -1.0, text="Zoom Out") - - layout.itemS() - - layout.itemO("view3d.fly") + bl_label = "Navigation" + + def draw(self, context): + layout = self.layout + + layout.items_enumO("view3d.view_orbit", "type") + + layout.itemS() + + layout.items_enumO("view3d.view_pan", "type") + + layout.itemS() + + layout.item_floatO("view3d.zoom", "delta", 1.0, text="Zoom In") + layout.item_floatO("view3d.zoom", "delta", -1.0, text="Zoom Out") + + layout.itemS() + + layout.itemO("view3d.fly") + class VIEW3D_MT_view_align(bpy.types.Menu): - __label__ = "Align View" + bl_label = "Align View" + + def draw(self, context): + layout = self.layout + + layout.itemM("VIEW3D_MT_view_align_selected") + + layout.itemS() + + layout.item_booleanO("view3d.view_all", "center", True, text="Center Cursor and View All") + layout.itemO("view3d.camera_to_view", text="Align Active Camera to View") + layout.itemO("view3d.view_center") + + +class VIEW3D_MT_view_align_selected(bpy.types.Menu): + bl_label = "Align View to Selected" + + def draw(self, context): + layout = self.layout + + props = layout.itemO("view3d.viewnumpad", properties=True, text="Top") + props.align_active = True + props.type = 'TOP' + props = layout.itemO("view3d.viewnumpad", properties=True, text="Bottom") + props.align_active = True + props.type = 'BOTTOM' + props = layout.itemO("view3d.viewnumpad", properties=True, text="Front") + props.align_active = True + props.type = 'FRONT' + props = layout.itemO("view3d.viewnumpad", properties=True, text="Back") + props.align_active = True + props.type = 'BACK' + props = layout.itemO("view3d.viewnumpad", properties=True, text="Right") + props.align_active = True + props.type = 'RIGHT' + props = layout.itemO("view3d.viewnumpad", properties=True, text="Left") + props.align_active = True + props.type = 'LEFT' + - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.view_center") - class VIEW3D_MT_view_cameras(bpy.types.Menu): - __label__ = "Cameras" + bl_label = "Cameras" - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.object_as_camera") + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.object_as_camera") + layout.item_enumO("view3d.viewnumpad", "type", 'CAMERA', text="Active Camera") # ********** Select menus, suffix from context.mode ********** + class VIEW3D_MT_select_object(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + layout.itemO("view3d.select_circle") + + layout.itemS() - def draw(self, context): - layout = self.layout + layout.itemO("object.select_all_toggle", text="Select/Deselect All") + layout.itemO("object.select_inverse", text="Inverse") + layout.itemO("object.select_random", text="Random") + layout.itemO("object.select_mirror", text="Mirror") + layout.itemO("object.select_by_layer", text="Select All by Layer") + layout.item_menu_enumO("object.select_by_type", "type", "", text="Select All by Type...") - layout.itemO("view3d.select_border") + layout.itemS() - layout.itemS() + layout.item_menu_enumO("object.select_grouped", "type", text="Grouped") + layout.item_menu_enumO("object.select_linked", "type", text="Linked") + layout.itemO("object.select_pattern", text="Select Pattern...") - layout.itemO("object.select_all_toggle", text="Select/Deselect All") - layout.itemO("object.select_inverse", text="Inverse") - layout.itemO("object.select_random", text="Random") - layout.itemO("object.select_mirror", text="Mirror") - layout.itemO("object.select_by_layer", text="Select All by Layer") - layout.item_menu_enumO("object.select_by_type", "type", "", text="Select All by Type...") - layout.item_menu_enumO("object.select_grouped", "type", text="Select Grouped...") - layout.itemO("object.select_pattern", text="Select Pattern...") class VIEW3D_MT_select_pose(bpy.types.Menu): - __label__ = "Select" - - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.select_border", text="Border Select...") - - layout.itemS() - - layout.itemO("pose.select_all_toggle", text="Select/Deselect All") - layout.itemO("pose.select_inverse", text="Inverse") - layout.itemO("pose.select_constraint_target", text="Constraint Target") - layout.itemO("pose.select_linked", text="Linked") - - layout.itemS() - - layout.item_enumO("pose.select_hierarchy", "direction", 'PARENT') - layout.item_enumO("pose.select_hierarchy", "direction", 'CHILD') - - layout.itemS() - - props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Parent") - props.extend = True - props.direction = 'PARENT' - - props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Child") - props.extend = True - props.direction = 'CHILD' + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + + layout.itemS() + + layout.itemO("pose.select_all_toggle", text="Select/Deselect All") + layout.itemO("pose.select_inverse", text="Inverse") + layout.itemO("pose.select_constraint_target", text="Constraint Target") + layout.itemO("pose.select_linked", text="Linked") + + layout.itemS() + + layout.item_enumO("pose.select_hierarchy", "direction", 'PARENT') + layout.item_enumO("pose.select_hierarchy", "direction", 'CHILD') + + layout.itemS() + + props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Parent") + props.extend = True + props.direction = 'PARENT' + + props = layout.itemO("pose.select_hierarchy", properties=True, text="Extend Child") + props.extend = True + props.direction = 'CHILD' + class VIEW3D_MT_select_particle(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + + layout.itemS() - def draw(self, context): - layout = self.layout + layout.itemO("particle.select_all_toggle", text="Select/Deselect All") + layout.itemO("particle.select_linked") - layout.itemO("view3d.select_border") + layout.itemS() + + layout.itemO("particle.select_more") + layout.itemO("particle.select_less") - layout.itemS() - - layout.itemO("particle.select_all_toggle", text="Select/Deselect All") - layout.itemO("particle.select_linked") - - layout.itemS() - - layout.itemO("particle.select_more") - layout.itemO("particle.select_less") class VIEW3D_MT_select_edit_mesh(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout + layout.itemO("view3d.select_border") + layout.itemO("view3d.select_circle") - layout.itemO("view3d.select_border", text="Border Select...") + layout.itemS() - layout.itemS() + layout.itemO("mesh.select_all_toggle", text="Select/Deselect All") + layout.itemO("mesh.select_inverse", text="Inverse") - layout.itemO("mesh.select_all_toggle", text="Select/Deselect All") - layout.itemO("mesh.select_inverse", text="Inverse") + layout.itemS() - layout.itemS() + layout.itemO("mesh.select_random", text="Random...") + layout.itemO("mesh.edges_select_sharp", text="Sharp Edges") + layout.itemO("mesh.faces_select_linked_flat", text="Linked Flat Faces") + layout.itemO("mesh.faces_select_interior", text="Interior Faces") + layout.itemO("mesh.select_axis", text="Side of Active") - layout.itemO("mesh.select_random", text="Random...") - layout.itemO("mesh.edges_select_sharp", text="Sharp Edges") - layout.itemO("mesh.faces_select_linked_flat", text="Linked Flat Faces") + layout.itemS() - layout.itemS() + layout.item_enumO("mesh.select_by_number_vertices", "type", 'TRIANGLES', text="Triangles") + layout.item_enumO("mesh.select_by_number_vertices", "type", 'QUADS', text="Quads") + layout.item_enumO("mesh.select_by_number_vertices", "type", 'OTHER', text="Loose Verts/Edges") + layout.itemO("mesh.select_similar", text="Similar...") - layout.item_enumO("mesh.select_by_number_vertices", "type", 'TRIANGLES', text="Triangles") - layout.item_enumO("mesh.select_by_number_vertices", "type", 'QUADS', text="Quads") - layout.item_enumO("mesh.select_by_number_vertices", "type", 'OTHER', text="Loose Verts/Edges") - layout.itemO("mesh.select_similar", text="Similar...") + layout.itemS() - layout.itemS() + layout.itemO("mesh.select_less", text="Less") + layout.itemO("mesh.select_more", text="More") - layout.itemO("mesh.select_less", text="Less") - layout.itemO("mesh.select_more", text="More") + layout.itemS() - layout.itemS() - - layout.itemO("mesh.select_mirror", text="Mirror") + layout.itemO("mesh.select_mirror", text="Mirror") - layout.itemO("mesh.select_linked", text="Linked") - layout.itemO("mesh.select_vertex_path", text="Vertex Path") - layout.itemO("mesh.loop_multi_select", text="Edge Loop") - layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") + layout.itemO("mesh.select_linked", text="Linked") + layout.itemO("mesh.select_vertex_path", text="Vertex Path") + layout.itemO("mesh.loop_multi_select", text="Edge Loop") + layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") - layout.itemS() + layout.itemS() + + layout.itemO("mesh.loop_to_region") + layout.itemO("mesh.region_to_loop") - layout.itemO("mesh.loop_to_region") - layout.itemO("mesh.region_to_loop") class VIEW3D_MT_select_edit_curve(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + layout.itemO("view3d.select_circle") + + layout.itemS() + + layout.itemO("curve.select_all_toggle", text="Select/Deselect All") + layout.itemO("curve.select_inverse") + layout.itemO("curve.select_random") + layout.itemO("curve.select_every_nth") - def draw(self, context): - layout = self.layout + layout.itemS() - layout.itemO("view3d.select_border", text="Border Select...") - layout.itemO("view3d.select_circle", text="Circle Select...") + layout.itemO("curve.de_select_first") + layout.itemO("curve.de_select_last") + layout.itemO("curve.select_next") + layout.itemO("curve.select_previous") - layout.itemS() - - layout.itemO("curve.select_all_toggle", text="Select/Deselect All") - layout.itemO("curve.select_inverse") - layout.itemO("curve.select_random") - layout.itemO("curve.select_every_nth") + layout.itemS() - layout.itemS() - - layout.itemO("curve.de_select_first") - layout.itemO("curve.de_select_last") - layout.itemO("curve.select_next") - layout.itemO("curve.select_previous") + layout.itemO("curve.select_more") + layout.itemO("curve.select_less") - layout.itemS() - - layout.itemO("curve.select_more") - layout.itemO("curve.select_less") class VIEW3D_MT_select_edit_surface(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.itemO("view3d.select_border", text="Border Select...") - layout.itemO("view3d.select_circle", text="Circle Select...") + layout.itemO("view3d.select_border") + layout.itemO("view3d.select_circle") - layout.itemS() - - layout.itemO("curve.select_all_toggle", text="Select/Deselect All") - layout.itemO("curve.select_inverse") - layout.itemO("curve.select_random") - layout.itemO("curve.select_every_nth") + layout.itemS() - layout.itemS() - - layout.itemO("curve.select_row") + layout.itemO("curve.select_all_toggle", text="Select/Deselect All") + layout.itemO("curve.select_inverse") + layout.itemO("curve.select_random") + layout.itemO("curve.select_every_nth") + + layout.itemS() + + layout.itemO("curve.select_row") + + layout.itemS() + + layout.itemO("curve.select_more") + layout.itemO("curve.select_less") - layout.itemS() - - layout.itemO("curve.select_more") - layout.itemO("curve.select_less") class VIEW3D_MT_select_edit_metaball(bpy.types.Menu): - __label__ = "Select" - - def draw(self, context): - layout = self.layout - - layout.itemO("view3d.select_border") - - layout.itemS() - - layout.itemO("mball.select_deselect_all_metaelems") - layout.itemO("mball.select_inverse_metaelems") - - layout.itemS() - - layout.itemO("mball.select_random_metaelems") + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + + layout.itemS() + + layout.itemO("mball.select_deselect_all_metaelems") + layout.itemO("mball.select_inverse_metaelems") + + layout.itemS() + + layout.itemO("mball.select_random_metaelems") + class VIEW3D_MT_select_edit_lattice(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") - def draw(self, context): - layout = self.layout + layout.itemS() - layout.itemO("view3d.select_border") + layout.itemO("lattice.select_all_toggle", text="Select/Deselect All") - layout.itemS() - - layout.itemO("lattice.select_all_toggle", text="Select/Deselect All") class VIEW3D_MT_select_edit_armature(bpy.types.Menu): - __label__ = "Select" + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.itemO("view3d.select_border") + + + layout.itemS() + + layout.itemO("armature.select_all_toggle", text="Select/Deselect All") + layout.itemO("armature.select_inverse", text="Inverse") + + layout.itemS() - def draw(self, context): - layout = self.layout + layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT', text="Parent") + layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD', text="Child") - layout.itemO("view3d.select_border", text="Border Select...") + layout.itemS() - layout.itemS() - - layout.itemO("armature.select_all_toggle", text="Select/Deselect All") - layout.itemO("armature.select_inverse", text="Inverse") + props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Parent") + props.extend = True + props.direction = 'PARENT' - layout.itemS() - - layout.item_enumO("armature.select_hierarchy", "direction", 'PARENT', text="Parent") - layout.item_enumO("armature.select_hierarchy", "direction", 'CHILD', text="Child") - - layout.itemS() - - props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Parent") - props.extend = True - props.direction = 'PARENT' + props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Child") + props.extend = True + props.direction = 'CHILD' - props = layout.itemO("armature.select_hierarchy", properties=True, text="Extend Child") - props.extend = True - props.direction = 'CHILD' class VIEW3D_MT_select_face(bpy.types.Menu):# XXX no matching enum - __label__ = "Select" + bl_label = "Select" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout - layout.view3d_select_faceselmenu() + layout.view3d_select_faceselmenu() # ********** Object menu ********** + class VIEW3D_MT_object(bpy.types.Menu): - __context__ = "objectmode" - __label__ = "Object" - - def draw(self, context): - layout = self.layout - - layout.itemM("VIEW3D_MT_object_clear") - layout.itemM("VIEW3D_MT_object_apply") - layout.itemM("VIEW3D_MT_snap") - - layout.itemS() - - layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") - - layout.itemS() - - layout.itemO("object.duplicate_move") - layout.item_booleanO("object.duplicate", "linked", True, text="Duplicate Linked") - layout.itemO("object.delete", text="Delete...") - layout.itemO("object.proxy_make", text="Make Proxy...") - layout.item_menu_enumO("object.make_local", "type", text="Make Local...") - layout.itemM("VIEW3D_MT_make_single_user") - - layout.itemS() - - layout.itemM("VIEW3D_MT_object_parent") - layout.itemM("VIEW3D_MT_object_track") - layout.itemM("VIEW3D_MT_object_group") - layout.itemM("VIEW3D_MT_object_constraints") - - layout.itemS() - - layout.itemO("object.join") - - layout.itemS() - - layout.itemO("object.move_to_layer", text="Move to Layer...") - layout.itemM("VIEW3D_MT_object_showhide") - - layout.item_menu_enumO("object.convert", "target") - + bl_context = "objectmode" + bl_label = "Object" + + def draw(self, context): + layout = self.layout + + layout.itemM("VIEW3D_MT_object_clear") + layout.itemM("VIEW3D_MT_object_apply") + layout.itemM("VIEW3D_MT_snap") + + layout.itemS() + + layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") + layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") + + layout.itemS() + + layout.itemO("object.duplicate_move") + layout.item_booleanO("object.duplicate", "linked", True, text="Duplicate Linked") + layout.itemO("object.delete", text="Delete...") + layout.itemO("object.proxy_make", text="Make Proxy...") + layout.itemM("VIEW3D_MT_make_links", text="Make Links...") + layout.item_menu_enumO("object.make_local", "type", text="Make Local...") + layout.itemM("VIEW3D_MT_make_single_user") + layout.itemM("VIEW3D_MT_make_links") + + layout.itemS() + + layout.itemM("VIEW3D_MT_object_parent") + layout.itemM("VIEW3D_MT_object_track") + layout.itemM("VIEW3D_MT_object_group") + layout.itemM("VIEW3D_MT_object_constraints") + + layout.itemS() + + layout.itemO("object.join") + + layout.itemS() + + layout.itemO("object.move_to_layer", text="Move to Layer...") + layout.itemM("VIEW3D_MT_object_showhide") + + layout.item_menu_enumO("object.convert", "target") + + class VIEW3D_MT_object_clear(bpy.types.Menu): - __label__ = "Clear" - - def draw(self, context): - layout = self.layout - - layout.itemO("object.location_clear", text="Location") - layout.itemO("object.rotation_clear", text="Rotation") - layout.itemO("object.scale_clear", text="Scale") - layout.itemO("object.origin_clear", text="Origin") - + bl_label = "Clear" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.location_clear", text="Location") + layout.itemO("object.rotation_clear", text="Rotation") + layout.itemO("object.scale_clear", text="Scale") + layout.itemO("object.origin_clear", text="Origin") + + class VIEW3D_MT_object_apply(bpy.types.Menu): - __label__ = "Apply" - - def draw(self, context): - layout = self.layout - - layout.itemO("object.location_apply", text="Location") - layout.itemO("object.rotation_apply", text="Rotation") - layout.itemO("object.scale_apply", text="Scale") - layout.itemS() - layout.itemO("object.visual_transform_apply", text="Visual Transform") - layout.itemO("object.duplicates_make_real") - + bl_label = "Apply" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.location_apply", text="Location") + layout.itemO("object.rotation_apply", text="Rotation") + layout.itemO("object.scale_apply", text="Scale") + layout.itemS() + layout.itemO("object.visual_transform_apply", text="Visual Transform") + layout.itemO("object.duplicates_make_real") + class VIEW3D_MT_object_parent(bpy.types.Menu): - __label__ = "Parent" - - def draw(self, context): - layout = self.layout - - layout.itemO("object.parent_set", text="Set") - layout.itemO("object.parent_clear", text="Clear") - + bl_label = "Parent" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.parent_set", text="Set") + layout.itemO("object.parent_clear", text="Clear") + + class VIEW3D_MT_object_track(bpy.types.Menu): - __label__ = "Track" - - def draw(self, context): - layout = self.layout - - layout.itemO("object.track_set", text="Set") - layout.itemO("object.track_clear", text="Clear") - + bl_label = "Track" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.track_set", text="Set") + layout.itemO("object.track_clear", text="Clear") + + class VIEW3D_MT_object_group(bpy.types.Menu): - __label__ = "Group" - - def draw(self, context): - layout = self.layout - - layout.itemO("group.group_create") - layout.itemO("group.objects_remove") - - layout.itemS() - - layout.itemO("group.objects_add_active") - layout.itemO("group.objects_remove_active") - + bl_label = "Group" + + def draw(self, context): + layout = self.layout + + layout.itemO("group.group_create") + layout.itemO("group.objects_remove") + + layout.itemS() + + layout.itemO("group.objects_add_active") + layout.itemO("group.objects_remove_active") + + class VIEW3D_MT_object_constraints(bpy.types.Menu): - __label__ = "Constraints" - - def draw(self, context): - layout = self.layout - - layout.itemO("object.constraint_add_with_targets") - layout.itemO("object.constraints_clear") - + bl_label = "Constraints" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.constraint_add_with_targets") + layout.itemO("object.constraints_clear") + + class VIEW3D_MT_object_showhide(bpy.types.Menu): - __label__ = "Show/Hide" + bl_label = "Show/Hide" + + def draw(self, context): + layout = self.layout + + layout.itemO("object.restrictview_clear", text="Show Hidden") + layout.itemO("object.restrictview_set", text="Hide Selected") + layout.item_booleanO("object.restrictview_set", "unselected", True, text="Hide Unselected") - def draw(self, context): - layout = self.layout - - layout.itemO("object.restrictview_clear", text="Show Hidden") - layout.itemO("object.restrictview_set", text="Hide Selected") - layout.item_booleanO("object.restrictview_set", "unselected", True, text="Hide Unselected") class VIEW3D_MT_make_single_user(bpy.types.Menu): - __label__ = "Make Single User" - - def draw(self, context): - layout = self.layout - - props = layout.itemO("object.make_single_user", properties=True, text="Object") - props.object = True - - props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData") - props.object = props.obdata = True - - props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData & Materials+Tex") - props.object = props.obdata = props.material = props.texture = True - - props = layout.itemO("object.make_single_user", properties=True, text="Materials+Tex") - props.material = props.texture = True - - props = layout.itemO("object.make_single_user", properties=True, text="Animation") - props.animation = True - -# ********** Vertex paint menu ********** - + bl_label = "Make Single User" + + def draw(self, context): + layout = self.layout + + props = layout.itemO("object.make_single_user", properties=True, text="Object") + props.object = True + + props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData") + props.object = props.obdata = True + + props = layout.itemO("object.make_single_user", properties=True, text="Object & ObData & Materials+Tex") + props.object = props.obdata = props.material = props.texture = True + + props = layout.itemO("object.make_single_user", properties=True, text="Materials+Tex") + props.material = props.texture = True + + props = layout.itemO("object.make_single_user", properties=True, text="Animation") + props.animation = True + + +class VIEW3D_MT_make_links(bpy.types.Menu): + bl_label = "Make Links" + + def draw(self, context): + layout = self.layout + + layout.item_menu_enumO("object.make_links_scene", "type", text="Objects to Scene...") + + layout.items_enumO("object.make_links_data", property="type") # inline + + +# ********** Vertex paint menu ********** + + class VIEW3D_MT_paint_vertex(bpy.types.Menu): - __label__ = "Paint" + bl_label = "Paint" + + def draw(self, context): + layout = self.layout - def draw(self, context): - layout = self.layout - - sculpt = context.tool_settings.sculpt + sculpt = context.tool_settings.sculpt + + layout.itemO("paint.vertex_color_set") + props = layout.itemO("paint.vertex_color_set", text="Set Selected Vertex Colors", properties=True) + props.selected = True + +# ********** Sculpt menu ********** - layout.itemO("paint.vertex_color_set") - props = layout.itemO("paint.vertex_color_set", text="Set Selected Vertex Colors", properties=True) - props.selected = True -# ********** Sculpt menu ********** - class VIEW3D_MT_sculpt(bpy.types.Menu): - __label__ = "Sculpt" - - def draw(self, context): - layout = self.layout - - sculpt = context.tool_settings.sculpt - brush = context.tool_settings.sculpt.brush - - layout.itemR(sculpt, "symmetry_x") - layout.itemR(sculpt, "symmetry_y") - layout.itemR(sculpt, "symmetry_z") - layout.itemS() - layout.itemR(sculpt, "lock_x") - layout.itemR(sculpt, "lock_y") - layout.itemR(sculpt, "lock_z") - layout.itemS() - layout.item_menu_enumO("brush.curve_preset", property="shape") - layout.itemS() - - if brush.sculpt_tool != 'GRAB': - layout.itemR(brush, "use_airbrush") - - if brush.sculpt_tool != 'LAYER': - layout.itemR(brush, "use_anchor") - - if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - layout.itemR(brush, "flip_direction") - - if brush.sculpt_tool == 'LAYER': - layout.itemR(brush, "use_persistent") - layout.itemO("sculpt.set_persistent_base") - -# ********** Particle menu ********** - + bl_label = "Sculpt" + + def draw(self, context): + layout = self.layout + + sculpt = context.tool_settings.sculpt + brush = context.tool_settings.sculpt.brush + + layout.itemR(sculpt, "symmetry_x") + layout.itemR(sculpt, "symmetry_y") + layout.itemR(sculpt, "symmetry_z") + layout.itemS() + layout.itemR(sculpt, "lock_x") + layout.itemR(sculpt, "lock_y") + layout.itemR(sculpt, "lock_z") + layout.itemS() + layout.item_menu_enumO("brush.curve_preset", property="shape") + layout.itemS() + + if brush.sculpt_tool != 'GRAB': + layout.itemR(brush, "use_airbrush") + + if brush.sculpt_tool != 'LAYER': + layout.itemR(brush, "use_anchor") + + if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): + layout.itemR(brush, "flip_direction") + + if brush.sculpt_tool == 'LAYER': + layout.itemR(brush, "use_persistent") + layout.itemO("sculpt.set_persistent_base") + +# ********** Particle menu ********** + + class VIEW3D_MT_particle(bpy.types.Menu): - __label__ = "Particle" - - def draw(self, context): - layout = self.layout - - particle_edit = context.tool_settings.particle_edit - - layout.itemO("particle.mirror") - - layout.itemS() - - layout.itemO("particle.remove_doubles") - layout.itemO("particle.delete") - - if particle_edit.selection_mode == 'POINT': - layout.itemO("particle.subdivide") - - layout.itemO("particle.rekey") - - layout.itemS() - - layout.itemM("VIEW3D_MT_particle_showhide") + bl_label = "Particle" + + def draw(self, context): + layout = self.layout + + particle_edit = context.tool_settings.particle_edit + + layout.itemO("particle.mirror") + + layout.itemS() + + layout.itemO("particle.remove_doubles") + layout.itemO("particle.delete") + + if particle_edit.selection_mode == 'POINT': + layout.itemO("particle.subdivide") + + layout.itemO("particle.rekey") + + layout.itemS() + + layout.itemM("VIEW3D_MT_particle_showhide") + class VIEW3D_MT_particle_showhide(VIEW3D_MT_showhide): - _operator_name = "particle" + _operator_name = "particle" # ********** Pose Menu ********** + class VIEW3D_MT_pose(bpy.types.Menu): - __label__ = "Pose" - - def draw(self, context): - layout = self.layout - - arm = context.active_object.data - - if arm.drawtype in ('BBONE', 'ENVELOPE'): - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") - - layout.itemM("VIEW3D_MT_pose_transform") - - layout.itemS() - - layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") - layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") - - layout.itemS() - - layout.itemO("pose.apply") - - layout.itemS() - - layout.itemO("pose.copy") - layout.itemO("pose.paste") - layout.item_booleanO("pose.paste", "flipped", True, text="Paste X-Flipped Pose") - - layout.itemS() - - layout.itemM("VIEW3D_MT_pose_pose") - layout.itemM("VIEW3D_MT_pose_motion") - layout.itemM("VIEW3D_MT_pose_group") - - layout.itemS() - - layout.itemM("VIEW3D_MT_pose_ik") - layout.itemM("VIEW3D_MT_pose_constraints") - - layout.itemS() - - layout.operator_context = "EXEC_AREA" - layout.item_enumO("pose.autoside_names", "axis", 'XAXIS', text="AutoName Left/Right") - layout.item_enumO("pose.autoside_names", "axis", 'YAXIS', text="AutoName Front/Back") - layout.item_enumO("pose.autoside_names", "axis", 'ZAXIS', text="AutoName Top/Bottom") - - layout.itemO("pose.flip_names") - - layout.itemS() - - layout.operator_context = "INVOKE_AREA" - layout.itemO("pose.armature_layers", text="Change Armature Layers...") - layout.itemO("pose.bone_layers", text="Change Bone Layers...") - - layout.itemS() - - layout.itemM("VIEW3D_MT_pose_showhide") - layout.item_menu_enumO("pose.flags_set", 'mode', text="Bone Settings") + bl_label = "Pose" + + def draw(self, context): + layout = self.layout + + arm = context.active_object.data + + if arm.drawtype in ('BBONE', 'ENVELOPE'): + layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") + + layout.itemM("VIEW3D_MT_pose_transform") + + layout.itemS() + + layout.itemO("anim.insert_keyframe_menu", text="Insert Keyframe...") + layout.itemO("anim.delete_keyframe_v3d", text="Delete Keyframe...") + + layout.itemS() + + layout.itemO("pose.apply") + layout.itemO("pose.relax") + + layout.itemS() + + layout.itemO("pose.copy") + layout.itemO("pose.paste") + layout.item_booleanO("pose.paste", "flipped", True, text="Paste X-Flipped Pose") + + layout.itemS() + + layout.itemM("VIEW3D_MT_pose_pose") + layout.itemM("VIEW3D_MT_pose_motion") + layout.itemM("VIEW3D_MT_pose_group") + + layout.itemS() + + layout.itemM("VIEW3D_MT_pose_ik") + layout.itemM("VIEW3D_MT_pose_constraints") + + layout.itemS() + + layout.operator_context = "EXEC_AREA" + layout.item_enumO("pose.autoside_names", "axis", 'XAXIS', text="AutoName Left/Right") + layout.item_enumO("pose.autoside_names", "axis", 'YAXIS', text="AutoName Front/Back") + layout.item_enumO("pose.autoside_names", "axis", 'ZAXIS', text="AutoName Top/Bottom") + + layout.itemO("pose.flip_names") + + layout.itemS() + + layout.operator_context = "INVOKE_AREA" + layout.itemO("pose.armature_layers", text="Change Armature Layers...") + layout.itemO("pose.bone_layers", text="Change Bone Layers...") + + layout.itemS() + + layout.itemM("VIEW3D_MT_pose_showhide") + layout.item_menu_enumO("pose.flags_set", 'mode', text="Bone Settings") + class VIEW3D_MT_pose_transform(bpy.types.Menu): - __label__ = "Clear Transform" - - def draw(self, context): - layout = self.layout - - layout.itemL(text="User Transform") - - layout.itemO("pose.loc_clear", text="Location") - layout.itemO("pose.rot_clear", text="Rotation") - layout.itemO("pose.scale_clear", text="Scale") - - layout.itemL(text="Origin") - + bl_label = "Clear Transform" + + def draw(self, context): + layout = self.layout + + layout.itemL(text="User Transform") + + layout.itemO("pose.loc_clear", text="Location") + layout.itemO("pose.rot_clear", text="Rotation") + layout.itemO("pose.scale_clear", text="Scale") + + layout.itemL(text="Origin") + + class VIEW3D_MT_pose_pose(bpy.types.Menu): - __label__ = "Pose Library" - - def draw(self, context): - layout = self.layout - - layout.itemO("poselib.browse_interactive", text="Browse Poses...") - - layout.itemS() - - layout.itemO("poselib.pose_add", text="Add Pose...") - layout.itemO("poselib.pose_rename", text="Rename Pose...") - layout.itemO("poselib.pose_remove", text="Remove Pose...") + bl_label = "Pose Library" + + def draw(self, context): + layout = self.layout + + layout.itemO("poselib.browse_interactive", text="Browse Poses...") + + layout.itemS() + + layout.itemO("poselib.pose_add", text="Add Pose...") + layout.itemO("poselib.pose_rename", text="Rename Pose...") + layout.itemO("poselib.pose_remove", text="Remove Pose...") + class VIEW3D_MT_pose_motion(bpy.types.Menu): - __label__ = "Motion Paths" - - def draw(self, context): - layout = self.layout - - layout.itemO("pose.paths_calculate", text="Calculate") - layout.itemO("pose.paths_clear", text="Clear") - + bl_label = "Motion Paths" + + def draw(self, context): + layout = self.layout + + layout.itemO("pose.paths_calculate", text="Calculate") + layout.itemO("pose.paths_clear", text="Clear") + + class VIEW3D_MT_pose_group(bpy.types.Menu): - __label__ = "Bone Groups" - - def draw(self, context): - layout = self.layout - layout.itemO("pose.group_add") - layout.itemO("pose.group_remove") - - layout.itemS() - - layout.itemO("pose.group_assign") - layout.itemO("pose.group_unassign") - - + bl_label = "Bone Groups" + + def draw(self, context): + layout = self.layout + layout.itemO("pose.group_add") + layout.itemO("pose.group_remove") + + layout.itemS() + + layout.itemO("pose.group_assign") + layout.itemO("pose.group_unassign") + + class VIEW3D_MT_pose_ik(bpy.types.Menu): - __label__ = "Inverse Kinematics" - - def draw(self, context): - layout = self.layout - - layout.itemO("pose.ik_add") - layout.itemO("pose.ik_clear") - + bl_label = "Inverse Kinematics" + + def draw(self, context): + layout = self.layout + + layout.itemO("pose.ik_add") + layout.itemO("pose.ik_clear") + + class VIEW3D_MT_pose_constraints(bpy.types.Menu): - __label__ = "Constraints" - - def draw(self, context): - layout = self.layout - - layout.itemO("pose.constraint_add_with_targets", text="Add (With Targets)...") - layout.itemO("pose.constraints_clear") - + bl_label = "Constraints" + + def draw(self, context): + layout = self.layout + + layout.itemO("pose.constraint_add_with_targets", text="Add (With Targets)...") + layout.itemO("pose.constraints_clear") + + class VIEW3D_MT_pose_showhide(VIEW3D_MT_showhide): - _operator_name = "pose" + _operator_name = "pose" # ********** Edit Menus, suffix from ob.type ********** -# Edit MESH + class VIEW3D_MT_edit_mesh(bpy.types.Menu): - __label__ = "Mesh" - - def draw(self, context): - layout = self.layout - - settings = context.tool_settings - - layout.itemO("ed.undo") - layout.itemO("ed.redo") - - layout.itemS() - - layout.itemM("VIEW3D_MT_snap") - - layout.itemS() - - layout.itemO("uv.mapping_menu", text="UV Unwrap...") - - layout.itemS() - - layout.itemO("mesh.extrude") - layout.itemO("mesh.duplicate") - layout.itemO("mesh.delete", text="Delete...") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_mesh_vertices") - layout.itemM("VIEW3D_MT_edit_mesh_edges") - layout.itemM("VIEW3D_MT_edit_mesh_faces") - layout.itemM("VIEW3D_MT_edit_mesh_normals") - - layout.itemS() - - layout.itemR(settings, "automerge_editing") - layout.item_menu_enumR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_mesh_showhide") - -# Only used by the menu + bl_label = "Mesh" + + def draw(self, context): + layout = self.layout + + settings = context.tool_settings + + layout.itemO("ed.undo") + layout.itemO("ed.redo") + + layout.itemS() + + layout.itemM("VIEW3D_MT_snap") + + layout.itemS() + + layout.itemM("VIEW3D_MT_uv_map", text="UV Unwrap...") + + layout.itemS() + + layout.itemO("mesh.extrude_move") + layout.itemO("mesh.duplicate_move") + layout.itemO("mesh.delete", text="Delete...") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_mesh_vertices") + layout.itemM("VIEW3D_MT_edit_mesh_edges") + layout.itemM("VIEW3D_MT_edit_mesh_faces") + layout.itemM("VIEW3D_MT_edit_mesh_normals") + + layout.itemS() + + layout.itemR(settings, "automerge_editing") + layout.item_menu_enumR(settings, "proportional_editing") + layout.item_menu_enumR(settings, "proportional_editing_falloff") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_mesh_showhide") + + class VIEW3D_MT_edit_mesh_specials(bpy.types.Menu): - __label__ = "Specials" - - def draw(self, context): - layout = self.layout - - layout.operator_context = 'INVOKE_REGION_WIN' - - layout.itemO("mesh.subdivide", text="Subdivide") - layout.item_floatO("mesh.subdivide", "smoothness", 1.0, text="Subdivide Smooth") - layout.itemO("mesh.merge", text="Merge...") - layout.itemO("mesh.remove_doubles") - layout.itemO("mesh.hide", text="Hide") - layout.itemO("mesh.reveal", text="Reveal") - layout.itemO("mesh.select_inverse") - layout.itemO("mesh.flip_normals") - layout.itemO("mesh.vertices_smooth", text="Smooth") - # layout.itemO("mesh.bevel", text="Bevel") - layout.itemO("mesh.faces_shade_smooth") - layout.itemO("mesh.faces_shade_flat") - layout.itemO("mesh.blend_from_shape") - # layout.itemO("mesh.shape_propagate_to_all") - layout.itemO("mesh.select_vertex_path") + bl_label = "Specials" + + def draw(self, context): + layout = self.layout + + layout.operator_context = 'INVOKE_REGION_WIN' + + layout.itemO("mesh.subdivide", text="Subdivide") + layout.item_floatO("mesh.subdivide", "smoothness", 1.0, text="Subdivide Smooth") + layout.itemO("mesh.merge", text="Merge...") + layout.itemO("mesh.remove_doubles") + layout.itemO("mesh.hide", text="Hide") + layout.itemO("mesh.reveal", text="Reveal") + layout.itemO("mesh.select_inverse") + layout.itemO("mesh.flip_normals") + layout.itemO("mesh.vertices_smooth", text="Smooth") + # layout.itemO("mesh.bevel", text="Bevel") + layout.itemO("mesh.faces_shade_smooth") + layout.itemO("mesh.faces_shade_flat") + layout.itemO("mesh.blend_from_shape") + layout.itemO("mesh.shape_propagate_to_all") + layout.itemO("mesh.select_vertex_path") + class VIEW3D_MT_edit_mesh_vertices(bpy.types.Menu): - __label__ = "Vertices" - - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - - layout.itemO("mesh.merge") - layout.itemO("mesh.rip") - layout.itemO("mesh.split") - layout.itemO("mesh.separate") - - layout.itemS() - - layout.itemO("mesh.vertices_smooth") - layout.itemO("mesh.remove_doubles") - - layout.itemO("mesh.select_vertex_path") - - layout.itemO("mesh.blend_from_shape") - - layout.itemO("object.vertex_group_blend") - # uiItemO(layout, "Propagate to All Shapes", 0, "mesh.shape_propagate_to_all"); + bl_label = "Vertices" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + + layout.itemO("mesh.merge") + layout.itemO("mesh.rip") + layout.itemO("mesh.split") + layout.itemO("mesh.separate") + + layout.itemS() + + layout.itemO("mesh.vertices_smooth") + layout.itemO("mesh.remove_doubles") + + layout.itemO("mesh.select_vertex_path") + + layout.itemO("mesh.blend_from_shape") + + layout.itemO("object.vertex_group_blend") + layout.itemO("mesh.shape_propagate_to_all") + class VIEW3D_MT_edit_mesh_edges(bpy.types.Menu): - __label__ = "Edges" - - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - - layout.itemO("mesh.edge_face_add") - layout.itemO("mesh.subdivide") - - layout.itemS() - - layout.itemO("mesh.mark_seam") - layout.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam") - - layout.itemS() - - layout.itemO("mesh.mark_sharp") - layout.item_booleanO("mesh.mark_sharp", "clear", True, text="Clear Sharp") - - layout.itemS() - - layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") - layout.item_enumO("mesh.edge_rotate", "direction", 'CCW', text="Rotate Edge CCW") - - layout.itemS() - - layout.itemO("TFM_OT_edge_slide", text="Edge Slide") - layout.itemO("mesh.loop_multi_select", text="Edge Loop") - - # uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1); - # uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0); - - layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") - - layout.itemO("mesh.loop_to_region") - layout.itemO("mesh.region_to_loop") + bl_label = "Edges" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + + layout.itemO("mesh.edge_face_add") + layout.itemO("mesh.subdivide") + + layout.itemS() + + layout.itemO("mesh.mark_seam") + layout.item_booleanO("mesh.mark_seam", "clear", True, text="Clear Seam") + + layout.itemS() + + layout.itemO("mesh.mark_sharp") + layout.item_booleanO("mesh.mark_sharp", "clear", True, text="Clear Sharp") + + layout.itemS() + + layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") + layout.item_enumO("mesh.edge_rotate", "direction", 'CCW', text="Rotate Edge CCW") + + layout.itemS() + + layout.itemO("TFM_OT_edge_slide", text="Edge Slide") + layout.itemO("mesh.loop_multi_select", text="Edge Loop") + + # uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1); + # uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0); + + layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring") + + layout.itemO("mesh.loop_to_region") + layout.itemO("mesh.region_to_loop") class VIEW3D_MT_edit_mesh_faces(dynamic_menu.DynMenu): - __label__ = "Faces" - - def draw(self, context): - layout = self.layout - layout.operator_context = 'INVOKE_REGION_WIN' - - layout.itemO("mesh.flip_normals") - # layout.itemO("mesh.bevel") - # layout.itemO("mesh.bevel") - layout.itemO("mesh.edge_face_add") - layout.itemO("mesh.fill") - layout.itemO("mesh.beauty_fill") - - layout.itemS() - - layout.itemO("mesh.quads_convert_to_tris") - layout.itemO("mesh.tris_convert_to_quads") - layout.itemO("mesh.edge_flip") - - layout.itemS() - - layout.itemO("mesh.faces_shade_smooth") - layout.itemO("mesh.faces_shade_flat") - - layout.itemS() - - # uiItemO(layout, NULL, 0, "mesh.face_mode"); // mesh_set_face_flags(em, 1); - # uiItemBooleanO(layout, NULL, 0, "mesh.face_mode", "clear", 1); // mesh_set_face_flags(em, 0); - - layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") - - layout.itemS() - - layout.item_menu_enumO("mesh.uvs_rotate", "direction") - layout.item_menu_enumO("mesh.uvs_mirror", "axis") - layout.item_menu_enumO("mesh.colors_rotate", "direction") - layout.item_menu_enumO("mesh.colors_mirror", "axis") + bl_label = "Faces" + bl_idname = "VIEW3D_MT_edit_mesh_faces" + + def draw(self, context): + layout = self.layout + layout.operator_context = 'INVOKE_REGION_WIN' + + # layout.itemO("mesh.bevel") + # layout.itemO("mesh.bevel") + layout.itemO("mesh.edge_face_add") + layout.itemO("mesh.fill") + layout.itemO("mesh.beauty_fill") + + layout.itemS() + + layout.itemO("mesh.quads_convert_to_tris") + layout.itemO("mesh.tris_convert_to_quads") + layout.itemO("mesh.edge_flip") + + layout.itemS() + + layout.itemO("mesh.faces_shade_smooth") + layout.itemO("mesh.faces_shade_flat") + + layout.itemS() + + # uiItemO(layout, NULL, 0, "mesh.face_mode"); // mesh_set_face_flags(em, 1); + # uiItemBooleanO(layout, NULL, 0, "mesh.face_mode", "clear", 1); // mesh_set_face_flags(em, 0); + + layout.item_enumO("mesh.edge_rotate", "direction", 'CW', text="Rotate Edge CW") + + layout.itemS() + + layout.item_menu_enumO("mesh.uvs_rotate", "direction") + layout.item_menu_enumO("mesh.uvs_mirror", "axis") + layout.item_menu_enumO("mesh.colors_rotate", "direction") + layout.item_menu_enumO("mesh.colors_mirror", "axis") class VIEW3D_MT_edit_mesh_normals(bpy.types.Menu): - __label__ = "Normals" + bl_label = "Normals" - def draw(self, context): - layout = self.layout + def draw(self, context): + layout = self.layout + + layout.itemO("mesh.normals_make_consistent", text="Recalculate Outside") + layout.item_booleanO("mesh.normals_make_consistent", "inside", True, text="Recalculate Inside") + + layout.itemS() + + layout.itemO("mesh.flip_normals") - layout.itemO("mesh.normals_make_consistent", text="Recalculate Outside") - layout.item_booleanO("mesh.normals_make_consistent", "inside", True, text="Recalculate Inside") - layout.itemS() - - layout.itemO("mesh.flip_normals") - class VIEW3D_MT_edit_mesh_showhide(VIEW3D_MT_showhide): - _operator_name = "mesh" + _operator_name = "mesh" # Edit Curve - # draw_curve is used by VIEW3D_MT_edit_curve and VIEW3D_MT_edit_surface + + def draw_curve(self, context): - layout = self.layout - - settings = context.tool_settings - - layout.itemM("VIEW3D_MT_snap") - - layout.itemS() - - layout.itemO("curve.extrude") - layout.itemO("curve.duplicate") - layout.itemO("curve.separate") - layout.itemO("curve.make_segment") - layout.itemO("curve.cyclic_toggle") - layout.itemO("curve.delete", text="Delete...") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_curve_ctrlpoints") - layout.itemM("VIEW3D_MT_edit_curve_segments") - - layout.itemS() - - layout.itemR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_curve_showhide") + layout = self.layout + + settings = context.tool_settings + + layout.itemM("VIEW3D_MT_snap") + + layout.itemS() + + layout.itemO("curve.extrude") + layout.itemO("curve.duplicate") + layout.itemO("curve.separate") + layout.itemO("curve.make_segment") + layout.itemO("curve.cyclic_toggle") + layout.itemO("curve.delete", text="Delete...") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_curve_ctrlpoints") + layout.itemM("VIEW3D_MT_edit_curve_segments") + + layout.itemS() + + layout.item_menu_enumR(settings, "proportional_editing") + layout.item_menu_enumR(settings, "proportional_editing_falloff") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_curve_showhide") + class VIEW3D_MT_edit_curve(bpy.types.Menu): - __label__ = "Curve" + bl_label = "Curve" + + draw = draw_curve + - draw = draw_curve - class VIEW3D_MT_edit_curve_ctrlpoints(bpy.types.Menu): - __label__ = "Control Points" - - def draw(self, context): - layout = self.layout - - edit_object = context.edit_object - - if edit_object.type == 'CURVE': - layout.item_enumO("tfm.transform", "mode", 'TILT') - layout.itemO("curve.tilt_clear") - layout.itemO("curve.separate") - - layout.itemS() - - layout.item_menu_enumO("curve.handle_type_set", "type") - + bl_label = "Control Points" + + def draw(self, context): + layout = self.layout + + edit_object = context.edit_object + + if edit_object.type == 'CURVE': + layout.item_enumO("tfm.transform", "mode", 'TILT') + layout.itemO("curve.tilt_clear") + layout.itemO("curve.separate") + + layout.itemS() + + layout.item_menu_enumO("curve.handle_type_set", "type") + + class VIEW3D_MT_edit_curve_segments(bpy.types.Menu): - __label__ = "Segments" + bl_label = "Segments" + + def draw(self, context): + layout = self.layout + + layout.itemO("curve.subdivide") + layout.itemO("curve.switch_direction") - def draw(self, context): - layout = self.layout - - layout.itemO("curve.subdivide") - layout.itemO("curve.switch_direction") class VIEW3D_MT_edit_curve_showhide(VIEW3D_MT_showhide): - _operator_name = "curve" + _operator_name = "curve" + -# Edit SURFACE class VIEW3D_MT_edit_surface(bpy.types.Menu): - __label__ = "Surface" + bl_label = "Surface" + + draw = draw_curve - draw = draw_curve -# Edit TEXT class VIEW3D_MT_edit_text(bpy.types.Menu): - __label__ = "Text" + bl_label = "Text" + + def draw(self, context): + layout = self.layout + + layout.itemO("font.file_paste") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_text_chars") - def draw(self, context): - layout = self.layout - - layout.itemO("font.file_paste") - - layout.itemS() - - layout.itemm("view3d_mt_edit_text_chars") class VIEW3D_MT_edit_text_chars(bpy.types.Menu): - __label__ = "Special Characters" - - def draw(self, context): - layout = self.layout - - layout.item_stringO("font.text_insert", "text", b'\xC2\xA9'.decode(), text="Copyright|Alt C") - layout.item_stringO("font.text_insert", "text", b'\xC2\xAE'.decode(), text="Registered Trademark|Alt R") - - layout.itemS() - - layout.item_stringO("font.text_insert", "text", b'\xC2\xB0'.decode(), text="Degree Sign|Alt G") - layout.item_stringO("font.text_insert", "text", b'\xC3\x97'.decode(), text="Multiplication Sign|Alt x") - layout.item_stringO("font.text_insert", "text", b'\xC2\x8A'.decode(), text="Circle|Alt .") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB9'.decode(), text="Superscript 1|Alt 1") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB2'.decode(), text="Superscript 2|Alt 2") - layout.item_stringO("font.text_insert", "text", b'\xC2\xB3'.decode(), text="Superscript 3|Alt 3") - layout.item_stringO("font.text_insert", "text", b'\xC2\xBB'.decode(), text="Double >>|Alt >") - layout.item_stringO("font.text_insert", "text", b'\xC2\xAB'.decode(), text="Double <<|Alt <") - layout.item_stringO("font.text_insert", "text", b'\xE2\x80\xB0'.decode(), text="Promillage|Alt %") - - layout.itemS() - - layout.item_stringO("font.text_insert", "text", b'\xC2\xA4'.decode(), text="Dutch Florin|Alt F") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA3'.decode(), text="British Pound|Alt L") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA5'.decode(), text="Japanese Yen|Alt Y") - - layout.itemS() - - layout.item_stringO("font.text_insert", "text", b'\xC3\x9F'.decode(), text="German S|Alt S") - layout.item_stringO("font.text_insert", "text", b'\xC2\xBF'.decode(), text="Spanish Question Mark|Alt ?") - layout.item_stringO("font.text_insert", "text", b'\xC2\xA1'.decode(), text="Spanish Exclamation Mark|Alt !") - -# Edit META + bl_label = "Special Characters" + + def draw(self, context): + layout = self.layout + + layout.item_stringO("font.text_insert", "text", b'\xC2\xA9'.decode(), text="Copyright|Alt C") + layout.item_stringO("font.text_insert", "text", b'\xC2\xAE'.decode(), text="Registered Trademark|Alt R") + + layout.itemS() + + layout.item_stringO("font.text_insert", "text", b'\xC2\xB0'.decode(), text="Degree Sign|Alt G") + layout.item_stringO("font.text_insert", "text", b'\xC3\x97'.decode(), text="Multiplication Sign|Alt x") + layout.item_stringO("font.text_insert", "text", b'\xC2\x8A'.decode(), text="Circle|Alt .") + layout.item_stringO("font.text_insert", "text", b'\xC2\xB9'.decode(), text="Superscript 1|Alt 1") + layout.item_stringO("font.text_insert", "text", b'\xC2\xB2'.decode(), text="Superscript 2|Alt 2") + layout.item_stringO("font.text_insert", "text", b'\xC2\xB3'.decode(), text="Superscript 3|Alt 3") + layout.item_stringO("font.text_insert", "text", b'\xC2\xBB'.decode(), text="Double >>|Alt >") + layout.item_stringO("font.text_insert", "text", b'\xC2\xAB'.decode(), text="Double <<|Alt <") + layout.item_stringO("font.text_insert", "text", b'\xE2\x80\xB0'.decode(), text="Promillage|Alt %") + + layout.itemS() + + layout.item_stringO("font.text_insert", "text", b'\xC2\xA4'.decode(), text="Dutch Florin|Alt F") + layout.item_stringO("font.text_insert", "text", b'\xC2\xA3'.decode(), text="British Pound|Alt L") + layout.item_stringO("font.text_insert", "text", b'\xC2\xA5'.decode(), text="Japanese Yen|Alt Y") + + layout.itemS() + + layout.item_stringO("font.text_insert", "text", b'\xC3\x9F'.decode(), text="German S|Alt S") + layout.item_stringO("font.text_insert", "text", b'\xC2\xBF'.decode(), text="Spanish Question Mark|Alt ?") + layout.item_stringO("font.text_insert", "text", b'\xC2\xA1'.decode(), text="Spanish Exclamation Mark|Alt !") + + class VIEW3D_MT_edit_meta(bpy.types.Menu): - __label__ = "Metaball" - - def draw(self, context): - layout = self.layout - - settings = context.tool_settings - - layout.itemO("ed.undo") - layout.itemO("ed.redo") - - layout.itemS() - - layout.itemM("VIEW3D_MT_snap") - - layout.itemS() - - layout.itemO("mball.delete_metaelems", text="Delete...") - layout.itemO("mball.duplicate_metaelems") - - layout.itemS() - - layout.itemR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_meta_showhide") + bl_label = "Metaball" + + def draw(self, context): + layout = self.layout + + settings = context.tool_settings + + layout.itemO("ed.undo") + layout.itemO("ed.redo") + + layout.itemS() + + layout.itemM("VIEW3D_MT_snap") + + layout.itemS() + + layout.itemO("mball.delete_metaelems", text="Delete...") + layout.itemO("mball.duplicate_metaelems") + + layout.itemS() + + layout.item_menu_enumR(settings, "proportional_editing") + layout.item_menu_enumR(settings, "proportional_editing_falloff") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_meta_showhide") + class VIEW3D_MT_edit_meta_showhide(bpy.types.Menu): - __label__ = "Show/Hide" + bl_label = "Show/Hide" + + def draw(self, context): + layout = self.layout + + layout.itemO("mball.reveal_metaelems", text="Show Hidden") + layout.itemO("mball.hide_metaelems", text="Hide Selected") + layout.item_booleanO("mball.hide_metaelems", "unselected", True, text="Hide Unselected") - def draw(self, context): - layout = self.layout - - layout.itemO("mball.reveal_metaelems", text="Show Hidden") - layout.itemO("mball.hide_metaelems", text="Hide Selected") - layout.item_booleanO("mball.hide_metaelems", "unselected", True, text="Hide Unselected") -# Edit LATTICE class VIEW3D_MT_edit_lattice(bpy.types.Menu): - __label__ = "Lattice" - - def draw(self, context): - layout = self.layout - - settings = context.tool_settings - - layout.itemM("VIEW3D_MT_snap") - - layout.itemS() - - layout.itemO("lattice.make_regular") - - layout.itemS() - - layout.itemR(settings, "proportional_editing") - layout.item_menu_enumR(settings, "proportional_editing_falloff") - -# Edit ARMATURE + bl_label = "Lattice" + + def draw(self, context): + layout = self.layout + + settings = context.tool_settings + + layout.itemM("VIEW3D_MT_snap") + + layout.itemS() + + layout.itemO("lattice.make_regular") + + layout.itemS() + + layout.item_menu_enumR(settings, "proportional_editing") + layout.item_menu_enumR(settings, "proportional_editing_falloff") + + class VIEW3D_MT_edit_armature(bpy.types.Menu): - __label__ = "Armature" - - def draw(self, context): - layout = self.layout - - edit_object = context.edit_object - arm = edit_object.data - - layout.itemM("VIEW3D_MT_snap") - layout.itemM("VIEW3D_MT_edit_armature_roll") - - if arm.drawtype == 'ENVELOPE': - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") - else: - layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale B-Bone Width") - - layout.itemS() - - layout.itemO("armature.extrude") - - if arm.x_axis_mirror: - layout.item_booleanO("armature.extrude", "forked", True, text="Extrude Forked") - - layout.itemO("armature.duplicate") - layout.itemO("armature.merge") - layout.itemO("armature.fill") - layout.itemO("armature.delete") - layout.itemO("armature.separate") - - layout.itemS() - - layout.itemO("armature.subdivide_multi", text="Subdivide") - - layout.itemS() - - layout.operator_context = "EXEC_AREA" - layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right") - layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back") - layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom") - layout.itemO("armature.flip_names") - - layout.itemS() - - layout.operator_context = "INVOKE_DEFAULT" - layout.itemO("armature.armature_layers") - layout.itemO("armature.bone_layers") - - layout.itemS() - - layout.itemM("VIEW3D_MT_edit_armature_parent") - - layout.itemS() - - layout.item_menu_enumO("armature.flags_set", "mode", text="Bone Settings") + bl_label = "Armature" + + def draw(self, context): + layout = self.layout + + edit_object = context.edit_object + arm = edit_object.data + + layout.itemM("VIEW3D_MT_snap") + layout.itemM("VIEW3D_MT_edit_armature_roll") + + if arm.drawtype == 'ENVELOPE': + layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance") + else: + layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale B-Bone Width") + + layout.itemS() + + layout.itemO("armature.extrude_move") + +# EXTRUDE FORKED DOESN'T WORK YET +# if arm.x_axis_mirror: +# layout.item_booleanO("armature.extrude_move", "forked", True, text="Extrude Forked") + + layout.itemO("armature.duplicate_move") + layout.itemO("armature.merge") + layout.itemO("armature.fill") + layout.itemO("armature.delete") + layout.itemO("armature.separate") + + layout.itemS() + + layout.itemO("armature.subdivide_multi", text="Subdivide") + + layout.itemS() + + layout.operator_context = "EXEC_AREA" + layout.item_enumO("armature.autoside_names", "type", 'XAXIS', text="AutoName Left/Right") + layout.item_enumO("armature.autoside_names", "type", 'YAXIS', text="AutoName Front/Back") + layout.item_enumO("armature.autoside_names", "type", 'ZAXIS', text="AutoName Top/Bottom") + layout.itemO("armature.flip_names") + + layout.itemS() + + layout.operator_context = "INVOKE_DEFAULT" + layout.itemO("armature.armature_layers") + layout.itemO("armature.bone_layers") + + layout.itemS() + + layout.itemM("VIEW3D_MT_edit_armature_parent") + + layout.itemS() + + layout.item_menu_enumO("armature.flags_set", "mode", text="Bone Settings") + class VIEW3D_MT_edit_armature_parent(bpy.types.Menu): - __label__ = "Parent" + bl_label = "Parent" + + def draw(self, context): + layout = self.layout + + layout.itemO("armature.parent_set", text="Make") + layout.itemO("armature.parent_clear", text="Clear") - def draw(self, context): - layout = self.layout - - layout.itemO("armature.parent_set", text="Make") - layout.itemO("armature.parent_clear", text="Clear") class VIEW3D_MT_edit_armature_roll(bpy.types.Menu): - __label__ = "Bone Roll" - - def draw(self, context): - layout = self.layout - - layout.item_enumO("armature.calculate_roll", "type", 'GLOBALUP', text="Clear Roll (Z-Axis Up)") - layout.item_enumO("armature.calculate_roll", "type", 'CURSOR', text="Roll to Cursor") - - layout.itemS() - - layout.item_enumO("tfm.transform", "mode", 'BONE_ROLL', text="Set Roll") + bl_label = "Bone Roll" + + def draw(self, context): + layout = self.layout + + layout.item_enumO("armature.calculate_roll", "type", 'GLOBALUP', text="Clear Roll (Z-Axis Up)") + layout.item_enumO("armature.calculate_roll", "type", 'CURSOR', text="Roll to Cursor") + + layout.itemS() + + layout.item_enumO("tfm.transform", "mode", 'BONE_ROLL', text="Set Roll") # ********** Panel ********** + class VIEW3D_PT_3dview_properties(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "View" - - def poll(self, context): - view = context.space_data - return (view) - - def draw(self, context): - layout = self.layout - - view = context.space_data - scene = context.scene - - col = layout.column() - col.itemL(text="Camera:") - col.itemR(view, "camera", text="") - col.itemR(view, "lens") - - col = layout.column(align=True) - col.itemL(text="Clip:") - col.itemR(view, "clip_start", text="Start") - col.itemR(view, "clip_end", text="End") - - col = layout.column(align=True) - col.itemL(text="Grid:") - col.itemR(view, "grid_lines", text="Lines") - col.itemR(view, "grid_spacing", text="Spacing") - col.itemR(view, "grid_subdivisions", text="Subdivisions") - - layout.column().itemR(scene, "cursor_location", text="3D Cursor:") - + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "View" + + def poll(self, context): + view = context.space_data + return (view) + + def draw(self, context): + layout = self.layout + + view = context.space_data + scene = context.scene + + col = layout.column() + col.itemL(text="Camera:") + col.itemR(view, "camera", text="") + col.itemR(view, "lens") + + col = layout.column(align=True) + col.itemL(text="Clip:") + col.itemR(view, "clip_start", text="Start") + col.itemR(view, "clip_end", text="End") + + col = layout.column(align=True) + col.itemL(text="Grid:") + col.itemR(view, "grid_lines", text="Lines") + col.itemR(view, "grid_spacing", text="Spacing") + col.itemR(view, "grid_subdivisions", text="Subdivisions") + + layout.column().itemR(scene, "cursor_location", text="3D Cursor:") + +class VIEW3D_PT_3dview_item(bpy.types.Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Item" + + def poll(self, context): + return (context.active_object or context.bone or context.edit_bone) + + def draw(self, context): + layout = self.layout + + ob = context.object + + row = layout.row() + row.itemL(text="", icon='ICON_OBJECT_DATA') + row.itemR(ob, "name", text="") + + if ((context.active_bone or context.active_pchan) and ob.type == 'ARMATURE' and (ob.mode == 'EDIT' or ob.mode == 'POSE')): + bone = context.active_bone + if not bone: + pchan = context.active_pchan + if pchan: + bone = pchan.bone + + row = layout.row() + row.itemL(text="", icon='ICON_BONE_DATA') + row.itemR(bone, "name", text="") + class VIEW3D_PT_3dview_display(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Display" - __default_closed__ = True - - def poll(self, context): - view = context.space_data - return (view) - - def draw(self, context): - layout = self.layout - - view = context.space_data - gs = context.scene.game_data - ob = context.object - - col = layout.column() - col.itemR(view, "display_floor", text="Grid Floor") - col.itemR(view, "display_x_axis", text="X Axis") - col.itemR(view, "display_y_axis", text="Y Axis") - col.itemR(view, "display_z_axis", text="Z Axis") - col.itemR(view, "outline_selected") - col.itemR(view, "all_object_centers") - col.itemR(view, "relationship_lines") - if ob and ob.type =='MESH': - mesh = context.active_object.data - col.itemR(mesh, "all_edges") - - col = layout.column() - col.itemL(text="Shading:") - col.itemR(gs, "material_mode", text="") - col.itemR(view, "textured_solid") - -# XXX - the Quad View options don't work yet + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Display" + bl_default_closed = True + + def poll(self, context): + view = context.space_data + return (view) + + def draw(self, context): + layout = self.layout + + view = context.space_data + gs = context.scene.game_data + ob = context.object + + col = layout.column() + col.itemR(view, "display_floor", text="Grid Floor") + col.itemR(view, "display_x_axis", text="X Axis") + col.itemR(view, "display_y_axis", text="Y Axis") + col.itemR(view, "display_z_axis", text="Z Axis") + col.itemR(view, "outline_selected") + col.itemR(view, "all_object_centers") + col.itemR(view, "relationship_lines") + if ob and ob.type == 'MESH': + mesh = ob.data + col.itemR(mesh, "all_edges") + + col = layout.column() + col.itemL(text="Shading:") + col.itemR(gs, "material_mode", text="") + col.itemR(view, "textured_solid") + +# XXX - the Quad View options don't work yet # layout.itemS() -# +# # layout.itemO("screen.region_foursplit", text="Toggle Quad View") # col = layout.column() # col.itemR(view, "lock_rotation") # col.itemR(view, "box_preview") # col.itemR(view, "box_clip") + class VIEW3D_PT_3dview_meshdisplay(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Mesh Display" - - def poll(self, context): - editmesh = context.mode == 'EDIT_MESH' - return (editmesh) - - def draw(self, context): - layout = self.layout - - mesh = context.active_object.data - - col = layout.column() - col.itemL(text="Overlays:") - col.itemR(mesh, "draw_edges", text="Edges") - col.itemR(mesh, "draw_faces", text="Faces") - col.itemR(mesh, "draw_creases", text="Creases") - col.itemR(mesh, "draw_bevel_weights", text="Bevel Weights") - col.itemR(mesh, "draw_seams", text="Seams") - col.itemR(mesh, "draw_sharp", text="Sharp") - - col.itemS() - col.itemL(text="Normals:") - col.itemR(mesh, "draw_normals", text="Face") - col.itemR(mesh, "draw_vertex_normals", text="Vertex") - col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") - - col.itemS() - col.itemL(text="Numerics:") - col.itemR(mesh, "draw_edge_lenght") - col.itemR(mesh, "draw_edge_angle") - col.itemR(mesh, "draw_face_area") + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Mesh Display" + + def poll(self, context): + # The active object check is needed because of localmode + return (context.active_object and (context.mode == 'EDIT_MESH')) + + def draw(self, context): + layout = self.layout + + mesh = context.active_object.data + + col = layout.column() + col.itemL(text="Overlays:") + col.itemR(mesh, "draw_edges", text="Edges") + col.itemR(mesh, "draw_faces", text="Faces") + col.itemR(mesh, "draw_creases", text="Creases") + col.itemR(mesh, "draw_bevel_weights", text="Bevel Weights") + col.itemR(mesh, "draw_seams", text="Seams") + col.itemR(mesh, "draw_sharp", text="Sharp") + + col.itemS() + col.itemL(text="Normals:") + col.itemR(mesh, "draw_normals", text="Face") + col.itemR(mesh, "draw_vertex_normals", text="Vertex") + col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") + + col.itemS() + col.itemL(text="Numerics:") + col.itemR(mesh, "draw_edge_lenght") + col.itemR(mesh, "draw_edge_angle") + col.itemR(mesh, "draw_face_area") + class VIEW3D_PT_3dview_curvedisplay(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Curve Display" + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Curve Display" + + def poll(self, context): + editmesh = context.mode == 'EDIT_CURVE' + return (editmesh) + + def draw(self, context): + layout = self.layout - def poll(self, context): - editmesh = context.mode == 'EDIT_CURVE' - return (editmesh) + curve = context.active_object.data - def draw(self, context): - layout = self.layout + col = layout.column() + col.itemL(text="Overlays:") + col.itemR(curve, "draw_handles", text="Handles") + col.itemR(curve, "draw_normals", text="Normals") + col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") - curve = context.active_object.data - - col = layout.column() - col.itemL(text="Overlays:") - col.itemR(curve, "draw_handles", text="Handles") - col.itemR(curve, "draw_normals", text="Normals") - col.itemR(context.scene.tool_settings, "normal_size", text="Normal Size") class VIEW3D_PT_background_image(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Background Image" - __default_closed__ = True - - def poll(self, context): - view = context.space_data - bg = context.space_data.background_image - return (view) - - def draw_header(self, context): - layout = self.layout - view = context.space_data - - layout.itemR(view, "display_background_image", text="") - - def draw(self, context): - layout = self.layout - - view = context.space_data - bg = view.background_image - - if bg: - layout.active = view.display_background_image - - col = layout.column() - col.itemR(bg, "image", text="") - #col.itemR(bg, "image_user") - col.itemR(bg, "size") - col.itemR(bg, "transparency", slider=True) - - - col = layout.column(align=True) - col.itemL(text="Offset:") - col.itemR(bg, "offset_x", text="X") - col.itemR(bg, "offset_y", text="Y") + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Background Image" + bl_default_closed = True + + def poll(self, context): + view = context.space_data + bg = context.space_data.background_image + return (view) + + def draw_header(self, context): + layout = self.layout + view = context.space_data + + layout.itemR(view, "display_background_image", text="") + + def draw(self, context): + layout = self.layout + + view = context.space_data + bg = view.background_image + + if bg: + layout.active = view.display_background_image + + col = layout.column() + col.itemR(bg, "image", text="") + #col.itemR(bg, "image_user") + col.itemR(bg, "size") + col.itemR(bg, "transparency", slider=True) + + + col = layout.column(align=True) + col.itemL(text="Offset:") + col.itemR(bg, "offset_x", text="X") + col.itemR(bg, "offset_y", text="Y") + class VIEW3D_PT_transform_orientations(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Transform Orientations" - __default_closed__ = True - - def poll(self, context): - view = context.space_data - return (view) - - def draw(self, context): - layout = self.layout - - view = context.space_data - - col = layout.column() - - col.itemR(view, "transform_orientation") - col.itemO("tfm.create_orientation", text="Create") - - orientation = view.current_orientation - - if orientation: - col.itemR(orientation, "name") - col.itemO("tfm.delete_orientation", text="Delete") + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Transform Orientations" + bl_default_closed = True + + def poll(self, context): + view = context.space_data + return (view) + + def draw(self, context): + layout = self.layout + + view = context.space_data + + col = layout.column() + + col.itemR(view, "transform_orientation") + col.itemO("tfm.create_orientation", text="Create") + + orientation = view.current_orientation + + if orientation: + col.itemR(orientation, "name") + col.itemO("tfm.delete_orientation", text="Delete") + class VIEW3D_PT_etch_a_ton(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'UI' - __label__ = "Skeleton Sketching" - __default_closed__ = True - - def poll(self, context): - scene = context.space_data - ob = context.active_object - return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT' - - def draw_header(self, context): - layout = self.layout - toolsettings = context.scene.tool_settings - - layout.itemR(toolsettings, "bone_sketching", text="") - - def draw(self, context): - layout = self.layout - toolsettings = context.scene.tool_settings - - col = layout.column() - - col.itemR(toolsettings, "etch_quick") - col.itemR(toolsettings, "etch_overdraw") - - col.itemR(toolsettings, "etch_convert_mode") - - if toolsettings.etch_convert_mode == "LENGTH": - col.itemR(toolsettings, "etch_length_limit") - elif toolsettings.etch_convert_mode == "ADAPTIVE": - col.itemR(toolsettings, "etch_adaptive_limit") - elif toolsettings.etch_convert_mode == "FIXED": - col.itemR(toolsettings, "etch_subdivision_number") - elif toolsettings.etch_convert_mode == "RETARGET": - col.itemR(toolsettings, "etch_template") - col.itemR(toolsettings, "etch_roll_mode") - col.itemR(toolsettings, "etch_autoname") - col.itemR(toolsettings, "etch_number") - col.itemR(toolsettings, "etch_side") - - -# Operators + bl_space_type = 'VIEW_3D' + bl_region_type = 'UI' + bl_label = "Skeleton Sketching" + bl_default_closed = True + + def poll(self, context): + scene = context.space_data + ob = context.active_object + return scene and ob and ob.type == 'ARMATURE' and ob.mode == 'EDIT' + + def draw_header(self, context): + layout = self.layout + toolsettings = context.scene.tool_settings + + layout.itemR(toolsettings, "bone_sketching", text="") + + def draw(self, context): + layout = self.layout + toolsettings = context.scene.tool_settings + + col = layout.column() + + col.itemR(toolsettings, "etch_quick") + col.itemR(toolsettings, "etch_overdraw") + + col.itemR(toolsettings, "etch_convert_mode") + + if toolsettings.etch_convert_mode == "LENGTH": + col.itemR(toolsettings, "etch_length_limit") + elif toolsettings.etch_convert_mode == "ADAPTIVE": + col.itemR(toolsettings, "etch_adaptive_limit") + elif toolsettings.etch_convert_mode == "FIXED": + col.itemR(toolsettings, "etch_subdivision_number") + elif toolsettings.etch_convert_mode == "RETARGET": + col.itemR(toolsettings, "etch_template") + col.itemR(toolsettings, "etch_roll_mode") + col.itemR(toolsettings, "etch_autoname") + col.itemR(toolsettings, "etch_number") + col.itemR(toolsettings, "etch_side") + + +# Operators +from bpy.props import * + class OBJECT_OT_select_pattern(bpy.types.Operator): - '''Select object matching a naming pattern.''' - __idname__ = "object.select_pattern" - __label__ = "Select Pattern" - __register__ = True - __undo__ = True - __props__ = [ - bpy.props.StringProperty(attr="pattern", name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen= 32, default= "*"), - bpy.props.BoolProperty(attr="case_sensitive", name="Case Sensitive", description="Do a case sensitive compare", default= False), - bpy.props.BoolProperty(attr="extend", name="Extend", description="Extend the existing selection", default= True), - ] - - def execute(self, context): - - import fnmatch - if self.case_sensitive: pattern_match = fnmatch.fnmatchcase - else: pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) - - for ob in context.visible_objects: - if pattern_match(ob.name, self.pattern): - ob.selected = True - elif not self.extend: - ob.selected = False - - return ('FINISHED',) - - # TODO - python cant do popups yet - ''' - def invoke(self, context, event): - wm = context.manager - wm.add_fileselect(self.__operator__) - return ('RUNNING_MODAL',) - ''' + '''Select object matching a naming pattern.''' + bl_idname = "object.select_pattern" + bl_label = "Select Pattern" + bl_register = True + bl_undo = True + pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*") + case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False) + extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True) + def execute(self, context): + + import fnmatch + + if self.case_sensitive: + pattern_match = fnmatch.fnmatchcase + else: + pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper()) + + for ob in context.visible_objects: + if pattern_match(ob.name, self.pattern): + ob.selected = True + elif not self.extend: + ob.selected = False + + return ('FINISHED',) + + # TODO - python cant do popups yet + ''' + def invoke(self, context, event): + wm = context.manager + wm.add_fileselect(self) + return ('RUNNING_MODAL',) + ''' bpy.types.register(VIEW3D_HT_header) # Header bpy.types.register(VIEW3D_MT_view) #View Menus bpy.types.register(VIEW3D_MT_view_navigation) bpy.types.register(VIEW3D_MT_view_align) +bpy.types.register(VIEW3D_MT_view_align_selected) bpy.types.register(VIEW3D_MT_view_cameras) bpy.types.register(VIEW3D_MT_select_object) # Select Menus @@ -1492,6 +1674,7 @@ bpy.types.register(VIEW3D_MT_object_group) bpy.types.register(VIEW3D_MT_object_constraints) bpy.types.register(VIEW3D_MT_object_showhide) bpy.types.register(VIEW3D_MT_make_single_user) +bpy.types.register(VIEW3D_MT_make_links) bpy.types.register(VIEW3D_MT_sculpt) # Sculpt Menu @@ -1511,6 +1694,7 @@ bpy.types.register(VIEW3D_MT_pose_constraints) bpy.types.register(VIEW3D_MT_pose_showhide) bpy.types.register(VIEW3D_MT_snap) # Edit Menus +bpy.types.register(VIEW3D_MT_uv_map) # Edit Menus bpy.types.register(VIEW3D_MT_edit_mesh) bpy.types.register(VIEW3D_MT_edit_mesh_specials) # Only as a menu for keybindings @@ -1539,7 +1723,8 @@ bpy.types.register(VIEW3D_MT_edit_armature) bpy.types.register(VIEW3D_MT_edit_armature_parent) bpy.types.register(VIEW3D_MT_edit_armature_roll) -bpy.types.register(VIEW3D_PT_3dview_properties) # Panels +bpy.types.register(VIEW3D_PT_3dview_item) # Panels +bpy.types.register(VIEW3D_PT_3dview_properties) bpy.types.register(VIEW3D_PT_3dview_display) bpy.types.register(VIEW3D_PT_3dview_meshdisplay) bpy.types.register(VIEW3D_PT_3dview_curvedisplay) @@ -1548,4 +1733,3 @@ bpy.types.register(VIEW3D_PT_transform_orientations) bpy.types.register(VIEW3D_PT_etch_a_ton) bpy.ops.add(OBJECT_OT_select_pattern) - diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py index a552bb7de14..49c28427724 100644 --- a/release/scripts/ui/space_view3d_toolbar.py +++ b/release/scripts/ui/space_view3d_toolbar.py @@ -1,676 +1,730 @@ - +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> import bpy + class View3DPanel(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'TOOLS' + bl_space_type = 'VIEW_3D' + bl_region_type = 'TOOLS' + # ********** default tools for objectmode **************** + class VIEW3D_PT_tools_objectmode(View3DPanel): - __context__ = "objectmode" - __label__ = "Object Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Object:") - col.itemO("object.duplicate") - col.itemO("object.delete") - - active_object= context.active_object - if active_object and active_object.type == 'MESH': - - col = layout.column(align=True) - col.itemL(text="Shading:") - col.itemO("object.shade_smooth", text="Smooth") - col.itemO("object.shade_flat", text="Flat") - - col = layout.column(align=True) - col.itemL(text="Keyframes:") - col.itemO("anim.insert_keyframe_menu", text="Insert") - col.itemO("anim.delete_keyframe_v3d", text="Remove") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "objectmode" + bl_label = "Object Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Object:") + col.itemO("object.duplicate_move") + col.itemO("object.delete") + + active_object = context.active_object + if active_object and active_object.type == 'MESH': + + col = layout.column(align=True) + col.itemL(text="Shading:") + col.itemO("object.shade_smooth", text="Smooth") + col.itemO("object.shade_flat", text="Flat") + + col = layout.column(align=True) + col.itemL(text="Keyframes:") + col.itemO("anim.insert_keyframe_menu", text="Insert") + col.itemO("anim.delete_keyframe_v3d", text="Remove") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for editmode_mesh **************** + class VIEW3D_PT_tools_meshedit(View3DPanel): - __context__ = "mesh_edit" - __label__ = "Mesh Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Mesh:") - col.itemO("mesh.duplicate") - col.itemO("mesh.delete") - - col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("mesh.extrude") - col.itemO("mesh.subdivide") - col.itemO("mesh.loopcut") - col.itemO("mesh.spin") - col.itemO("mesh.screw") - col.itemO("mesh.merge") - col.itemO("mesh.rip_move") - - col = layout.column(align=True) - col.itemL(text="Shading:") - col.itemO("mesh.faces_shade_smooth", text="Smooth") - col.itemO("mesh.faces_shade_flat", text="Flat") - - col = layout.column(align=True) - col.itemL(text="UV Mapping:") - col.itemO("uv.mapping_menu", text="Unwrap") - col.itemO("mesh.uvs_rotate") - col.itemO("mesh.uvs_mirror") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") - + bl_context = "mesh_edit" + bl_label = "Mesh Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Mesh:") + col.itemO("mesh.duplicate_move") + col.itemO("mesh.delete") + + col = layout.column(align=True) + col.itemL(text="Modeling:") + col.itemO("mesh.extrude_move") + col.itemO("mesh.subdivide") + col.itemO("mesh.loopcut") + col.itemO("mesh.spin") + col.itemO("mesh.screw") + col.itemO("mesh.merge") + col.itemO("mesh.rip_move") + col.itemO("mesh.flip_normals") + + col = layout.column(align=True) + col.itemL(text="Shading:") + col.itemO("mesh.faces_shade_smooth", text="Smooth") + col.itemO("mesh.faces_shade_flat", text="Flat") + + col = layout.column(align=True) + col.itemL(text="UV Mapping:") + col.item_stringO("wm.call_menu", "name", "VIEW3D_MT_uv_map", text="Unwrap") + + col.itemO("mesh.uvs_rotate") + col.itemO("mesh.uvs_mirror") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") + + class VIEW3D_PT_tools_meshedit_options(View3DPanel): - __context__ = "mesh_edit" - __label__ = "Mesh Options" + bl_context = "mesh_edit" + bl_label = "Mesh Options" - def draw(self, context): - layout = self.layout - - mesh = context.active_object.data - - col = layout.column(align=True) - col.itemR(mesh, "use_mirror_x") + def draw(self, context): + layout = self.layout + + ob = context.active_object + + if ob: + mesh = context.active_object.data + col = layout.column(align=True) + col.itemR(mesh, "use_mirror_x") # ********** default tools for editmode_curve **************** + class VIEW3D_PT_tools_curveedit(View3DPanel): - __context__ = "curve_edit" - __label__ = "Curve Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Curve:") - col.itemO("curve.duplicate") - col.itemO("curve.delete") - col.itemO("curve.cyclic_toggle") - col.itemO("curve.switch_direction") - col.itemO("curve.spline_type_set") - - col = layout.column(align=True) - col.itemL(text="Handles:") - col.item_enumO("curve.handle_type_set", "type", 'AUTOMATIC') - col.item_enumO("curve.handle_type_set", "type", 'VECTOR') - col.item_enumO("curve.handle_type_set", "type", 'ALIGN') - col.item_enumO("curve.handle_type_set", "type", 'FREE_ALIGN') - - col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("curve.extrude") - col.itemO("curve.subdivide") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "curve_edit" + bl_label = "Curve Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Curve:") + col.itemO("curve.duplicate") + col.itemO("curve.delete") + col.itemO("curve.cyclic_toggle") + col.itemO("curve.switch_direction") + col.itemO("curve.spline_type_set") + + col = layout.column(align=True) + col.itemL(text="Handles:") + col.item_enumO("curve.handle_type_set", "type", 'AUTOMATIC') + col.item_enumO("curve.handle_type_set", "type", 'VECTOR') + col.item_enumO("curve.handle_type_set", "type", 'ALIGN') + col.item_enumO("curve.handle_type_set", "type", 'FREE_ALIGN') + + col = layout.column(align=True) + col.itemL(text="Modeling:") + col.itemO("curve.extrude") + col.itemO("curve.subdivide") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for editmode_surface **************** + class VIEW3D_PT_tools_surfaceedit(View3DPanel): - __context__ = "surface_edit" - __label__ = "Surface Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Curve:") - col.itemO("curve.duplicate") - col.itemO("curve.delete") - col.itemO("curve.cyclic_toggle") - col.itemO("curve.switch_direction") - - col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("curve.extrude") - col.itemO("curve.subdivide") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "surface_edit" + bl_label = "Surface Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Curve:") + col.itemO("curve.duplicate") + col.itemO("curve.delete") + col.itemO("curve.cyclic_toggle") + col.itemO("curve.switch_direction") + + col = layout.column(align=True) + col.itemL(text="Modeling:") + col.itemO("curve.extrude") + col.itemO("curve.subdivide") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for editmode_text **************** + class VIEW3D_PT_tools_textedit(View3DPanel): - __context__ = "text_edit" - __label__ = "Text Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Text Edit:") - col.itemO("font.text_copy", text="Copy") - col.itemO("font.text_cut", text="Cut") - col.itemO("font.text_paste", text="Paste") - - col = layout.column(align=True) - col.itemL(text="Style:") - col.itemO("font.case_set") - col.itemO("font.style_toggle") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "text_edit" + bl_label = "Text Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Text Edit:") + col.itemO("font.text_copy", text="Copy") + col.itemO("font.text_cut", text="Cut") + col.itemO("font.text_paste", text="Paste") + + col = layout.column(align=True) + col.itemL(text="Style:") + col.itemO("font.case_set") + col.itemO("font.style_toggle") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for editmode_armature **************** + class VIEW3D_PT_tools_armatureedit(View3DPanel): - __context__ = "armature_edit" - __label__ = "Armature Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Bones:") - col.itemO("armature.bone_primitive_add", text="Add") - col.itemO("armature.duplicate", text="Duplicate") - col.itemO("armature.delete", text="Delete") - - col = layout.column(align=True) - col.itemL(text="Modeling:") - col.itemO("armature.extrude") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") - + bl_context = "armature_edit" + bl_label = "Armature Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Bones:") + col.itemO("armature.bone_primitive_add", text="Add") + col.itemO("armature.duplicate_move", text="Duplicate") + col.itemO("armature.delete", text="Delete") + + col = layout.column(align=True) + col.itemL(text="Modeling:") + col.itemO("armature.extrude_move") + col.itemO("armature.subdivide_multi", text="Subdivide") + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") + + +class VIEW3D_PT_tools_armatureedit_options(View3DPanel): + bl_context = "armature_edit" + bl_label = "Armature Options" + + def draw(self, context): + layout = self.layout + + arm = context.active_object.data + + col = layout.column(align=True) + col.itemR(arm, "x_axis_mirror") # ********** default tools for editmode_mball **************** + class VIEW3D_PT_tools_mballedit(View3DPanel): - __context__ = "mball_edit" - __label__ = "Meta Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "mball_edit" + bl_label = "Meta Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for editmode_lattice **************** + class VIEW3D_PT_tools_latticeedit(View3DPanel): - __context__ = "lattice_edit" - __label__ = "Lattice Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") + bl_context = "lattice_edit" + bl_label = "Lattice Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") # ********** default tools for posemode **************** + class VIEW3D_PT_tools_posemode(View3DPanel): - __context__ = "posemode" - __label__ = "Pose Tools" - - def draw(self, context): - layout = self.layout - - col = layout.column(align=True) - col.itemL(text="Transform:") - col.itemO("tfm.translate") - col.itemO("tfm.rotate") - col.itemO("tfm.resize", text="Scale") - - col = layout.column(align=True) - col.itemL(text="Bones:") - col.itemO("pose.hide", text="Hide") - col.itemO("pose.reveal", text="Reveal") - - col = layout.column(align=True) - col.itemL(text="Keyframes:") - col.itemO("anim.insert_keyframe_menu", text="Insert") - col.itemO("anim.delete_keyframe_v3d", text="Remove") - - col = layout.column(align=True) - col.itemL(text="Pose:") - col.itemO("pose.copy", text="Copy") - col.itemO("pose.paste", text="Paste") - col.itemO("poselib.pose_add", text="Add To Library") - col.itemO("poselib.browse_interactive", text="Browse Library") - - col = layout.column(align=True) - col.itemL(text="In-Between:") - col.itemO("pose.relax", text="Relax") - col.itemO("pose.push", text="Push") - col.itemO("pose.breakdown", text="Breakdowner") - -# col = layout.column(align=True) -# col.itemL(text="Grease Pencil:") -# col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") -# col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") -# col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") - - col = layout.column(align=True) - col.itemL(text="Repeat:") - col.itemO("screen.repeat_last") - col.itemO("screen.repeat_history", text="History...") - col.itemO("screen.redo_last", text="Tweak...") - + bl_context = "posemode" + bl_label = "Pose Tools" + + def draw(self, context): + layout = self.layout + + col = layout.column(align=True) + col.itemL(text="Transform:") + col.itemO("tfm.translate") + col.itemO("tfm.rotate") + col.itemO("tfm.resize", text="Scale") + + col = layout.column(align=True) + col.itemL(text="Bones:") + col.itemO("pose.hide", text="Hide") + col.itemO("pose.reveal", text="Reveal") + + col = layout.column(align=True) + col.itemL(text="Keyframes:") + col.itemO("anim.insert_keyframe_menu", text="Insert") + col.itemO("anim.delete_keyframe_v3d", text="Remove") + + col = layout.column(align=True) + col.itemL(text="Pose:") + col.itemO("pose.copy", text="Copy") + col.itemO("pose.paste", text="Paste") + col.itemO("poselib.pose_add", text="Add To Library") + col.itemO("poselib.browse_interactive", text="Browse Library") + + col = layout.column(align=True) + col.itemL(text="In-Between:") + col.itemO("pose.relax", text="Relax") + col.itemO("pose.push", text="Push") + col.itemO("pose.breakdown", text="Breakdowner") + + col = layout.column(align=True) + col.itemL(text="Grease Pencil:") + col.item_enumO("gpencil.draw", "mode", 'DRAW', text="Draw Freehand") + col.item_enumO("gpencil.draw", "mode", 'DRAW_STRAIGHT', text="Straight Line") + col.item_enumO("gpencil.draw", "mode", 'ERASER', text="Eraser") + + col = layout.column(align=True) + col.itemL(text="Repeat:") + col.itemO("screen.repeat_last") + col.itemO("screen.repeat_history", text="History...") + col.itemO("screen.redo_last", text="Tweak...") + + class VIEW3D_PT_tools_posemode_options(View3DPanel): - __context__ = "posemode" - __label__ = "Pose Options" + bl_context = "posemode" + bl_label = "Pose Options" - def draw(self, context): - layout = self.layout - - arm = context.active_object.data + def draw(self, context): + layout = self.layout - col = layout.column(align=True) - col.itemR(arm, "x_axis_mirror") - col.itemR(arm, "auto_ik") + arm = context.active_object.data + + col = layout.column(align=True) + col.itemR(arm, "x_axis_mirror") + col.itemR(arm, "auto_ik") # ********** default tools for paint modes **************** + class PaintPanel(bpy.types.Panel): - __space_type__ = 'VIEW_3D' - __region_type__ = 'TOOLS' + bl_space_type = 'VIEW_3D' + bl_region_type = 'TOOLS' + + def paint_settings(self, context): + ts = context.tool_settings - def paint_settings(self, context): - ts = context.tool_settings + if context.sculpt_object: + return ts.sculpt + elif context.vertex_paint_object: + return ts.vertex_paint + elif context.weight_paint_object: + return ts.weight_paint + elif context.texture_paint_object: + return ts.image_paint + elif context.particle_edit_object: + return ts.particle_edit - if context.sculpt_object: - return ts.sculpt - elif context.vertex_paint_object: - return ts.vertex_paint - elif context.weight_paint_object: - return ts.weight_paint - elif context.texture_paint_object: - return ts.image_paint - elif context.particle_edit_object: - return ts.particle_edit + return False - return False class VIEW3D_PT_tools_brush(PaintPanel): - __label__ = "Brush" - - def poll(self, context): - return self.paint_settings(context) - - def draw(self, context): - layout = self.layout - - settings = self.paint_settings(context) - brush = settings.brush - - if not context.particle_edit_object: - col = layout.split().column() - row = col.row() - row.template_list(settings, "brushes", settings, "active_brush_index", rows=2) - - col.template_ID(settings, "brush", new="brush.add") - - # Particle Mode # - - # XXX This needs a check if psys is editable. - if context.particle_edit_object: - # XXX Select Particle System - layout.column().itemR(settings, "tool", expand=True) - - if settings.tool != 'NONE': - col = layout.column() - col.itemR(brush, "size", slider=True) - col.itemR(brush, "strength", slider=True) - - if settings.tool == 'ADD': - col = layout.column() - col.itemR(settings, "add_interpolate") - sub = col.column(align=True) - sub.active = settings.add_interpolate - sub.itemR(brush, "steps", slider=True) - sub.itemR(settings, "add_keys", slider=True) - elif settings.tool == 'LENGTH': - layout.itemR(brush, "length_mode", expand=True) - elif settings.tool == 'PUFF': - layout.itemR(brush, "puff_mode", expand=True) - - # Sculpt Mode # - - elif context.sculpt_object and brush: - col = layout.column() - col.itemS() - col.itemR(brush, "sculpt_tool", expand=True) - col.itemS() - - row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") - - if brush.sculpt_tool != 'GRAB': - row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", text="") - - ''' # XXX - TODO - row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") - ''' - col = layout.column() - - if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): - col.row().itemR(brush, "direction", expand=True) - - if brush.sculpt_tool == 'LAYER': - col.itemR(brush, "persistent") - col.itemO("sculpt.set_persistent_base") - - # Texture Paint Mode # - - elif context.texture_paint_object and brush: - col = layout.column(align=True) - col.item_enumR(settings, "tool", 'DRAW') - col.item_enumR(settings, "tool", 'SOFTEN') - col.item_enumR(settings, "tool", 'CLONE') - col.item_enumR(settings, "tool", 'SMEAR') - - col = layout.column() - col.itemR(brush, "color", text="") - - row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") - - col.itemR(brush, "blend", text="Blend") - - # Weight Paint Mode # - - elif context.weight_paint_object and brush: - layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True) - - col = layout.column() - row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") - - # Vertex Paint Mode # - - elif context.vertex_paint_object and brush: - col = layout.column() - col.itemR(brush, "color", text="") - - row = col.row(align=True) - row.itemR(brush, "size", slider=True) - row.itemR(brush, "use_size_pressure", toggle=True, text="") - - row = col.row(align=True) - row.itemR(brush, "strength", slider=True) - row.itemR(brush, "use_strength_pressure", toggle=True, text="") - - ''' # XXX - TODO - row = col.row(align=True) - row.itemR(brush, "jitter", slider=True) - row.itemR(brush, "use_jitter_pressure", toggle=True, text="") - ''' + bl_label = "Brush" + + def poll(self, context): + return self.paint_settings(context) + + def draw(self, context): + layout = self.layout + + settings = self.paint_settings(context) + brush = settings.brush + + if not context.particle_edit_object: + col = layout.split().column() + row = col.row() + row.template_list(settings, "brushes", settings, "active_brush_index", rows=2) + + col.template_ID(settings, "brush", new="brush.add") + + # Particle Mode # + + # XXX This needs a check if psys is editable. + if context.particle_edit_object: + # XXX Select Particle System + layout.column().itemR(settings, "tool", expand=True) + + if settings.tool != 'NONE': + col = layout.column() + col.itemR(brush, "size", slider=True) + col.itemR(brush, "strength", slider=True) + + if settings.tool == 'ADD': + col = layout.column() + col.itemR(settings, "add_interpolate") + sub = col.column(align=True) + sub.active = settings.add_interpolate + sub.itemR(brush, "steps", slider=True) + sub.itemR(settings, "add_keys", slider=True) + elif settings.tool == 'LENGTH': + layout.itemR(brush, "length_mode", expand=True) + elif settings.tool == 'PUFF': + layout.itemR(brush, "puff_mode", expand=True) + + # Sculpt Mode # + + elif context.sculpt_object and brush: + col = layout.column() + col.itemS() + col.itemR(brush, "sculpt_tool", expand=True) + col.itemS() + + row = col.row(align=True) + row.itemR(brush, "size", slider=True) + row.itemR(brush, "use_size_pressure", toggle=True, text="") + + if brush.sculpt_tool != 'GRAB': + row = col.row(align=True) + row.itemR(brush, "strength", slider=True) + row.itemR(brush, "use_strength_pressure", text="") + + ''' # XXX - TODO + row = col.row(align=True) + row.itemR(brush, "jitter", slider=True) + row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + ''' + col = layout.column() + + if brush.sculpt_tool in ('DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'): + col.row().itemR(brush, "direction", expand=True) + + if brush.sculpt_tool == 'LAYER': + col.itemR(brush, "use_persistent") + col.itemO("sculpt.set_persistent_base") + + # Texture Paint Mode # + + elif context.texture_paint_object and brush: + col = layout.column(align=True) + col.item_enumR(settings, "tool", 'DRAW') + col.item_enumR(settings, "tool", 'SOFTEN') + col.item_enumR(settings, "tool", 'CLONE') + col.item_enumR(settings, "tool", 'SMEAR') + + col = layout.column() + col.itemR(brush, "color", text="") + + row = col.row(align=True) + row.itemR(brush, "size", slider=True) + row.itemR(brush, "use_size_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "strength", slider=True) + row.itemR(brush, "use_strength_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "jitter", slider=True) + row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + + col.itemR(brush, "blend", text="Blend") + + # Weight Paint Mode # + + elif context.weight_paint_object and brush: + layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True) + layout.itemR(context.tool_settings, "auto_normalize", text="Auto Normalize") + + col = layout.column() + row = col.row(align=True) + row.itemR(brush, "size", slider=True) + row.itemR(brush, "use_size_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "strength", slider=True) + row.itemR(brush, "use_strength_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "jitter", slider=True) + row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + + # Vertex Paint Mode # + + elif context.vertex_paint_object and brush: + col = layout.column() + col.itemR(brush, "color", text="") + + row = col.row(align=True) + row.itemR(brush, "size", slider=True) + row.itemR(brush, "use_size_pressure", toggle=True, text="") + + row = col.row(align=True) + row.itemR(brush, "strength", slider=True) + row.itemR(brush, "use_strength_pressure", toggle=True, text="") + + ''' # XXX - TODO + row = col.row(align=True) + row.itemR(brush, "jitter", slider=True) + row.itemR(brush, "use_jitter_pressure", toggle=True, text="") + ''' + class VIEW3D_PT_tools_brush_stroke(PaintPanel): - __label__ = "Stroke" - __default_closed__ = True - - def poll(self, context): - settings = self.paint_settings(context) - return (settings and settings.brush and (context.sculpt_object or - context.vertex_paint_object or - context.weight_paint_object or - context.texture_paint_object)) - - def draw(self, context): - layout = self.layout - - settings = self.paint_settings(context) - brush = settings.brush - texture_paint = context.texture_paint_object - - if context.sculpt_object: - if brush.sculpt_tool != 'LAYER': - layout.itemR(brush, "use_anchor") - layout.itemR(brush, "use_rake") - - layout.itemR(brush, "use_airbrush") - col = layout.column() - col.active = brush.use_airbrush - col.itemR(brush, "rate", slider=True) - - if not texture_paint: - layout.itemR(brush, "use_smooth_stroke") - col = layout.column() - col.active = brush.use_smooth_stroke - col.itemR(brush, "smooth_stroke_radius", text="Radius", slider=True) - col.itemR(brush, "smooth_stroke_factor", text="Factor", slider=True) - - layout.itemR(brush, "use_space") - row = layout.row(align=True) - row.active = brush.use_space - row.itemR(brush, "spacing", text="Distance", slider=True) - if texture_paint: - row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + bl_label = "Stroke" + bl_default_closed = True + + def poll(self, context): + settings = self.paint_settings(context) + return (settings and settings.brush and (context.sculpt_object or + context.vertex_paint_object or + context.weight_paint_object or + context.texture_paint_object)) + + def draw(self, context): + layout = self.layout + + settings = self.paint_settings(context) + brush = settings.brush + texture_paint = context.texture_paint_object + + if context.sculpt_object: + if brush.sculpt_tool != 'LAYER': + layout.itemR(brush, "use_anchor") + layout.itemR(brush, "use_rake") + + layout.itemR(brush, "use_airbrush") + col = layout.column() + col.active = brush.use_airbrush + col.itemR(brush, "rate", slider=True) + + if not texture_paint: + layout.itemR(brush, "use_smooth_stroke") + col = layout.column() + col.active = brush.use_smooth_stroke + col.itemR(brush, "smooth_stroke_radius", text="Radius", slider=True) + col.itemR(brush, "smooth_stroke_factor", text="Factor", slider=True) + + layout.itemR(brush, "use_space") + row = layout.row(align=True) + row.active = brush.use_space + row.itemR(brush, "spacing", text="Distance", slider=True) + if texture_paint: + row.itemR(brush, "use_spacing_pressure", toggle=True, text="") + class VIEW3D_PT_tools_brush_curve(PaintPanel): - __label__ = "Curve" - __default_closed__ = True - - def poll(self, context): - settings = self.paint_settings(context) - return (settings and settings.brush and settings.brush.curve) - - def draw(self, context): - layout = self.layout - - settings = self.paint_settings(context) - brush = settings.brush - - layout.template_curve_mapping(brush, "curve") - layout.item_menu_enumO("brush.curve_preset", property="shape") - + bl_label = "Curve" + bl_default_closed = True + + def poll(self, context): + settings = self.paint_settings(context) + return (settings and settings.brush and settings.brush.curve) + + def draw(self, context): + layout = self.layout + + settings = self.paint_settings(context) + brush = settings.brush + + layout.template_curve_mapping(brush, "curve") + layout.item_menu_enumO("brush.curve_preset", property="shape") + + class VIEW3D_PT_sculpt_options(PaintPanel): - __label__ = "Options" - - def poll(self, context): - return context.sculpt_object - - def draw(self, context): - layout = self.layout - - sculpt = context.tool_settings.sculpt - - col = layout.column() - col.itemR(sculpt, "partial_redraw", text="Partial Refresh") - col.itemR(sculpt, "show_brush") - - split = self.layout.split() - - col = split.column() - col.itemL(text="Symmetry:") - col.itemR(sculpt, "symmetry_x", text="X") - col.itemR(sculpt, "symmetry_y", text="Y") - col.itemR(sculpt, "symmetry_z", text="Z") - - col = split.column() - col.itemL(text="Lock:") - col.itemR(sculpt, "lock_x", text="X") - col.itemR(sculpt, "lock_y", text="Y") - col.itemR(sculpt, "lock_z", text="Z") + bl_label = "Options" + + def poll(self, context): + return context.sculpt_object + + def draw(self, context): + layout = self.layout + + sculpt = context.tool_settings.sculpt + + col = layout.column() + col.itemR(sculpt, "partial_redraw", text="Partial Refresh") + col.itemR(sculpt, "show_brush") + + split = self.layout.split() + + col = split.column() + col.itemL(text="Symmetry:") + col.itemR(sculpt, "symmetry_x", text="X") + col.itemR(sculpt, "symmetry_y", text="Y") + col.itemR(sculpt, "symmetry_z", text="Z") + + col = split.column() + col.itemL(text="Lock:") + col.itemR(sculpt, "lock_x", text="X") + col.itemR(sculpt, "lock_y", text="Y") + col.itemR(sculpt, "lock_z", text="Z") # ********** default tools for weightpaint **************** + class VIEW3D_PT_tools_weightpaint(View3DPanel): - __context__ = "weightpaint" - __label__ = "Weight Tools" + bl_context = "weightpaint" + bl_label = "Weight Tools" - def draw(self, context): - layout = self.layout - - wpaint = context.tool_settings.weight_paint + def draw(self, context): + layout = self.layout + + wpaint = context.tool_settings.weight_paint + + col = layout.column() + # col.itemL(text="Blend:") + col.itemO("object.vertex_group_normalize_all", text="Normalize All") + col.itemO("object.vertex_group_normalize", text="Normalize") + col.itemO("object.vertex_group_invert", text="Invert") + col.itemO("object.vertex_group_clean", text="Clean") - col = layout.column() - # col.itemL(text="Blend:") - col.itemO("object.vertex_group_normalize_all", text="Normalize All") - col.itemO("object.vertex_group_normalize", text="Normalize") - col.itemO("object.vertex_group_invert", text="Invert") - col.itemO("object.vertex_group_clean", text="Clean") class VIEW3D_PT_tools_weightpaint_options(View3DPanel): - __context__ = "weightpaint" - __label__ = "Options" - - def draw(self, context): - layout = self.layout - - wpaint = context.tool_settings.weight_paint - - col = layout.column() - col.itemL(text="Blend:") - col.itemR(wpaint, "mode", text="") - col.itemR(wpaint, "all_faces") - col.itemR(wpaint, "normals") - col.itemR(wpaint, "spray") - col.itemR(wpaint, "vertex_dist", text="Distance") - - - data = context.weight_paint_object.data - if type(data) == bpy.types.Mesh: - col.itemR(data, "use_mirror_x") + bl_context = "weightpaint" + bl_label = "Options" + + def draw(self, context): + layout = self.layout + + wpaint = context.tool_settings.weight_paint + + col = layout.column() + col.itemL(text="Blend:") + col.itemR(wpaint, "mode", text="") + col.itemR(wpaint, "all_faces") + col.itemR(wpaint, "normals") + col.itemR(wpaint, "spray") + col.itemR(wpaint, "vertex_dist", text="Distance") + + + data = context.weight_paint_object.data + if type(data) == bpy.types.Mesh: + col.itemR(data, "use_mirror_x") # Commented out because the Apply button isn't an operator yet, making these settings useless # col.itemL(text="Gamma:") @@ -683,144 +737,148 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel): # ********** default tools for vertexpaint **************** + class VIEW3D_PT_tools_vertexpaint(View3DPanel): - __context__ = "vertexpaint" - __label__ = "Options" - - def draw(self, context): - layout = self.layout - - vpaint = context.tool_settings.vertex_paint - - col = layout.column() - col.itemL(text="Blend:") - col.itemR(vpaint, "mode", text="") - col.itemR(vpaint, "all_faces") - col.itemR(vpaint, "normals") - col.itemR(vpaint, "spray") - col.itemR(vpaint, "vertex_dist", text="Distance") + bl_context = "vertexpaint" + bl_label = "Options" + + def draw(self, context): + layout = self.layout + + vpaint = context.tool_settings.vertex_paint + + col = layout.column() + col.itemL(text="Blend:") + col.itemR(vpaint, "mode", text="") + col.itemR(vpaint, "all_faces") + col.itemR(vpaint, "normals") + col.itemR(vpaint, "spray") + col.itemR(vpaint, "vertex_dist", text="Distance") # Commented out because the Apply button isn't an operator yet, making these settings useless # col.itemL(text="Gamma:") # col.itemR(vpaint, "gamma", text="") # col.itemL(text="Multiply:") # col.itemR(vpaint, "mul", text="") - # ********** default tools for texturepaint **************** + class VIEW3D_PT_tools_projectpaint(View3DPanel): - __context__ = "texturepaint" - __label__ = "Project Paint" - - def poll(self, context): - return context.tool_settings.image_paint.tool != 'SMEAR' - - def draw_header(self, context): - ipaint = context.tool_settings.image_paint - - self.layout.itemR(ipaint, "use_projection", text="") - - def draw(self, context): - layout = self.layout - - ipaint = context.tool_settings.image_paint - settings = context.tool_settings.image_paint - use_projection= ipaint.use_projection - - col = layout.column() - sub = col.column() - sub.active = use_projection - sub.itemR(ipaint, "use_occlude") - sub.itemR(ipaint, "use_backface_cull") - - split = layout.split() - - col = split.column() - col.active = (use_projection) - col.itemR(ipaint, "use_normal_falloff") - - col = split.column() - col.active = (ipaint.use_normal_falloff and use_projection) - col.itemR(ipaint, "normal_angle", text="") - - split = layout.split(percentage=0.7) - - col = split.column(align=False) - col.active = (use_projection) - col.itemR(ipaint, "use_stencil_layer") - - col = split.column(align=False) - col.active = (use_projection and ipaint.use_stencil_layer) - col.itemR(ipaint, "invert_stencil", text="Inv") - - col = layout.column() - sub = col.column() - sub.active = (settings.tool == 'CLONE') - sub.itemR(ipaint, "use_clone_layer") - - sub = col.column() - sub.itemR(ipaint, "seam_bleed") - -# ********** default tools for particle mode **************** + bl_context = "texturepaint" + bl_label = "Project Paint" + + def poll(self, context): + return context.tool_settings.image_paint.tool != 'SMEAR' + + def draw_header(self, context): + ipaint = context.tool_settings.image_paint + + self.layout.itemR(ipaint, "use_projection", text="") + + def draw(self, context): + layout = self.layout + + ipaint = context.tool_settings.image_paint + settings = context.tool_settings.image_paint + use_projection = ipaint.use_projection + + col = layout.column() + sub = col.column() + sub.active = use_projection + sub.itemR(ipaint, "use_occlude") + sub.itemR(ipaint, "use_backface_cull") + + split = layout.split() + + col = split.column() + col.active = (use_projection) + col.itemR(ipaint, "use_normal_falloff") + + col = split.column() + col.active = (ipaint.use_normal_falloff and use_projection) + col.itemR(ipaint, "normal_angle", text="") + + split = layout.split(percentage=0.7) + + col = split.column(align=False) + col.active = (use_projection) + col.itemR(ipaint, "use_stencil_layer") + + col = split.column(align=False) + col.active = (use_projection and ipaint.use_stencil_layer) + col.itemR(ipaint, "invert_stencil", text="Inv") + + col = layout.column() + sub = col.column() + sub.active = (settings.tool == 'CLONE') + sub.itemR(ipaint, "use_clone_layer") + + sub = col.column() + sub.itemR(ipaint, "seam_bleed") + class VIEW3D_PT_tools_particlemode(View3DPanel): - __context__ = "particlemode" - __label__ = "Options" - - def draw(self, context): - layout = self.layout - - pe = context.tool_settings.particle_edit - ob = pe.object - - layout.itemR(pe, "type", text="") - - if pe.type == 'PARTICLES': - if ob.particle_systems: - if len(ob.particle_systems) > 1: - layout.template_list(ob, "particle_systems", ob, "active_particle_system_index", type='ICONS') - - ptcache = ob.particle_systems[ob.active_particle_system_index].point_cache - else: - for md in ob.modifiers: - if md.type==pe.type: - ptcache = md.point_cache - - if ptcache and len(ptcache.point_cache_list) > 1: - layout.template_list(ptcache, "point_cache_list", ptcache, "active_point_cache_index", type='ICONS') - - - if not pe.editable: - layout.itemL(text="Point cache must be baked") - layout.itemL(text="to enable editing!") - - col = layout.column(align=True) - if pe.hair: - col.active = pe.editable - col.itemR(pe, "emitter_deflect", text="Deflect emitter") - sub = col.row() - sub.active = pe.emitter_deflect - sub.itemR(pe, "emitter_distance", text="Distance") - - col = layout.column(align=True) - col.active = pe.editable - col.itemL(text="Keep:") - col.itemR(pe, "keep_lengths", text="Lenghts") - col.itemR(pe, "keep_root", text="Root") - if not pe.hair: - col.itemL(text="Correct:") - col.itemR(pe, "auto_velocity", text="Velocity") - - col = layout.column(align=True) - col.active = pe.editable - col.itemL(text="Draw:") - col.itemR(pe, "draw_step", text="Path Steps") - if pe.type == 'PARTICLES': - col.itemR(pe, "draw_particles", text="Particles") - col.itemR(pe, "fade_time") - sub = col.row() - sub.active = pe.fade_time - sub.itemR(pe, "fade_frames", slider=True) + '''default tools for particle mode''' + bl_context = "particlemode" + bl_label = "Options" + + def draw(self, context): + layout = self.layout + + pe = context.tool_settings.particle_edit + ob = pe.object + + layout.itemR(pe, "type", text="") + + ptcache = None + + if pe.type == 'PARTICLES': + if ob.particle_systems: + if len(ob.particle_systems) > 1: + layout.template_list(ob, "particle_systems", ob, "active_particle_system_index", type='ICONS') + + ptcache = ob.particle_systems[ob.active_particle_system_index].point_cache + else: + for md in ob.modifiers: + if md.type == pe.type: + ptcache = md.point_cache + + if ptcache and len(ptcache.point_cache_list) > 1: + layout.template_list(ptcache, "point_cache_list", ptcache, "active_point_cache_index", type='ICONS') + + + if not pe.editable: + layout.itemL(text="Point cache must be baked") + layout.itemL(text="to enable editing!") + + col = layout.column(align=True) + if pe.hair: + col.active = pe.editable + col.itemR(pe, "emitter_deflect", text="Deflect emitter") + sub = col.row() + sub.active = pe.emitter_deflect + sub.itemR(pe, "emitter_distance", text="Distance") + + col = layout.column(align=True) + col.active = pe.editable + col.itemL(text="Keep:") + col.itemR(pe, "keep_lengths", text="Lenghts") + col.itemR(pe, "keep_root", text="Root") + if not pe.hair: + col.itemL(text="Correct:") + col.itemR(pe, "auto_velocity", text="Velocity") + + col = layout.column(align=True) + col.active = pe.editable + col.itemL(text="Draw:") + col.itemR(pe, "draw_step", text="Path Steps") + if pe.type == 'PARTICLES': + col.itemR(pe, "draw_particles", text="Particles") + col.itemR(pe, "fade_time") + sub = col.row() + sub.active = pe.fade_time + sub.itemR(pe, "fade_frames", slider=True) + bpy.types.register(VIEW3D_PT_tools_weightpaint) bpy.types.register(VIEW3D_PT_tools_objectmode) @@ -830,6 +888,7 @@ bpy.types.register(VIEW3D_PT_tools_curveedit) bpy.types.register(VIEW3D_PT_tools_surfaceedit) bpy.types.register(VIEW3D_PT_tools_textedit) bpy.types.register(VIEW3D_PT_tools_armatureedit) +bpy.types.register(VIEW3D_PT_tools_armatureedit_options) bpy.types.register(VIEW3D_PT_tools_mballedit) bpy.types.register(VIEW3D_PT_tools_latticeedit) bpy.types.register(VIEW3D_PT_tools_posemode) diff --git a/release/test/rna_array.py b/release/test/rna_array.py index 9b7c65ff017..08aea1c7967 100644 --- a/release/test/rna_array.py +++ b/release/test/rna_array.py @@ -1,3 +1,21 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ##### END GPL LICENSE BLOCK ##### + import unittest import random diff --git a/source/Makefile b/source/Makefile index 4347c79bc79..783b51b81de 100644 --- a/source/Makefile +++ b/source/Makefile @@ -78,8 +78,6 @@ endif GRPLIB = $(OCGDIR)/creator/$(DEBUG_DIR)libcreator.a GRPLIB += $(OCGDIR)/blender/windowmanager/$(DEBUG_DIR)libwindowmanager.a -GRPLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a -GRPLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a GRPLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a GRPLIB += $(NAN_STRING)/lib/$(DEBUG_DIR)libstring.a GRPLIB += $(OCGDIR)/blender/render/$(DEBUG_DIR)librender.a @@ -118,6 +116,9 @@ COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sdl.a COMLIB += $(NAN_SAMPLERATE)/lib/$(DEBUG_DIR)libsamplerate.a COMLIB += $(NAN_LZO)/lib/$(DEBUG_DIR)libminilzo.a COMLIB += $(NAN_LZMA)/lib/$(DEBUG_DIR)liblzma.a +COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a +COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a +COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a ifeq ($(WITH_FFMPEG),true) COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_ffmpeg.a @@ -233,7 +234,6 @@ endif # note: space_api.a in begin of editors, screen.a in end PULIB = $(NAN_MOTO)/lib/libmoto.a -PULIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a PULIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a PULIB += $(OCGDIR)/blender/ed_space/$(DEBUG_DIR)libed_space.a PULIB += $(OCGDIR)/blender/ed_sound/$(DEBUG_DIR)libed_sound.a diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt index 025ffc49ab1..8f80ede7551 100644 --- a/source/blender/CMakeLists.txt +++ b/source/blender/CMakeLists.txt @@ -59,3 +59,7 @@ IF(WITH_PYTHON) ADD_SUBDIRECTORY(python) ENDIF(WITH_PYTHON) +IF(WITH_OPENCOLLADA) + ADD_SUBDIRECTORY(collada) +ENDIF(WITH_OPENCOLLADA) + diff --git a/source/blender/SConscript b/source/blender/SConscript index 71971e7c072..6033374ddb5 100644 --- a/source/blender/SConscript +++ b/source/blender/SConscript @@ -34,3 +34,6 @@ if env['WITH_BF_OPENEXR']: if env['WITH_BF_QUICKTIME']: SConscript (['quicktime/SConscript']) + +if env['WITH_BF_COLLADA']: + SConscript (['collada/SConscript']) diff --git a/source/blender/blenfont/intern/blf.c b/source/blender/blenfont/intern/blf.c index db88d84d0b5..99ba3d50821 100644 --- a/source/blender/blenfont/intern/blf.c +++ b/source/blender/blenfont/intern/blf.c @@ -289,7 +289,7 @@ void BLF_blur(int size) void BLF_draw_default(float x, float y, float z, char *str) { FontBLF *font; - int old_font, old_point, old_dpi; + int old_font=0, old_point=0, old_dpi=0; if (!str) return; @@ -404,7 +404,7 @@ float BLF_width_default(char *str) { FontBLF *font; float width; - int old_font, old_point, old_dpi; + int old_font=0, old_point=0, old_dpi=0; if (global_font_default == -1) global_font_default= blf_search("default"); @@ -447,7 +447,7 @@ float BLF_height_default(char *str) { FontBLF *font; float height; - int old_font, old_point, old_dpi; + int old_font=0, old_point=0, old_dpi=0; if (global_font_default == -1) global_font_default= blf_search("default"); diff --git a/source/blender/blenkernel/BKE_armature.h b/source/blender/blenkernel/BKE_armature.h index 8f109034e3e..03f23f07c8c 100644 --- a/source/blender/blenkernel/BKE_armature.h +++ b/source/blender/blenkernel/BKE_armature.h @@ -55,11 +55,14 @@ typedef struct PoseTarget typedef struct PoseTree { struct PoseTree *next, *prev; - + + int type; /* type of IK that this serves (CONSTRAINT_TYPE_KINEMATIC or ..._SPLINEIK) */ + int totchannel; /* number of pose channels */ + struct ListBase targets; /* list of targets of the tree */ struct bPoseChannel **pchan; /* array of pose channels */ int *parent; /* and their parents */ - int totchannel; /* number of pose channels */ + float (*basis_change)[3][3]; /* basis change result from solver */ int iterations; /* iterations from the constraint */ int stretch; /* disable stretching */ @@ -72,8 +75,7 @@ extern "C" { struct bArmature *add_armature(char *name); struct bArmature *get_armature(struct Object *ob); -void free_boneChildren(struct Bone *bone); -void free_bones (struct bArmature *arm); +void free_bonelist (struct ListBase *lb); void free_armature(struct bArmature *arm); void make_local_armature(struct bArmature *arm); struct bArmature *copy_armature(struct bArmature *arm); diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index 09e13c2930e..feba39ee11d 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -124,6 +124,9 @@ void CTX_store_free_list(ListBase *contexts); int CTX_py_init_get(bContext *C); void CTX_py_init_set(bContext *C, int value); +void *CTX_py_dict_get(bContext *C); +void CTX_py_dict_set(bContext *C, void *value); + /* Window Manager Context */ struct wmWindowManager *CTX_wm_manager(const bContext *C); diff --git a/source/blender/blenkernel/BKE_deform.h b/source/blender/blenkernel/BKE_deform.h index e982806a6cc..8a34b286881 100644 --- a/source/blender/blenkernel/BKE_deform.h +++ b/source/blender/blenkernel/BKE_deform.h @@ -44,7 +44,7 @@ void copy_defgroups (struct ListBase *lb1, struct ListBase *lb2); struct bDeformGroup *copy_defgroup (struct bDeformGroup *ingroup); struct bDeformGroup *get_named_vertexgroup (Object *ob, char *name); int get_defgroup_num (struct Object *ob, struct bDeformGroup *dg); -int get_named_vertexgroup_num (Object *ob, char *name); +int get_named_vertexgroup_num (Object *ob, const char *name); void unique_vertexgroup_name (struct bDeformGroup *dg, struct Object *ob); float deformvert_get_weight(const struct MDeformVert *dvert, int group_num); diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h index 94d0864024b..6e273c81e39 100644 --- a/source/blender/blenkernel/BKE_fcurve.h +++ b/source/blender/blenkernel/BKE_fcurve.h @@ -98,7 +98,7 @@ typedef struct FModifierTypeInfo { } FModifierTypeInfo; /* Values which describe the behaviour of a FModifier Type */ -enum { +typedef enum eFMI_Action_Types { /* modifier only modifies values outside of data range */ FMI_TYPE_EXTRAPOLATION = 0, /* modifier leaves data-points alone, but adjusts the interpolation between and around them */ @@ -110,7 +110,7 @@ enum { } eFMI_Action_Types; /* Flags for the requirements of a FModifier Type */ -enum { +typedef enum eFMI_Requirement_Flags { /* modifier requires original data-points (kindof beats the purpose of a modifier stack?) */ FMI_REQUIRES_ORIGINAL_DATA = (1<<0), /* modifier doesn't require on any preceeding data (i.e. it will generate a curve). diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 25f539a1992..2dec76d1b6b 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -622,7 +622,7 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan } } -/* checks for IK constraint, and also for Follow-Path constraint. +/* checks for IK constraint, Spline IK, and also for Follow-Path constraint. * can do more constraints flags later */ /* pose should be entirely OK */ @@ -675,6 +675,8 @@ void update_pose_constraint_flags(bPose *pose) if ((data->tar) && (data->tar->type==OB_CURVE)) pose->flag |= POSE_CONSTRAINTS_TIMEDEPEND; } + else if (con->type == CONSTRAINT_TYPE_SPLINEIK) + pchan->constflag |= PCHAN_HAS_SPLINEIK; else pchan->constflag |= PCHAN_HAS_CONST; } diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c index 2007e35b131..138c6d3f207 100644 --- a/source/blender/blenkernel/intern/anim.c +++ b/source/blender/blenkernel/intern/anim.c @@ -279,7 +279,7 @@ int where_on_path(Object *ob, float ctime, float *vec, float *dir, float *quat, /* Need to verify the quat interpolation is correct - XXX */ if (quat) { - float totfac, q1[4], q2[4]; + //float totfac, q1[4], q2[4]; /* checks for totfac are needed when 'fac' is 1.0 key_curve_position_weights can assign zero * to more then one index in data which can give divide by zero error */ diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index fa0db751c00..1c85a5e3a9a 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -34,14 +34,13 @@ #include "MEM_guardedalloc.h" -//XXX #include "nla.h" - #include "BLI_arithb.h" #include "BLI_blenlib.h" #include "BLI_cellalloc.h" #include "DNA_armature_types.h" #include "DNA_action_types.h" +#include "DNA_curve_types.h" #include "DNA_constraint_types.h" #include "DNA_mesh_types.h" #include "DNA_lattice_types.h" @@ -53,6 +52,7 @@ #include "BKE_armature.h" #include "BKE_action.h" +#include "BKE_anim.h" #include "BKE_blender.h" #include "BKE_constraint.h" #include "BKE_curve.h" @@ -61,6 +61,7 @@ #include "BKE_DerivedMesh.h" #include "BKE_displist.h" #include "BKE_global.h" +#include "BKE_idprop.h" #include "BKE_library.h" #include "BKE_lattice.h" #include "BKE_main.h" @@ -94,43 +95,25 @@ bArmature *get_armature(Object *ob) return NULL; } -void free_boneChildren(Bone *bone) -{ - Bone *child; - - if (bone) { - - child=bone->childbase.first; - if (child){ - while (child){ - free_boneChildren (child); - child=child->next; - } - BLI_freelistN (&bone->childbase); - } - } -} - -void free_bones (bArmature *arm) +void free_bonelist (ListBase *lb) { Bone *bone; - /* Free children (if any) */ - bone= arm->bonebase.first; - if (bone) { - while (bone){ - free_boneChildren (bone); - bone=bone->next; + + for(bone=lb->first; bone; bone=bone->next) { + if(bone->prop) { + IDP_FreeProperty(bone->prop); + MEM_freeN(bone->prop); } + free_bonelist(&bone->childbase); } - - BLI_freelistN(&arm->bonebase); + BLI_freelistN(lb); } void free_armature(bArmature *arm) { if (arm) { - free_bones(arm); + free_bonelist(&arm->bonebase); /* free editmode data */ if (arm->edbo) { @@ -1622,6 +1605,367 @@ void armature_rebuild_pose(Object *ob, bArmature *arm) } +/* ********************** SPLINE IK SOLVER ******************* */ + +/* Temporary evaluation tree data used for Spline IK */ +typedef struct tSplineIK_Tree { + struct tSplineIK_Tree *next, *prev; + + int type; /* type of IK that this serves (CONSTRAINT_TYPE_KINEMATIC or ..._SPLINEIK) */ + + short free_points; /* free the point positions array */ + short chainlen; /* number of bones in the chain */ + + float *points; /* parametric positions for the joints along the curve */ + bPoseChannel **chain; /* chain of bones to affect using Spline IK (ordered from the tip) */ + + bPoseChannel *root; /* bone that is the root node of the chain */ + + bConstraint *con; /* constraint for this chain */ + bSplineIKConstraint *ikData; /* constraint settings for this chain */ +} tSplineIK_Tree; + +/* ----------- */ + +/* Tag the bones in the chain formed by the given bone for IK */ +static void splineik_init_tree_from_pchan(Object *ob, bPoseChannel *pchan_tip) +{ + bPoseChannel *pchan, *pchanRoot=NULL; + bPoseChannel *pchanChain[255]; + bConstraint *con = NULL; + bSplineIKConstraint *ikData = NULL; + float boneLengths[255], *jointPoints; + float totLength = 0.0f; + short free_joints = 0; + int segcount = 0; + + /* find the SplineIK constraint */ + for (con= pchan_tip->constraints.first; con; con= con->next) { + if (con->type == CONSTRAINT_TYPE_SPLINEIK) { + ikData= con->data; + + /* target can only be curve */ + if ((ikData->tar == NULL) || (ikData->tar->type != OB_CURVE)) + continue; + /* skip if disabled */ + if ( (con->enforce == 0.0f) || (con->flag & (CONSTRAINT_DISABLE|CONSTRAINT_OFF)) ) + continue; + + /* otherwise, constraint is ok... */ + break; + } + } + if (con == NULL) + return; + + /* find the root bone and the chain of bones from the root to the tip + * NOTE: this assumes that the bones are connected, but that may not be true... + */ + for (pchan= pchan_tip; pchan; pchan= pchan->parent) { + /* store this segment in the chain */ + pchanChain[segcount]= pchan; + + /* if performing rebinding, calculate the length of the bone */ + boneLengths[segcount]= pchan->bone->length; + totLength += boneLengths[segcount]; + + /* check if we've gotten the number of bones required yet (after incrementing the count first) + * NOTE: the 255 limit here is rather ugly, but the standard IK does this too! + */ + segcount++; + if ((segcount == ikData->chainlen) || (segcount > 255)) + break; + } + + if (segcount == 0) + return; + else + pchanRoot= pchanChain[segcount-1]; + + /* perform binding step if required */ + if ((ikData->flag & CONSTRAINT_SPLINEIK_BOUND) == 0) { + float segmentLen= (1.0f / (float)segcount); + int i; + + /* setup new empty array for the points list */ + if (ikData->points) + MEM_freeN(ikData->points); + // NOTE: just do chainlen+1 always for now, since we may get crashes otherwise + //ikData->numpoints= (ikData->flag & CONSTRAINT_SPLINEIK_NO_ROOT)? ikData->chainlen : ikData->chainlen+1; + ikData->numpoints= ikData->chainlen+1; + ikData->points= MEM_callocN(sizeof(float)*ikData->numpoints, "Spline IK Binding"); + + /* perform binding of the joints to parametric positions along the curve based + * proportion of the total length that each bone occupies + */ + for (i = 0; i < segcount; i++) { + if (i != 0) { + /* 'head' joints + * - 2 methods; the one chosen depends on whether we've got usable lengths + */ + if ((ikData->flag & CONSTRAINT_SPLINEIK_EVENSPLITS) || (totLength == 0.0f)) { + /* 1) equi-spaced joints */ + ikData->points[i]= segmentLen; + } + else { + /* 2) to find this point on the curve, we take a step from the previous joint + * a distance given by the proportion that this bone takes + */ + ikData->points[i]= ikData->points[i-1] - (boneLengths[i] / totLength); + } + } + else { + /* 'tip' of chain, special exception for the first joint */ + ikData->points[0]= 1.0f; + } + } + + /* spline has now been bound */ + ikData->flag |= CONSTRAINT_SPLINEIK_BOUND; + } + + /* apply corrections for sensitivity to scaling on a copy of the bind points, + * since it's easier to determine the positions of all the joints beforehand this way + */ + if ((ikData->flag & CONSTRAINT_SPLINEIK_SCALE_LIMITED) && (totLength != 0.0f)) { + Curve *cu= (Curve *)ikData->tar->data; + float splineLen, maxScale; + int i; + + /* make a copy of the points array, that we'll store in the tree + * - although we could just multiply the points on the fly, this approach means that + * we can introduce per-segment stretchiness later if it is necessary + */ + jointPoints= MEM_dupallocN(ikData->points); + free_joints= 1; + + /* get the current length of the curve */ + // NOTE: this is assumed to be correct even after the curve was resized + splineLen= cu->path->totdist; + + /* calculate the scale factor to multiply all the path values by so that the + * bone chain retains its current length, such that + * maxScale * splineLen = totLength + */ + maxScale = totLength / splineLen; + + /* apply scaling correction to all of the temporary points */ + for (i = 0; i < segcount; i++) + jointPoints[i] *= maxScale; + } + else { + /* just use the existing points array */ + jointPoints= ikData->points; + free_joints= 0; + } + + /* make a new Spline-IK chain, and store it in the IK chains */ + // TODO: we should check if there is already an IK chain on this, since that would take presidence... + { + /* make new tree */ + tSplineIK_Tree *tree= MEM_callocN(sizeof(tSplineIK_Tree), "SplineIK Tree"); + tree->type= CONSTRAINT_TYPE_SPLINEIK; + + tree->chainlen= segcount; + + /* copy over the array of links to bones in the chain (from tip to root) */ + tree->chain= MEM_callocN(sizeof(bPoseChannel*)*segcount, "SplineIK Chain"); + memcpy(tree->chain, pchanChain, sizeof(bPoseChannel*)*segcount); + + /* store reference to joint position array */ + tree->points= jointPoints; + tree->free_points= free_joints; + + /* store references to different parts of the chain */ + tree->root= pchanRoot; + tree->con= con; + tree->ikData= ikData; + + /* AND! link the tree to the root */ + BLI_addtail(&pchanRoot->iktree, tree); + } + + /* mark root channel having an IK tree */ + pchanRoot->flag |= POSE_IKSPLINE; +} + +/* Tag which bones are members of Spline IK chains */ +static void splineik_init_tree(Scene *scene, Object *ob, float ctime) +{ + bPoseChannel *pchan; + + /* find the tips of Spline IK chains, which are simply the bones which have been tagged as such */ + for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if (pchan->constflag & PCHAN_HAS_SPLINEIK) + splineik_init_tree_from_pchan(ob, pchan); + } +} + +/* ----------- */ + +/* Evaluate spline IK for a given bone */ +static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *ob, bPoseChannel *pchan, int index, float ctime) +{ + bSplineIKConstraint *ikData= tree->ikData; + float poseHead[3], poseTail[3], poseMat[4][4]; + float splineVec[3], scaleFac; + float rad, radius=1.0f; + float vec[4], dir[3]; + + /* firstly, calculate the bone matrix the standard way, since this is needed for roll control */ + where_is_pose_bone(scene, ob, pchan, ctime); + + VECCOPY(poseHead, pchan->pose_head); + VECCOPY(poseTail, pchan->pose_tail); + + /* step 1a: get xyz positions for the tail endpoint of the bone */ + if ( where_on_path(ikData->tar, tree->points[index], vec, dir, NULL, &rad) ) { + /* convert the position to pose-space, then store it */ + Mat4MulVecfl(ob->imat, vec); + VECCOPY(poseTail, vec); + + /* set the new radius */ + radius= rad; + } + + /* step 1b: get xyz positions for the head endpoint of the bone */ + /* firstly, calculate the position that the path suggests */ + if ( where_on_path(ikData->tar, tree->points[index+1], vec, dir, NULL, &rad) ) { + /* store the position, and convert it to pose space */ + Mat4MulVecfl(ob->imat, vec); + VECCOPY(poseHead, vec); + + /* set the new radius (it should be the average value) */ + radius = (radius+rad) / 2; + } + if ((ikData->flag & CONSTRAINT_SPLINEIK_NO_ROOT) && (pchan == tree->root)) + { + // this is the root bone, and it can be controlled however we like... + // TODO: how do we calculate the offset of the root, if we don't even know the binding? + VECCOPY(poseHead, pchan->pose_head); + } + + /* step 2: determine the implied transform from these endpoints + * - splineVec: the vector direction that the spline applies on the bone + * - scaleFac: the factor that the bone length is scaled by to get the desired amount + */ + VecSubf(splineVec, poseTail, poseHead); + scaleFac= VecLength(splineVec) / pchan->bone->length; + + /* step 3: compute the shortest rotation needed to map from the bone rotation to the current axis + * - this uses the same method as is used for the Damped Track Constraint (see the code there for details) + */ + { + float dmat[3][3], rmat[3][3], tmat[3][3]; + float raxis[3], rangle; + + /* compute the raw rotation matrix from the bone's current matrix by extracting only the + * orientation-relevant axes, and normalising them + */ + VECCOPY(rmat[0], pchan->pose_mat[0]); + VECCOPY(rmat[1], pchan->pose_mat[1]); + VECCOPY(rmat[2], pchan->pose_mat[2]); + Mat3Ortho(rmat); + + /* also, normalise the orientation imposed by the bone, now that we've extracted the scale factor */ + Normalize(splineVec); + + /* calculate smallest axis-angle rotation necessary for getting from the + * current orientation of the bone, to the spline-imposed direction + */ + Crossf(raxis, rmat[1], splineVec); + + rangle= Inpf(rmat[1], splineVec); + rangle= acos( MAX2(-1.0f, MIN2(1.0f, rangle)) ); + + /* construct rotation matrix from the axis-angle rotation found above + * - this call takes care to make sure that the axis provided is a unit vector first + */ + AxisAngleToMat3(raxis, rangle, dmat); + + /* combine these rotations so that the y-axis of the bone is now aligned as the spline dictates, + * while still maintaining roll control from the existing bone animation + */ + Mat3MulMat3(tmat, dmat, rmat); // m1, m3, m2 + Mat3Ortho(tmat); /* attempt to reduce shearing, though I doubt this'll really help too much now... */ + Mat4CpyMat3(poseMat, tmat); + } + + /* step 4: set the scaling factors for the axes */ + // TODO: include a no-scale option? + { + /* only multiply the y-axis by the scaling factor to get nice volume-preservation */ + VecMulf(poseMat[1], scaleFac); + + /* set the scaling factors of the x and z axes from... */ + switch (ikData->xzScaleMode) { + case CONSTRAINT_SPLINEIK_XZS_RADIUS: + { + /* radius of curve */ + VecMulf(poseMat[0], radius); + VecMulf(poseMat[2], radius); + } + break; + case CONSTRAINT_SPLINEIK_XZS_ORIGINAL: + { + /* original scales get used */ + float scale; + + /* x-axis scale */ + scale= VecLength(pchan->pose_mat[0]); + VecMulf(poseMat[0], scale); + /* z-axis scale */ + scale= VecLength(pchan->pose_mat[2]); + VecMulf(poseMat[2], scale); + } + break; + } + } + + /* step 5: set the location of the bone in the matrix */ + VECCOPY(poseMat[3], pchan->pose_head); + + /* finally, store the new transform */ + Mat4CpyMat4(pchan->pose_mat, poseMat); + VECCOPY(pchan->pose_head, poseHead); + VECCOPY(pchan->pose_tail, poseTail); + + /* done! */ + pchan->flag |= POSE_DONE; +} + +/* Evaluate the chain starting from the nominated bone */ +static void splineik_execute_tree(Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime) +{ + tSplineIK_Tree *tree; + + /* for each pose-tree, execute it if it is spline, otherwise just free it */ + for (tree= pchan_root->iktree.first; tree; tree= pchan_root->iktree.first) { + /* only evaluate if tagged for Spline IK */ + if (tree->type == CONSTRAINT_TYPE_SPLINEIK) { + int i; + + /* walk over each bone in the chain, calculating the effects of spline IK + * - the chain is traversed in the opposite order to storage order (i.e. parent to children) + * so that dependencies are correct + */ + for (i= tree->chainlen-1; i >= 0; i--) { + bPoseChannel *pchan= tree->chain[i]; + splineik_evaluate_bone(tree, scene, ob, pchan, i, ctime); + } + + // TODO: if another pass is needed to ensure the validity of the chain after blending, it should go here + + /* free the tree info specific to SplineIK trees now */ + if (tree->chain) MEM_freeN(tree->chain); + if (tree->free_points) MEM_freeN(tree->points); + } + + /* free this tree */ + BLI_freelinkN(&pchan_root->iktree, tree); + } +} + /* ********************** THE POSE SOLVER ******************* */ @@ -1647,7 +1991,7 @@ void chan_calc_mat(bPoseChannel *chan) } else { /* quats are normalised before use to eliminate scaling issues */ - NormalQuat(chan->quat); + NormalQuat(chan->quat); // TODO: do this with local vars only! QuatToMat3(chan->quat, rmat); } @@ -1926,21 +2270,31 @@ void where_is_pose (Scene *scene, Object *ob) } else { Mat4Invert(ob->imat, ob->obmat); // imat is needed - + /* 1. clear flags */ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - pchan->flag &= ~(POSE_DONE|POSE_CHAIN|POSE_IKTREE); + pchan->flag &= ~(POSE_DONE|POSE_CHAIN|POSE_IKTREE|POSE_IKSPLINE); } - /* 2. construct the IK tree */ + + /* 2a. construct the IK tree (standard IK) */ BIK_initialize_tree(scene, ob, ctime); - + + /* 2b. construct the Spline IK trees + * - this is not integrated as an IK plugin, since it should be able + * to function in conjunction with standard IK + */ + splineik_init_tree(scene, ob, ctime); + /* 3. the main loop, channels are already hierarchical sorted from root to children */ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - - /* 4. if we find an IK root, we handle it separated */ + /* 4a. if we find an IK root, we handle it separated */ if(pchan->flag & POSE_IKTREE) { BIK_execute_tree(scene, ob, pchan, ctime); } + /* 4b. if we find a Spline IK root, we handle it separated too */ + else if(pchan->flag & POSE_IKSPLINE) { + splineik_execute_tree(scene, ob, pchan, ctime); + } /* 5. otherwise just call the normal solver */ else if(!(pchan->flag & POSE_DONE)) { where_is_pose_bone(scene, ob, pchan, ctime); diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 0abe5592da3..a803f14b664 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -536,6 +536,9 @@ static int read_undosave(bContext *C, UndoElem *uel) char scestr[FILE_MAXDIR+FILE_MAXFILE]; int success=0, fileflags; + /* This is needed so undoing/redoing doesnt crash with threaded previews going */ + WM_jobs_stop_all(CTX_wm_manager(C)); + strcpy(scestr, G.sce); /* temporal store */ fileflags= G.fileflags; G.fileflags |= G_FILE_NO_UI; diff --git a/source/blender/blenkernel/intern/booleanops.c b/source/blender/blenkernel/intern/booleanops.c index 76355045186..6b31eea52b7 100644 --- a/source/blender/blenkernel/intern/booleanops.c +++ b/source/blender/blenkernel/intern/booleanops.c @@ -528,8 +528,8 @@ DerivedMesh *NewBooleanDerivedMesh_intern( CSG_FreeVertexDescriptor(&vd_o); CSG_FreeFaceDescriptor(&fd_o); } -// else -// XXX error("Unknown internal error in boolean"); + else + printf("Unknown internal error in boolean"); CSG_FreeBooleanOperation(bool_op); diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index af8fed15efe..771f7d6ecbc 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -1226,14 +1226,14 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr QuatToMat4(quat, totmat); } - + if (data->followflag & FOLLOWPATH_RADIUS) { float tmat[4][4], rmat[4][4]; Mat4Scale(tmat, radius); Mat4MulMat4(rmat, totmat, tmat); Mat4CpyMat4(totmat, rmat); } - + VECCOPY(totmat[3], vec); Mat4MulSerie(ct->matrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL); @@ -1267,7 +1267,7 @@ static void followpath_evaluate (bConstraint *con, bConstraintOb *cob, ListBase /* un-apply scaling caused by path */ if ((data->followflag & FOLLOWPATH_RADIUS)==0) { /* XXX - assume that scale correction means that radius will have some scale error in it - Campbell */ float obsize[3]; - + Mat4ToSize(cob->matrix, obsize); if (obsize[0]) VecMulf(cob->matrix[0], size[0] / obsize[0]); @@ -2181,7 +2181,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase * Projf(vec2, vec, cob->matrix[1]); VecSubf(totmat[2], vec, vec2); Normalize(totmat[2]); - + /* the y axis is fixed */ totmat[1][0] = cob->matrix[1][0]; totmat[1][1] = cob->matrix[1][1]; @@ -3329,7 +3329,206 @@ static bConstraintTypeInfo CTI_SHRINKWRAP = { shrinkwrap_evaluate /* evaluate */ }; +/* --------- Damped Track ---------- */ + +static void damptrack_new_data (void *cdata) +{ + bDampTrackConstraint *data= (bDampTrackConstraint *)cdata; + + data->trackflag = TRACK_Y; +} + +static int damptrack_get_tars (bConstraint *con, ListBase *list) +{ + if (con && list) { + bDampTrackConstraint *data= con->data; + bConstraintTarget *ct; + + /* the following macro is used for all standard single-target constraints */ + SINGLETARGET_GET_TARS(con, data->tar, data->subtarget, ct, list) + + return 1; + } + + return 0; +} + +static void damptrack_flush_tars (bConstraint *con, ListBase *list, short nocopy) +{ + if (con && list) { + bDampTrackConstraint *data= con->data; + bConstraintTarget *ct= list->first; + + /* the following macro is used for all standard single-target constraints */ + SINGLETARGET_FLUSH_TARS(con, data->tar, data->subtarget, ct, list, nocopy) + } +} + +/* array of direction vectors for the tracking flags */ +static const float track_dir_vecs[6][3] = { + {+1,0,0}, {0,+1,0}, {0,0,+1}, /* TRACK_X, TRACK_Y, TRACK_Z */ + {-1,0,0}, {0,-1,0}, {0,0,-1} /* TRACK_NX, TRACK_NY, TRACK_NZ */ +}; + +static void damptrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets) +{ + bDampTrackConstraint *data= con->data; + bConstraintTarget *ct= targets->first; + + if (VALID_CONS_TARGET(ct)) { + float obvec[3], tarvec[3], obloc[3]; + float raxis[3], rangle; + float rmat[3][3], tmat[4][4]; + + /* find the (unit) direction that the axis we're interested in currently points + * - Mat4Mul3Vecfl() only takes the 3x3 (rotation+scaling) components of the 4x4 matrix + * - the normalisation step at the end should take care of any unwanted scaling + * left over in the 3x3 matrix we used + */ + VECCOPY(obvec, track_dir_vecs[data->trackflag]); + Mat4Mul3Vecfl(cob->matrix, obvec); + + if (Normalize(obvec) == 0.0f) { + /* exceptional case - just use the track vector as appropriate */ + VECCOPY(obvec, track_dir_vecs[data->trackflag]); + } + + /* find the (unit) direction vector going from the owner to the target */ + VECCOPY(obloc, cob->matrix[3]); + VecSubf(tarvec, ct->matrix[3], obloc); + + if (Normalize(tarvec) == 0.0f) { + /* the target is sitting on the owner, so just make them use the same direction vectors */ + // FIXME: or would it be better to use the pure direction vector? + VECCOPY(tarvec, obvec); + //VECCOPY(tarvec, track_dir_vecs[data->trackflag]); + } + + /* determine the axis-angle rotation, which represents the smallest possible rotation + * between the two rotation vectors (i.e. the 'damping' referred to in the name) + * - we take this to be the rotation around the normal axis/vector to the plane defined + * by the current and destination vectors, which will 'map' the current axis to the + * destination vector + * - the min/max wrappers around (obvec . tarvec) result (stored temporarily in rangle) + * are used to ensure that the smallest angle is chosen + */ + Crossf(raxis, obvec, tarvec); + + rangle= Inpf(obvec, tarvec); + rangle= acos( MAX2(-1.0f, MIN2(1.0f, rangle)) ); + + /* construct rotation matrix from the axis-angle rotation found above + * - this call takes care to make sure that the axis provided is a unit vector first + */ + AxisAngleToMat3(raxis, rangle, rmat); + + /* rotate the owner in the way defined by this rotation matrix, then reapply the location since + * we may have destroyed that in the process of multiplying the matrix + */ + Mat4One(tmat); + Mat4MulMat34(tmat, rmat, cob->matrix); // m1, m3, m2 + + Mat4CpyMat4(cob->matrix, tmat); + VECCOPY(cob->matrix[3], obloc); + } +} +static bConstraintTypeInfo CTI_DAMPTRACK = { + CONSTRAINT_TYPE_DAMPTRACK, /* type */ + sizeof(bDampTrackConstraint), /* size */ + "Damped Track", /* name */ + "bDampTrackConstraint", /* struct name */ + NULL, /* free data */ + NULL, /* relink data */ + NULL, /* copy data */ + damptrack_new_data, /* new data */ + damptrack_get_tars, /* get constraint targets */ + damptrack_flush_tars, /* flush constraint targets */ + default_get_tarmat, /* get target matrix */ + damptrack_evaluate /* evaluate */ +}; + +/* ----------- Spline IK ------------ */ + +static void splineik_free (bConstraint *con) +{ + bSplineIKConstraint *data= con->data; + + /* binding array */ + if (data->points) + MEM_freeN(data->points); +} + +static void splineik_copy (bConstraint *con, bConstraint *srccon) +{ + bSplineIKConstraint *src= srccon->data; + bSplineIKConstraint *dst= con->data; + + /* copy the binding array */ + dst->points= MEM_dupallocN(src->points); +} + +static int splineik_get_tars (bConstraint *con, ListBase *list) +{ + if (con && list) { + bSplineIKConstraint *data= con->data; + bConstraintTarget *ct; + + /* standard target-getting macro for single-target constraints without subtargets */ + SINGLETARGETNS_GET_TARS(con, data->tar, ct, list) + + return 1; + } + + return 0; +} + +static void splineik_flush_tars (bConstraint *con, ListBase *list, short nocopy) +{ + if (con && list) { + bSplineIKConstraint *data= con->data; + bConstraintTarget *ct= list->first; + + /* the following macro is used for all standard single-target constraints */ + SINGLETARGETNS_FLUSH_TARS(con, data->tar, ct, list, nocopy) + } +} + +static void splineik_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float ctime) +{ + if (VALID_CONS_TARGET(ct)) { + Curve *cu= ct->tar->data; + + /* note: when creating constraints that follow path, the curve gets the CU_PATH set now, + * currently for paths to work it needs to go through the bevlist/displist system (ton) + */ + + /* only happens on reload file, but violates depsgraph still... fix! */ + if (cu->path==NULL || cu->path->data==NULL) + makeDispListCurveTypes(cob->scene, ct->tar, 0); + } + + /* technically, this isn't really needed for evaluation, but we don't know what else + * might end up calling this... + */ + if (ct) + Mat4One(ct->matrix); +} + +static bConstraintTypeInfo CTI_SPLINEIK = { + CONSTRAINT_TYPE_SPLINEIK, /* type */ + sizeof(bSplineIKConstraint), /* size */ + "Spline IK", /* name */ + "bSplineIKConstraint", /* struct name */ + splineik_free, /* free data */ + NULL, /* relink data */ + splineik_copy, /* copy data */ + NULL, /* new data */ + splineik_get_tars, /* get constraint targets */ + splineik_flush_tars, /* flush constraint targets */ + splineik_get_tarmat, /* get target matrix */ + NULL /* evaluate - solved as separate loop */ +}; /* ************************* Constraints Type-Info *************************** */ /* All of the constraints api functions use bConstraintTypeInfo structs to carry out @@ -3337,7 +3536,7 @@ static bConstraintTypeInfo CTI_SHRINKWRAP = { */ /* These globals only ever get directly accessed in this file */ -static bConstraintTypeInfo *constraintsTypeInfo[NUM_CONSTRAINT_TYPES+1]; +static bConstraintTypeInfo *constraintsTypeInfo[NUM_CONSTRAINT_TYPES]; static short CTI_INIT= 1; /* when non-zero, the list needs to be updated */ /* This function only gets called when CTI_INIT is non-zero */ @@ -3363,6 +3562,8 @@ static void constraints_init_typeinfo () { constraintsTypeInfo[18]= &CTI_CLAMPTO; /* ClampTo Constraint */ constraintsTypeInfo[19]= &CTI_TRANSFORM; /* Transformation Constraint */ constraintsTypeInfo[20]= &CTI_SHRINKWRAP; /* Shrinkwrap Constraint */ + constraintsTypeInfo[21]= &CTI_DAMPTRACK; /* Damped TrackTo Constraint */ + constraintsTypeInfo[22]= &CTI_SPLINEIK; /* Spline IK Constraint */ } /* This function should be used for getting the appropriate type-info when only @@ -3378,7 +3579,7 @@ bConstraintTypeInfo *get_constraint_typeinfo (int type) /* only return for valid types */ if ( (type >= CONSTRAINT_TYPE_NULL) && - (type <= NUM_CONSTRAINT_TYPES ) ) + (type < NUM_CONSTRAINT_TYPES ) ) { /* there shouldn't be any segfaults here... */ return constraintsTypeInfo[type]; diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c index d5cc31d918a..7f2872c0797 100644 --- a/source/blender/blenkernel/intern/context.c +++ b/source/blender/blenkernel/intern/context.c @@ -71,6 +71,7 @@ struct bContext { int recursion; int py_init; /* true if python is initialized */ + void *py_context; } data; /* data evaluation */ @@ -175,6 +176,15 @@ void CTX_py_init_set(bContext *C, int value) C->data.py_init= value; } +void *CTX_py_dict_get(bContext *C) +{ + return C->data.py_context; +} +void CTX_py_dict_set(bContext *C, void *value) +{ + C->data.py_context= value; +} + /* window manager context */ wmWindowManager *CTX_wm_manager(const bContext *C) @@ -401,6 +411,10 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res memset(result, 0, sizeof(bContextDataResult)); + if(CTX_py_dict_get(C)) { + return bpy_context_get(C, member, result); + } + /* we check recursion to ensure that we do not get infinite * loops requesting data from ourselfs in a context callback */ if(!done && recursion < 1 && C->wm.store) { diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index f31f4cd9753..1410e5d29c2 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -145,6 +145,7 @@ Curve *add_curve(char *name, int type) cu->fsize= 1.0; cu->ulheight = 0.05; cu->texflag= CU_AUTOSPACE; + cu->twist_mode= CU_TWIST_MINIMUM; // XXX: this one seems to be the best one in most cases, at least for curve deform... cu->bb= unit_boundbox(); @@ -2906,7 +2907,7 @@ void curve_applyVertexCos(Curve *cu, ListBase *lb, float (*vertexCos)[3]) float (*curve_getKeyVertexCos(Curve *cu, ListBase *lb, float *key))[3] { - int i, numVerts; + int i, numVerts = count_curveverts(lb); float *co, (*cos)[3] = MEM_mallocN(sizeof(*cos)*numVerts, "cu_vcos"); Nurb *nu; diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 9ad004cff5f..8c3176ee362 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -111,7 +111,7 @@ bDeformGroup *get_named_vertexgroup (Object *ob, char *name) return NULL; } -int get_named_vertexgroup_num (Object *ob, char *name) +int get_named_vertexgroup_num (Object *ob, const char *name) { /* Return the location of the named deform group within the list of * deform groups. This function is a combination of get_defgroup_num and diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index d60a26e8feb..36568ee5667 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -399,7 +399,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O if (ct->subtarget[0]) dag_add_relation(dag,node3,node, DAG_RL_OB_DATA|DAG_RL_DATA_DATA, cti->name); - else if(ELEM(con->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO)) + else if(ELEM3(con->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_SPLINEIK)) dag_add_relation(dag,node3,node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, cti->name); else dag_add_relation(dag,node3,node, DAG_RL_OB_DATA, cti->name); @@ -2407,7 +2407,7 @@ void DAG_pose_sort(Object *ob) bPoseChannel *target= get_pose_channel(ob->pose, ct->subtarget); if (target) { node2= dag_get_node(dag, target); - dag_add_relation(dag, node2, node, 0, "IK Constraint"); + dag_add_relation(dag, node2, node, 0, "Pose Constraint"); if (con->type==CONSTRAINT_TYPE_KINEMATIC) { bKinematicConstraint *data = (bKinematicConstraint *)con->data; diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 5f6d7bd6272..0c171b98d23 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -715,8 +715,13 @@ static void fcm_noise_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, floa FMod_Noise *data= (FMod_Noise *)fcm->data; float noise; - noise = BLI_turbulence(data->size, evaltime, data->phase, 0.f, data->depth); + /* generate noise using good ol' Blender Noise + * - 0.1 is passed as the 'z' value, otherwise evaluation fails for size = phase = 1 + * with evaltime being an integer (which happens when evaluating on frame by frame basis) + */ + noise = BLI_turbulence(data->size, evaltime, data->phase, 0.1f, data->depth); + /* combine the noise with existing motion data */ switch (data->modification) { case FCM_NOISE_MODIF_ADD: *cvalue= *cvalue + noise * data->strength; diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 6717f5560be..5dc26143533 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -601,8 +601,9 @@ static char *camera_adrcodes_to_paths (int adrcode, int *array_index) return "ortho_scale"; else return "lens"; +#else // XXX lazy hack for now... + return "lens"; #endif // XXX this cannot be resolved easily - break; case CAM_STA: return "clip_start"; diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index aff056ffebc..8e3a6174c55 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -86,7 +86,7 @@ #include "BKE_anim.h" #include "BKE_action.h" #include "BKE_bmesh.h" -// XXX #include "BKE_booleanops.h" +#include "BKE_booleanops.h" #include "BKE_cloth.h" #include "BKE_collision.h" #include "BKE_cdderivedmesh.h" @@ -118,18 +118,12 @@ #include "BKE_shrinkwrap.h" #include "BKE_simple_deform.h" -//XXX #include "LOD_DependKludge.h" #include "LOD_decimation.h" -// XXX -static struct DerivedMesh *NewBooleanDerivedMesh() {return NULL;} - #include "CCGSubSurf.h" #include "RE_shader_ext.h" -//XXX #include "BIF_meshlaplacian.h" - /* Utility */ static int is_last_displist(Object *ob) @@ -2770,10 +2764,11 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob, { int i; int texmapping = dmd->texmapping; + float mapob_imat[4][4]; if(texmapping == MOD_DISP_MAP_OBJECT) { if(dmd->map_object) - Mat4Invert(dmd->map_object->imat, dmd->map_object->obmat); + Mat4Invert(mapob_imat, dmd->map_object->obmat); else /* if there is no map object, default to local */ texmapping = MOD_DISP_MAP_LOCAL; } @@ -2844,7 +2839,7 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob, case MOD_DISP_MAP_OBJECT: VECCOPY(*texco, *co); Mat4MulVecfl(ob->obmat, *texco); - Mat4MulVecfl(dmd->map_object->imat, *texco); + Mat4MulVecfl(mapob_imat, *texco); break; } } @@ -3330,11 +3325,11 @@ static DerivedMesh *decimateModifier_applyModifier( ModifierData *md, Object *ob, DerivedMesh *derivedData, int useRenderParams, int isFinalCalc) { - // DecimateModifierData *dmd = (DecimateModifierData*) md; + DecimateModifierData *dmd = (DecimateModifierData*) md; DerivedMesh *dm = derivedData, *result = NULL; MVert *mvert; MFace *mface; - // LOD_Decimation_Info lod; + LOD_Decimation_Info lod; int totvert, totface; int a, numTris; @@ -3356,8 +3351,6 @@ static DerivedMesh *decimateModifier_applyModifier( goto exit; } - // XXX -#if 0 lod.vertex_buffer= MEM_mallocN(3*sizeof(float)*totvert, "vertices"); lod.vertex_normal_buffer= MEM_mallocN(3*sizeof(float)*totvert, "normals"); lod.triangle_index_buffer= MEM_mallocN(3*sizeof(int)*numTris, "trias"); @@ -3402,11 +3395,11 @@ static DerivedMesh *decimateModifier_applyModifier( } if(lod.vertex_num>2) { - result = CDDM_new(lod.vertex_num, 0, lod.face_num); + result = CDDM_new(lod.vertex_num, 0, lod.face_num, 0, 0); dmd->faceCount = lod.face_num; } else - result = CDDM_new(lod.vertex_num, 0, 0); + result = CDDM_new(lod.vertex_num, 0, 0, 0, 0); mvert = CDDM_get_verts(result); for(a=0; a<lod.vertex_num; a++) { @@ -3430,6 +3423,7 @@ static DerivedMesh *decimateModifier_applyModifier( CDDM_calc_edges(result); CDDM_calc_normals(result); + CDDM_tessfaces_to_faces(result); } else modifier_setError(md, "Out of memory."); @@ -3442,10 +3436,6 @@ static DerivedMesh *decimateModifier_applyModifier( MEM_freeN(lod.vertex_buffer); MEM_freeN(lod.vertex_normal_buffer); MEM_freeN(lod.triangle_index_buffer); -#else - modifier_setError(md, "Modifier not working yet in 2.5."); - goto exit; -#endif exit: return result; @@ -5582,12 +5572,6 @@ static CustomDataMask booleanModifier_requiredDataMask(Object *ob, ModifierData dataMask |= (1 << CD_MDEFORMVERT); - /* particles only need this if they are after a non deform modifier, and - * the modifier stack will only create them in that case. */ -// dataMask |= CD_MASK_ORIGSPACE; - -// dataMask |= CD_MASK_ORCO; - return dataMask; } @@ -7061,7 +7045,8 @@ static void meshdeformModifier_do( float (*vertexCos)[3], int numVerts) { MeshDeformModifierData *mmd = (MeshDeformModifierData*) md; - Mesh *me= ob->data; + Mesh *me= (mmd->object)? mmd->object->data: NULL; + EditMesh *em = (me)? BKE_mesh_get_editmesh(me): NULL; BMEditMesh *bem = me->edit_btmesh; DerivedMesh *tmpdm, *cagedm; MDeformVert *dvert = NULL; @@ -7071,7 +7056,7 @@ static void meshdeformModifier_do( float weight, totweight, fac, co[3], *weights, (*dco)[3], (*bindcos)[3]; int a, b, totvert, totcagevert, defgrp_index; - if(!mmd->object || (!mmd->bindcos && !mmd->needbind)) + if(!mmd->object || (!mmd->bindcos && !mmd->bindfunc)) return; /* get cage derivedmesh */ @@ -7108,7 +7093,7 @@ static void meshdeformModifier_do( /* progress bar redraw can make this recursive .. */ if(!recursive) { recursive = 1; - //XXX harmonic_coordinates_bind(mmd, vertexCos, numVerts, cagemat); + mmd->bindfunc(md->scene, mmd, (float*)vertexCos, numVerts, cagemat); recursive = 0; } } diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c index 07b86b8251c..11dd5a69dd5 100644 --- a/source/blender/blenkernel/intern/multires.c +++ b/source/blender/blenkernel/intern/multires.c @@ -101,7 +101,7 @@ void multiresModifier_join(Object *ob) /* First find the highest level of subdivision */ base = FIRSTBASE; while(base) { - if(TESTBASELIB_BGMODE(v3d, base) && base->object->type==OB_MESH) { + if(TESTBASELIB_BGMODE(v3d, scene, base) && base->object->type==OB_MESH) { ModifierData *md; for(md = base->object->modifiers.first; md; md = md->next) { if(md->type == eModifierType_Multires) { @@ -124,7 +124,7 @@ void multiresModifier_join(Object *ob) /* Subdivide all the displacements to the highest level */ base = FIRSTBASE; while(base) { - if(TESTBASELIB_BGMODE(v3d, base) && base->object->type==OB_MESH) { + if(TESTBASELIB_BGMODE(v3d, scene, base) && base->object->type==OB_MESH) { ModifierData *md = NULL; MultiresModifierData *mmd = NULL; diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 7e9cf19670e..b9eb6d6d6d2 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -35,20 +35,21 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" #include "DNA_boid_types.h" +#include "DNA_curve_types.h" #include "DNA_group_types.h" -#include "DNA_particle_types.h" +#include "DNA_ipo_types.h" // XXX old animation system stuff to remove! +#include "DNA_key_types.h" +#include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" #include "DNA_object_force.h" -#include "DNA_texture_types.h" -#include "DNA_material_types.h" #include "DNA_object_types.h" -#include "DNA_curve_types.h" -#include "DNA_key_types.h" -#include "DNA_ipo_types.h" // XXX old animation system stuff to remove! +#include "DNA_particle_types.h" +#include "DNA_scene_types.h" +#include "DNA_smoke_types.h" +#include "DNA_texture_types.h" #include "BLI_arithb.h" #include "BLI_blenlib.h" @@ -2276,7 +2277,7 @@ static int psys_threads_init_path(ParticleThread *threads, Scene *scene, float c /* Object *ob= ctx->sim.ob; */ ParticleSystem *psys= ctx->sim.psys; ParticleSettings *part = psys->part; - ParticleEditSettings *pset = &scene->toolsettings->particle; +/* ParticleEditSettings *pset = &scene->toolsettings->particle; */ int totparent=0, between=0; int steps = (int)pow(2.0, (double)part->draw_step); int totchild = psys->totchild; @@ -3309,10 +3310,20 @@ void object_remove_particle_system(Scene *scene, Object *ob) { ParticleSystem *psys = psys_get_current(ob); ParticleSystemModifierData *psmd; + ModifierData *md; if(!psys) return; + /* clear all other appearances of this pointer (like on smoke flow modifier) */ + if((md = modifiers_findByType(ob, eModifierType_Smoke))) + { + SmokeModifierData *smd = (SmokeModifierData *)md; + if((smd->type == MOD_SMOKE_TYPE_FLOW) && smd->flow && smd->flow->psys) + if(smd->flow->psys == psys) + smd->flow->psys = NULL; + } + /* clear modifier */ psmd= psys_get_modifier(ob, psys); BLI_remlink(&ob->modifiers, psmd); @@ -3324,6 +3335,8 @@ void object_remove_particle_system(Scene *scene, Object *ob) if(ob->particlesystem.first) ((ParticleSystem *) ob->particlesystem.first)->flag |= PSYS_CURRENT; + else + ob->mode &= ~OB_MODE_PARTICLE_EDIT; DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); diff --git a/source/blender/blenkernel/intern/sequence.c b/source/blender/blenkernel/intern/sequence.c index 48eb58687da..1ab085f5fa8 100644 --- a/source/blender/blenkernel/intern/sequence.c +++ b/source/blender/blenkernel/intern/sequence.c @@ -1156,7 +1156,7 @@ static int seq_proxy_get_fname(Scene *scene, Sequence * seq, int cfra, char * na return TRUE; } - /* generate a seperate proxy directory for each preview size */ + /* generate a separate proxy directory for each preview size */ if (seq->type == SEQ_IMAGE) { StripElem * se = give_stripelem(seq, cfra); @@ -1285,7 +1285,7 @@ static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int re IMB_scalefastImBuf(ibuf, (short)rectx, (short)recty); } - /* quality is fixed, otherwise one has to generate seperate + /* quality is fixed, otherwise one has to generate separate directories for every quality... depth = 32 is intentionally left in, otherwise ALPHA channels @@ -3425,7 +3425,7 @@ static int shuffle_seq_time_offset_test(ListBase * seqbasep, char dir) for(seq= seqbasep->first; seq; seq= seq->next) { if(seq->tmp) { for(seq_other= seqbasep->first; seq_other; seq_other= seq_other->next) { - if(seq_overlap(seq, seq_other)) { + if(!seq_other->tmp && seq_overlap(seq, seq_other)) { if(dir=='L') { offset= MIN2(offset, seq_other->startdisp - seq->enddisp); } diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index 194200e0eff..da2cb8c5504 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -823,7 +823,7 @@ static void smoke_calc_domain(Scene *scene, Object *ob, SmokeModifierData *smd) // we got nice flow object SmokeFlowSettings *sfs = smd2->flow; - if(sfs->psys && sfs->psys->part && sfs->psys->part->type==PART_EMITTER) // is particle system selected + if(sfs && sfs->psys && sfs->psys->part && sfs->psys->part->type==PART_EMITTER) // is particle system selected { ParticleSystem *psys = sfs->psys; ParticleSettings *part=psys->part; diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index be68ebbdaed..94b9cfcdf53 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -93,12 +93,13 @@ static int (*SB_localInterruptCallBack)(void) = NULL; /* ********** soft body engine ******* */ +typedef enum {SB_EDGE=1,SB_BEND=2,SB_STIFFQUAD=3} type_spring; typedef struct BodySpring { int v1, v2; - float len, strength, cf,load; + float len,cf,load; float ext_force[3]; /* edges colliding and sailing */ - short order; + type_spring springtype; short flag; } BodySpring; @@ -614,13 +615,11 @@ static void add_mesh_quad_diag_springs(Object *ob) if(mface->v4) { bs->v1= mface->v1; bs->v2= mface->v3; - bs->strength= s_shear; - bs->order =2; + bs->springtype =SB_STIFFQUAD; bs++; bs->v1= mface->v2; bs->v2= mface->v4; - bs->strength= s_shear; - bs->order =2; + bs->springtype =SB_STIFFQUAD; bs++; } @@ -671,8 +670,7 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad if (addsprings){ bs3->v1= v0; bs3->v2= bs2->v1; - bs3->strength= stiffness; - bs3->order=2; + bs3->springtype =SB_BEND; bs3++; } } @@ -681,8 +679,7 @@ static void add_2nd_order_roller(Object *ob,float stiffness,int *counter, int ad if (addsprings){ bs3->v1= v0; bs3->v2= bs2->v2; - bs3->strength= stiffness; - bs3->order=2; + bs3->springtype =SB_BEND; bs3++; } @@ -786,7 +783,7 @@ static void calculate_collision_balls(Object *ob) /* first estimation based on attached */ for(b=bp->nofsprings;b>0;b--){ bs = sb->bspring + bp->springs[b-1]; - if (bs->order == 1){ + if (bs->springtype == SB_EDGE){ akku += bs->len; akku_count++, min = MIN2(bs->len,min); @@ -1530,7 +1527,7 @@ static void _scan_for_ext_spring_forces(Scene *scene, Object *ob, float timenow, feedback[0]=feedback[1]=feedback[2]=0.0f; bs->flag &= ~BSF_INTERSECT; - if (bs->order ==1){ + if (bs->springtype == SB_EDGE){ /* +++ springs colliding */ if (ob->softflag & OB_SB_EDGECOLL){ if ( sb_detect_edge_collisionCached (sb->bpoint[bs->v1].pos , sb->bpoint[bs->v2].pos, @@ -2078,7 +2075,21 @@ static void sb_spring_force(Object *ob,int bpi,BodySpring *bs,float iks,float fo kw = (bp1->springweight+bp2->springweight)/2.0f; kw = kw * kw; kw = kw * kw; - forcefactor *= bs->strength * kw; + switch (bs->springtype){ + case SB_EDGE: + forcefactor *= kw; + break; + case SB_BEND: + forcefactor *=sb->secondspring*kw; + break; + case SB_STIFFQUAD: + forcefactor *=sb->shearstiff*sb->shearstiff* kw; + break; + default: + break; + } + + Vec3PlusStVec(bp1->force,(bs->len - distance)*forcefactor,dir); /* do bp1 <--> bp2 viscous */ @@ -3276,8 +3287,7 @@ static void mesh_to_softbody(Scene *scene, Object *ob) for(a=me->totedge; a>0; a--, medge++, bs++) { bs->v1= medge->v1; bs->v2= medge->v2; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; } @@ -3355,24 +3365,21 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * if(w) { bs->v1 = bpc; bs->v2 = bpc-dw; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen((bp-dw)->vec, bp->vec,ob); bs++; } if(v) { bs->v1 = bpc; bs->v2 = bpc-dv; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen((bp-dv)->vec, bp->vec,ob); bs++; } if(u) { bs->v1 = bpuc; bs->v2 = bpc; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen((bpu)->vec, bp->vec,ob); bs++; } @@ -3383,16 +3390,14 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * if( v && u ) { bs->v1 = bpc; bs->v2 = bpc-dw-dv-1; - bs->strength= 1.0; - bs->order=2; + bs->springtype=SB_BEND; bs->len= globallen((bp-dw-dv-1)->vec, bp->vec,ob); bs++; } if( (v < lt->pntsv-1) && (u) ) { bs->v1 = bpc; bs->v2 = bpc-dw+dv-1; - bs->strength= 1.0; - bs->order=2; + bs->springtype=SB_BEND; bs->len= globallen((bp-dw+dv-1)->vec, bp->vec,ob); bs++; } @@ -3402,16 +3407,14 @@ static void makelatticesprings(Lattice *lt, BodySpring *bs, int dostiff,Object * if( v && u ) { bs->v1 = bpc; bs->v2 = bpc+dw-dv-1; - bs->strength= 1.0; - bs->order=2; + bs->springtype=SB_BEND; bs->len= globallen((bp+dw-dv-1)->vec, bp->vec,ob); bs++; } if( (v < lt->pntsv-1) && (u) ) { bs->v1 = bpc; bs->v2 = bpc+dw+dv-1; - bs->strength= 1.0; - bs->order=2; + bs->springtype=SB_BEND; bs->len= globallen((bp+dw+dv-1)->vec, bp->vec,ob); bs++; } @@ -3521,22 +3524,19 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) if(a>0) { bs->v1= curindex-1; bs->v2= curindex; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen( (bezt-1)->vec[2], bezt->vec[0], ob ); bs++; } bs->v1= curindex; bs->v2= curindex+1; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen( bezt->vec[0], bezt->vec[1], ob ); bs++; - + bs->v1= curindex+1; bs->v2= curindex+2; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen( bezt->vec[1], bezt->vec[2], ob ); bs++; } @@ -3552,8 +3552,7 @@ static void curve_surf_to_softbody(Scene *scene, Object *ob) if(totspring && a>0) { bs->v1= curindex-1; bs->v2= curindex; - bs->strength= 1.0; - bs->order=1; + bs->springtype=SB_EDGE; bs->len= globallen( (bpnt-1)->vec, bpnt->vec , ob ); bs++; } @@ -3770,7 +3769,15 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) { /* the simulator */ float forcetime; - double sct,sst=PIL_check_seconds_timer(); + double sct,sst; + + + sst=PIL_check_seconds_timer(); + /* Integration back in time is possible in theory, but pretty useless here. + So we refuse to do so. Since we do not know anything about 'outside' canges + especially colliders we refuse to go more than 10 frames. + */ + if(dtime < 0 || dtime > 10.5f) return; ccd_update_deflector_hash(scene, ob, sb->scratch->colliderhash); @@ -3785,8 +3792,8 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) /* special case of 2nd order Runge-Kutta type AKA Heun */ int mid_flags=0; float err = 0; - float forcetimemax = 1.0f; - float forcetimemin = 0.001f; + float forcetimemax = 1.0f; /* set defaults guess we shall do one frame */ + float forcetimemin = 0.01f; /* set defaults guess 1/100 is tight enough */ float timedone =0.0; /* how far did we get without violating error condition */ /* loops = counter for emergency brake * we don't want to lock up the system if physics fail @@ -3794,13 +3801,12 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) int loops =0 ; SoftHeunTol = sb->rklimit; /* humm .. this should be calculated from sb parameters and sizes */ - if (sb->minloops > 0) forcetimemax = 1.0f / sb->minloops; - - if (sb->maxloops > 0) forcetimemin = 1.0f / sb->maxloops; + /* adjust loop limits */ + if (sb->minloops > 0) forcetimemax = dtime / sb->minloops; + if (sb->maxloops > 0) forcetimemin = dtime / sb->maxloops; if(sb->solver_ID>0) mid_flags |= MID_PRESERVE; - //forcetime = dtime; /* hope for integrating in one step */ forcetime =forcetimemax; /* hope for integrating in one step */ while ( (ABS(timedone) < ABS(dtime)) && (loops < 2000) ) { @@ -3854,7 +3860,7 @@ static void softbody_step(Scene *scene, Object *ob, SoftBody *sb, float dtime) loops++; if(sb->solverflags & SBSO_MONITOR ){ sct=PIL_check_seconds_timer(); - if (sct-sst > 0.5f) printf("%3.0f%% \r",100.0f*timedone); + if (sct-sst > 0.5f) printf("%3.0f%% \r",100.0f*timedone/dtime); } /* ask for user break */ if (SB_localInterruptCallBack && SB_localInterruptCallBack()) break; @@ -4023,11 +4029,11 @@ void sbObjectStep(Scene *scene, Object *ob, float cfra, float (*vertexCos)[3], i /* checking time: */ dtime = framedelta*timescale; + /* do simulation */ softbody_step(scene, ob, sb, dtime); softbody_to_object(ob, vertexCos, numVerts, 0); - /* do simulation */ cache->simframe= framenr; cache->flag |= PTCACHE_SIMULATION_VALID; diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 33dfcfca76e..14460423999 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -1125,7 +1125,7 @@ PointDensity *BKE_add_pointdensity(void) pd->totpoints = 0; pd->coba = add_colorband(1); pd->object = NULL; - pd->psys = NULL; + pd->psys = 0; return pd; } diff --git a/source/blender/blenlib/BLI_arithb.h b/source/blender/blenlib/BLI_arithb.h index 46d31ed47aa..2658bcbd14f 100644 --- a/source/blender/blenlib/BLI_arithb.h +++ b/source/blender/blenlib/BLI_arithb.h @@ -218,7 +218,7 @@ void Mat4ToEul(float tmat[][4],float *eul); void EulToQuat(float *eul, float *quat); void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot); - +void EulToGimbalAxis(float gmat[][3], float *eul, short order); void compatible_eul(float *eul, float *oldrot); @@ -320,9 +320,15 @@ void Mat3Clr(float *m); void Mat3One(float m[][3]); void Mat4One(float m[][4]); +/* NOTE: These only normalise the matrix, they don't make it orthogonal */ void Mat3Ortho(float mat[][3]); void Mat4Ortho(float mat[][4]); +int IsMat3Orthogonal(float mat[][3]); +void Mat3Orthogonal(float mat[][3], int axis); /* axis is the one to keep in place (assumes it is non-null) */ +int IsMat4Orthogonal(float mat[][4]); +void Mat4Orthogonal(float mat[][4], int axis); /* axis is the one to keep in place (assumes it is non-null) */ + void VecMat4MulVecfl(float *in, float mat[][4], float *vec); void Mat4MulMat43(float (*m1)[4], float (*m3)[4], float (*m2)[3]); void Mat3IsMat3MulMat4(float m1[][3], float m2[][3], float m3[][4]); diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c index a5c4a03cdd6..c98f4a14fea 100644 --- a/source/blender/blenlib/intern/arithb.c +++ b/source/blender/blenlib/intern/arithb.c @@ -151,6 +151,7 @@ double Normalize_d(double *n) return d; } +/* Crossf stores the cross product c = a x b */ void Crossf(float *c, float *a, float *b) { c[0] = a[1] * b[2] - a[2] * b[1]; @@ -2164,6 +2165,161 @@ void i_lookat(float vx, float vy, float vz, float px, float py, float pz, float /* ************************************************ */ +void Mat3Orthogonal(float mat[][3], int axis) +{ + float size[3]; + size[0] = VecLength(mat[0]); + size[1] = VecLength(mat[1]); + size[2] = VecLength(mat[2]); + Normalize(mat[axis]); + switch(axis) + { + case 0: + if (Inpf(mat[0], mat[1]) < 1) { + Crossf(mat[2], mat[0], mat[1]); + Normalize(mat[2]); + Crossf(mat[1], mat[2], mat[0]); + } else if (Inpf(mat[0], mat[2]) < 1) { + Crossf(mat[1], mat[2], mat[0]); + Normalize(mat[1]); + Crossf(mat[2], mat[0], mat[1]); + } else { + float vec[3] = {mat[0][1], mat[0][2], mat[0][0]}; + + Crossf(mat[2], mat[0], vec); + Normalize(mat[2]); + Crossf(mat[1], mat[2], mat[0]); + } + case 1: + if (Inpf(mat[1], mat[0]) < 1) { + Crossf(mat[2], mat[0], mat[1]); + Normalize(mat[2]); + Crossf(mat[0], mat[1], mat[2]); + } else if (Inpf(mat[0], mat[2]) < 1) { + Crossf(mat[0], mat[1], mat[2]); + Normalize(mat[0]); + Crossf(mat[2], mat[0], mat[1]); + } else { + float vec[3] = {mat[1][1], mat[1][2], mat[1][0]}; + + Crossf(mat[0], mat[1], vec); + Normalize(mat[0]); + Crossf(mat[2], mat[0], mat[1]); + } + case 2: + if (Inpf(mat[2], mat[0]) < 1) { + Crossf(mat[1], mat[2], mat[0]); + Normalize(mat[1]); + Crossf(mat[0], mat[1], mat[2]); + } else if (Inpf(mat[2], mat[1]) < 1) { + Crossf(mat[0], mat[1], mat[2]); + Normalize(mat[0]); + Crossf(mat[1], mat[2], mat[0]); + } else { + float vec[3] = {mat[2][1], mat[2][2], mat[2][0]}; + + Crossf(mat[0], vec, mat[2]); + Normalize(mat[0]); + Crossf(mat[1], mat[2], mat[0]); + } + } + VecMulf(mat[0], size[0]); + VecMulf(mat[1], size[1]); + VecMulf(mat[2], size[2]); +} + +void Mat4Orthogonal(float mat[][4], int axis) +{ + float size[3]; + size[0] = VecLength(mat[0]); + size[1] = VecLength(mat[1]); + size[2] = VecLength(mat[2]); + Normalize(mat[axis]); + switch(axis) + { + case 0: + if (Inpf(mat[0], mat[1]) < 1) { + Crossf(mat[2], mat[0], mat[1]); + Normalize(mat[2]); + Crossf(mat[1], mat[2], mat[0]); + } else if (Inpf(mat[0], mat[2]) < 1) { + Crossf(mat[1], mat[2], mat[0]); + Normalize(mat[1]); + Crossf(mat[2], mat[0], mat[1]); + } else { + float vec[3] = {mat[0][1], mat[0][2], mat[0][0]}; + + Crossf(mat[2], mat[0], vec); + Normalize(mat[2]); + Crossf(mat[1], mat[2], mat[0]); + } + case 1: + Normalize(mat[0]); + if (Inpf(mat[1], mat[0]) < 1) { + Crossf(mat[2], mat[0], mat[1]); + Normalize(mat[2]); + Crossf(mat[0], mat[1], mat[2]); + } else if (Inpf(mat[0], mat[2]) < 1) { + Crossf(mat[0], mat[1], mat[2]); + Normalize(mat[0]); + Crossf(mat[2], mat[0], mat[1]); + } else { + float vec[3] = {mat[1][1], mat[1][2], mat[1][0]}; + + Crossf(mat[0], mat[1], vec); + Normalize(mat[0]); + Crossf(mat[2], mat[0], mat[1]); + } + case 2: + if (Inpf(mat[2], mat[0]) < 1) { + Crossf(mat[1], mat[2], mat[0]); + Normalize(mat[1]); + Crossf(mat[0], mat[1], mat[2]); + } else if (Inpf(mat[2], mat[1]) < 1) { + Crossf(mat[0], mat[1], mat[2]); + Normalize(mat[0]); + Crossf(mat[1], mat[2], mat[0]); + } else { + float vec[3] = {mat[2][1], mat[2][2], mat[2][0]}; + + Crossf(mat[0], vec, mat[2]); + Normalize(mat[0]); + Crossf(mat[1], mat[2], mat[0]); + } + } + VecMulf(mat[0], size[0]); + VecMulf(mat[1], size[1]); + VecMulf(mat[2], size[2]); +} + +int IsMat3Orthogonal(float mat[][3]) +{ + if (fabs(Inpf(mat[0], mat[1])) > 1.5 * FLT_EPSILON) + return 0; + + if (fabs(Inpf(mat[1], mat[2])) > 1.5 * FLT_EPSILON) + return 0; + + if (fabs(Inpf(mat[0], mat[2])) > 1.5 * FLT_EPSILON) + return 0; + + return 1; +} + +int IsMat4Orthogonal(float mat[][4]) +{ + if (fabs(Inpf(mat[0], mat[1])) > 1.5 * FLT_EPSILON) + return 0; + + if (fabs(Inpf(mat[1], mat[2])) > 1.5 * FLT_EPSILON) + return 0; + + if (fabs(Inpf(mat[0], mat[2])) > 1.5 * FLT_EPSILON) + return 0; + + return 1; +} + void Mat3Ortho(float mat[][3]) { Normalize(mat[0]); @@ -2888,10 +3044,8 @@ void MeanValueWeights(float v[][3], int n, float *co, float *w) /* Type for rotation order info - see wiki for derivation details */ typedef struct RotOrderInfo { - short i; /* first axis index */ - short j; /* second axis index */ - short k; /* third axis index */ - short parity; /* parity of axis permuation (even=0, odd=1) - 'n' in original code */ + short axis[3]; + short parity; /* parity of axis permutation (even=0, odd=1) - 'n' in original code */ } RotOrderInfo; /* Array of info for Rotation Order calculations @@ -2899,12 +3053,12 @@ typedef struct RotOrderInfo { */ static RotOrderInfo rotOrders[]= { /* i, j, k, n */ - {0, 1, 2, 0}, // XYZ - {0, 2, 1, 1}, // XZY - {1, 0, 2, 1}, // YXZ - {1, 2, 0, 0}, // YZX - {2, 0, 1, 0}, // ZXY - {2, 1, 0, 1} // ZYZ + {{0, 1, 2}, 0}, // XYZ + {{0, 2, 1}, 1}, // XZY + {{1, 0, 2}, 1}, // YXZ + {{1, 2, 0}, 0}, // YZX + {{2, 0, 1}, 0}, // ZXY + {{2, 1, 0}, 1} // ZYZ }; /* Get relevant pointer to rotation order set from the array @@ -2917,7 +3071,7 @@ static RotOrderInfo rotOrders[]= { void EulOToQuat(float e[3], short order, float q[4]) { RotOrderInfo *R= GET_ROTATIONORDER_INFO(order); - short i=R->i, j=R->j, k=R->k; + short i=R->axis[0], j=R->axis[1], k=R->axis[2]; double ti, tj, th, ci, cj, ch, si, sj, sh, cc, cs, sc, ss; double a[3]; @@ -2956,7 +3110,7 @@ void QuatToEulO(float q[4], float e[3], short order) void EulOToMat3(float e[3], short order, float M[3][3]) { RotOrderInfo *R= GET_ROTATIONORDER_INFO(order); - short i=R->i, j=R->j, k=R->k; + short i=R->axis[0], j=R->axis[1], k=R->axis[2]; double ti, tj, th, ci, cj, ch, si, sj, sh, cc, cs, sc, ss; if (R->parity) { @@ -2992,7 +3146,7 @@ void EulOToMat4(float e[3], short order, float M[4][4]) void Mat3ToEulO(float M[3][3], float e[3], short order) { RotOrderInfo *R= GET_ROTATIONORDER_INFO(order); - short i=R->i, j=R->j, k=R->k; + short i=R->axis[0], j=R->axis[1], k=R->axis[2]; double cy = sqrt(M[i][i]*M[i][i] + M[i][j]*M[i][j]); if (cy > 16*FLT_EPSILON) { @@ -3028,7 +3182,7 @@ void Mat4ToEulO(float M[4][4], float e[3], short order) static void mat3_to_eulo2(float M[3][3], float *e1, float *e2, short order) { RotOrderInfo *R= GET_ROTATIONORDER_INFO(order); - short i=R->i, j=R->j, k=R->k; + short i=R->axis[0], j=R->axis[1], k=R->axis[2]; float m[3][3]; double cy; @@ -3361,6 +3515,32 @@ void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot) } +/* the matrix is written to as 3 axis vectors */ +void EulToGimbalAxis(float gmat[][3], float *eul, short order) +{ + RotOrderInfo *R= GET_ROTATIONORDER_INFO(order); + + float mat[3][3]; + float teul[3]; + + /* first axis is local */ + EulOToMat3(eul, order, mat); + VecCopyf(gmat[R->axis[0]], mat[R->axis[0]]); + + /* second axis is local minus first rotation */ + VecCopyf(teul, eul); + teul[R->axis[0]] = 0; + EulOToMat3(teul, order, mat); + VecCopyf(gmat[R->axis[1]], mat[R->axis[1]]); + + + /* Last axis is global */ + gmat[R->axis[2]][0] = 0; + gmat[R->axis[2]][1] = 0; + gmat[R->axis[2]][2] = 0; + gmat[R->axis[2]][R->axis[2]] = 1; +} + /* ************ AXIS ANGLE *************** */ /* Axis angle to Quaternions */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index d6cc785b146..7ca07fc13ce 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2266,6 +2266,20 @@ static void lib_link_constraints(FileData *fd, ID *id, ListBase *conlist) data->target = newlibadr(fd, id->lib, data->target); } break; + case CONSTRAINT_TYPE_DAMPTRACK: + { + bDampTrackConstraint *data; + data= ((bDampTrackConstraint*)con->data); + data->tar = newlibadr(fd, id->lib, data->tar); + } + break; + case CONSTRAINT_TYPE_SPLINEIK: + { + bSplineIKConstraint *data; + data= ((bSplineIKConstraint*)con->data); + data->tar = newlibadr(fd, id->lib, data->tar); + } + break; case CONSTRAINT_TYPE_NULL: break; } @@ -2289,6 +2303,11 @@ static void direct_link_constraints(FileData *fd, ListBase *lb) if (data->prop) IDP_DirectLinkProperty(data->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd); } + else if (cons->type == CONSTRAINT_TYPE_SPLINEIK) { + bSplineIKConstraint *data= cons->data; + + data->points= newdataadr(fd, data->points); + } } } @@ -2346,12 +2365,14 @@ static void direct_link_bones(FileData *fd, Bone* bone) Bone *child; bone->parent= newdataadr(fd, bone->parent); + bone->prop= newdataadr(fd, bone->prop); + if(bone->prop) + IDP_DirectLinkProperty(bone->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd); link_list(fd, &bone->childbase); - for (child=bone->childbase.first; child; child=child->next) { + for(child=bone->childbase.first; child; child=child->next) direct_link_bones(fd, child); - } } static void direct_link_armature(FileData *fd, bArmature *arm) @@ -2872,10 +2893,8 @@ static void lib_link_texture(FileData *fd, Main *main) tex->ima= newlibadr_us(fd, tex->id.lib, tex->ima); tex->ipo= newlibadr_us(fd, tex->id.lib, tex->ipo); if(tex->env) tex->env->object= newlibadr(fd, tex->id.lib, tex->env->object); - if(tex->pd) { + if(tex->pd) tex->pd->object= newlibadr(fd, tex->id.lib, tex->pd->object); - tex->pd->psys= newlibadr(fd, tex->id.lib, tex->pd->psys); - } if(tex->vd) tex->vd->object= newlibadr(fd, tex->id.lib, tex->vd->object); if(tex->nodetree) @@ -3675,7 +3694,7 @@ static void lib_link_object(FileData *fd, Main *main) ob->type= OB_EMPTY; warn= 1; if(ob->id.lib) printf("Can't find obdata of %s lib %s\n", ob->id.name+2, ob->id.lib->name); - else printf("Object %s lost data.", ob->id.name+2); + else printf("Object %s lost data.\n", ob->id.name+2); if(ob->pose) { free_pose(ob->pose); @@ -10903,6 +10922,18 @@ static void expand_constraints(FileData *fd, Main *mainvar, ListBase *lb) expand_doit(fd, mainvar, data->target); } break; + case CONSTRAINT_TYPE_DAMPTRACK: + { + bDampTrackConstraint *data = (bDampTrackConstraint*)curcon->data; + expand_doit(fd, mainvar, data->tar); + } + break; + case CONSTRAINT_TYPE_SPLINEIK: + { + bSplineIKConstraint *data = (bSplineIKConstraint*)curcon->data; + expand_doit(fd, mainvar, data->tar); + } + break; default: break; } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 14b99dd7ae5..dcbdb3884ec 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1078,7 +1078,15 @@ static void write_constraints(WriteData *wd, ListBase *conlist) IDP_WriteProperty(data->prop, wd); } break; + case CONSTRAINT_TYPE_SPLINEIK: + { + bSplineIKConstraint *data= (bSplineIKConstraint*)con->data; + + /* write points array */ + writedata(wd, DATA, sizeof(float)*(data->numpoints), data->points); } + break; + } } /* Write the constraint */ @@ -2133,6 +2141,11 @@ static void write_bone(WriteData *wd, Bone* bone) // Write this bone writestruct(wd, DATA, "Bone", 1, bone); + + /* Write ID Properties -- and copy this comment EXACTLY for easy finding + of library blocks that implement this.*/ + if (bone->prop) + IDP_WriteProperty(bone->prop, wd); // Write Children cbone= bone->childbase.first; diff --git a/source/blender/collada/CMakeLists.txt b/source/blender/collada/CMakeLists.txt new file mode 100644 index 00000000000..f510e7ee9ad --- /dev/null +++ b/source/blender/collada/CMakeLists.txt @@ -0,0 +1,64 @@ +# $Id: CMakeLists.txt 21789 2009-07-22 05:35:12Z kazanbas $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# The Original Code is Copyright (C) 2006, Blender Foundation +# All rights reserved. +# +# The Original Code is: all of this file. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.cpp) + +IF(APPLE) +SET(INC + . + ../blenlib + ../blenkernel + ../windowmanager + ../makesdna + ../makesrna + ../editors/include + ../../../intern/guardedalloc + ${OPENCOLLADA_INC}/COLLADAStreamWriter + ${OPENCOLLADA_INC}/COLLADABaseUtils + ${OPENCOLLADA_INC}/COLLADAFramework + ${OPENCOLLADA_INC}/COLLADASaxFrameworkLoader +) + +ELSE(APPLE) + +SET(INC + . + ../blenlib + ../blenkernel + ../windowmanager + ../makesdna + ../makesrna + ../editors/include + ../../../intern/guardedalloc + ${OPENCOLLADA}/COLLADAStreamWriter/include + ${OPENCOLLADA}/COLLADABaseUtils/include + ${OPENCOLLADA}/COLLADAFramework/include + ${OPENCOLLADA}/COLLADASaxFrameworkLoader/include +) + +ENDIF(APPLE) + +BLENDERLIB(bf_collada "${SRC}" "${INC}") diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp new file mode 100644 index 00000000000..b10a95e6418 --- /dev/null +++ b/source/blender/collada/DocumentExporter.cpp @@ -0,0 +1,2137 @@ +#include <stdlib.h> +#include <stdio.h> +#include <math.h> + +#include "DNA_scene_types.h" +#include "DNA_object_types.h" +#include "DNA_meshdata_types.h" +#include "DNA_mesh_types.h" +#include "DNA_image_types.h" +#include "DNA_material_types.h" +#include "DNA_texture_types.h" +#include "DNA_camera_types.h" +#include "DNA_lamp_types.h" +#include "DNA_anim_types.h" +#include "DNA_action_types.h" +#include "DNA_curve_types.h" +#include "DNA_armature_types.h" +#include "DNA_modifier_types.h" + +extern "C" +{ +#include "BKE_DerivedMesh.h" +#include "BKE_fcurve.h" +#include "BLI_util.h" +#include "BLI_fileops.h" +#include "ED_keyframing.h" +} + +#include "MEM_guardedalloc.h" + +#include "BKE_scene.h" +#include "BKE_global.h" +#include "BKE_main.h" +#include "BKE_material.h" +#include "BKE_action.h" // pose functions +#include "BKE_armature.h" +#include "BKE_image.h" +#include "BKE_utildefines.h" + +#include "BLI_arithb.h" +#include "BLI_string.h" +#include "BLI_listbase.h" + +#include "COLLADASWAsset.h" +#include "COLLADASWLibraryVisualScenes.h" +#include "COLLADASWNode.h" +#include "COLLADASWLibraryGeometries.h" +#include "COLLADASWSource.h" +#include "COLLADASWInstanceGeometry.h" +#include "COLLADASWInputList.h" +#include "COLLADASWPrimitves.h" +#include "COLLADASWVertices.h" +#include "COLLADASWLibraryAnimations.h" +#include "COLLADASWLibraryImages.h" +#include "COLLADASWLibraryEffects.h" +#include "COLLADASWImage.h" +#include "COLLADASWEffectProfile.h" +#include "COLLADASWColorOrTexture.h" +#include "COLLADASWParamTemplate.h" +#include "COLLADASWParamBase.h" +#include "COLLADASWSurfaceInitOption.h" +#include "COLLADASWSampler.h" +#include "COLLADASWScene.h" +//#include "COLLADASWSurface.h" +#include "COLLADASWTechnique.h" +#include "COLLADASWTexture.h" +#include "COLLADASWLibraryMaterials.h" +#include "COLLADASWBindMaterial.h" +#include "COLLADASWLibraryCameras.h" +#include "COLLADASWLibraryLights.h" +#include "COLLADASWInstanceCamera.h" +#include "COLLADASWInstanceLight.h" +#include "COLLADASWCameraOptic.h" +#include "COLLADASWConstants.h" +#include "COLLADASWLibraryControllers.h" +#include "COLLADASWInstanceController.h" +#include "COLLADASWBaseInputElement.h" + +#include "collada_internal.h" +#include "DocumentExporter.h" + +#include <vector> +#include <algorithm> // std::find + +// arithb.c now has QuatToAxisAngle too +#if 0 +// This function assumes that quat is normalized. +// The following document was used as reference: +// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm +void QuatToAxisAngle(float *q, float *axis, float *angle) +{ + // quat to axis angle + *angle = 2 * acos(q[0]); + float divisor = sqrt(1 - q[0] * q[0]); + + // test to avoid divide by zero, divisor is always positive + if (divisor < 0.001f ) { + axis[0] = 1.0f; + axis[1] = 0.0f; + axis[2] = 0.0f; + } + else { + axis[0] = q[1] / divisor; + axis[1] = q[2] / divisor; + axis[2] = q[3] / divisor; + } +} +#endif + +char *CustomData_get_layer_name(const struct CustomData *data, int type, int n) +{ + int layer_index = CustomData_get_layer_index(data, type); + if(layer_index < 0) return NULL; + + return data->layers[layer_index+n].name; +} + +char *CustomData_get_active_layer_name(const CustomData *data, int type) +{ + /* get the layer index of the active layer of type */ + int layer_index = CustomData_get_active_layer_index(data, type); + if(layer_index < 0) return NULL; + + return data->layers[layer_index].name; +} + +static std::string id_name(void *id) +{ + return ((ID*)id)->name + 2; +} + +static std::string get_geometry_id(Object *ob) +{ + return id_name(ob) + "-mesh"; +} + +static std::string get_light_id(Object *ob) +{ + return id_name(ob) + "-light"; +} + +static std::string get_camera_id(Object *ob) +{ + return id_name(ob) + "-camera"; +} + +static void replace_chars(char *str, char chars[], char with) +{ + char *ch, *p; + + for (ch = chars; *ch; ch++) { + while ((p = strchr(str, *ch))) { + *p = with; + } + } +} + +/* + Utilities to avoid code duplication. + Definition can take some time to understand, but they should be useful. +*/ + +// f should have +// void operator()(Object* ob) +template<class Functor> +void forEachMeshObjectInScene(Scene *sce, Functor &f) +{ + + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (ob->type == OB_MESH && ob->data) { + f(ob); + } + base= base->next; + + } +} + +template<class Functor> +void forEachObjectInScene(Scene *sce, Functor &f) +{ + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + f(ob); + + base= base->next; + } +} + +template<class Functor> +void forEachCameraObjectInScene(Scene *sce, Functor &f) +{ + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (ob->type == OB_CAMERA && ob->data) { + f(ob, sce); + } + base= base->next; + } +} + +template<class Functor> +void forEachLampObjectInScene(Scene *sce, Functor &f) +{ + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (ob->type == OB_LAMP && ob->data) { + f(ob); + } + base= base->next; + } +} + +// used in forEachMaterialInScene +template <class MaterialFunctor> +class ForEachMaterialFunctor +{ + std::vector<std::string> mMat; // contains list of material names, to avoid duplicate calling of f + MaterialFunctor *f; +public: + ForEachMaterialFunctor(MaterialFunctor *f) : f(f) { } + void operator ()(Object *ob) + { + int a; + for(a = 0; a < ob->totcol; a++) { + + Material *ma = give_current_material(ob, a+1); + + if (!ma) continue; + + if (find(mMat.begin(), mMat.end(), id_name(ma)) == mMat.end()) { + (*this->f)(ma, ob); + + mMat.push_back(id_name(ma)); + } + } + } +}; + +// calls f for each unique material linked to each object in sce +// f should have +// void operator()(Material* ma) +template<class Functor> +void forEachMaterialInScene(Scene *sce, Functor &f) +{ + ForEachMaterialFunctor<Functor> matfunc(&f); + forEachMeshObjectInScene(sce, matfunc); +} + +// OB_MESH is assumed +std::string getActiveUVLayerName(Object *ob) +{ + Mesh *me = (Mesh*)ob->data; + + int num_layers = CustomData_number_of_layers(&me->fdata, CD_MTFACE); + if (num_layers) + return std::string(CustomData_get_active_layer_name(&me->fdata, CD_MTFACE)); + + return ""; +} + +// TODO: optimize UV sets by making indexed list with duplicates removed +class GeometryExporter : COLLADASW::LibraryGeometries +{ + Scene *mScene; +public: + GeometryExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryGeometries(sw) {} + + void exportGeom(Scene *sce) + { + openLibrary(); + + mScene = sce; + forEachMeshObjectInScene(sce, *this); + + closeLibrary(); + } + + void operator()(Object *ob) + { + // XXX don't use DerivedMesh, Mesh instead? + +#if 0 + DerivedMesh *dm = mesh_get_derived_final(mScene, ob, CD_MASK_BAREMESH); +#endif + Mesh *me = (Mesh*)ob->data; + std::string geom_id = get_geometry_id(ob); + + // openMesh(geoId, geoName, meshId) + openMesh(geom_id); + + // writes <source> for vertex coords + createVertsSource(geom_id, me); + + // writes <source> for normal coords + createNormalsSource(geom_id, me); + + int has_uvs = CustomData_has_layer(&me->fdata, CD_MTFACE); + + // writes <source> for uv coords if mesh has uv coords + if (has_uvs) { + createTexcoordsSource(geom_id, (Mesh*)ob->data); + } + // <vertices> + COLLADASW::Vertices verts(mSW); + verts.setId(getIdBySemantics(geom_id, COLLADASW::VERTEX)); + COLLADASW::InputList &input_list = verts.getInputList(); + COLLADASW::Input input(COLLADASW::POSITION, getUrlBySemantics(geom_id, COLLADASW::POSITION)); + input_list.push_back(input); + verts.add(); + + // XXX slow + if (ob->totcol) { + for(int a = 0; a < ob->totcol; a++) { + // account for NULL materials, this should not normally happen? + Material *ma = give_current_material(ob, a + 1); + createPolylist(ma != NULL, a, has_uvs, ob, geom_id); + } + } + else { + createPolylist(false, 0, has_uvs, ob, geom_id); + } + + closeMesh(); + closeGeometry(); + +#if 0 + dm->release(dm); +#endif + } + + // powerful because it handles both cases when there is material and when there's not + void createPolylist(bool has_material, + int material_index, + bool has_uvs, + Object *ob, + std::string& geom_id) + { +#if 0 + MFace *mfaces = dm->getFaceArray(dm); + int totfaces = dm->getNumFaces(dm); +#endif + Mesh *me = (Mesh*)ob->data; + MFace *mfaces = me->mface; + int totfaces = me->totface; + + // <vcount> + int i; + int faces_in_polylist = 0; + std::vector<unsigned long> vcount_list; + + // count faces with this material + for (i = 0; i < totfaces; i++) { + MFace *f = &mfaces[i]; + + if ((has_material && f->mat_nr == material_index) || !has_material) { + faces_in_polylist++; + if (f->v4 == 0) { + vcount_list.push_back(3); + } + else { + vcount_list.push_back(4); + } + } + } + + // no faces using this material + if (faces_in_polylist == 0) { + return; + } + + Material *ma = has_material ? give_current_material(ob, material_index + 1) : NULL; + COLLADASW::Polylist polylist(mSW); + + // sets count attribute in <polylist> + polylist.setCount(faces_in_polylist); + + // sets material name + if (has_material) + polylist.setMaterial(id_name(ma)); + + COLLADASW::InputList &til = polylist.getInputList(); + + // creates <input> in <polylist> for vertices + COLLADASW::Input input1(COLLADASW::VERTEX, getUrlBySemantics + (geom_id, COLLADASW::VERTEX), 0); + + // creates <input> in <polylist> for normals + COLLADASW::Input input2(COLLADASW::NORMAL, getUrlBySemantics + (geom_id, COLLADASW::NORMAL), 0); + + til.push_back(input1); + til.push_back(input2); + + // if mesh has uv coords writes <input> for TEXCOORD + int num_layers = CustomData_number_of_layers(&me->fdata, CD_MTFACE); + + for (i = 0; i < num_layers; i++) { + char *name = CustomData_get_layer_name(&me->fdata, CD_MTFACE, i); + COLLADASW::Input input3(COLLADASW::TEXCOORD, + makeUrl(makeTexcoordSourceId(geom_id, i)), + 1, // offset always 1, this is only until we have optimized UV sets + i // set number equals UV layer index + ); + til.push_back(input3); + } + + // sets <vcount> + polylist.setVCountList(vcount_list); + + // performs the actual writing + polylist.prepareToAppendValues(); + + // <p> + int texindex = 0; + for (i = 0; i < totfaces; i++) { + MFace *f = &mfaces[i]; + + if ((has_material && f->mat_nr == material_index) || !has_material) { + + unsigned int *v = &f->v1; + for (int j = 0; j < (f->v4 == 0 ? 3 : 4); j++) { + polylist.appendValues(v[j]); + + if (has_uvs) + polylist.appendValues(texindex + j); + } + } + + texindex += 3; + if (f->v4 != 0) + texindex++; + } + + polylist.finish(); + } + + // creates <source> for positions + void createVertsSource(std::string geom_id, Mesh *me) + { +#if 0 + int totverts = dm->getNumVerts(dm); + MVert *verts = dm->getVertArray(dm); +#endif + int totverts = me->totvert; + MVert *verts = me->mvert; + + COLLADASW::FloatSourceF source(mSW); + source.setId(getIdBySemantics(geom_id, COLLADASW::POSITION)); + source.setArrayId(getIdBySemantics(geom_id, COLLADASW::POSITION) + + ARRAY_ID_SUFFIX); + source.setAccessorCount(totverts); + source.setAccessorStride(3); + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("X"); + param.push_back("Y"); + param.push_back("Z"); + /*main function, it creates <source id = "">, <float_array id = "" + count = ""> */ + source.prepareToAppendValues(); + //appends data to <float_array> + int i = 0; + for (i = 0; i < totverts; i++) { + source.appendValues(verts[i].co[0], verts[i].co[1], verts[i].co[2]); + } + + source.finish(); + + } + + std::string makeTexcoordSourceId(std::string& geom_id, int layer_index) + { + char suffix[20]; + sprintf(suffix, "-%d", layer_index); + return getIdBySemantics(geom_id, COLLADASW::TEXCOORD) + suffix; + } + + //creates <source> for texcoords + void createTexcoordsSource(std::string geom_id, Mesh *me) + { +#if 0 + int totfaces = dm->getNumFaces(dm); + MFace *mfaces = dm->getFaceArray(dm); +#endif + int totfaces = me->totface; + MFace *mfaces = me->mface; + + int totuv = 0; + int i; + + // count totuv + for (i = 0; i < totfaces; i++) { + MFace *f = &mfaces[i]; + if (f->v4 == 0) { + totuv+=3; + } + else { + totuv+=4; + } + } + + int num_layers = CustomData_number_of_layers(&me->fdata, CD_MTFACE); + + // write <source> for each layer + // each <source> will get id like meshName + "map-channel-1" + for (int a = 0; a < num_layers; a++) { + MTFace *tface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, a); + char *name = CustomData_get_layer_name(&me->fdata, CD_MTFACE, a); + + COLLADASW::FloatSourceF source(mSW); + std::string layer_id = makeTexcoordSourceId(geom_id, a); + source.setId(layer_id); + source.setArrayId(layer_id + ARRAY_ID_SUFFIX); + + source.setAccessorCount(totuv); + source.setAccessorStride(2); + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("X"); + param.push_back("Y"); + + source.prepareToAppendValues(); + + for (i = 0; i < totfaces; i++) { + MFace *f = &mfaces[i]; + + for (int j = 0; j < (f->v4 == 0 ? 3 : 4); j++) { + source.appendValues(tface[i].uv[j][0], + tface[i].uv[j][1]); + } + } + + source.finish(); + } + } + + + //creates <source> for normals + void createNormalsSource(std::string geom_id, Mesh *me) + { +#if 0 + int totverts = dm->getNumVerts(dm); + MVert *verts = dm->getVertArray(dm); +#endif + + int totverts = me->totvert; + MVert *verts = me->mvert; + + COLLADASW::FloatSourceF source(mSW); + source.setId(getIdBySemantics(geom_id, COLLADASW::NORMAL)); + source.setArrayId(getIdBySemantics(geom_id, COLLADASW::NORMAL) + + ARRAY_ID_SUFFIX); + source.setAccessorCount(totverts); + source.setAccessorStride(3); + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("X"); + param.push_back("Y"); + param.push_back("Z"); + + source.prepareToAppendValues(); + + int i = 0; + + for( i = 0; i < totverts; ++i ){ + + source.appendValues(float(verts[i].no[0]/32767.0), + float(verts[i].no[1]/32767.0), + float(verts[i].no[2]/32767.0)); + + } + source.finish(); + } + + std::string getIdBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix = "") { + return geom_id + getSuffixBySemantic(type) + other_suffix; + } + + + COLLADASW::URI getUrlBySemantics(std::string geom_id, COLLADASW::Semantics type, std::string other_suffix = "") { + + std::string id(getIdBySemantics(geom_id, type, other_suffix)); + return COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, id); + + } + + COLLADASW::URI makeUrl(std::string id) + { + return COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, id); + } + + + /* int getTriCount(MFace *faces, int totface) { + int i; + int tris = 0; + for (i = 0; i < totface; i++) { + // if quad + if (faces[i].v4 != 0) + tris += 2; + else + tris++; + } + + return tris; + }*/ +}; + +class TransformWriter : protected TransformBase +{ +protected: + void add_node_transform(COLLADASW::Node& node, float mat[][4], float parent_mat[][4]) + { + float loc[3], rot[3], size[3]; + float local[4][4]; + + if (parent_mat) { + float invpar[4][4]; + Mat4Invert(invpar, parent_mat); + Mat4MulMat4(local, mat, invpar); + } + else { + Mat4CpyMat4(local, mat); + } + + TransformBase::decompose(local, loc, rot, size); + + /* + // this code used to create a single <rotate> representing object rotation + float quat[4]; + float axis[3]; + float angle; + double angle_deg; + EulToQuat(rot, quat); + NormalQuat(quat); + QuatToAxisAngle(quat, axis, &angle); + angle_deg = angle * 180.0f / M_PI; + node.addRotate(axis[0], axis[1], axis[2], angle_deg); + */ + node.addTranslate("location", loc[0], loc[1], loc[2]); + + node.addRotateZ("rotationZ", COLLADABU::Math::Utils::radToDegF(rot[2])); + node.addRotateY("rotationY", COLLADABU::Math::Utils::radToDegF(rot[1])); + node.addRotateX("rotationX", COLLADABU::Math::Utils::radToDegF(rot[0])); + + node.addScale("scale", size[0], size[1], size[2]); + } +}; + +class InstanceWriter +{ +protected: + void add_material_bindings(COLLADASW::BindMaterial& bind_material, Object *ob) + { + for(int a = 0; a < ob->totcol; a++) { + Material *ma = give_current_material(ob, a+1); + + COLLADASW::InstanceMaterialList& iml = bind_material.getInstanceMaterialList(); + + if (ma) { + std::string matid(id_name(ma)); + COLLADASW::InstanceMaterial im(matid, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, matid)); + + // create <bind_vertex_input> for each uv layer + Mesh *me = (Mesh*)ob->data; + int totlayer = CustomData_number_of_layers(&me->fdata, CD_MTFACE); + + for (int b = 0; b < totlayer; b++) { + char *name = CustomData_get_layer_name(&me->fdata, CD_MTFACE, b); + im.push_back(COLLADASW::BindVertexInput(name, "TEXCOORD", b)); + } + + iml.push_back(im); + } + } + } +}; + +// XXX exporter writes wrong data for shared armatures. A separate +// controller should be written for each armature-mesh binding how do +// we make controller ids then? +class ArmatureExporter: public COLLADASW::LibraryControllers, protected TransformWriter, protected InstanceWriter +{ +private: + Scene *scene; + +public: + ArmatureExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryControllers(sw) {} + + // write bone nodes + void add_armature_bones(Object *ob_arm, Scene *sce) + { + // write bone nodes + bArmature *arm = (bArmature*)ob_arm->data; + for (Bone *bone = (Bone*)arm->bonebase.first; bone; bone = bone->next) { + // start from root bones + if (!bone->parent) + add_bone_node(bone, ob_arm); + } + } + + bool is_skinned_mesh(Object *ob) + { + return get_assigned_armature(ob) != NULL; + } + + void add_instance_controller(Object *ob) + { + Object *ob_arm = get_assigned_armature(ob); + bArmature *arm = (bArmature*)ob_arm->data; + + const std::string& controller_id = get_controller_id(ob_arm); + + COLLADASW::InstanceController ins(mSW); + ins.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, controller_id)); + + // write root bone URLs + Bone *bone; + for (bone = (Bone*)arm->bonebase.first; bone; bone = bone->next) { + if (!bone->parent) + ins.addSkeleton(COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, get_joint_id(bone, ob_arm))); + } + + InstanceWriter::add_material_bindings(ins.getBindMaterial(), ob); + + ins.add(); + } + + void export_controllers(Scene *sce) + { + scene = sce; + + openLibrary(); + + forEachMeshObjectInScene(sce, *this); + + closeLibrary(); + } + + void operator()(Object *ob) + { + Object *ob_arm = get_assigned_armature(ob); + + if (ob_arm /*&& !already_written(ob_arm)*/) + export_controller(ob, ob_arm); + } + +private: + + UnitConverter converter; + +#if 0 + std::vector<Object*> written_armatures; + + bool already_written(Object *ob_arm) + { + return std::find(written_armatures.begin(), written_armatures.end(), ob_arm) != written_armatures.end(); + } + + void wrote(Object *ob_arm) + { + written_armatures.push_back(ob_arm); + } + + void find_objects_using_armature(Object *ob_arm, std::vector<Object *>& objects, Scene *sce) + { + objects.clear(); + + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (ob->type == OB_MESH && get_assigned_armature(ob) == ob_arm) { + objects.push_back(ob); + } + + base= base->next; + } + } +#endif + + Object *get_assigned_armature(Object *ob) + { + Object *ob_arm = NULL; + + if (ob->parent && ob->partype == PARSKEL && ob->parent->type == OB_ARMATURE) { + ob_arm = ob->parent; + } + else { + ModifierData *mod = (ModifierData*)ob->modifiers.first; + while (mod) { + if (mod->type == eModifierType_Armature) { + ob_arm = ((ArmatureModifierData*)mod)->object; + } + + mod = mod->next; + } + } + + return ob_arm; + } + + std::string get_joint_id(Bone *bone, Object *ob_arm) + { + return id_name(ob_arm) + "_" + bone->name; + } + + std::string get_joint_sid(Bone *bone) + { + char name[100]; + BLI_strncpy(name, bone->name, sizeof(name)); + + // these chars have special meaning in SID + replace_chars(name, ".()", '_'); + + return name; + } + + // parent_mat is armature-space + void add_bone_node(Bone *bone, Object *ob_arm) + { + std::string node_id = get_joint_id(bone, ob_arm); + std::string node_name = std::string(bone->name); + std::string node_sid = get_joint_sid(bone); + + COLLADASW::Node node(mSW); + + node.setType(COLLADASW::Node::JOINT); + node.setNodeId(node_id); + node.setNodeName(node_name); + node.setNodeSid(node_sid); + + node.start(); + + add_bone_transform(ob_arm, bone, node); + + for (Bone *child = (Bone*)bone->childbase.first; child; child = child->next) { + add_bone_node(child, ob_arm); + } + + node.end(); + } + + void add_bone_transform(Object *ob_arm, Bone *bone, COLLADASW::Node& node) + { + bPose *pose = ob_arm->pose; + + bPoseChannel *pchan = get_pose_channel(ob_arm->pose, bone->name); + + float mat[4][4]; + + if (bone->parent) { + // get bone-space matrix from armature-space + bPoseChannel *parchan = get_pose_channel(ob_arm->pose, bone->parent->name); + + float invpar[4][4]; + Mat4Invert(invpar, parchan->pose_mat); + Mat4MulMat4(mat, pchan->pose_mat, invpar); + } + else { + // get world-space from armature-space + Mat4MulMat4(mat, pchan->pose_mat, ob_arm->obmat); + } + + TransformWriter::add_node_transform(node, mat, NULL); + } + + std::string get_controller_id(Object *ob_arm) + { + return id_name(ob_arm) + SKIN_CONTROLLER_ID_SUFFIX; + } + + // ob should be of type OB_MESH + // both args are required + void export_controller(Object* ob, Object *ob_arm) + { + // joint names + // joint inverse bind matrices + // vertex weights + + // input: + // joint names: ob -> vertex group names + // vertex group weights: me->dvert -> groups -> index, weight + + /* + me->dvert: + + typedef struct MDeformVert { + struct MDeformWeight *dw; + int totweight; + int flag; // flag only in use for weightpaint now + } MDeformVert; + + typedef struct MDeformWeight { + int def_nr; + float weight; + } MDeformWeight; + */ + + Mesh *me = (Mesh*)ob->data; + if (!me->dvert) return; + + std::string controller_name = id_name(ob_arm); + std::string controller_id = get_controller_id(ob_arm); + + openSkin(controller_id, controller_name, + COLLADABU::URI(COLLADABU::Utils::EMPTY_STRING, get_geometry_id(ob))); + + add_bind_shape_mat(ob); + + std::string joints_source_id = add_joints_source(ob_arm, &ob->defbase, controller_id); + std::string inv_bind_mat_source_id = add_inv_bind_mats_source(ob_arm, &ob->defbase, controller_id); + std::string weights_source_id = add_weights_source(me, controller_id); + + add_joints_element(&ob->defbase, joints_source_id, inv_bind_mat_source_id); + add_vertex_weights_element(weights_source_id, joints_source_id, me, ob_arm, &ob->defbase); + + closeSkin(); + closeController(); + } + + void add_joints_element(ListBase *defbase, + const std::string& joints_source_id, const std::string& inv_bind_mat_source_id) + { + COLLADASW::JointsElement joints(mSW); + COLLADASW::InputList &input = joints.getInputList(); + + int offset = 0; + input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h + COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id))); + input.push_back(COLLADASW::Input(COLLADASW::BINDMATRIX, + COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, inv_bind_mat_source_id))); + joints.add(); + } + + void add_bind_shape_mat(Object *ob) + { + double bind_mat[4][4]; + + converter.mat4_to_dae_double(bind_mat, ob->obmat); + + addBindShapeTransform(bind_mat); + } + + std::string add_joints_source(Object *ob_arm, ListBase *defbase, const std::string& controller_id) + { + std::string source_id = controller_id + JOINTS_SOURCE_ID_SUFFIX; + + int totjoint = 0; + bDeformGroup *def; + for (def = (bDeformGroup*)defbase->first; def; def = def->next) { + if (is_bone_defgroup(ob_arm, def)) + totjoint++; + } + + COLLADASW::NameSource source(mSW); + source.setId(source_id); + source.setArrayId(source_id + ARRAY_ID_SUFFIX); + source.setAccessorCount(totjoint); + source.setAccessorStride(1); + + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("JOINT"); + + source.prepareToAppendValues(); + + for (def = (bDeformGroup*)defbase->first; def; def = def->next) { + Bone *bone = get_bone_from_defgroup(ob_arm, def); + if (bone) + source.appendValues(get_joint_sid(bone)); + } + + source.finish(); + + return source_id; + } + + std::string add_inv_bind_mats_source(Object *ob_arm, ListBase *defbase, const std::string& controller_id) + { + std::string source_id = controller_id + BIND_POSES_SOURCE_ID_SUFFIX; + + COLLADASW::FloatSourceF source(mSW); + source.setId(source_id); + source.setArrayId(source_id + ARRAY_ID_SUFFIX); + source.setAccessorCount(BLI_countlist(defbase)); + source.setAccessorStride(16); + + source.setParameterTypeName(&COLLADASW::CSWC::CSW_VALUE_TYPE_FLOAT4x4); + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("TRANSFORM"); + + source.prepareToAppendValues(); + + bPose *pose = ob_arm->pose; + bArmature *arm = (bArmature*)ob_arm->data; + + int flag = arm->flag; + + // put armature in rest position + if (!(arm->flag & ARM_RESTPOS)) { + arm->flag |= ARM_RESTPOS; + where_is_pose(scene, ob_arm); + } + + for (bDeformGroup *def = (bDeformGroup*)defbase->first; def; def = def->next) { + if (is_bone_defgroup(ob_arm, def)) { + + bPoseChannel *pchan = get_pose_channel(pose, def->name); + + float mat[4][4]; + float world[4][4]; + float inv_bind_mat[4][4]; + + // make world-space matrix, pose_mat is armature-space + Mat4MulMat4(world, pchan->pose_mat, ob_arm->obmat); + + Mat4Invert(mat, world); + converter.mat4_to_dae(inv_bind_mat, mat); + + source.appendValues(inv_bind_mat); + } + } + + // back from rest positon + if (!(flag & ARM_RESTPOS)) { + arm->flag = flag; + where_is_pose(scene, ob_arm); + } + + source.finish(); + + return source_id; + } + + Bone *get_bone_from_defgroup(Object *ob_arm, bDeformGroup* def) + { + bPoseChannel *pchan = get_pose_channel(ob_arm->pose, def->name); + return pchan ? pchan->bone : NULL; + } + + bool is_bone_defgroup(Object *ob_arm, bDeformGroup* def) + { + return get_bone_from_defgroup(ob_arm, def) != NULL; + } + + std::string add_weights_source(Mesh *me, const std::string& controller_id) + { + std::string source_id = controller_id + WEIGHTS_SOURCE_ID_SUFFIX; + + int i; + int totweight = 0; + + for (i = 0; i < me->totvert; i++) { + totweight += me->dvert[i].totweight; + } + + COLLADASW::FloatSourceF source(mSW); + source.setId(source_id); + source.setArrayId(source_id + ARRAY_ID_SUFFIX); + source.setAccessorCount(totweight); + source.setAccessorStride(1); + + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("WEIGHT"); + + source.prepareToAppendValues(); + + // NOTE: COLLADA spec says weights should be normalized + + for (i = 0; i < me->totvert; i++) { + MDeformVert *vert = &me->dvert[i]; + for (int j = 0; j < vert->totweight; j++) { + source.appendValues(vert->dw[j].weight); + } + } + + source.finish(); + + return source_id; + } + + void add_vertex_weights_element(const std::string& weights_source_id, const std::string& joints_source_id, Mesh *me, + Object *ob_arm, ListBase *defbase) + { + COLLADASW::VertexWeightsElement weights(mSW); + COLLADASW::InputList &input = weights.getInputList(); + + int offset = 0; + input.push_back(COLLADASW::Input(COLLADASW::JOINT, // constant declared in COLLADASWInputList.h + COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, joints_source_id), offset++)); + input.push_back(COLLADASW::Input(COLLADASW::WEIGHT, + COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, weights_source_id), offset++)); + + weights.setCount(me->totvert); + + // write number of deformers per vertex + COLLADASW::PrimitivesBase::VCountList vcount; + int i; + for (i = 0; i < me->totvert; i++) { + vcount.push_back(me->dvert[i].totweight); + } + + weights.prepareToAppendVCountValues(); + weights.appendVertexCount(vcount); + + // def group index -> joint index + std::map<int, int> joint_index_by_def_index; + bDeformGroup *def; + int j; + for (def = (bDeformGroup*)defbase->first, i = 0, j = 0; def; def = def->next, i++) { + if (is_bone_defgroup(ob_arm, def)) + joint_index_by_def_index[i] = j++; + else + joint_index_by_def_index[i] = -1; + } + + weights.CloseVCountAndOpenVElement(); + + // write deformer index - weight index pairs + int weight_index = 0; + for (i = 0; i < me->totvert; i++) { + MDeformVert *dvert = &me->dvert[i]; + for (int j = 0; j < dvert->totweight; j++) { + weights.appendValues(joint_index_by_def_index[dvert->dw[j].def_nr]); + weights.appendValues(weight_index++); + } + } + + weights.finish(); + } +}; + +class SceneExporter: COLLADASW::LibraryVisualScenes, protected TransformWriter, protected InstanceWriter +{ + ArmatureExporter *arm_exporter; +public: + SceneExporter(COLLADASW::StreamWriter *sw, ArmatureExporter *arm) : COLLADASW::LibraryVisualScenes(sw), + arm_exporter(arm) {} + + void exportScene(Scene *sce) { + // <library_visual_scenes> <visual_scene> + openVisualScene(id_name(sce)); + + // write <node>s + //forEachMeshObjectInScene(sce, *this); + //forEachCameraObjectInScene(sce, *this); + //forEachLampObjectInScene(sce, *this); + exportHierarchy(sce); + + // </visual_scene> </library_visual_scenes> + closeVisualScene(); + + closeLibrary(); + } + + void exportHierarchy(Scene *sce) + { + Base *base= (Base*) sce->base.first; + while(base) { + Object *ob = base->object; + + if (!ob->parent) { + switch(ob->type) { + case OB_MESH: + case OB_CAMERA: + case OB_LAMP: + case OB_EMPTY: + case OB_ARMATURE: + // write nodes.... + writeNodes(ob, sce); + break; + } + } + + base= base->next; + } + } + + + // called for each object + //void operator()(Object *ob) { + void writeNodes(Object *ob, Scene *sce) + { + COLLADASW::Node node(mSW); + node.setNodeId(id_name(ob)); + node.setType(COLLADASW::Node::NODE); + + node.start(); + + bool is_skinned_mesh = arm_exporter->is_skinned_mesh(ob); + + float mat[4][4]; + + if (ob->type == OB_MESH && is_skinned_mesh) + // for skinned mesh we write obmat in <bind_shape_matrix> + Mat4One(mat); + else + Mat4CpyMat4(mat, ob->obmat); + + TransformWriter::add_node_transform(node, mat, ob->parent ? ob->parent->obmat : NULL); + + // <instance_geometry> + if (ob->type == OB_MESH) { + if (is_skinned_mesh) { + arm_exporter->add_instance_controller(ob); + } + else { + COLLADASW::InstanceGeometry instGeom(mSW); + instGeom.setUrl(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, get_geometry_id(ob))); + + InstanceWriter::add_material_bindings(instGeom.getBindMaterial(), ob); + + instGeom.add(); + } + } + + // <instance_controller> + else if (ob->type == OB_ARMATURE) { + arm_exporter->add_armature_bones(ob, sce); + + // XXX this looks unstable... + node.end(); + } + + // <instance_camera> + else if (ob->type == OB_CAMERA) { + COLLADASW::InstanceCamera instCam(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, get_camera_id(ob))); + instCam.add(); + } + + // <instance_light> + else if (ob->type == OB_LAMP) { + COLLADASW::InstanceLight instLa(mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, get_light_id(ob))); + instLa.add(); + } + + // empty object + else if (ob->type == OB_EMPTY) { + } + + // write nodes for child objects + Base *b = (Base*) sce->base.first; + while(b) { + // cob - child object + Object *cob = b->object; + + if (cob->parent == ob) { + switch(cob->type) { + case OB_MESH: + case OB_CAMERA: + case OB_LAMP: + case OB_EMPTY: + case OB_ARMATURE: + // write node... + writeNodes(cob, sce); + break; + } + } + + b = b->next; + } + + if (ob->type != OB_ARMATURE) + node.end(); + } +}; + +class ImagesExporter: COLLADASW::LibraryImages +{ + const char *mfilename; + std::vector<std::string> mImages; // contains list of written images, to avoid duplicates +public: + ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename) : COLLADASW::LibraryImages(sw), mfilename(filename) + {} + + void exportImages(Scene *sce) + { + openLibrary(); + + forEachMaterialInScene(sce, *this); + + closeLibrary(); + } + + void operator()(Material *ma, Object *ob) + { + int a; + for (a = 0; a < MAX_MTEX; a++) { + MTex *mtex = ma->mtex[a]; + if (mtex && mtex->tex && mtex->tex->ima) { + + Image *image = mtex->tex->ima; + std::string name(id_name(image)); + char rel[FILE_MAX]; + char abs[FILE_MAX]; + char src[FILE_MAX]; + char dir[FILE_MAX]; + + BLI_split_dirfile_basic(mfilename, dir, NULL); + + BKE_get_image_export_path(image, dir, abs, sizeof(abs), rel, sizeof(rel)); + + if (strlen(abs)) { + + // make absolute source path + BLI_strncpy(src, image->name, sizeof(src)); + BLI_convertstringcode(src, G.sce); + + // make dest directory if it doesn't exist + BLI_make_existing_file(abs); + + if (BLI_copy_fileops(src, abs) != 0) { + fprintf(stderr, "Cannot copy image to file's directory. \n"); + } + } + + if (find(mImages.begin(), mImages.end(), name) == mImages.end()) { + COLLADASW::Image img(COLLADABU::URI(COLLADABU::URI::nativePathToUri(rel)), name); + img.add(mSW); + + mImages.push_back(name); + } + } + } + } +}; + + +class EffectsExporter: COLLADASW::LibraryEffects +{ +public: + EffectsExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryEffects(sw){} + void exportEffects(Scene *sce) + { + openLibrary(); + + forEachMaterialInScene(sce, *this); + + closeLibrary(); + } + + void operator()(Material *ma, Object *ob) + { + // create a list of indices to textures of type TEX_IMAGE + std::vector<int> tex_indices; + createTextureIndices(ma, tex_indices); + + openEffect(id_name(ma) + "-effect"); + + COLLADASW::EffectProfile ep(mSW); + ep.setProfileType(COLLADASW::EffectProfile::COMMON); + ep.openProfile(); + // set shader type - one of three blinn, phong or lambert + if (ma->spec_shader == MA_SPEC_BLINN) { + ep.setShaderType(COLLADASW::EffectProfile::BLINN); + // shininess + ep.setShininess(ma->spec); + } + else if (ma->spec_shader == MA_SPEC_PHONG) { + ep.setShaderType(COLLADASW::EffectProfile::PHONG); + // shininess + // XXX not sure, stolen this from previous Collada plugin + ep.setShininess(ma->har / 4); + } + else { + // XXX write warning "Current shader type is not supported" + ep.setShaderType(COLLADASW::EffectProfile::LAMBERT); + } + // index of refraction + if (ma->mode & MA_RAYTRANSP) { + ep.setIndexOfRefraction(ma->ang); + } + else { + ep.setIndexOfRefraction(1.0f); + } + // transparency + ep.setTransparency(ma->alpha); + // emission + COLLADASW::ColorOrTexture cot = getcol(0.0f, 0.0f, 0.0f, 1.0f); + ep.setEmission(cot); + ep.setTransparent(cot); + // diffuse + cot = getcol(ma->r, ma->g, ma->b, 1.0f); + ep.setDiffuse(cot); + // ambient + cot = getcol(ma->ambr, ma->ambg, ma->ambb, 1.0f); + ep.setAmbient(cot); + // reflective, reflectivity + if (ma->mode & MA_RAYMIRROR) { + cot = getcol(ma->mirr, ma->mirg, ma->mirb, 1.0f); + ep.setReflective(cot); + ep.setReflectivity(ma->ray_mirror); + } + else { + cot = getcol(0.0f, 0.0f, 0.0f, 1.0f); + ep.setReflective(cot); + ep.setReflectivity(0.0f); + } + // specular + if (ep.getShaderType() != COLLADASW::EffectProfile::LAMBERT) { + cot = getcol(ma->specr, ma->specg, ma->specb, 1.0f); + ep.setSpecular(cot); + } + + // XXX make this more readable if possible + + // create <sampler> and <surface> for each image + COLLADASW::Sampler samplers[MAX_MTEX]; + //COLLADASW::Surface surfaces[MAX_MTEX]; + //void *samp_surf[MAX_MTEX][2]; + void *samp_surf[MAX_MTEX][1]; + + // image to index to samp_surf map + // samp_surf[index] stores 2 pointers, sampler and surface + std::map<std::string, int> im_samp_map; + + unsigned int a, b; + for (a = 0, b = 0; a < tex_indices.size(); a++) { + MTex *t = ma->mtex[tex_indices[a]]; + Image *ima = t->tex->ima; + + std::string key(id_name(ima)); + + // create only one <sampler>/<surface> pair for each unique image + if (im_samp_map.find(key) == im_samp_map.end()) { + //<newparam> <surface> <init_from> + // COLLADASW::Surface surface(COLLADASW::Surface::SURFACE_TYPE_2D, +// key + COLLADASW::Surface::SURFACE_SID_SUFFIX); +// COLLADASW::SurfaceInitOption sio(COLLADASW::SurfaceInitOption::INIT_FROM); +// sio.setImageReference(key); +// surface.setInitOption(sio); + + //<newparam> <sampler> <source> + COLLADASW::Sampler sampler(COLLADASW::Sampler::SAMPLER_TYPE_2D, + key + COLLADASW::Sampler::SAMPLER_SID_SUFFIX, + key + COLLADASW::Sampler::SURFACE_SID_SUFFIX); + sampler.setImageId(key); + // copy values to arrays since they will live longer + samplers[a] = sampler; + //surfaces[a] = surface; + + // store pointers so they can be used later when we create <texture>s + samp_surf[b][0] = &samplers[a]; + //samp_surf[b][1] = &surfaces[a]; + + im_samp_map[key] = b; + b++; + } + } + + // used as fallback when MTex->uvname is "" (this is pretty common) + // it is indeed the correct value to use in that case + std::string active_uv(getActiveUVLayerName(ob)); + + // write textures + // XXX very slow + for (a = 0; a < tex_indices.size(); a++) { + MTex *t = ma->mtex[tex_indices[a]]; + Image *ima = t->tex->ima; + + // we assume map input is always TEXCO_UV + + std::string key(id_name(ima)); + int i = im_samp_map[key]; + COLLADASW::Sampler *sampler = (COLLADASW::Sampler*)samp_surf[i][0]; + //COLLADASW::Surface *surface = (COLLADASW::Surface*)samp_surf[i][1]; + + std::string uvname = strlen(t->uvname) ? t->uvname : active_uv; + + // color + if (t->mapto & MAP_COL) { + ep.setDiffuse(createTexture(ima, uvname, sampler)); + } + // ambient + if (t->mapto & MAP_AMB) { + ep.setAmbient(createTexture(ima, uvname, sampler)); + } + // specular + if (t->mapto & MAP_SPEC) { + ep.setSpecular(createTexture(ima, uvname, sampler)); + } + // emission + if (t->mapto & MAP_EMIT) { + ep.setEmission(createTexture(ima, uvname, sampler)); + } + // reflective + if (t->mapto & MAP_REF) { + ep.setReflective(createTexture(ima, uvname, sampler)); + } + if (t->mapto & MAP_ALPHA) { + ep.setTransparent(createTexture(ima, uvname, sampler)); + } + } + // performs the actual writing + ep.addProfileElements(); + ep.closeProfile(); + closeEffect(); + } + + COLLADASW::ColorOrTexture createTexture(Image *ima, + std::string& uv_layer_name, + COLLADASW::Sampler *sampler + /*COLLADASW::Surface *surface*/) + { + + COLLADASW::Texture texture(id_name(ima)); + texture.setTexcoord(uv_layer_name); + //texture.setSurface(*surface); + texture.setSampler(*sampler); + + COLLADASW::ColorOrTexture cot(texture); + return cot; + } + + COLLADASW::ColorOrTexture getcol(float r, float g, float b, float a) + { + COLLADASW::Color color(r,g,b,a); + COLLADASW::ColorOrTexture cot(color); + return cot; + } + + //returns the array of mtex indices which have image + //need this for exporting textures + void createTextureIndices(Material *ma, std::vector<int> &indices) + { + indices.clear(); + + for (int a = 0; a < MAX_MTEX; a++) { + if (ma->mtex[a] && + ma->mtex[a]->tex->type == TEX_IMAGE && + ma->mtex[a]->texco == TEXCO_UV){ + indices.push_back(a); + } + } + } +}; + +class MaterialsExporter: COLLADASW::LibraryMaterials +{ +public: + MaterialsExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryMaterials(sw){} + void exportMaterials(Scene *sce) + { + openLibrary(); + + forEachMaterialInScene(sce, *this); + + closeLibrary(); + } + + void operator()(Material *ma, Object *ob) + { + std::string name(id_name(ma)); + + openMaterial(name); + + std::string efid = name + "-effect"; + addInstanceEffect(COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, efid)); + + closeMaterial(); + } +}; + +class CamerasExporter: COLLADASW::LibraryCameras +{ +public: + CamerasExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryCameras(sw){} + void exportCameras(Scene *sce) + { + openLibrary(); + + forEachCameraObjectInScene(sce, *this); + + closeLibrary(); + } + void operator()(Object *ob, Scene *sce) + { + // XXX add other params later + Camera *cam = (Camera*)ob->data; + std::string cam_id(get_camera_id(ob)); + std::string cam_name(id_name(cam)); + + if (cam->type == CAM_PERSP) { + COLLADASW::PerspectiveOptic persp(mSW); + persp.setXFov(1.0); + persp.setAspectRatio(0.1); + persp.setZFar(cam->clipend); + persp.setZNear(cam->clipsta); + COLLADASW::Camera ccam(mSW, &persp, cam_id, cam_name); + addCamera(ccam); + } + else { + COLLADASW::OrthographicOptic ortho(mSW); + ortho.setXMag(1.0); + ortho.setAspectRatio(0.1); + ortho.setZFar(cam->clipend); + ortho.setZNear(cam->clipsta); + COLLADASW::Camera ccam(mSW, &ortho, cam_id, cam_name); + addCamera(ccam); + } + } +}; + +class LightsExporter: COLLADASW::LibraryLights +{ +public: + LightsExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryLights(sw){} + void exportLights(Scene *sce) + { + openLibrary(); + + forEachLampObjectInScene(sce, *this); + + closeLibrary(); + } + void operator()(Object *ob) + { + Lamp *la = (Lamp*)ob->data; + std::string la_id(get_light_id(ob)); + std::string la_name(id_name(la)); + COLLADASW::Color col(la->r, la->g, la->b); + float e = la->energy; + + // sun + if (la->type == LA_SUN) { + COLLADASW::DirectionalLight cla(mSW, la_id, la_name, e); + cla.setColor(col); + addLight(cla); + } + // hemi + else if (la->type == LA_HEMI) { + COLLADASW::AmbientLight cla(mSW, la_id, la_name, e); + cla.setColor(col); + addLight(cla); + } + // spot + else if (la->type == LA_SPOT) { + COLLADASW::SpotLight cla(mSW, la_id, la_name, e); + cla.setColor(col); + cla.setFallOffAngle(la->spotsize); + cla.setFallOffExponent(la->spotblend); + cla.setLinearAttenuation(la->att1); + cla.setQuadraticAttenuation(la->att2); + addLight(cla); + } + // lamp + else if (la->type == LA_LOCAL) { + COLLADASW::PointLight cla(mSW, la_id, la_name, e); + cla.setColor(col); + cla.setLinearAttenuation(la->att1); + cla.setQuadraticAttenuation(la->att2); + addLight(cla); + } + // area lamp is not supported + // it will be exported as a local lamp + else { + COLLADASW::PointLight cla(mSW, la_id, la_name, e); + cla.setColor(col); + cla.setLinearAttenuation(la->att1); + cla.setQuadraticAttenuation(la->att2); + addLight(cla); + } + } +}; + +// TODO: it would be better to instantiate animations rather than create a new one per object +// COLLADA allows this through multiple <channel>s in <animation>. +// For this to work, we need to know objects that use a certain action. +class AnimationExporter: COLLADASW::LibraryAnimations +{ + Scene *scene; + std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map; + std::map<bActionGroup*, std::vector<FCurve*> > rotfcurves_actionGroup_map; +public: + AnimationExporter(COLLADASW::StreamWriter *sw): COLLADASW::LibraryAnimations(sw) {} + + void exportAnimations(Scene *sce) + { + this->scene = sce; + + openLibrary(); + + forEachObjectInScene(sce, *this); + + closeLibrary(); + } + + // create <animation> for each transform axis + + float convert_time(float frame) { + return FRA2TIME(frame); + } + + float convert_angle(float angle) { + return COLLADABU::Math::Utils::radToDegF(angle); + } + + std::string get_semantic_suffix(Sampler::Semantic semantic) { + switch(semantic) { + case Sampler::INPUT: + return INPUT_SOURCE_ID_SUFFIX; + case Sampler::OUTPUT: + return OUTPUT_SOURCE_ID_SUFFIX; + case Sampler::INTERPOLATION: + return INTERPOLATION_SOURCE_ID_SUFFIX; + case Sampler::IN_TANGENT: + return INTANGENT_SOURCE_ID_SUFFIX; + case Sampler::OUT_TANGENT: + return OUTTANGENT_SOURCE_ID_SUFFIX; + } + return ""; + } + + void add_source_parameters(COLLADASW::SourceBase::ParameterNameList& param, + Sampler::Semantic semantic, bool rotation, const char *axis) { + switch(semantic) { + case Sampler::INPUT: + param.push_back("TIME"); + break; + case Sampler::OUTPUT: + if (rotation) { + param.push_back("ANGLE"); + } + else { + param.push_back(axis); + } + break; + case Sampler::IN_TANGENT: + case Sampler::OUT_TANGENT: + param.push_back("X"); + param.push_back("Y"); + break; + } + } + + void get_source_values(BezTriple *bezt, Sampler::Semantic semantic, bool rotation, float *values, int *length) + { + switch (semantic) { + case Sampler::INPUT: + *length = 1; + values[0] = convert_time(bezt->vec[1][0]); + break; + case Sampler::OUTPUT: + *length = 1; + if (rotation) { + values[0] = convert_angle(bezt->vec[1][1]); + } + else { + values[0] = bezt->vec[1][1]; + } + break; + case Sampler::IN_TANGENT: + case Sampler::OUT_TANGENT: + // XXX + *length = 2; + break; + } + } + + std::string create_source(Sampler::Semantic semantic, FCurve *fcu, std::string& anim_id, const char *axis_name) + { + std::string source_id = anim_id + get_semantic_suffix(semantic); + + //bool is_rotation = !strcmp(fcu->rna_path, "rotation"); + bool is_rotation = false; + + if (strstr(fcu->rna_path, "rotation")) is_rotation = true; + + COLLADASW::FloatSourceF source(mSW); + source.setId(source_id); + source.setArrayId(source_id + ARRAY_ID_SUFFIX); + source.setAccessorCount(fcu->totvert); + source.setAccessorStride(1); + + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + add_source_parameters(param, semantic, is_rotation, axis_name); + + source.prepareToAppendValues(); + + for (int i = 0; i < fcu->totvert; i++) { + float values[3]; // be careful! + int length; + + get_source_values(&fcu->bezt[i], semantic, is_rotation, values, &length); + for (int j = 0; j < length; j++) + source.appendValues(values[j]); + } + + source.finish(); + + return source_id; + } + + std::string create_interpolation_source(FCurve *fcu, std::string& anim_id, const char *axis_name) + { + std::string source_id = anim_id + get_semantic_suffix(Sampler::INTERPOLATION); + + //bool is_rotation = !strcmp(fcu->rna_path, "rotation"); + + COLLADASW::NameSource source(mSW); + source.setId(source_id); + source.setArrayId(source_id + ARRAY_ID_SUFFIX); + source.setAccessorCount(fcu->totvert); + source.setAccessorStride(1); + + COLLADASW::SourceBase::ParameterNameList ¶m = source.getParameterNameList(); + param.push_back("INTERPOLATION"); + + source.prepareToAppendValues(); + + for (int i = 0; i < fcu->totvert; i++) { + // XXX + source.appendValues(LINEAR_NAME); + } + + source.finish(); + + return source_id; + } + + std::string get_transform_sid(char *rna_path, const char *axis_name) + { + // if (!strcmp(rna_path, "rotation")) +// return std::string(rna_path) + axis_name; + +// return std::string(rna_path) + "." + axis_name; + std::string new_rna_path; + + if (strstr(rna_path, "rotation")) { + new_rna_path = "rotation"; + return new_rna_path + axis_name; + } + else if (strstr(rna_path, "location")) { + new_rna_path = strstr(rna_path, "location"); + return new_rna_path + "." + axis_name; + } + else if (strstr(rna_path, "scale")) { + new_rna_path = strstr(rna_path, "scale"); + return new_rna_path + "." + axis_name; + } + return NULL; + } + + void add_animation(FCurve *fcu, std::string ob_name) + { + const char *axis_names[] = {"X", "Y", "Z"}; + const char *axis_name = NULL; + char c_anim_id[100]; // careful! + + if (fcu->array_index < 3) + axis_name = axis_names[fcu->array_index]; + + BLI_snprintf(c_anim_id, sizeof(c_anim_id), "%s.%s.%s", (char*)ob_name.c_str(), fcu->rna_path, axis_names[fcu->array_index]); + std::string anim_id(c_anim_id); + + // check rna_path is one of: rotation, scale, location + + openAnimation(anim_id); + + // create input source + std::string input_id = create_source(Sampler::INPUT, fcu, anim_id, axis_name); + + // create output source + std::string output_id = create_source(Sampler::OUTPUT, fcu, anim_id, axis_name); + + // create interpolations source + std::string interpolation_id = create_interpolation_source(fcu, anim_id, axis_name); + + std::string sampler_id = anim_id + SAMPLER_ID_SUFFIX; + COLLADASW::LibraryAnimations::Sampler sampler(sampler_id); + std::string empty; + sampler.addInput(Sampler::INPUT, COLLADABU::URI(empty, input_id)); + sampler.addInput(Sampler::OUTPUT, COLLADABU::URI(empty, output_id)); + + // this input is required + sampler.addInput(Sampler::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); + + addSampler(sampler); + + std::string target = ob_name + "/" + get_transform_sid(fcu->rna_path, axis_name); + addChannel(COLLADABU::URI(empty, sampler_id), target); + + closeAnimation(); + } + + void add_bone_animation(FCurve *fcu, std::string ob_name, std::string bone_name) + { + const char *axis_names[] = {"X", "Y", "Z"}; + const char *axis_name = NULL; + char c_anim_id[100]; // careful! + + if (fcu->array_index < 3) + axis_name = axis_names[fcu->array_index]; + + std::string transform_sid = get_transform_sid(fcu->rna_path, axis_name); + + BLI_snprintf(c_anim_id, sizeof(c_anim_id), "%s.%s.%s", (char*)ob_name.c_str(), (char*)bone_name.c_str(), (char*)transform_sid.c_str()); + std::string anim_id(c_anim_id); + + // check rna_path is one of: rotation, scale, location + + openAnimation(anim_id); + + // create input source + std::string input_id = create_source(Sampler::INPUT, fcu, anim_id, axis_name); + + // create output source + std::string output_id = create_source(Sampler::OUTPUT, fcu, anim_id, axis_name); + + // create interpolations source + std::string interpolation_id = create_interpolation_source(fcu, anim_id, axis_name); + + std::string sampler_id = anim_id + SAMPLER_ID_SUFFIX; + COLLADASW::LibraryAnimations::Sampler sampler(sampler_id); + std::string empty; + sampler.addInput(Sampler::INPUT, COLLADABU::URI(empty, input_id)); + sampler.addInput(Sampler::OUTPUT, COLLADABU::URI(empty, output_id)); + + // this input is required + sampler.addInput(Sampler::INTERPOLATION, COLLADABU::URI(empty, interpolation_id)); + + addSampler(sampler); + + std::string target = ob_name + "_" + bone_name + "/" + transform_sid; + addChannel(COLLADABU::URI(empty, sampler_id), target); + + closeAnimation(); + } + + FCurve *create_fcurve(int array_index, char *rna_path) + { + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path)); + fcu->array_index = array_index; + return fcu; + } + + void create_bezt(FCurve *fcu, float frame, float output) + { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + bez.vec[1][0] = frame; + bez.vec[1][1] = output; + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + calchandles_fcurve(fcu); + } + + void change_quat_to_eul(Object *ob, bActionGroup *grp, char *grpname) + { + std::vector<FCurve*> &rot_fcurves = rotfcurves_actionGroup_map[grp]; + + FCurve *quatcu[4] = {NULL, NULL, NULL, NULL}; + int i; + + for (i = 0; i < rot_fcurves.size(); i++) + quatcu[rot_fcurves[i]->array_index] = rot_fcurves[i]; + + char *rna_path = rot_fcurves[0]->rna_path; + + FCurve *eulcu[3] = { + create_fcurve(0, rna_path), + create_fcurve(1, rna_path), + create_fcurve(2, rna_path) + }; + + for (i = 0; i < 4; i++) { + + FCurve *cu = quatcu[i]; + + if (!cu) continue; + + for (int j = 0; j < cu->totvert; j++) { + float frame = cu->bezt[j].vec[1][0]; + + float quat[4] = { + quatcu[0] ? evaluate_fcurve(quatcu[0], frame) : 0.0f, + quatcu[1] ? evaluate_fcurve(quatcu[1], frame) : 0.0f, + quatcu[2] ? evaluate_fcurve(quatcu[2], frame) : 0.0f, + quatcu[3] ? evaluate_fcurve(quatcu[3], frame) : 0.0f + }; + + float eul[3]; + + QuatToEul(quat, eul); + + for (int k = 0; k < 3; k++) + create_bezt(eulcu[k], frame, eul[k]); + } + } + + for (i = 0; i < 3; i++) { + add_bone_animation(eulcu[i], id_name(ob), std::string(grpname)); + free_fcurve(eulcu[i]); + } + } + + // called for each exported object + void operator() (Object *ob) + { + if (!ob->adt || !ob->adt->action) return; + + FCurve *fcu = (FCurve*)ob->adt->action->curves.first; + + if (ob->type == OB_ARMATURE) { + + while (fcu) { + + if (strstr(fcu->rna_path, ".rotation")) + rotfcurves_actionGroup_map[fcu->grp].push_back(fcu); + else fcurves_actionGroup_map[fcu->grp].push_back(fcu); + + fcu = fcu->next; + } + + for (bPoseChannel *pchan = (bPoseChannel*)ob->pose->chanbase.first; pchan; pchan = pchan->next) { + int i; + char *grpname = pchan->name; + bActionGroup *grp = action_groups_find_named(ob->adt->action, grpname); + + if (!grp) continue; + + // write animation for location & scaling + if (fcurves_actionGroup_map.find(grp) == fcurves_actionGroup_map.end()) continue; + + std::vector<FCurve*> &fcurves = fcurves_actionGroup_map[grp]; + for (i = 0; i < fcurves.size(); i++) + add_bone_animation(fcurves[i], id_name(ob), std::string(grpname)); + + // ... for rotation + if (rotfcurves_actionGroup_map.find(grp) == rotfcurves_actionGroup_map.end()) + continue; + + // if rotation mode is euler - no need to convert it + if (pchan->rotmode == ROT_MODE_EUL) { + + std::vector<FCurve*> &rotfcurves = rotfcurves_actionGroup_map[grp]; + + for (i = 0; i < rotfcurves.size(); i++) + add_bone_animation(rotfcurves[i], id_name(ob), std::string(grpname)); + } + + // convert rotation to euler & write animation + else change_quat_to_eul(ob, grp, grpname); + } + } + else { + while (fcu) { + + if (!strcmp(fcu->rna_path, "location") || + !strcmp(fcu->rna_path, "scale") || + !strcmp(fcu->rna_path, "rotation_euler")) { + + add_animation(fcu, id_name(ob)); + } + + fcu = fcu->next; + } + } + } +}; + +void DocumentExporter::exportCurrentScene(Scene *sce, const char* filename) +{ + COLLADABU::NativeString native_filename = + COLLADABU::NativeString(std::string(filename)); + COLLADASW::StreamWriter sw(native_filename); + + // open <Collada> + sw.startDocument(); + + // <asset> + COLLADASW::Asset asset(&sw); + // XXX ask blender devs about this? + asset.setUnit("decimetre", 0.1); + asset.setUpAxisType(COLLADASW::Asset::Z_UP); + asset.add(); + + // <library_cameras> + CamerasExporter ce(&sw); + ce.exportCameras(sce); + + // <library_lights> + LightsExporter le(&sw); + le.exportLights(sce); + + // <library_images> + ImagesExporter ie(&sw, filename); + ie.exportImages(sce); + + // <library_effects> + EffectsExporter ee(&sw); + ee.exportEffects(sce); + + // <library_materials> + MaterialsExporter me(&sw); + me.exportMaterials(sce); + + // <library_geometries> + GeometryExporter ge(&sw); + ge.exportGeom(sce); + + // <library_animations> + AnimationExporter ae(&sw); + ae.exportAnimations(sce); + + // <library_controllers> + ArmatureExporter arm_exporter(&sw); + arm_exporter.export_controllers(sce); + + // <library_visual_scenes> + SceneExporter se(&sw, &arm_exporter); + se.exportScene(sce); + + // <scene> + std::string scene_name(id_name(sce)); + COLLADASW::Scene scene(&sw, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING, + scene_name)); + scene.add(); + + // close <Collada> + sw.endDocument(); + +} + +void DocumentExporter::exportScenes(const char* filename) +{ +} diff --git a/source/blender/collada/DocumentExporter.h b/source/blender/collada/DocumentExporter.h new file mode 100644 index 00000000000..1a0c292a3dd --- /dev/null +++ b/source/blender/collada/DocumentExporter.h @@ -0,0 +1,8 @@ +struct Scene; + +class DocumentExporter +{ + public: + void exportCurrentScene(Scene *sce, const char* filename); + void exportScenes(const char* filename); +}; diff --git a/source/blender/collada/DocumentImporter.cpp b/source/blender/collada/DocumentImporter.cpp new file mode 100644 index 00000000000..0aa69d11949 --- /dev/null +++ b/source/blender/collada/DocumentImporter.cpp @@ -0,0 +1,2850 @@ +#include "COLLADAFWRoot.h" +#include "COLLADAFWIWriter.h" +#include "COLLADAFWStableHeaders.h" +#include "COLLADAFWAnimationCurve.h" +#include "COLLADAFWAnimationList.h" +#include "COLLADAFWCamera.h" +#include "COLLADAFWColorOrTexture.h" +#include "COLLADAFWEffect.h" +#include "COLLADAFWFloatOrDoubleArray.h" +#include "COLLADAFWGeometry.h" +#include "COLLADAFWImage.h" +#include "COLLADAFWIndexList.h" +#include "COLLADAFWInstanceGeometry.h" +#include "COLLADAFWLight.h" +#include "COLLADAFWMaterial.h" +#include "COLLADAFWMesh.h" +#include "COLLADAFWMeshPrimitiveWithFaceVertexCount.h" +#include "COLLADAFWNode.h" +#include "COLLADAFWPolygons.h" +#include "COLLADAFWSampler.h" +#include "COLLADAFWSkinController.h" +#include "COLLADAFWSkinControllerData.h" +#include "COLLADAFWTransformation.h" +#include "COLLADAFWTranslate.h" +#include "COLLADAFWRotate.h" +#include "COLLADAFWScale.h" +#include "COLLADAFWMatrix.h" +#include "COLLADAFWTypes.h" +#include "COLLADAFWVisualScene.h" +#include "COLLADAFWFileInfo.h" +#include "COLLADAFWArrayPrimitiveType.h" + +#include "COLLADASaxFWLLoader.h" + +// TODO move "extern C" into header files +extern "C" +{ +#include "ED_keyframing.h" +#include "ED_armature.h" +#include "ED_mesh.h" // ED_vgroup_vert_add, ... +#include "ED_anim_api.h" +#include "WM_types.h" +#include "WM_api.h" + +#include "BKE_main.h" +#include "BKE_customdata.h" +#include "BKE_library.h" +#include "BKE_texture.h" +#include "BKE_fcurve.h" +#include "BKE_depsgraph.h" +#include "BLI_util.h" +#include "BKE_displist.h" +#include "BLI_arithb.h" +} +#include "BKE_armature.h" +#include "BKE_mesh.h" +#include "BKE_global.h" +#include "BKE_context.h" +#include "BKE_object.h" +#include "BKE_image.h" +#include "BKE_material.h" +#include "BKE_utildefines.h" +#include "BKE_action.h" + +#include "BLI_arithb.h" +#include "BLI_listbase.h" +#include "BLI_string.h" + +#include "DNA_lamp_types.h" +#include "DNA_armature_types.h" +#include "DNA_anim_types.h" +#include "DNA_curve_types.h" +#include "DNA_texture_types.h" +#include "DNA_camera_types.h" +#include "DNA_object_types.h" +#include "DNA_meshdata_types.h" +#include "DNA_mesh_types.h" +#include "DNA_material_types.h" +#include "DNA_scene_types.h" + +#include "MEM_guardedalloc.h" + +#include "DocumentImporter.h" +#include "collada_internal.h" + +#include <string> +#include <map> + +#include <math.h> +#include <float.h> + +// #define COLLADA_DEBUG + +char *CustomData_get_layer_name(const struct CustomData *data, int type, int n); + +// armature module internal func, it's not good to use it here? (Arystan) +struct EditBone *addEditBone(struct bArmature *arm, char *name); + +const char *primTypeToStr(COLLADAFW::MeshPrimitive::PrimitiveType type) +{ + using namespace COLLADAFW; + + switch (type) { + case MeshPrimitive::LINES: + return "LINES"; + case MeshPrimitive::LINE_STRIPS: + return "LINESTRIPS"; + case MeshPrimitive::POLYGONS: + return "POLYGONS"; + case MeshPrimitive::POLYLIST: + return "POLYLIST"; + case MeshPrimitive::TRIANGLES: + return "TRIANGLES"; + case MeshPrimitive::TRIANGLE_FANS: + return "TRIANGLE_FANS"; + case MeshPrimitive::TRIANGLE_STRIPS: + return "TRIANGLE_FANS"; + case MeshPrimitive::POINTS: + return "POINTS"; + case MeshPrimitive::UNDEFINED_PRIMITIVE_TYPE: + return "UNDEFINED_PRIMITIVE_TYPE"; + } + return "UNKNOWN"; +} +const char *geomTypeToStr(COLLADAFW::Geometry::GeometryType type) +{ + switch (type) { + case COLLADAFW::Geometry::GEO_TYPE_MESH: + return "MESH"; + case COLLADAFW::Geometry::GEO_TYPE_SPLINE: + return "SPLINE"; + case COLLADAFW::Geometry::GEO_TYPE_CONVEX_MESH: + return "CONVEX_MESH"; + } + return "UNKNOWN"; +} + +// works for COLLADAFW::Node, COLLADAFW::Geometry +template<class T> +const char *get_dae_name(T *node) +{ + const std::string& name = node->getName(); + return name.size() ? name.c_str() : node->getOriginalId().c_str(); +} + +// use this for retrieving bone names, since these must be unique +template<class T> +const char *get_joint_name(T *node) +{ + const std::string& id = node->getOriginalId(); + return id.size() ? id.c_str() : node->getName().c_str(); +} + +float get_float_value(const COLLADAFW::FloatOrDoubleArray& array, int index) +{ + if (index >= array.getValuesCount()) + return 0.0f; + + if (array.getType() == COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT) + return array.getFloatValues()->getData()[index]; + else + return array.getDoubleValues()->getData()[index]; +} + +typedef std::map<COLLADAFW::TextureMapId, std::vector<MTex*> > TexIndexTextureArrayMap; + +class TransformReader : public TransformBase +{ +protected: + + UnitConverter *unit_converter; + + struct Animation { + Object *ob; + COLLADAFW::Node *node; + COLLADAFW::Transformation *tm; // which transform is animated by an AnimationList->id + }; + +public: + + TransformReader(UnitConverter* conv) : unit_converter(conv) {} + + void get_node_mat(float mat[][4], COLLADAFW::Node *node, std::map<COLLADAFW::UniqueId, Animation> *animation_map, + Object *ob) + { + float cur[4][4]; + float copy[4][4]; + + Mat4One(mat); + + for (int i = 0; i < node->getTransformations().getCount(); i++) { + + COLLADAFW::Transformation *tm = node->getTransformations()[i]; + COLLADAFW::Transformation::TransformationType type = tm->getTransformationType(); + + switch(type) { + case COLLADAFW::Transformation::TRANSLATE: + { + COLLADAFW::Translate *tra = (COLLADAFW::Translate*)tm; + COLLADABU::Math::Vector3& t = tra->getTranslation(); + + Mat4One(cur); + cur[3][0] = (float)t[0]; + cur[3][1] = (float)t[1]; + cur[3][2] = (float)t[2]; + } + break; + case COLLADAFW::Transformation::ROTATE: + { + COLLADAFW::Rotate *ro = (COLLADAFW::Rotate*)tm; + COLLADABU::Math::Vector3& raxis = ro->getRotationAxis(); + float angle = (float)(ro->getRotationAngle() * M_PI / 180.0f); + float axis[] = {raxis[0], raxis[1], raxis[2]}; + float quat[4]; + float rot_copy[3][3]; + float mat[3][3]; + AxisAngleToQuat(quat, axis, angle); + + QuatToMat4(quat, cur); + } + break; + case COLLADAFW::Transformation::SCALE: + { + COLLADABU::Math::Vector3& s = ((COLLADAFW::Scale*)tm)->getScale(); + float size[3] = {(float)s[0], (float)s[1], (float)s[2]}; + SizeToMat4(size, cur); + } + break; + case COLLADAFW::Transformation::MATRIX: + { + unit_converter->mat4_from_dae(cur, ((COLLADAFW::Matrix*)tm)->getMatrix()); + } + break; + case COLLADAFW::Transformation::LOOKAT: + case COLLADAFW::Transformation::SKEW: + fprintf(stderr, "LOOKAT and SKEW transformations are not supported yet.\n"); + break; + } + + Mat4CpyMat4(copy, mat); + Mat4MulMat4(mat, cur, copy); + + if (animation_map) { + // AnimationList that drives this Transformation + const COLLADAFW::UniqueId& anim_list_id = tm->getAnimationList(); + + // store this so later we can link animation data with ob + Animation anim = {ob, node, tm}; + (*animation_map)[anim_list_id] = anim; + } + } + } +}; + +// only for ArmatureImporter to "see" MeshImporter::get_object_by_geom_uid +class MeshImporterBase +{ +public: + virtual Object *get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid) = 0; +}; + +// ditto as above +class AnimationImporterBase +{ +public: + virtual void change_eul_to_quat(Object *ob, bAction *act) = 0; +}; + +class ArmatureImporter : private TransformReader +{ +private: + Scene *scene; + UnitConverter *unit_converter; + + // std::map<int, JointData> joint_index_to_joint_info_map; + // std::map<COLLADAFW::UniqueId, int> joint_id_to_joint_index_map; + + struct LeafBone { + // COLLADAFW::Node *node; + EditBone *bone; + char name[32]; + float mat[4][4]; // bone matrix, derived from inv_bind_mat + }; + std::vector<LeafBone> leaf_bones; + // int bone_direction_row; // XXX not used + float leaf_bone_length; + int totbone; + // XXX not used + // float min_angle; // minimum angle between bone head-tail and a row of bone matrix + +#if 0 + struct ArmatureJoints { + Object *ob_arm; + std::vector<COLLADAFW::Node*> root_joints; + }; + std::vector<ArmatureJoints> armature_joints; +#endif + + Object *empty; // empty for leaf bones + + std::map<COLLADAFW::UniqueId, COLLADAFW::UniqueId> geom_uid_by_controller_uid; + std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> joint_by_uid; // contains all joints + std::vector<COLLADAFW::Node*> root_joints; + + std::vector<Object*> armature_objects; + + MeshImporterBase *mesh_importer; + AnimationImporterBase *anim_importer; + + // This is used to store data passed in write_controller_data. + // Arrays from COLLADAFW::SkinControllerData lose ownership, so do this class members + // so that arrays don't get freed until we free them explicitly. + class SkinInfo + { + private: + // to build armature bones from inverse bind matrices + struct JointData { + float inv_bind_mat[4][4]; // joint inverse bind matrix + COLLADAFW::UniqueId joint_uid; // joint node UID + // Object *ob_arm; // armature object + }; + + float bind_shape_matrix[4][4]; + + // data from COLLADAFW::SkinControllerData, each array should be freed + COLLADAFW::UIntValuesArray joints_per_vertex; + COLLADAFW::UIntValuesArray weight_indices; + COLLADAFW::IntValuesArray joint_indices; + // COLLADAFW::FloatOrDoubleArray weights; + std::vector<float> weights; + + std::vector<JointData> joint_data; // index to this vector is joint index + + UnitConverter *unit_converter; + + Object *ob_arm; + COLLADAFW::UniqueId controller_uid; + + public: + + SkinInfo() {} + + SkinInfo(const SkinInfo& skin) : weights(skin.weights), + joint_data(skin.joint_data), + unit_converter(skin.unit_converter), + ob_arm(skin.ob_arm), + controller_uid(skin.controller_uid) + { + Mat4CpyMat4(bind_shape_matrix, (float (*)[4])skin.bind_shape_matrix); + + transfer_uint_array_data_const(skin.joints_per_vertex, joints_per_vertex); + transfer_uint_array_data_const(skin.weight_indices, weight_indices); + transfer_int_array_data_const(skin.joint_indices, joint_indices); + } + + SkinInfo(UnitConverter *conv) : unit_converter(conv), ob_arm(NULL) {} + + // nobody owns the data after this, so it should be freed manually with releaseMemory + template <class T> + void transfer_array_data(T& src, T& dest) + { + dest.setData(src.getData(), src.getCount()); + src.yieldOwnerShip(); + dest.yieldOwnerShip(); + } + + // when src is const we cannot src.yieldOwnerShip, this is used by copy constructor + void transfer_int_array_data_const(const COLLADAFW::IntValuesArray& src, COLLADAFW::IntValuesArray& dest) + { + dest.setData((int*)src.getData(), src.getCount()); + dest.yieldOwnerShip(); + } + + void transfer_uint_array_data_const(const COLLADAFW::UIntValuesArray& src, COLLADAFW::UIntValuesArray& dest) + { + dest.setData((unsigned int*)src.getData(), src.getCount()); + dest.yieldOwnerShip(); + } + + void borrow_skin_controller_data(const COLLADAFW::SkinControllerData* skin) + { + transfer_array_data((COLLADAFW::UIntValuesArray&)skin->getJointsPerVertex(), joints_per_vertex); + transfer_array_data((COLLADAFW::UIntValuesArray&)skin->getWeightIndices(), weight_indices); + transfer_array_data((COLLADAFW::IntValuesArray&)skin->getJointIndices(), joint_indices); + // transfer_array_data(skin->getWeights(), weights); + + // cannot transfer data for FloatOrDoubleArray, copy values manually + const COLLADAFW::FloatOrDoubleArray& weight = skin->getWeights(); + for (int i = 0; i < weight.getValuesCount(); i++) + weights.push_back(get_float_value(weight, i)); + + unit_converter->mat4_from_dae(bind_shape_matrix, skin->getBindShapeMatrix()); + } + + void free() + { + joints_per_vertex.releaseMemory(); + weight_indices.releaseMemory(); + joint_indices.releaseMemory(); + // weights.releaseMemory(); + } + + // using inverse bind matrices to construct armature + // it is safe to invert them to get the original matrices + // because if they are inverse matrices, they can be inverted + void add_joint(const COLLADABU::Math::Matrix4& matrix) + { + JointData jd; + unit_converter->mat4_from_dae(jd.inv_bind_mat, matrix); + joint_data.push_back(jd); + } + + // called from write_controller + Object *create_armature(const COLLADAFW::SkinController* co, Scene *scene) + { + ob_arm = add_object(scene, OB_ARMATURE); + + controller_uid = co->getUniqueId(); + + const COLLADAFW::UniqueIdArray& joint_uids = co->getJoints(); + for (int i = 0; i < joint_uids.getCount(); i++) { + joint_data[i].joint_uid = joint_uids[i]; + + // // store armature pointer + // JointData& jd = joint_index_to_joint_info_map[i]; + // jd.ob_arm = ob_arm; + + // now we'll be able to get inv bind matrix from joint id + // joint_id_to_joint_index_map[joint_ids[i]] = i; + } + + return ob_arm; + } + + bool get_joint_inv_bind_matrix(float inv_bind_mat[][4], COLLADAFW::Node *node) + { + const COLLADAFW::UniqueId& uid = node->getUniqueId(); + std::vector<JointData>::iterator it; + for (it = joint_data.begin(); it != joint_data.end(); it++) { + if ((*it).joint_uid == uid) { + Mat4CpyMat4(inv_bind_mat, (*it).inv_bind_mat); + return true; + } + } + + return false; + } + + Object *get_armature() + { + return ob_arm; + } + + const COLLADAFW::UniqueId& get_controller_uid() + { + return controller_uid; + } + + // some nodes may not be referenced by SkinController, + // in this case to determine if the node belongs to this armature, + // we need to search down the tree + bool uses_joint(COLLADAFW::Node *node) + { + const COLLADAFW::UniqueId& uid = node->getUniqueId(); + std::vector<JointData>::iterator it; + for (it = joint_data.begin(); it != joint_data.end(); it++) { + if ((*it).joint_uid == uid) + return true; + } + + COLLADAFW::NodePointerArray& children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + if (this->uses_joint(children[i])) + return true; + } + + return false; + } + + void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid, + TransformReader *tm) + { + tm->decompose(bind_shape_matrix, ob->loc, ob->rot, ob->size); + + ob->parent = ob_arm; + ob->partype = PARSKEL; + ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; + + ((bArmature*)ob_arm->data)->deformflag = ARM_DEF_VGROUP; + + // we need armature matrix here... where do we get it from I wonder... + // root node/joint? or node with <instance_controller>? + float parmat[4][4]; + Mat4One(parmat); + Mat4Invert(ob->parentinv, parmat); + + // create all vertex groups + std::vector<JointData>::iterator it; + int joint_index; + for (it = joint_data.begin(), joint_index = 0; it != joint_data.end(); it++, joint_index++) { + const char *name = "Group"; + + // name group by joint node name + if (joint_by_uid.find((*it).joint_uid) != joint_by_uid.end()) { + name = get_joint_name(joint_by_uid[(*it).joint_uid]); + } + + ED_vgroup_add_name(ob, (char*)name); + } + + // <vcount> - number of joints per vertex - joints_per_vertex + // <v> - [[bone index, weight index] * joints per vertex] * vertices - weight indices + // ^ bone index can be -1 meaning weight toward bind shape, how to express this in Blender? + + // for each vertex in weight indices + // for each bone index in vertex + // add vertex to group at group index + // treat group index -1 specially + + // get def group by index with BLI_findlink + + for (int vertex = 0, weight = 0; vertex < joints_per_vertex.getCount(); vertex++) { + + int limit = weight + joints_per_vertex[vertex]; + for ( ; weight < limit; weight++) { + int joint = joint_indices[weight], joint_weight = weight_indices[weight]; + + // -1 means "weight towards the bind shape", we just don't assign it to any group + if (joint != -1) { + bDeformGroup *def = (bDeformGroup*)BLI_findlink(&ob->defbase, joint); + + ED_vgroup_vert_add(ob, def, vertex, weights[joint_weight], WEIGHT_REPLACE); + } + } + } + + DAG_scene_sort(CTX_data_scene(C)); + ED_anim_dag_flush_update(C); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + } + + bPoseChannel *get_pose_channel_from_node(COLLADAFW::Node *node) + { + return get_pose_channel(ob_arm->pose, get_joint_name(node)); + } + }; + + std::map<COLLADAFW::UniqueId, SkinInfo> skin_by_data_uid; // data UID = skin controller data UID +#if 0 + JointData *get_joint_data(COLLADAFW::Node *node) + { + const COLLADAFW::UniqueId& joint_id = node->getUniqueId(); + + if (joint_id_to_joint_index_map.find(joint_id) == joint_id_to_joint_index_map.end()) { + fprintf(stderr, "Cannot find a joint index by joint id for %s.\n", + node->getOriginalId().c_str()); + return NULL; + } + + int joint_index = joint_id_to_joint_index_map[joint_id]; + + return &joint_index_to_joint_info_map[joint_index]; + } +#endif + + void create_bone(SkinInfo& skin, COLLADAFW::Node *node, EditBone *parent, int totchild, + float parent_mat[][4], bArmature *arm) + { + float joint_inv_bind_mat[4][4]; + + // JointData* jd = get_joint_data(node); + + float mat[4][4]; + + if (skin.get_joint_inv_bind_matrix(joint_inv_bind_mat, node)) { + // get original world-space matrix + Mat4Invert(mat, joint_inv_bind_mat); + } + // create a bone even if there's no joint data for it (i.e. it has no influence) + else { + float obmat[4][4]; + + // object-space + get_node_mat(obmat, node, NULL, NULL); + + // get world-space + if (parent) + Mat4MulMat4(mat, obmat, parent_mat); + else + Mat4CpyMat4(mat, obmat); + } + + // TODO rename from Node "name" attrs later + EditBone *bone = addEditBone(arm, (char*)get_joint_name(node)); + totbone++; + + if (parent) bone->parent = parent; + + // set head + VecCopyf(bone->head, mat[3]); + + // set tail, don't set it to head because 0-length bones are not allowed + float vec[3] = {0.0f, 0.5f, 0.0f}; + VecAddf(bone->tail, bone->head, vec); + + // set parent tail + if (parent && totchild == 1) { + VecCopyf(parent->tail, bone->head); + + // XXX increase this to prevent "very" small bones? + const float epsilon = 0.000001f; + + // derive leaf bone length + float length = VecLenf(parent->head, parent->tail); + if ((length < leaf_bone_length || totbone == 0) && length > epsilon) { + leaf_bone_length = length; + } + + // treat zero-sized bone like a leaf bone + if (length <= epsilon) { + add_leaf_bone(parent_mat, parent); + } + + /* +#if 0 + // and which row in mat is bone direction + float vec[3]; + VecSubf(vec, parent->tail, parent->head); +#ifdef COLLADA_DEBUG + printvecf("tail - head", vec); + printmatrix4("matrix", parent_mat); +#endif + for (int i = 0; i < 3; i++) { +#ifdef COLLADA_DEBUG + char *axis_names[] = {"X", "Y", "Z"}; + printf("%s-axis length is %f\n", axis_names[i], VecLength(parent_mat[i])); +#endif + float angle = VecAngle2(vec, parent_mat[i]); + if (angle < min_angle) { +#ifdef COLLADA_DEBUG + printvecf("picking", parent_mat[i]); + printf("^ %s axis of %s's matrix\n", axis_names[i], get_dae_name(node)); +#endif + bone_direction_row = i; + min_angle = angle; + } + } +#endif + */ + } + + COLLADAFW::NodePointerArray& children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + create_bone(skin, children[i], bone, children.getCount(), mat, arm); + } + + // in second case it's not a leaf bone, but we handle it the same way + if (!children.getCount() || children.getCount() > 1) { + add_leaf_bone(mat, bone); + } + } + + void add_leaf_bone(float mat[][4], EditBone *bone) + { + LeafBone leaf; + + leaf.bone = bone; + Mat4CpyMat4(leaf.mat, mat); + BLI_strncpy(leaf.name, bone->name, sizeof(leaf.name)); + + leaf_bones.push_back(leaf); + } + + void fix_leaf_bones() + { + // just setting tail for leaf bones here + + std::vector<LeafBone>::iterator it; + for (it = leaf_bones.begin(); it != leaf_bones.end(); it++) { + LeafBone& leaf = *it; + + // pointing up + float vec[3] = {0.0f, 0.0f, 1.0f}; + + VecMulf(vec, leaf_bone_length); + + VecCopyf(leaf.bone->tail, leaf.bone->head); + VecAddf(leaf.bone->tail, leaf.bone->head, vec); + } + } + + void set_leaf_bone_shapes(Object *ob_arm) + { + bPose *pose = ob_arm->pose; + + std::vector<LeafBone>::iterator it; + for (it = leaf_bones.begin(); it != leaf_bones.end(); it++) { + LeafBone& leaf = *it; + + bPoseChannel *pchan = get_pose_channel(pose, leaf.name); + if (pchan) { + pchan->custom = get_empty_for_leaves(); + } + else { + fprintf(stderr, "Cannot find a pose channel for leaf bone %s\n", leaf.name); + } + } + } + + void set_euler_rotmode() + { + // just set rotmode = ROT_MODE_EUL on pose channel for each joint + + std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>::iterator it; + + for (it = joint_by_uid.begin(); it != joint_by_uid.end(); it++) { + + COLLADAFW::Node *joint = it->second; + + std::map<COLLADAFW::UniqueId, SkinInfo>::iterator sit; + + for (sit = skin_by_data_uid.begin(); sit != skin_by_data_uid.end(); sit++) { + SkinInfo& skin = sit->second; + + if (skin.uses_joint(joint)) { + bPoseChannel *pchan = skin.get_pose_channel_from_node(joint); + + if (pchan) { + pchan->rotmode = ROT_MODE_EUL; + } + else { + fprintf(stderr, "Cannot find pose channel for %s.\n", get_joint_name(joint)); + } + + break; + } + } + } + } + + Object *get_empty_for_leaves() + { + if (empty) return empty; + + empty = add_object(scene, OB_EMPTY); + empty->empty_drawtype = OB_EMPTY_SPHERE; + + return empty; + } + +#if 0 + Object *find_armature(COLLADAFW::Node *node) + { + JointData* jd = get_joint_data(node); + if (jd) return jd->ob_arm; + + COLLADAFW::NodePointerArray& children = node->getChildNodes(); + for (int i = 0; i < children.getCount(); i++) { + Object *ob_arm = find_armature(children[i]); + if (ob_arm) return ob_arm; + } + + return NULL; + } + + ArmatureJoints& get_armature_joints(Object *ob_arm) + { + // try finding it + std::vector<ArmatureJoints>::iterator it; + for (it = armature_joints.begin(); it != armature_joints.end(); it++) { + if ((*it).ob_arm == ob_arm) return *it; + } + + // not found, create one + ArmatureJoints aj; + aj.ob_arm = ob_arm; + armature_joints.push_back(aj); + + return armature_joints.back(); + } +#endif + + void create_armature_bones(SkinInfo& skin) + { + // just do like so: + // - get armature + // - enter editmode + // - add edit bones and head/tail properties using matrices and parent-child info + // - exit edit mode + // - set a sphere shape to leaf bones + + Object *ob_arm = skin.get_armature(); + + // enter armature edit mode + ED_armature_to_edit(ob_arm); + + leaf_bones.clear(); + totbone = 0; + // bone_direction_row = 1; // TODO: don't default to Y but use asset and based on it decide on default row + leaf_bone_length = 0.1f; + // min_angle = 360.0f; // minimum angle between bone head-tail and a row of bone matrix + + // create bones + + std::vector<COLLADAFW::Node*>::iterator it; + for (it = root_joints.begin(); it != root_joints.end(); it++) { + // since root_joints may contain joints for multiple controllers, we need to filter + if (skin.uses_joint(*it)) { + create_bone(skin, *it, NULL, (*it)->getChildNodes().getCount(), NULL, (bArmature*)ob_arm->data); + } + } + + fix_leaf_bones(); + + // exit armature edit mode + ED_armature_from_edit(ob_arm); + ED_armature_edit_free(ob_arm); + DAG_id_flush_update(&ob_arm->id, OB_RECALC_OB|OB_RECALC_DATA); + + set_leaf_bone_shapes(ob_arm); + + set_euler_rotmode(); + } + + +public: + + ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, AnimationImporterBase *anim, Scene *sce) : + TransformReader(conv), scene(sce), empty(NULL), mesh_importer(mesh), anim_importer(anim) {} + + ~ArmatureImporter() + { + // free skin controller data if we forget to do this earlier + std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it; + for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { + it->second.free(); + } + } + + // root - if this joint is the top joint in hierarchy, if a joint + // is a child of a node (not joint), root should be true since + // this is where we build armature bones from + void add_joint(COLLADAFW::Node *node, bool root) + { + joint_by_uid[node->getUniqueId()] = node; + if (root) root_joints.push_back(node); + } + +#if 0 + void add_root_joint(COLLADAFW::Node *node) + { + // root_joints.push_back(node); + Object *ob_arm = find_armature(node); + if (ob_arm) { + get_armature_joints(ob_arm).root_joints.push_back(node); + } +#ifdef COLLADA_DEBUG + else { + fprintf(stderr, "%s cannot be added to armature.\n", get_joint_name(node)); + } +#endif + } +#endif + + // here we add bones to armatures, having armatures previously created in write_controller + void make_armatures(bContext *C) + { + std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it; + for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { + + SkinInfo& skin = it->second; + + create_armature_bones(skin); + + // link armature with an object + Object *ob = mesh_importer->get_object_by_geom_uid(*get_geometry_uid(skin.get_controller_uid())); + if (ob) { + skin.link_armature(C, ob, joint_by_uid, this); + } + else { + fprintf(stderr, "Cannot find object to link armature with.\n"); + } + + // free memory stolen from SkinControllerData + skin.free(); + } + } + +#if 0 + // link with meshes, create vertex groups, assign weights + void link_armature(Object *ob_arm, const COLLADAFW::UniqueId& geom_id, const COLLADAFW::UniqueId& controller_data_id) + { + Object *ob = mesh_importer->get_object_by_geom_uid(geom_id); + + if (!ob) { + fprintf(stderr, "Cannot find object by geometry UID.\n"); + return; + } + + if (skin_by_data_uid.find(controller_data_id) == skin_by_data_uid.end()) { + fprintf(stderr, "Cannot find skin info by controller data UID.\n"); + return; + } + + SkinInfo& skin = skin_by_data_uid[conroller_data_id]; + + // create vertex groups + } +#endif + + bool write_skin_controller_data(const COLLADAFW::SkinControllerData* data) + { + // at this stage we get vertex influence info that should go into me->verts and ob->defbase + // there's no info to which object this should be long so we associate it with skin controller data UID + + // don't forget to call unique_vertexgroup_name before we copy + + // controller data uid -> [armature] -> joint data, + // [mesh object] + // + + SkinInfo skin(unit_converter); + skin.borrow_skin_controller_data(data); + + // store join inv bind matrix to use it later in armature construction + const COLLADAFW::Matrix4Array& inv_bind_mats = data->getInverseBindMatrices(); + for (int i = 0; i < data->getJointsCount(); i++) { + skin.add_joint(inv_bind_mats[i]); + } + + skin_by_data_uid[data->getUniqueId()] = skin; + + return true; + } + + bool write_controller(const COLLADAFW::Controller* controller) + { + // - create and store armature object + + const COLLADAFW::UniqueId& skin_id = controller->getUniqueId(); + + if (controller->getControllerType() == COLLADAFW::Controller::CONTROLLER_TYPE_SKIN) { + + COLLADAFW::SkinController *co = (COLLADAFW::SkinController*)controller; + + // to find geom id by controller id + geom_uid_by_controller_uid[skin_id] = co->getSource(); + + const COLLADAFW::UniqueId& data_uid = co->getSkinControllerData(); + if (skin_by_data_uid.find(data_uid) == skin_by_data_uid.end()) { + fprintf(stderr, "Cannot find skin by controller data UID.\n"); + return true; + } + + Object *ob_arm = skin_by_data_uid[data_uid].create_armature(co, scene); + + armature_objects.push_back(ob_arm); + } + // morph controller + else { + // shape keys? :) + fprintf(stderr, "Morph controller is not supported yet.\n"); + } + + return true; + } + + COLLADAFW::UniqueId *get_geometry_uid(const COLLADAFW::UniqueId& controller_uid) + { + if (geom_uid_by_controller_uid.find(controller_uid) == geom_uid_by_controller_uid.end()) + return NULL; + + return &geom_uid_by_controller_uid[controller_uid]; + } + + Object *get_armature_for_joint(COLLADAFW::Node *node) + { + std::map<COLLADAFW::UniqueId, SkinInfo>::iterator it; + for (it = skin_by_data_uid.begin(); it != skin_by_data_uid.end(); it++) { + SkinInfo& skin = it->second; + + if (skin.uses_joint(node)) + return skin.get_armature(); + } + + return NULL; + } + + void get_rna_path_for_joint(COLLADAFW::Node *node, char *joint_path, size_t count) + { + BLI_snprintf(joint_path, count, "pose.pose_channels[\"%s\"]", get_joint_name(node)); + } + + void fix_animation() + { + /* Change Euler rotation to Quaternion for bone animation */ + std::vector<Object*>::iterator it; + for (it = armature_objects.begin(); it != armature_objects.end(); it++) { + Object *ob = *it; + if (!ob || !ob->adt || !ob->adt->action) continue; + anim_importer->change_eul_to_quat(ob, ob->adt->action); + } + } +}; + +class MeshImporter : public MeshImporterBase +{ +private: + + Scene *scene; + ArmatureImporter *armature_importer; + + std::map<COLLADAFW::UniqueId, Mesh*> uid_mesh_map; // geometry unique id-to-mesh map + std::map<COLLADAFW::UniqueId, Object*> uid_object_map; // geom uid-to-object + // this structure is used to assign material indices to faces + // it holds a portion of Mesh faces and corresponds to a DAE primitive list (<triangles>, <polylist>, etc.) + struct Primitive { + MFace *mface; + unsigned int totface; + }; + typedef std::map<COLLADAFW::MaterialId, std::vector<Primitive> > MaterialIdPrimitiveArrayMap; + std::map<COLLADAFW::UniqueId, MaterialIdPrimitiveArrayMap> geom_uid_mat_mapping_map; // crazy name! + + class UVDataWrapper + { + COLLADAFW::MeshVertexData *mVData; + public: + UVDataWrapper(COLLADAFW::MeshVertexData& vdata) : mVData(&vdata) + {} + +#ifdef COLLADA_DEBUG + void print() + { + fprintf(stderr, "UVs:\n"); + switch(mVData->getType()) { + case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: + { + COLLADAFW::ArrayPrimitiveType<float>* values = mVData->getFloatValues(); + if (values->getCount()) { + for (int i = 0; i < values->getCount(); i += 2) { + fprintf(stderr, "%.1f, %.1f\n", (*values)[i], (*values)[i+1]); + } + } + } + break; + case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: + { + COLLADAFW::ArrayPrimitiveType<double>* values = mVData->getDoubleValues(); + if (values->getCount()) { + for (int i = 0; i < values->getCount(); i += 2) { + fprintf(stderr, "%.1f, %.1f\n", (float)(*values)[i], (float)(*values)[i+1]); + } + } + } + break; + } + fprintf(stderr, "\n"); + } +#endif + + void getUV(int uv_set_index, int uv_index[2], float *uv) + { + switch(mVData->getType()) { + case COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT: + { + COLLADAFW::ArrayPrimitiveType<float>* values = mVData->getFloatValues(); + if (values->empty()) return; + uv[0] = (*values)[uv_index[0]]; + uv[1] = (*values)[uv_index[1]]; + + } + break; + case COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE: + { + COLLADAFW::ArrayPrimitiveType<double>* values = mVData->getDoubleValues(); + if (values->empty()) return; + uv[0] = (float)(*values)[uv_index[0]]; + uv[1] = (float)(*values)[uv_index[1]]; + + } + break; + } + } + }; + + void set_face_indices(MFace *mface, unsigned int *indices, bool quad) + { + mface->v1 = indices[0]; + mface->v2 = indices[1]; + mface->v3 = indices[2]; + if (quad) mface->v4 = indices[3]; + else mface->v4 = 0; +#ifdef COLLADA_DEBUG + // fprintf(stderr, "%u, %u, %u \n", indices[0], indices[1], indices[2]); +#endif + } + + // change face indices order so that v4 is not 0 + void rotate_face_indices(MFace *mface) { + mface->v4 = mface->v1; + mface->v1 = mface->v2; + mface->v2 = mface->v3; + mface->v3 = 0; + } + + void set_face_uv(MTFace *mtface, UVDataWrapper &uvs, int uv_set_index, + COLLADAFW::IndexList& index_list, unsigned int *tris_indices) + { + int uv_indices[4][2]; + + // per face vertex indices, this means for quad we have 4 indices, not 8 + COLLADAFW::UIntValuesArray& indices = index_list.getIndices(); + + // make indices into FloatOrDoubleArray + for (int i = 0; i < 3; i++) { + int uv_index = indices[tris_indices[i]]; + uv_indices[i][0] = uv_index * 2; + uv_indices[i][1] = uv_index * 2 + 1; + } + + uvs.getUV(uv_set_index, uv_indices[0], mtface->uv[0]); + uvs.getUV(uv_set_index, uv_indices[1], mtface->uv[1]); + uvs.getUV(uv_set_index, uv_indices[2], mtface->uv[2]); + } + + void set_face_uv(MTFace *mtface, UVDataWrapper &uvs, int uv_set_index, + COLLADAFW::IndexList& index_list, int index, bool quad) + { + int uv_indices[4][2]; + + // per face vertex indices, this means for quad we have 4 indices, not 8 + COLLADAFW::UIntValuesArray& indices = index_list.getIndices(); + + // make indices into FloatOrDoubleArray + for (int i = 0; i < (quad ? 4 : 3); i++) { + int uv_index = indices[index + i]; + uv_indices[i][0] = uv_index * 2; + uv_indices[i][1] = uv_index * 2 + 1; + } + + uvs.getUV(uv_set_index, uv_indices[0], mtface->uv[0]); + uvs.getUV(uv_set_index, uv_indices[1], mtface->uv[1]); + uvs.getUV(uv_set_index, uv_indices[2], mtface->uv[2]); + + if (quad) uvs.getUV(uv_set_index, uv_indices[3], mtface->uv[3]); + +#ifdef COLLADA_DEBUG + /*if (quad) { + fprintf(stderr, "face uv:\n" + "((%d, %d), (%d, %d), (%d, %d), (%d, %d))\n" + "((%.1f, %.1f), (%.1f, %.1f), (%.1f, %.1f), (%.1f, %.1f))\n", + + uv_indices[0][0], uv_indices[0][1], + uv_indices[1][0], uv_indices[1][1], + uv_indices[2][0], uv_indices[2][1], + uv_indices[3][0], uv_indices[3][1], + + mtface->uv[0][0], mtface->uv[0][1], + mtface->uv[1][0], mtface->uv[1][1], + mtface->uv[2][0], mtface->uv[2][1], + mtface->uv[3][0], mtface->uv[3][1]); + } + else { + fprintf(stderr, "face uv:\n" + "((%d, %d), (%d, %d), (%d, %d))\n" + "((%.1f, %.1f), (%.1f, %.1f), (%.1f, %.1f))\n", + + uv_indices[0][0], uv_indices[0][1], + uv_indices[1][0], uv_indices[1][1], + uv_indices[2][0], uv_indices[2][1], + + mtface->uv[0][0], mtface->uv[0][1], + mtface->uv[1][0], mtface->uv[1][1], + mtface->uv[2][0], mtface->uv[2][1]); + }*/ +#endif + } + +#ifdef COLLADA_DEBUG + void print_index_list(COLLADAFW::IndexList& index_list) + { + fprintf(stderr, "Index list for \"%s\":\n", index_list.getName().c_str()); + for (int i = 0; i < index_list.getIndicesCount(); i += 2) { + fprintf(stderr, "%u, %u\n", index_list.getIndex(i), index_list.getIndex(i + 1)); + } + fprintf(stderr, "\n"); + } +#endif + + bool is_nice_mesh(COLLADAFW::Mesh *mesh) + { + COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); + int i; + + const char *name = get_dae_name(mesh); + + for (i = 0; i < prim_arr.getCount(); i++) { + + COLLADAFW::MeshPrimitive *mp = prim_arr[i]; + COLLADAFW::MeshPrimitive::PrimitiveType type = mp->getPrimitiveType(); + + const char *type_str = primTypeToStr(type); + + // OpenCollada passes POLYGONS type for <polylist> + if (type == COLLADAFW::MeshPrimitive::POLYLIST || type == COLLADAFW::MeshPrimitive::POLYGONS) { + + COLLADAFW::Polygons *mpvc = (COLLADAFW::Polygons*)mp; + COLLADAFW::Polygons::VertexCountArray& vca = mpvc->getGroupedVerticesVertexCountArray(); + + for(int j = 0; j < vca.getCount(); j++){ + int count = vca[j]; + if (count < 3) { + fprintf(stderr, "Primitive %s in %s has at least one face with vertex count < 3\n", + type_str, name); + return false; + } + } + + } + else if(type != COLLADAFW::MeshPrimitive::TRIANGLES) { + fprintf(stderr, "Primitive type %s is not supported.\n", type_str); + return false; + } + } + + if (mesh->getPositions().empty()) { + fprintf(stderr, "Mesh %s has no vertices.\n", name); + return false; + } + + return true; + } + + void read_vertices(COLLADAFW::Mesh *mesh, Mesh *me) + { + // vertices + me->totvert = mesh->getPositions().getFloatValues()->getCount() / 3; + me->mvert = (MVert*)CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, me->totvert); + + const COLLADAFW::MeshVertexData& pos = mesh->getPositions(); + MVert *mvert; + int i, j; + + for (i = 0, mvert = me->mvert; i < me->totvert; i++, mvert++) { + j = i * 3; + + if (pos.getType() == COLLADAFW::MeshVertexData::DATA_TYPE_FLOAT) { + const float *array = pos.getFloatValues()->getData(); + mvert->co[0] = array[j]; + mvert->co[1] = array[j + 1]; + mvert->co[2] = array[j + 2]; + } + else if (pos.getType() == COLLADAFW::MeshVertexData::DATA_TYPE_DOUBLE){ + const double *array = pos.getDoubleValues()->getData(); + mvert->co[0] = (float)array[j]; + mvert->co[1] = (float)array[j + 1]; + mvert->co[2] = (float)array[j + 2]; + } + else { + fprintf(stderr, "Cannot read vertex positions: unknown data type.\n"); + break; + } + } + } + + int triangulate(int *indices, int vcount, MVert *verts, std::vector<unsigned int>& tri) + { + ListBase dispbase = {NULL, NULL}; + DispList *dl; + float *vert; + int i = 0; + + dispbase.first = dispbase.last = NULL; + + dl = (DispList*)MEM_callocN(sizeof(DispList), "poly disp"); + BLI_addtail(&dispbase, dl); + dl->type = DL_INDEX3; + dl->nr = vcount; + dl->type = DL_POLY; + dl->parts = 1; + dl->col = 0; + dl->verts = vert = (float*)MEM_callocN( sizeof(float) * 3 * vcount, "dl verts"); + dl->index = (int*)MEM_callocN(sizeof(int) * 3 * vcount, "dl index"); + + for (i = 0; i < vcount; ++i, vert += 3) { + MVert *mvert = &verts[indices[i]]; + vert[0] = mvert->co[0]; + vert[1] = mvert->co[1]; + vert[2] = mvert->co[2]; + //fprintf(stderr, "%.1f %.1f %.1f \n", mvert->co[0], mvert->co[1], mvert->co[2]); + } + + filldisplist(&dispbase, &dispbase); + + dl = (DispList*)dispbase.first; + int tottri = dl->parts; + int *index = dl->index; + + for (i = 0; i < tottri * 3; i++, index++) { + tri.push_back(*index); + } + + freedisplist(&dispbase); + + return tottri; + } + + int count_new_tris(COLLADAFW::Mesh *mesh, Mesh *me, int new_tris) + { + COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); + int i, j, k; + + for (i = 0; i < prim_arr.getCount(); i++) { + + COLLADAFW::MeshPrimitive *mp = prim_arr[i]; + int type = mp->getPrimitiveType(); + size_t prim_totface = mp->getFaceCount(); + unsigned int *indices = mp->getPositionIndices().getData(); + + if (type == COLLADAFW::MeshPrimitive::POLYLIST || + type == COLLADAFW::MeshPrimitive::POLYGONS) { + + COLLADAFW::Polygons *mpvc = (COLLADAFW::Polygons*)mp; + COLLADAFW::Polygons::VertexCountArray& vcounta = mpvc->getGroupedVerticesVertexCountArray(); + + for (j = 0; j < prim_totface; j++) { + + int vcount = vcounta[j]; + + if (vcount > 4) { + // create triangles using PolyFill + int *temp_indices = (int*)MEM_callocN(sizeof(int) * vcount, "face_index"); + + for (k = 0; k < vcount; k++) { + temp_indices[k] = indices[k]; + } + + std::vector<unsigned int> tri; + + int totri = triangulate(temp_indices, vcount, me->mvert, tri); + new_tris += totri - 1; + MEM_freeN(temp_indices); + indices += vcount; + } + else if (vcount == 4 || vcount == 3) { + indices += vcount; + } + } + } + } + return new_tris; + } + + // TODO: import uv set names + void read_faces(COLLADAFW::Mesh *mesh, Mesh *me, int new_tris) + { + int i; + + // allocate faces + me->totface = mesh->getFacesCount() + new_tris; + me->mface = (MFace*)CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, me->totface); + + // allocate UV layers + int totuvset = mesh->getUVCoords().getInputInfosArray().getCount(); + + for (i = 0; i < totuvset; i++) { + CustomData_add_layer(&me->fdata, CD_MTFACE, CD_CALLOC, NULL, me->totface); + //this->set_layername_map[i] = CustomData_get_layer_name(&me->fdata, CD_MTFACE, i); + } + + // activate the first uv layer + if (totuvset) me->mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, 0); + + UVDataWrapper uvs(mesh->getUVCoords()); + +#ifdef COLLADA_DEBUG + // uvs.print(); +#endif + + MFace *mface = me->mface; + + MaterialIdPrimitiveArrayMap mat_prim_map; + + int face_index = 0; + + COLLADAFW::MeshPrimitiveArray& prim_arr = mesh->getMeshPrimitives(); + + for (i = 0; i < prim_arr.getCount(); i++) { + + COLLADAFW::MeshPrimitive *mp = prim_arr[i]; + + // faces + size_t prim_totface = mp->getFaceCount(); + unsigned int *indices = mp->getPositionIndices().getData(); + int j, k; + int type = mp->getPrimitiveType(); + int index = 0; + + // since we cannot set mface->mat_nr here, we store a portion of me->mface in Primitive + Primitive prim = {mface, 0}; + COLLADAFW::IndexListArray& index_list_array = mp->getUVCoordIndicesArray(); + +#ifdef COLLADA_DEBUG + /* + fprintf(stderr, "Primitive %d:\n", i); + for (int j = 0; j < totuvset; j++) { + print_index_list(*index_list_array[j]); + } + */ +#endif + + if (type == COLLADAFW::MeshPrimitive::TRIANGLES) { + for (j = 0; j < prim_totface; j++){ + + set_face_indices(mface, indices, false); + indices += 3; + + for (k = 0; k < totuvset; k++) { + // get mtface by face index and uv set index + MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, k); + set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, false); + } + + index += 3; + mface++; + face_index++; + prim.totface++; + } + } + else if (type == COLLADAFW::MeshPrimitive::POLYLIST || type == COLLADAFW::MeshPrimitive::POLYGONS) { + COLLADAFW::Polygons *mpvc = (COLLADAFW::Polygons*)mp; + COLLADAFW::Polygons::VertexCountArray& vcounta = mpvc->getGroupedVerticesVertexCountArray(); + + for (j = 0; j < prim_totface; j++) { + + // face + int vcount = vcounta[j]; + if (vcount == 3 || vcount == 4) { + + set_face_indices(mface, indices, vcount == 4); + indices += vcount; + + // do the trick if needed + if (vcount == 4 && mface->v4 == 0) + rotate_face_indices(mface); + + + // set mtface for each uv set + // it is assumed that all primitives have equal number of UV sets + + for (k = 0; k < totuvset; k++) { + // get mtface by face index and uv set index + MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, k); + set_face_uv(&mtface[face_index], uvs, k, *index_list_array[k], index, mface->v4 != 0); + } + + index += mface->v4 ? 4 : 3; + mface++; + face_index++; + prim.totface++; + + } + else { + // create triangles using PolyFill + int *temp_indices = (int*)MEM_callocN(sizeof(int) *vcount, "face_index"); + int *temp_uv_indices = (int*)MEM_callocN(sizeof(int) *vcount, "uv_index"); + + for (k = 0; k < vcount; k++) { + temp_indices[k] = indices[k]; + temp_uv_indices[k] = index + k; + } + + std::vector<unsigned int> tri; + + int totri = triangulate(temp_indices, vcount, me->mvert, tri); + + for (k = 0; k < tri.size() / 3; k++) { + unsigned int tris_indices[3]; + unsigned int uv_indices[3]; + tris_indices[0] = temp_indices[tri[k * 3]]; + tris_indices[1] = temp_indices[tri[k * 3 + 1]]; + tris_indices[2] = temp_indices[tri[k * 3 + 2]]; + uv_indices[0] = temp_uv_indices[tri[k * 3]]; + uv_indices[1] = temp_uv_indices[tri[k * 3 + 1]]; + uv_indices[2] = temp_uv_indices[tri[k * 3 + 2]]; + //fprintf(stderr, "%u %u %u \n", tris_indices[0], tris_indices[1], tris_indices[2]); + set_face_indices(mface, tris_indices, false); + + for (int l = 0; l < totuvset; l++) { + // get mtface by face index and uv set index + MTFace *mtface = (MTFace*)CustomData_get_layer_n(&me->fdata, CD_MTFACE, l); + set_face_uv(&mtface[face_index], uvs, l, *index_list_array[l], uv_indices); + + } + + mface++; + face_index++; + prim.totface++; + } + + index += vcount; + indices += vcount; + MEM_freeN(temp_indices); + MEM_freeN(temp_uv_indices); + } + } + } + + mat_prim_map[mp->getMaterialId()].push_back(prim); + } + + geom_uid_mat_mapping_map[mesh->getUniqueId()] = mat_prim_map; + } + +public: + + MeshImporter(ArmatureImporter *arm, Scene *sce) : scene(sce), armature_importer(arm) {} + + virtual Object *get_object_by_geom_uid(const COLLADAFW::UniqueId& geom_uid) + { + if (uid_object_map.find(geom_uid) != uid_object_map.end()) + return uid_object_map[geom_uid]; + return NULL; + } + + MTex *assign_textures_to_uvlayer(COLLADAFW::InstanceGeometry::TextureCoordinateBinding &ctexture, + Mesh *me, TexIndexTextureArrayMap& texindex_texarray_map, + MTex *color_texture) + { + + COLLADAFW::TextureMapId texture_index = ctexture.textureMapId; + + char *uvname = CustomData_get_layer_name(&me->fdata, CD_MTFACE, ctexture.setIndex); + + if (texindex_texarray_map.find(texture_index) == texindex_texarray_map.end()) { + + fprintf(stderr, "Cannot find texture array by texture index.\n"); + return color_texture; + } + + std::vector<MTex*> textures = texindex_texarray_map[texture_index]; + + std::vector<MTex*>::iterator it; + + for (it = textures.begin(); it != textures.end(); it++) { + + MTex *texture = *it; + + if (texture) { + strcpy(texture->uvname, uvname); + if (texture->mapto == MAP_COL) color_texture = texture; + } + } + return color_texture; + } + + MTFace *assign_material_to_geom(COLLADAFW::InstanceGeometry::MaterialBinding cmaterial, + std::map<COLLADAFW::UniqueId, Material*>& uid_material_map, + Object *ob, const COLLADAFW::UniqueId *geom_uid, + MTex **color_texture, char *layername, MTFace *texture_face, + std::map<Material*, TexIndexTextureArrayMap>& material_texture_mapping_map, int mat_index) + { + Mesh *me = (Mesh*)ob->data; + const COLLADAFW::UniqueId& ma_uid = cmaterial.getReferencedMaterial(); + + // do we know this material? + if (uid_material_map.find(ma_uid) == uid_material_map.end()) { + + fprintf(stderr, "Cannot find material by UID.\n"); + return NULL; + } + + Material *ma = uid_material_map[ma_uid]; + assign_material(ob, ma, ob->totcol + 1); + + COLLADAFW::InstanceGeometry::TextureCoordinateBindingArray& tex_array = + cmaterial.getTextureCoordinateBindingArray(); + TexIndexTextureArrayMap texindex_texarray_map = material_texture_mapping_map[ma]; + unsigned int i; + // loop through <bind_vertex_inputs> + for (i = 0; i < tex_array.getCount(); i++) { + + *color_texture = assign_textures_to_uvlayer(tex_array[i], me, texindex_texarray_map, + *color_texture); + } + + // set texture face + if (*color_texture && + strlen((*color_texture)->uvname) && + strcmp(layername, (*color_texture)->uvname) != 0) { + + texture_face = (MTFace*)CustomData_get_layer_named(&me->fdata, CD_MTFACE, + (*color_texture)->uvname); + strcpy(layername, (*color_texture)->uvname); + } + + MaterialIdPrimitiveArrayMap& mat_prim_map = geom_uid_mat_mapping_map[*geom_uid]; + COLLADAFW::MaterialId mat_id = cmaterial.getMaterialId(); + + // assign material indices to mesh faces + if (mat_prim_map.find(mat_id) != mat_prim_map.end()) { + + std::vector<Primitive>& prims = mat_prim_map[mat_id]; + + std::vector<Primitive>::iterator it; + + for (it = prims.begin(); it != prims.end(); it++) { + Primitive& prim = *it; + i = 0; + while (i++ < prim.totface) { + prim.mface->mat_nr = mat_index; + prim.mface++; + // bind texture images to faces + if (texture_face && (*color_texture)) { + texture_face->mode = TF_TEX; + texture_face->tpage = (Image*)(*color_texture)->tex->ima; + texture_face++; + } + } + } + } + + return texture_face; + } + + + Object *create_mesh_object(COLLADAFW::Node *node, COLLADAFW::InstanceGeometry *geom, + bool isController, + std::map<COLLADAFW::UniqueId, Material*>& uid_material_map, + std::map<Material*, TexIndexTextureArrayMap>& material_texture_mapping_map) + { + const COLLADAFW::UniqueId *geom_uid = &geom->getInstanciatedObjectId(); + + // check if node instanciates controller or geometry + if (isController) { + + geom_uid = armature_importer->get_geometry_uid(*geom_uid); + + if (!geom_uid) { + fprintf(stderr, "Couldn't find a mesh UID by controller's UID.\n"); + return NULL; + } + } + else { + + if (uid_mesh_map.find(*geom_uid) == uid_mesh_map.end()) { + // this could happen if a mesh was not created + // (e.g. if it contains unsupported geometry) + fprintf(stderr, "Couldn't find a mesh by UID.\n"); + return NULL; + } + } + if (!uid_mesh_map[*geom_uid]) return NULL; + + Object *ob = add_object(scene, OB_MESH); + + // store object pointer for ArmatureImporter + uid_object_map[*geom_uid] = ob; + + // name Object + const std::string& id = node->getOriginalId(); + if (id.length()) + rename_id(&ob->id, (char*)id.c_str()); + + // replace ob->data freeing the old one + Mesh *old_mesh = (Mesh*)ob->data; + + set_mesh(ob, uid_mesh_map[*geom_uid]); + + if (old_mesh->id.us == 0) free_libblock(&G.main->mesh, old_mesh); + + char layername[100]; + MTFace *texture_face = NULL; + MTex *color_texture = NULL; + + COLLADAFW::InstanceGeometry::MaterialBindingArray& mat_array = + geom->getMaterialBindings(); + + // loop through geom's materials + for (unsigned int i = 0; i < mat_array.getCount(); i++) { + + texture_face = assign_material_to_geom(mat_array[i], uid_material_map, ob, geom_uid, + &color_texture, layername, texture_face, + material_texture_mapping_map, i); + } + + return ob; + } + + // create a mesh storing a pointer in a map so it can be retrieved later by geometry UID + bool write_geometry(const COLLADAFW::Geometry* geom) + { + // TODO: import also uvs, normals + // XXX what to do with normal indices? + // XXX num_normals may be != num verts, then what to do? + + // check geometry->getType() first + if (geom->getType() != COLLADAFW::Geometry::GEO_TYPE_MESH) { + // TODO: report warning + fprintf(stderr, "Mesh type %s is not supported\n", geomTypeToStr(geom->getType())); + return true; + } + + COLLADAFW::Mesh *mesh = (COLLADAFW::Mesh*)geom; + + if (!is_nice_mesh(mesh)) { + fprintf(stderr, "Ignoring mesh %s\n", get_dae_name(mesh)); + return true; + } + + const std::string& str_geom_id = mesh->getOriginalId(); + Mesh *me = add_mesh((char*)str_geom_id.c_str()); + + // store the Mesh pointer to link it later with an Object + this->uid_mesh_map[mesh->getUniqueId()] = me; + + int new_tris = 0; + + read_vertices(mesh, me); + + new_tris = count_new_tris(mesh, me, new_tris); + + read_faces(mesh, me, new_tris); + + // make_edges(me, 0); + + mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); + + return true; + } + +}; + +class AnimationImporter : private TransformReader, public AnimationImporterBase +{ +private: + + ArmatureImporter *armature_importer; + Scene *scene; + + std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map; + std::map<COLLADAFW::UniqueId, TransformReader::Animation> uid_animated_map; + std::map<bActionGroup*, std::vector<FCurve*> > fcurves_actionGroup_map; + + FCurve *create_fcurve(int array_index, char *rna_path) + { + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path)); + fcu->array_index = array_index; + return fcu; + } + + void create_bezt(FCurve *fcu, float frame, float output) + { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + bez.vec[1][0] = frame; + bez.vec[1][1] = output; + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + calchandles_fcurve(fcu); + } + + void make_fcurves_from_animation(COLLADAFW::AnimationCurve *curve, + COLLADAFW::FloatOrDoubleArray& input, + COLLADAFW::FloatOrDoubleArray& output, + COLLADAFW::FloatOrDoubleArray& intan, + COLLADAFW::FloatOrDoubleArray& outtan, size_t dim, float fps) + { + int i; + // char *path = "location"; + std::vector<FCurve*>& fcurves = uid_fcurve_map[curve->getUniqueId()]; + + if (dim == 1) { + // create fcurve + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + // fcu->rna_path = BLI_strdupn(path, strlen(path)); + fcu->array_index = 0; + //fcu->totvert = curve->getKeyCount(); + + // create beztriple for each key + for (i = 0; i < curve->getKeyCount(); i++) { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + // intangent + bez.vec[0][0] = get_float_value(intan, i + i) * fps; + bez.vec[0][1] = get_float_value(intan, i + i + 1); + // input, output + bez.vec[1][0] = get_float_value(input, i) * fps; + bez.vec[1][1] = get_float_value(output, i); + // outtangent + bez.vec[2][0] = get_float_value(outtan, i + i) * fps; + bez.vec[2][1] = get_float_value(outtan, i + i + 1); + + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + calchandles_fcurve(fcu); + } + + fcurves.push_back(fcu); + } + else if(dim == 3) { + for (i = 0; i < dim; i++ ) { + // create fcurve + FCurve *fcu = (FCurve*)MEM_callocN(sizeof(FCurve), "FCurve"); + + fcu->flag = (FCURVE_VISIBLE|FCURVE_AUTO_HANDLES|FCURVE_SELECTED); + // fcu->rna_path = BLI_strdupn(path, strlen(path)); + fcu->array_index = 0; + //fcu->totvert = curve->getKeyCount(); + + // create beztriple for each key + for (int j = 0; j < curve->getKeyCount(); j++) { + BezTriple bez; + memset(&bez, 0, sizeof(BezTriple)); + // intangent + bez.vec[0][0] = get_float_value(intan, j * 6 + i + i) * fps; + bez.vec[0][1] = get_float_value(intan, j * 6 + i + i + 1); + // input, output + bez.vec[1][0] = get_float_value(input, j) * fps; + bez.vec[1][1] = get_float_value(output, j * 3 + i); + // outtangent + bez.vec[2][0] = get_float_value(outtan, j * 6 + i + i) * fps; + bez.vec[2][1] = get_float_value(outtan, j * 6 + i + i + 1); + + bez.ipo = U.ipo_new; /* use default interpolation mode here... */ + bez.f1 = bez.f2 = bez.f3 = SELECT; + bez.h1 = bez.h2 = HD_AUTO; + insert_bezt_fcurve(fcu, &bez, 0); + calchandles_fcurve(fcu); + } + + fcurves.push_back(fcu); + } + } + } + + void add_fcurves_to_object(Object *ob, std::vector<FCurve*>& curves, char *rna_path, int array_index, Animation *animated) + { + ID *id = &ob->id; + bAction *act; + bActionGroup *grp = NULL; + + if (!ob->adt || !ob->adt->action) act = verify_adt_action(id, 1); + else act = verify_adt_action(id, 0); + + if (!ob->adt || !ob->adt->action) { + fprintf(stderr, "Cannot create anim data or action for this object. \n"); + return; + } + + FCurve *fcu; + std::vector<FCurve*>::iterator it; + int i = 0; + + char *p = strstr(rna_path, "rotation_euler"); + bool is_rotation = p && *(p + strlen("rotation_euler")) == '\0'; + + for (it = curves.begin(); it != curves.end(); it++) { + fcu = *it; + fcu->rna_path = BLI_strdupn(rna_path, strlen(rna_path)); + + if (array_index == -1) fcu->array_index = i; + else fcu->array_index = array_index; + + // convert degrees to radians for rotation + if (is_rotation) { + for(int j = 0; j < fcu->totvert; j++) { + float rot_intan = fcu->bezt[j].vec[0][1]; + float rot_output = fcu->bezt[j].vec[1][1]; + float rot_outtan = fcu->bezt[j].vec[2][1]; + fcu->bezt[j].vec[0][1] = rot_intan * M_PI / 180.0f; + fcu->bezt[j].vec[1][1] = rot_output * M_PI / 180.0f; + fcu->bezt[j].vec[2][1] = rot_outtan * M_PI / 180.0f; + } + } + + if (ob->type == OB_ARMATURE) { + bAction *act = ob->adt->action; + const char *bone_name = get_joint_name(animated->node); + + if (bone_name) { + /* try to find group */ + grp = action_groups_find_named(act, bone_name); + + /* no matching groups, so add one */ + if (grp == NULL) { + /* Add a new group, and make it active */ + grp = (bActionGroup*)MEM_callocN(sizeof(bActionGroup), "bActionGroup"); + + grp->flag = AGRP_SELECTED; + BLI_snprintf(grp->name, sizeof(grp->name), bone_name); + + BLI_addtail(&act->groups, grp); + BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), 64); + } + + /* add F-Curve to group */ + action_groups_add_channel(act, grp, fcu); + + } + if (is_rotation) { + fcurves_actionGroup_map[grp].push_back(fcu); + } + } + else { + BLI_addtail(&act->curves, fcu); + } + + i++; + } + } +public: + + AnimationImporter(UnitConverter *conv, ArmatureImporter *arm, Scene *scene) : + TransformReader(conv), armature_importer(arm), scene(scene) { } + + bool write_animation( const COLLADAFW::Animation* anim ) + { + float fps = (float)FPS; + + if (anim->getAnimationType() == COLLADAFW::Animation::ANIMATION_CURVE) { + COLLADAFW::AnimationCurve *curve = (COLLADAFW::AnimationCurve*)anim; + size_t dim = curve->getOutDimension(); + + // XXX Don't know if it's necessary + // Should we check outPhysicalDimension? + if (curve->getInPhysicalDimension() != COLLADAFW::PHYSICAL_DIMENSION_TIME) { + fprintf(stderr, "Inputs physical dimension is not time. \n"); + return true; + } + + COLLADAFW::FloatOrDoubleArray& input = curve->getInputValues(); + COLLADAFW::FloatOrDoubleArray& output = curve->getOutputValues(); + COLLADAFW::FloatOrDoubleArray& intan = curve->getInTangentValues(); + COLLADAFW::FloatOrDoubleArray& outtan = curve->getOutTangentValues(); + + // a curve can have mixed interpolation type, + // in this case curve->getInterpolationTypes returns a list of interpolation types per key + COLLADAFW::AnimationCurve::InterpolationType interp = curve->getInterpolationType(); + + if (interp != COLLADAFW::AnimationCurve::INTERPOLATION_MIXED) { + switch (interp) { + case COLLADAFW::AnimationCurve::INTERPOLATION_LINEAR: + // support this + make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps); + break; + case COLLADAFW::AnimationCurve::INTERPOLATION_BEZIER: + // and this + make_fcurves_from_animation(curve, input, output, intan, outtan, dim, fps); + break; + case COLLADAFW::AnimationCurve::INTERPOLATION_CARDINAL: + case COLLADAFW::AnimationCurve::INTERPOLATION_HERMITE: + case COLLADAFW::AnimationCurve::INTERPOLATION_BSPLINE: + case COLLADAFW::AnimationCurve::INTERPOLATION_STEP: + fprintf(stderr, "CARDINAL, HERMITE, BSPLINE and STEP anim interpolation types not supported yet.\n"); + break; + } + } + else { + // not supported yet + fprintf(stderr, "MIXED anim interpolation type is not supported yet.\n"); + } + } + else { + fprintf(stderr, "FORMULA animation type is not supported yet.\n"); + } + + return true; + } + + // called on post-process stage after writeVisualScenes + bool write_animation_list( const COLLADAFW::AnimationList* animationList ) + { + const COLLADAFW::UniqueId& anim_list_id = animationList->getUniqueId(); + + // possible in case we cannot interpret some transform + if (uid_animated_map.find(anim_list_id) == uid_animated_map.end()) { + return true; + } + + // for bones rna_path is like: pose.pose_channels["bone-name"].rotation + + // what does this AnimationList animate? + Animation& animated = uid_animated_map[anim_list_id]; + Object *ob = animated.ob; + + char rna_path[100]; + char joint_path[100]; + bool is_joint = false; + + // if ob is NULL, it should be a JOINT + if (!ob) { + ob = armature_importer->get_armature_for_joint(animated.node); + + if (!ob) { + fprintf(stderr, "Cannot find armature for node %s\n", get_joint_name(animated.node)); + return true; + } + + armature_importer->get_rna_path_for_joint(animated.node, joint_path, sizeof(joint_path)); + + is_joint = true; + } + + const COLLADAFW::AnimationList::AnimationBindings& bindings = animationList->getAnimationBindings(); + + switch (animated.tm->getTransformationType()) { + case COLLADAFW::Transformation::TRANSLATE: + { + if (is_joint) + BLI_snprintf(rna_path, sizeof(rna_path), "%s.location", joint_path); + else + BLI_strncpy(rna_path, "location", sizeof(rna_path)); + + for (int i = 0; i < bindings.getCount(); i++) { + const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; + COLLADAFW::UniqueId anim_uid = binding.animation; + + if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { + fprintf(stderr, "Cannot find FCurve by animation UID.\n"); + continue; + } + + std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid]; + + switch (binding.animationClass) { + case COLLADAFW::AnimationList::POSITION_X: + add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated); + break; + case COLLADAFW::AnimationList::POSITION_Y: + add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated); + break; + case COLLADAFW::AnimationList::POSITION_Z: + add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated); + break; + case COLLADAFW::AnimationList::POSITION_XYZ: + add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated); + break; + default: + fprintf(stderr, "AnimationClass %d is not supported for TRANSLATE transformation.\n", + binding.animationClass); + } + } + } + break; + case COLLADAFW::Transformation::ROTATE: + { + if (is_joint) + BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path); + else + BLI_strncpy(rna_path, "rotation_euler", sizeof(rna_path)); + + COLLADAFW::Rotate* rot = (COLLADAFW::Rotate*)animated.tm; + COLLADABU::Math::Vector3& axis = rot->getRotationAxis(); + + for (int i = 0; i < bindings.getCount(); i++) { + const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; + COLLADAFW::UniqueId anim_uid = binding.animation; + + if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { + fprintf(stderr, "Cannot find FCurve by animation UID.\n"); + continue; + } + + std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid]; + + switch (binding.animationClass) { + case COLLADAFW::AnimationList::ANGLE: + if (COLLADABU::Math::Vector3::UNIT_X == axis) { + add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated); + } + else if (COLLADABU::Math::Vector3::UNIT_Y == axis) { + add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated); + } + else if (COLLADABU::Math::Vector3::UNIT_Z == axis) { + add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated); + } + break; + case COLLADAFW::AnimationList::AXISANGLE: + // TODO convert axis-angle to quat? or XYZ? + default: + fprintf(stderr, "AnimationClass %d is not supported for ROTATE transformation.\n", + binding.animationClass); + } + } + } + break; + case COLLADAFW::Transformation::SCALE: + { + if (is_joint) + BLI_snprintf(rna_path, sizeof(rna_path), "%s.scale", joint_path); + else + BLI_strncpy(rna_path, "scale", sizeof(rna_path)); + + // same as for TRANSLATE + for (int i = 0; i < bindings.getCount(); i++) { + const COLLADAFW::AnimationList::AnimationBinding& binding = bindings[i]; + COLLADAFW::UniqueId anim_uid = binding.animation; + + if (uid_fcurve_map.find(anim_uid) == uid_fcurve_map.end()) { + fprintf(stderr, "Cannot find FCurve by animation UID.\n"); + continue; + } + + std::vector<FCurve*>& fcurves = uid_fcurve_map[anim_uid]; + + switch (binding.animationClass) { + case COLLADAFW::AnimationList::POSITION_X: + add_fcurves_to_object(ob, fcurves, rna_path, 0, &animated); + break; + case COLLADAFW::AnimationList::POSITION_Y: + add_fcurves_to_object(ob, fcurves, rna_path, 1, &animated); + break; + case COLLADAFW::AnimationList::POSITION_Z: + add_fcurves_to_object(ob, fcurves, rna_path, 2, &animated); + break; + case COLLADAFW::AnimationList::POSITION_XYZ: + add_fcurves_to_object(ob, fcurves, rna_path, -1, &animated); + break; + default: + fprintf(stderr, "AnimationClass %d is not supported for SCALE transformation.\n", + binding.animationClass); + } + } + } + break; + case COLLADAFW::Transformation::MATRIX: + case COLLADAFW::Transformation::SKEW: + case COLLADAFW::Transformation::LOOKAT: + fprintf(stderr, "Animation of MATRIX, SKEW and LOOKAT transformations is not supported yet.\n"); + break; + } + + return true; + } + + void read_node_transform(COLLADAFW::Node *node, Object *ob) + { + float mat[4][4]; + TransformReader::get_node_mat(mat, node, &uid_animated_map, ob); + if (ob) + TransformReader::decompose(mat, ob->loc, ob->rot, ob->size); + } + + virtual void change_eul_to_quat(Object *ob, bAction *act) + { + bActionGroup *grp; + int i; + + for (grp = (bActionGroup*)act->groups.first; grp; grp = grp->next) { + + FCurve *eulcu[3] = {NULL, NULL, NULL}; + + if (fcurves_actionGroup_map.find(grp) == fcurves_actionGroup_map.end()) + continue; + + std::vector<FCurve*> &rot_fcurves = fcurves_actionGroup_map[grp]; + + if (rot_fcurves.size() > 3) continue; + + for (i = 0; i < rot_fcurves.size(); i++) + eulcu[rot_fcurves[i]->array_index] = rot_fcurves[i]; + + char joint_path[100]; + char rna_path[100]; + + BLI_snprintf(joint_path, sizeof(joint_path), "pose.pose_channels[\"%s\"]", grp->name); + BLI_snprintf(rna_path, sizeof(rna_path), "%s.rotation_euler", joint_path); + + FCurve *quatcu[4] = { + create_fcurve(0, rna_path), + create_fcurve(1, rna_path), + create_fcurve(2, rna_path), + create_fcurve(3, rna_path) + }; + + for (i = 0; i < 3; i++) { + + FCurve *cu = eulcu[i]; + + if (!cu) continue; + + for (int j = 0; j < cu->totvert; j++) { + float frame = cu->bezt[j].vec[1][0]; + + float eul[3] = { + eulcu[0] ? evaluate_fcurve(eulcu[0], frame) : 0.0f, + eulcu[1] ? evaluate_fcurve(eulcu[1], frame) : 0.0f, + eulcu[2] ? evaluate_fcurve(eulcu[2], frame) : 0.0f + }; + + float quat[4]; + + EulToQuat(eul, quat); + + for (int k = 0; k < 4; k++) + create_bezt(quatcu[k], frame, quat[k]); + } + } + + // now replace old Euler curves + + for (i = 0; i < 3; i++) { + if (!eulcu[i]) continue; + + action_groups_remove_channel(act, eulcu[i]); + free_fcurve(eulcu[i]); + } + + get_pose_channel(ob->pose, grp->name)->rotmode = ROT_MODE_QUAT; + + for (i = 0; i < 4; i++) + action_groups_add_channel(act, grp, quatcu[i]); + } + + bPoseChannel *pchan; + for (pchan = (bPoseChannel*)ob->pose->chanbase.first; pchan; pchan = pchan->next) { + pchan->rotmode = ROT_MODE_QUAT; + } + } +}; + +/* + + COLLADA Importer limitations: + + - no multiple scene import, all objects are added to active scene + + */ +/** Class that needs to be implemented by a writer. + IMPORTANT: The write functions are called in arbitrary order.*/ +class Writer: public COLLADAFW::IWriter +{ +private: + std::string mFilename; + + bContext *mContext; + + UnitConverter unit_converter; + ArmatureImporter armature_importer; + MeshImporter mesh_importer; + AnimationImporter anim_importer; + + std::map<COLLADAFW::UniqueId, Image*> uid_image_map; + std::map<COLLADAFW::UniqueId, Material*> uid_material_map; + std::map<COLLADAFW::UniqueId, Material*> uid_effect_map; + std::map<COLLADAFW::UniqueId, Camera*> uid_camera_map; + std::map<COLLADAFW::UniqueId, Lamp*> uid_lamp_map; + std::map<Material*, TexIndexTextureArrayMap> material_texture_mapping_map; + // animation + // std::map<COLLADAFW::UniqueId, std::vector<FCurve*> > uid_fcurve_map; + // Nodes don't share AnimationLists (Arystan) + // std::map<COLLADAFW::UniqueId, Animation> uid_animated_map; // AnimationList->uniqueId to AnimatedObject map + +public: + + /** Constructor. */ + Writer(bContext *C, const char *filename) : mContext(C), mFilename(filename), + armature_importer(&unit_converter, &mesh_importer, &anim_importer, CTX_data_scene(C)), + mesh_importer(&armature_importer, CTX_data_scene(C)), + anim_importer(&unit_converter, &armature_importer, CTX_data_scene(C)) {} + + /** Destructor. */ + ~Writer() {} + + bool write() + { + COLLADASaxFWL::Loader loader; + COLLADAFW::Root root(&loader, this); + + // XXX report error + if (!root.loadDocument(mFilename)) + return false; + + return true; + } + + /** This method will be called if an error in the loading process occurred and the loader cannot + continue to to load. The writer should undo all operations that have been performed. + @param errorMessage A message containing informations about the error that occurred. + */ + virtual void cancel(const COLLADAFW::String& errorMessage) + { + // TODO: if possible show error info + // + // Should we get rid of invisible Meshes that were created so far + // or maybe create objects at coordinate space origin? + // + // The latter sounds better. + } + + /** This is the method called. The writer hast to prepare to receive data.*/ + virtual void start() + { + } + + /** This method is called after the last write* method. No other methods will be called after this.*/ + virtual void finish() + { + armature_importer.fix_animation(); + } + + /** When this method is called, the writer must write the global document asset. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeGlobalAsset ( const COLLADAFW::FileInfo* asset ) + { + // XXX take up_axis, unit into account + // COLLADAFW::FileInfo::Unit unit = asset->getUnit(); + // COLLADAFW::FileInfo::UpAxisType upAxis = asset->getUpAxisType(); + unit_converter.read_asset(asset); + + return true; + } + + /** When this method is called, the writer must write the scene. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeScene ( const COLLADAFW::Scene* scene ) + { + // XXX could store the scene id, but do nothing for now + return true; + } + Object *create_camera_object(COLLADAFW::InstanceCamera *camera, Object *ob, Scene *sce) + { + const COLLADAFW::UniqueId& cam_uid = camera->getInstanciatedObjectId(); + if (uid_camera_map.find(cam_uid) == uid_camera_map.end()) { + fprintf(stderr, "Couldn't find camera by UID. \n"); + return NULL; + } + ob = add_object(sce, OB_CAMERA); + Camera *cam = uid_camera_map[cam_uid]; + Camera *old_cam = (Camera*)ob->data; + old_cam->id.us--; + ob->data = cam; + if (old_cam->id.us == 0) free_libblock(&G.main->camera, old_cam); + return ob; + } + + Object *create_lamp_object(COLLADAFW::InstanceLight *lamp, Object *ob, Scene *sce) + { + const COLLADAFW::UniqueId& lamp_uid = lamp->getInstanciatedObjectId(); + if (uid_lamp_map.find(lamp_uid) == uid_lamp_map.end()) { + fprintf(stderr, "Couldn't find lamp by UID. \n"); + return NULL; + } + ob = add_object(sce, OB_LAMP); + Lamp *la = uid_lamp_map[lamp_uid]; + Lamp *old_lamp = (Lamp*)ob->data; + old_lamp->id.us--; + ob->data = la; + if (old_lamp->id.us == 0) free_libblock(&G.main->lamp, old_lamp); + return ob; + } + + void write_node (COLLADAFW::Node *node, COLLADAFW::Node *parent_node, Scene *sce, Object *par) + { + Object *ob = NULL; + + if (node->getType() == COLLADAFW::Node::JOINT) { + + if (node->getType() == COLLADAFW::Node::JOINT) { + armature_importer.add_joint(node, parent_node == NULL || parent_node->getType() != COLLADAFW::Node::JOINT); + } + + } + else { + COLLADAFW::InstanceGeometryPointerArray &geom = node->getInstanceGeometries(); + COLLADAFW::InstanceCameraPointerArray &camera = node->getInstanceCameras(); + COLLADAFW::InstanceLightPointerArray &lamp = node->getInstanceLights(); + COLLADAFW::InstanceControllerPointerArray &controller = node->getInstanceControllers(); + COLLADAFW::InstanceNodePointerArray &inst_node = node->getInstanceNodes(); + + // XXX linking object with the first <instance_geometry>, though a node may have more of them... + // maybe join multiple <instance_...> meshes into 1, and link object with it? not sure... + // <instance_geometry> + if (geom.getCount() != 0) { + ob = mesh_importer.create_mesh_object(node, geom[0], false, uid_material_map, + material_texture_mapping_map); + } + else if (camera.getCount() != 0) { + ob = create_camera_object(camera[0], ob, sce); + } + else if (lamp.getCount() != 0) { + ob = create_lamp_object(lamp[0], ob, sce); + } + else if (controller.getCount() != 0) { + COLLADAFW::InstanceController *geom = (COLLADAFW::InstanceController*)controller[0]; + ob = mesh_importer.create_mesh_object(node, geom, true, uid_material_map, material_texture_mapping_map); + } + // XXX instance_node is not supported yet + else if (inst_node.getCount() != 0) { + return; + } + // if node is empty - create empty object + // XXX empty node may not mean it is empty object, not sure about this + else { + ob = add_object(sce, OB_EMPTY); + } + + // check if object is not NULL + if (!ob) return; + + // if par was given make this object child of the previous + if (par && ob) { + Object workob; + + ob->parent = par; + + // doing what 'set parent' operator does + par->recalc |= OB_RECALC_OB; + ob->parsubstr[0] = 0; + + DAG_scene_sort(sce); + } + } + + anim_importer.read_node_transform(node, ob); + + // if node has child nodes write them + COLLADAFW::NodePointerArray &child_nodes = node->getChildNodes(); + for (int i = 0; i < child_nodes.getCount(); i++) { + write_node(child_nodes[i], node, sce, ob); + } + } + + /** When this method is called, the writer must write the entire visual scene. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeVisualScene ( const COLLADAFW::VisualScene* visualScene ) + { + // This method is guaranteed to be called _after_ writeGeometry, writeMaterial, etc. + + // for each <node> in <visual_scene>: + // create an Object + // if Mesh (previously created in writeGeometry) to which <node> corresponds exists, link Object with that mesh + + // update: since we cannot link a Mesh with Object in + // writeGeometry because <geometry> does not reference <node>, + // we link Objects with Meshes here + + // TODO: create a new scene except the selected <visual_scene> - use current blender + // scene for it + Scene *sce = CTX_data_scene(mContext); + + for (int i = 0; i < visualScene->getRootNodes().getCount(); i++) { + COLLADAFW::Node *node = visualScene->getRootNodes()[i]; + const COLLADAFW::Node::NodeType& type = node->getType(); + + write_node(node, NULL, sce, NULL); + } + + armature_importer.make_armatures(mContext); + + return true; + } + + /** When this method is called, the writer must handle all nodes contained in the + library nodes. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeLibraryNodes ( const COLLADAFW::LibraryNodes* libraryNodes ) + { + return true; + } + + /** When this method is called, the writer must write the geometry. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeGeometry ( const COLLADAFW::Geometry* geom ) + { + return mesh_importer.write_geometry(geom); + } + + /** When this method is called, the writer must write the material. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeMaterial( const COLLADAFW::Material* cmat ) + { + const std::string& str_mat_id = cmat->getOriginalId(); + Material *ma = add_material((char*)str_mat_id.c_str()); + + this->uid_effect_map[cmat->getInstantiatedEffect()] = ma; + this->uid_material_map[cmat->getUniqueId()] = ma; + + return true; + } + + // create mtex, create texture, set texture image + MTex *create_texture(COLLADAFW::EffectCommon *ef, COLLADAFW::Texture &ctex, Material *ma, + int i, TexIndexTextureArrayMap &texindex_texarray_map) + { + COLLADAFW::SamplerPointerArray& samp_array = ef->getSamplerPointerArray(); + COLLADAFW::Sampler *sampler = samp_array[ctex.getSamplerId()]; + + const COLLADAFW::UniqueId& ima_uid = sampler->getSourceImage(); + + if (uid_image_map.find(ima_uid) == uid_image_map.end()) { + fprintf(stderr, "Couldn't find an image by UID.\n"); + return NULL; + } + + ma->mtex[i] = add_mtex(); + ma->mtex[i]->texco = TEXCO_UV; + ma->mtex[i]->tex = add_texture("texture"); + ma->mtex[i]->tex->type = TEX_IMAGE; + ma->mtex[i]->tex->imaflag &= ~TEX_USEALPHA; + ma->mtex[i]->tex->ima = uid_image_map[ima_uid]; + + texindex_texarray_map[ctex.getTextureMapId()].push_back(ma->mtex[i]); + + return ma->mtex[i]; + } + + void write_profile_COMMON(COLLADAFW::EffectCommon *ef, Material *ma) + { + COLLADAFW::EffectCommon::ShaderType shader = ef->getShaderType(); + + // blinn + if (shader == COLLADAFW::EffectCommon::SHADER_BLINN) { + ma->spec_shader = MA_SPEC_BLINN; + ma->spec = ef->getShininess().getFloatValue(); + } + // phong + else if (shader == COLLADAFW::EffectCommon::SHADER_PHONG) { + ma->spec_shader = MA_SPEC_PHONG; + // XXX setting specular hardness instead of specularity intensity + ma->har = ef->getShininess().getFloatValue() * 4; + } + // lambert + else if (shader == COLLADAFW::EffectCommon::SHADER_LAMBERT) { + ma->diff_shader = MA_DIFF_LAMBERT; + } + // default - lambert + else { + ma->diff_shader = MA_DIFF_LAMBERT; + fprintf(stderr, "Current shader type is not supported.\n"); + } + // reflectivity + ma->ray_mirror = ef->getReflectivity().getFloatValue(); + // index of refraction + ma->ang = ef->getIndexOfRefraction().getFloatValue(); + + int i = 0; + COLLADAFW::Color col; + COLLADAFW::Texture ctex; + MTex *mtex = NULL; + TexIndexTextureArrayMap texindex_texarray_map; + + // DIFFUSE + // color + if (ef->getDiffuse().isColor()) { + col = ef->getDiffuse().getColor(); + ma->r = col.getRed(); + ma->g = col.getGreen(); + ma->b = col.getBlue(); + } + // texture + else if (ef->getDiffuse().isTexture()) { + ctex = ef->getDiffuse().getTexture(); + mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); + if (mtex != NULL) { + mtex->mapto = MAP_COL; + ma->texact = (int)i; + i++; + } + } + // AMBIENT + // color + if (ef->getAmbient().isColor()) { + col = ef->getAmbient().getColor(); + ma->ambr = col.getRed(); + ma->ambg = col.getGreen(); + ma->ambb = col.getBlue(); + } + // texture + else if (ef->getAmbient().isTexture()) { + ctex = ef->getAmbient().getTexture(); + mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); + if (mtex != NULL) { + mtex->mapto = MAP_AMB; + i++; + } + } + // SPECULAR + // color + if (ef->getSpecular().isColor()) { + col = ef->getSpecular().getColor(); + ma->specr = col.getRed(); + ma->specg = col.getGreen(); + ma->specb = col.getBlue(); + } + // texture + else if (ef->getSpecular().isTexture()) { + ctex = ef->getSpecular().getTexture(); + mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); + if (mtex != NULL) { + mtex->mapto = MAP_SPEC; + i++; + } + } + // REFLECTIVE + // color + if (ef->getReflective().isColor()) { + col = ef->getReflective().getColor(); + ma->mirr = col.getRed(); + ma->mirg = col.getGreen(); + ma->mirb = col.getBlue(); + } + // texture + else if (ef->getReflective().isTexture()) { + ctex = ef->getReflective().getTexture(); + mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); + if (mtex != NULL) { + mtex->mapto = MAP_REF; + i++; + } + } + // EMISSION + // color + if (ef->getEmission().isColor()) { + // XXX there is no emission color in blender + // but I am not sure + } + // texture + else if (ef->getEmission().isTexture()) { + ctex = ef->getEmission().getTexture(); + mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); + if (mtex != NULL) { + mtex->mapto = MAP_EMIT; + i++; + } + } + // TRANSPARENT + // color + // if (ef->getOpacity().isColor()) { +// // XXX don't know what to do here +// } +// // texture +// else if (ef->getOpacity().isTexture()) { +// ctex = ef->getOpacity().getTexture(); +// if (mtex != NULL) mtex->mapto &= MAP_ALPHA; +// else { +// mtex = create_texture(ef, ctex, ma, i, texindex_texarray_map); +// if (mtex != NULL) mtex->mapto = MAP_ALPHA; +// } +// } + material_texture_mapping_map[ma] = texindex_texarray_map; + } + + /** When this method is called, the writer must write the effect. + @return The writer should return true, if writing succeeded, false otherwise.*/ + + virtual bool writeEffect( const COLLADAFW::Effect* effect ) + { + + const COLLADAFW::UniqueId& uid = effect->getUniqueId(); + if (uid_effect_map.find(uid) == uid_effect_map.end()) { + fprintf(stderr, "Couldn't find a material by UID.\n"); + return true; + } + + Material *ma = uid_effect_map[uid]; + + COLLADAFW::CommonEffectPointerArray common_efs = effect->getCommonEffects(); + if (common_efs.getCount() < 1) { + fprintf(stderr, "Couldn't find <profile_COMMON>.\n"); + return true; + } + // XXX TODO: Take all <profile_common>s + // Currently only first <profile_common> is supported + COLLADAFW::EffectCommon *ef = common_efs[0]; + write_profile_COMMON(ef, ma); + + return true; + } + + + /** When this method is called, the writer must write the camera. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeCamera( const COLLADAFW::Camera* camera ) + { + Camera *cam = NULL; + std::string cam_id, cam_name; + + cam_id = camera->getOriginalId(); + cam_name = camera->getName(); + if (cam_name.size()) cam = (Camera*)add_camera((char*)cam_name.c_str()); + else cam = (Camera*)add_camera((char*)cam_id.c_str()); + + if (!cam) { + fprintf(stderr, "Cannot create camera. \n"); + return true; + } + cam->clipsta = camera->getNearClippingPlane().getValue(); + cam->clipend = camera->getFarClippingPlane().getValue(); + + COLLADAFW::Camera::CameraType type = camera->getCameraType(); + switch(type) { + case COLLADAFW::Camera::ORTHOGRAPHIC: + { + cam->type = CAM_ORTHO; + } + break; + case COLLADAFW::Camera::PERSPECTIVE: + { + cam->type = CAM_PERSP; + } + break; + case COLLADAFW::Camera::UNDEFINED_CAMERATYPE: + { + fprintf(stderr, "Current camera type is not supported. \n"); + cam->type = CAM_PERSP; + } + break; + } + this->uid_camera_map[camera->getUniqueId()] = cam; + // XXX import camera options + return true; + } + + /** When this method is called, the writer must write the image. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeImage( const COLLADAFW::Image* image ) + { + // XXX maybe it is necessary to check if the path is absolute or relative + const std::string& filepath = image->getImageURI().toNativePath(); + const char *filename = (const char*)mFilename.c_str(); + char dir[FILE_MAX]; + char full_path[FILE_MAX]; + + BLI_split_dirfile_basic(filename, dir, NULL); + BLI_join_dirfile(full_path, dir, filepath.c_str()); + Image *ima = BKE_add_image_file(full_path, 0); + if (!ima) { + fprintf(stderr, "Cannot create image. \n"); + return true; + } + this->uid_image_map[image->getUniqueId()] = ima; + + return true; + } + + /** When this method is called, the writer must write the light. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeLight( const COLLADAFW::Light* light ) + { + Lamp *lamp = NULL; + std::string la_id, la_name; + + la_id = light->getOriginalId(); + la_name = light->getName(); + if (la_name.size()) lamp = (Lamp*)add_lamp((char*)la_name.c_str()); + else lamp = (Lamp*)add_lamp((char*)la_id.c_str()); + + if (!lamp) { + fprintf(stderr, "Cannot create lamp. \n"); + return true; + } + if (light->getColor().isValid()) { + COLLADAFW::Color col = light->getColor(); + lamp->r = col.getRed(); + lamp->g = col.getGreen(); + lamp->b = col.getBlue(); + } + COLLADAFW::Light::LightType type = light->getLightType(); + switch(type) { + case COLLADAFW::Light::AMBIENT_LIGHT: + { + lamp->type = LA_HEMI; + } + break; + case COLLADAFW::Light::SPOT_LIGHT: + { + lamp->type = LA_SPOT; + lamp->falloff_type = LA_FALLOFF_SLIDERS; + lamp->att1 = light->getLinearAttenuation().getValue(); + lamp->att2 = light->getQuadraticAttenuation().getValue(); + lamp->spotsize = light->getFallOffAngle().getValue(); + lamp->spotblend = light->getFallOffExponent().getValue(); + } + break; + case COLLADAFW::Light::DIRECTIONAL_LIGHT: + { + lamp->type = LA_SUN; + } + break; + case COLLADAFW::Light::POINT_LIGHT: + { + lamp->type = LA_LOCAL; + lamp->att1 = light->getLinearAttenuation().getValue(); + lamp->att2 = light->getQuadraticAttenuation().getValue(); + } + break; + case COLLADAFW::Light::UNDEFINED: + { + fprintf(stderr, "Current lamp type is not supported. \n"); + lamp->type = LA_LOCAL; + } + break; + } + + this->uid_lamp_map[light->getUniqueId()] = lamp; + return true; + } + + // this function is called only for animations that pass COLLADAFW::validate + virtual bool writeAnimation( const COLLADAFW::Animation* anim ) + { + return anim_importer.write_animation(anim); + } + + // called on post-process stage after writeVisualScenes + virtual bool writeAnimationList( const COLLADAFW::AnimationList* animationList ) + { + return anim_importer.write_animation_list(animationList); + } + + /** When this method is called, the writer must write the skin controller data. + @return The writer should return true, if writing succeeded, false otherwise.*/ + virtual bool writeSkinControllerData( const COLLADAFW::SkinControllerData* skin ) + { + return armature_importer.write_skin_controller_data(skin); + } + + // this is called on postprocess, before writeVisualScenes + virtual bool writeController( const COLLADAFW::Controller* controller ) + { + return armature_importer.write_controller(controller); + } + + virtual bool writeFormulas( const COLLADAFW::Formulas* formulas ) + { + return true; + } + + virtual bool writeKinematicsScene( const COLLADAFW::KinematicsScene* kinematicsScene ) + { + return true; + } +}; + +void DocumentImporter::import(bContext *C, const char *filename) +{ + Writer w(C, filename); + w.write(); +} diff --git a/source/blender/collada/DocumentImporter.h b/source/blender/collada/DocumentImporter.h new file mode 100644 index 00000000000..5dee101eb2d --- /dev/null +++ b/source/blender/collada/DocumentImporter.h @@ -0,0 +1,8 @@ +struct Main; +struct bContext; + +class DocumentImporter +{ + public: + void import(bContext *C, const char *filename); +}; diff --git a/source/blender/collada/SConscript b/source/blender/collada/SConscript new file mode 100644 index 00000000000..7bf2870d6c5 --- /dev/null +++ b/source/blender/collada/SConscript @@ -0,0 +1,10 @@ +#!/usr/bin/python +Import ('env') + +sources = env.Glob('*.cpp') + +# relative paths to include dirs, space-separated, string +incs = '../blenlib ../blenkernel ../windowmanager ../makesdna ../makesrna ../editors/include ../../../intern/guardedalloc [OPENCOLLADA]/COLLADAStreamWriter/include [OPENCOLLADA]/COLLADABaseUtils/include [OPENCOLLADA]/COLLADAFramework/include [OPENCOLLADA]/COLLADASaxFrameworkLoader/include '.replace('[OPENCOLLADA]', env['BF_OPENCOLLADA_INC']) + +env.BlenderLib ('bf_collada', sources, Split(incs), [], libtype='core', priority=200 ) + diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp new file mode 100644 index 00000000000..5aed51c0ba2 --- /dev/null +++ b/source/blender/collada/collada.cpp @@ -0,0 +1,26 @@ +#include "BKE_main.h" +#include "BKE_scene.h" +#include "BKE_context.h" + +#include "DocumentExporter.h" +#include "DocumentImporter.h" + +extern "C" +{ + int collada_import(bContext *C, const char *filepath) + { + DocumentImporter imp; + imp.import(C, filepath); + + return 1; + } + + int collada_export(Scene *sce, const char *filepath) + { + + DocumentExporter exp; + exp.exportCurrentScene(sce, filepath); + + return 1; + } +} diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h new file mode 100644 index 00000000000..cccca072b40 --- /dev/null +++ b/source/blender/collada/collada.h @@ -0,0 +1,19 @@ +#ifndef BLENDER_COLLADA_H +#define BLENDER_COLLADA_H + +struct bContext; +struct Scene; + +#ifdef __cplusplus +extern "C" { +#endif + /* + * both return 1 on success, 0 on error + */ + int collada_import(bContext *C, const char *filepath); + int collada_export(Scene *sce, const char *filepath); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h new file mode 100644 index 00000000000..c0d74505f72 --- /dev/null +++ b/source/blender/collada/collada_internal.h @@ -0,0 +1,69 @@ +#ifndef BLENDER_COLLADA_H +#define BLENDER_COLLADA_H + +#include "COLLADAFWFileInfo.h" +#include "Math/COLLADABUMathMatrix4.h" + +class UnitConverter +{ +private: + COLLADAFW::FileInfo::Unit unit; + COLLADAFW::FileInfo::UpAxisType up_axis; + +public: + + UnitConverter() : unit(), up_axis(COLLADAFW::FileInfo::Z_UP) {} + + void read_asset(const COLLADAFW::FileInfo* asset) + { + } + + // TODO + // convert vector vec from COLLADA format to Blender + void convertVec3(float *vec) + { + } + + // TODO need also for angle conversion, time conversion... + + void mat4_from_dae(float out[][4], const COLLADABU::Math::Matrix4& in) + { + // in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h) + // so here, to make a blender matrix, we swap columns and rows + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + out[i][j] = in[j][i]; + } + } + } + + void mat4_to_dae(float out[][4], float in[][4]) + { + Mat4CpyMat4(out, in); + Mat4Transp(out); + } + + void mat4_to_dae_double(double out[][4], float in[][4]) + { + float mat[4][4]; + + mat4_to_dae(mat, in); + + for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) + out[i][j] = mat[i][j]; + } +}; + +class TransformBase +{ +public: + void decompose(float mat[][4], float *loc, float *rot, float *size) + { + Mat4ToSize(mat, size); + Mat4ToEul(mat, rot); + VecCopyf(loc, mat[3]); + } +}; + +#endif diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index f4ecb9d5def..54d569c10dd 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -359,6 +359,7 @@ static void MARKER_OT_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add Time Marker"; + ot->description= "Add a new time marker."; ot->idname= "MARKER_OT_add"; /* api callbacks */ @@ -612,6 +613,7 @@ static void MARKER_OT_move(wmOperatorType *ot) { /* identifiers */ ot->name= "Move Time Marker"; + ot->description= "Move selected time marker(s)."; ot->idname= "MARKER_OT_move"; /* api callbacks */ @@ -695,6 +697,7 @@ static void MARKER_OT_duplicate(wmOperatorType *ot) { /* identifiers */ ot->name= "Duplicate Time Marker"; + ot->description= "Duplicate selected time marker(s)."; ot->idname= "MARKER_OT_duplicate"; /* api callbacks */ @@ -771,6 +774,7 @@ static void MARKER_OT_select(wmOperatorType *ot) { /* identifiers */ ot->name= "Select Time Marker"; + ot->description= "Select time marker(s)."; ot->idname= "MARKER_OT_select"; /* api callbacks */ @@ -852,6 +856,7 @@ static void MARKER_OT_select_border(wmOperatorType *ot) { /* identifiers */ ot->name= "Marker Border select"; + ot->description= "Select all time markers using border selection."; ot->idname= "MARKER_OT_select_border"; /* api callbacks */ @@ -917,6 +922,7 @@ static void MARKER_OT_select_all_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "(De)select all markers"; + ot->description= "(de)select all time markers."; ot->idname= "MARKER_OT_select_all_toggle"; /* api callbacks */ @@ -963,6 +969,7 @@ static void MARKER_OT_delete(wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Markers"; + ot->description= "Delete selected time marker(s)."; ot->idname= "MARKER_OT_delete"; /* api callbacks */ diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index bf3fd0f4cf1..87760d2da5e 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -147,6 +147,7 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla PointerRNA id_ptr, ptr; PropertyRNA *prop; FCurve *fcu; + int array_index_max = array_index+1; /* validate pointer first - exit if failure */ RNA_id_pointer_create(id, &id_ptr); @@ -155,9 +156,17 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla return 0; } + /* key entire array convenience method */ + if (array_index == -1) { + array_index= 0; + array_index_max= RNA_property_array_length(&ptr, prop) + 1; + } + + /* will only loop once unless the array index was -1 */ + for (; array_index < array_index_max; array_index++) { /* create F-Curve with Driver */ fcu= verify_driver_fcurve(id, rna_path, array_index, 1); - + if (fcu && fcu->driver) { fcu->driver->type= type; @@ -189,6 +198,7 @@ short ANIM_add_driver (ID *id, const char rna_path[], int array_index, short fla } } } + } /* done */ return (fcu != NULL); @@ -357,28 +367,21 @@ static int add_driver_button_exec (bContext *C, wmOperator *op) PropertyRNA *prop= NULL; char *path; short success= 0; - int a, index, length, all= RNA_boolean_get(op->ptr, "all"); + int index, length, all= RNA_boolean_get(op->ptr, "all"); /* try to create driver using property retrieved from UI */ memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); - + + if (all) + index= -1; + if (ptr.data && prop && RNA_property_animateable(ptr.data, prop)) { path= RNA_path_from_ID_to_property(&ptr, prop); - if (path) { - if (all) { - length= RNA_property_array_length(&ptr, prop); + if (path) { + success+= ANIM_add_driver(ptr.id.data, path, index, 0, DRIVER_TYPE_PYTHON); - if (length) index= 0; - else length= 1; - } - else - length= 1; - - for (a=0; a<length; a++) - success+= ANIM_add_driver(ptr.id.data, path, index+a, 0, DRIVER_TYPE_PYTHON); - MEM_freeN(path); } } diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 6a16d6d0ee1..42f6d881037 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -790,12 +790,16 @@ short insert_keyframe_direct (PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, fl * The flag argument is used for special settings that alter the behaviour of * the keyframe insertion. These include the 'visual' keyframing modes, quick refresh, * and extra keyframe filtering. + * + * index of -1 keys all array indices */ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag) { PointerRNA id_ptr, ptr; PropertyRNA *prop; FCurve *fcu; + int array_index_max= array_index+1; + int ret= 0; /* validate pointer first - exit if failure */ RNA_id_pointer_create(id, &id_ptr); @@ -814,8 +818,8 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ /* apply NLA-mapping to frame to use (if applicable) */ cfra= BKE_nla_tweakedit_remap(adt, cfra, NLATIME_CONVERT_UNMAP); } - fcu= verify_fcurve(act, group, rna_path, array_index, 1); - + +#if 0 /* apply special time tweaking */ // XXX check on this stuff... if (GS(id->name) == ID_OB) { @@ -827,9 +831,23 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ // cfra-= give_timeoffset(ob)*scene->r.framelen; //} } +#endif + + /* key entire array convenience method */ + if (array_index == -1) { + array_index= 0; + array_index_max= RNA_property_array_length(&ptr, prop) + 1; + } + /* will only loop once unless the array index was -1 */ + for (; array_index < array_index_max; array_index++) { + fcu= verify_fcurve(act, group, rna_path, array_index, 1); + /* insert keyframe */ - return insert_keyframe_direct(ptr, prop, fcu, cfra, flag); + ret += insert_keyframe_direct(ptr, prop, fcu, cfra, flag); + } + + return ret; } /* ************************************************** */ @@ -1187,9 +1205,8 @@ static int delete_key_v3d_exec (bContext *C, wmOperator *op) float cfra= (float)CFRA; // XXX for now, don't bother about all the yucky offset crap // XXX more comprehensive tests will be needed - CTX_DATA_BEGIN(C, Base*, base, selected_bases) + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { - Object *ob= base->object; ID *id= (ID *)ob; FCurve *fcu, *fcn; short success= 0; diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index bf859ac6017..0f4f29d0091 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -1238,10 +1238,8 @@ static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, Ke } else { /* Object Mode: Selected objects */ - CTX_DATA_BEGIN(C, Base*, base, selected_bases) - { - Object *ob= base->object; - + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) + { /* add a new keying-source */ cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc"); BLI_addtail(dsources, cks); @@ -1269,7 +1267,8 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks /* for now, the active area is used to determine what set of contexts apply */ if (sa == NULL) return 0; - + +#if 0 switch (sa->spacetype) { case SPACE_VIEW3D: /* 3D-View: Selected Objects or Bones */ return modifykey_get_context_v3d_data(C, dsources, ks); @@ -1277,6 +1276,10 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks /* nothing happened */ return 0; +#endif + + /* looking into this code, it doesnt use the 3D view - Campbell */ + return modifykey_get_context_v3d_data(C, dsources, ks); } /* KeyingSet Operations (Insert/Delete Keyframes) ------------ */ diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index 6f5a5f44d87..d31a3bda332 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -87,7 +87,6 @@ void POSE_OT_select_hierarchy(struct wmOperatorType *ot); void POSE_OT_select_linked(struct wmOperatorType *ot); void POSE_OT_select_constraint_target(struct wmOperatorType *ot); -void POSE_OT_groups_menu(struct wmOperatorType *ot); void POSE_OT_group_add(struct wmOperatorType *ot); void POSE_OT_group_remove(struct wmOperatorType *ot); void POSE_OT_group_remove(struct wmOperatorType *ot); diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 3a7ad8fc5ec..e49e3d99c49 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -59,50 +59,6 @@ #include "armature_intern.h" -/* ************************** quick tests **********************************/ - -/* XXX This is a quick test operator to print names of all EditBones in context - * that should be removed once tool coding starts... - */ - -static int armature_test_exec (bContext *C, wmOperator *op) -{ - printf("EditMode Armature Test: \n"); - - printf("\tSelected Bones \n"); - CTX_DATA_BEGIN(C, EditBone*, ebone, selected_bones) - { - printf("\t\tEditBone '%s' \n", ebone->name); - } - CTX_DATA_END; - - printf("\tEditable Bones \n"); - CTX_DATA_BEGIN(C, EditBone*, ebone, selected_editable_bones) - { - printf("\t\tEditBone '%s' \n", ebone->name); - } - CTX_DATA_END; - - printf("\tActive Bone \n"); - { - EditBone *ebone= CTX_data_active_bone(C); - if (ebone) printf("\t\tEditBone '%s' \n", ebone->name); - else printf("\t\t<None> \n"); - } - - return OPERATOR_FINISHED; -} - -void ARMATURE_OT_test(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Test Context"; - ot->idname= "ARMATURE_OT_test"; - - /* api callbacks */ - ot->exec= armature_test_exec; -} - /* ************************** registration **********************************/ /* Both operators ARMATURE_OT_xxx and POSE_OT_xxx here */ @@ -172,7 +128,6 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_select_linked); WM_operatortype_append(POSE_OT_select_constraint_target); - WM_operatortype_append(POSE_OT_groups_menu); WM_operatortype_append(POSE_OT_group_add); WM_operatortype_append(POSE_OT_group_remove); WM_operatortype_append(POSE_OT_group_assign); @@ -200,9 +155,23 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_push); WM_operatortype_append(POSE_OT_relax); WM_operatortype_append(POSE_OT_breakdown); +} + +void ED_operatormacros_armature(void) +{ + wmOperatorType *ot; + wmOperatorTypeMacro *otmacro; - /* TESTS */ - WM_operatortype_append(ARMATURE_OT_test); // XXX temp test for context iterators... to be removed + ot= WM_operatortype_append_macro("ARMATURE_OT_duplicate_move", "Add Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); + WM_operatortype_macro_define(ot, "ARMATURE_OT_duplicate"); + otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + RNA_enum_set(otmacro->ptr, "proportional", 0); + + ot= WM_operatortype_append_macro("ARMATURE_OT_extrude_move", "Extrude", OPTYPE_UNDO|OPTYPE_REGISTER); + otmacro=WM_operatortype_macro_define(ot, "ARMATURE_OT_extrude"); + RNA_enum_set(otmacro->ptr, "forked", 0); + otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + RNA_enum_set(otmacro->ptr, "proportional", 0); } void ED_keymap_armature(wmKeyConfig *keyconf) @@ -239,7 +208,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_bone_primitive_add", AKEY, KM_PRESS, KM_SHIFT, 0); /* only the menu-version of subdivide is registered in keymaps for now */ - WM_keymap_add_item(keymap, "ARMATURE_OT_subdivs", SKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_subdivide_multi", WKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); @@ -247,8 +216,6 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_test", TKEY, KM_PRESS, 0, 0); // XXX temp test for context iterators... to be removed - kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, 0, 0); RNA_enum_set(kmi->ptr, "direction", BONE_SELECT_PARENT); kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_select_hierarchy", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); @@ -265,10 +232,10 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, 0, 0); - kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, KM_SHIFT, 0); - RNA_boolean_set(kmi->ptr, "forked", 1); + WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); + kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, KM_SHIFT, 0); + // RNA_boolean_set(kmi->ptr, "forked", 1); // XXX this doesn't work ok for macros it seems... WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0); @@ -344,7 +311,8 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "POSE_OT_ik_add", IKEY, KM_PRESS, /*KM_CTRL|*/KM_SHIFT, 0); WM_keymap_add_item(keymap, "POSE_OT_ik_clear", IKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "POSE_OT_groups_menu", GKEY, KM_PRESS, KM_CTRL, 0); + kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", GKEY, KM_PRESS, KM_CTRL, 0); + RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_pose_group"); /* set flags */ kmi= WM_keymap_add_item(keymap, "POSE_OT_flags_set", WKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index acbf62f0363..28272722e3c 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -64,6 +64,7 @@ #include "BKE_depsgraph.h" #include "BKE_DerivedMesh.h" #include "BKE_global.h" +#include "BKE_idprop.h" #include "BKE_main.h" #include "BKE_object.h" #include "BKE_report.h" @@ -186,6 +187,9 @@ void make_boneList(ListBase *edbo, ListBase *bones, EditBone *parent) eBone->rad_tail= curBone->rad_tail; eBone->segments = curBone->segments; eBone->layer = curBone->layer; + + if(curBone->prop) + eBone->prop= IDP_CopyProperty(curBone->prop); BLI_addtail(edbo, eBone); @@ -251,7 +255,7 @@ void ED_armature_from_edit(Object *obedit) Object *obt; /* armature bones */ - free_bones(arm); + free_bonelist(&arm->bonebase); /* remove zero sized bones, this gives instable restposes */ for (eBone=arm->edbo->first; eBone; eBone= neBone) { @@ -294,6 +298,9 @@ void ED_armature_from_edit(Object *obedit) newBone->rad_tail= eBone->rad_tail; newBone->segments= eBone->segments; newBone->layer = eBone->layer; + + if(eBone->prop) + newBone->prop= IDP_CopyProperty(eBone->prop); } /* Fix parenting in a separate pass to ensure ebone->bone connections @@ -1902,11 +1909,21 @@ void mouse_armature(bContext *C, short mval[2], int extend) void ED_armature_edit_free(struct Object *ob) { bArmature *arm= ob->data; + EditBone *eBone; /* Clear the editbones list */ if (arm->edbo) { - if (arm->edbo->first) + if (arm->edbo->first) { + for (eBone=arm->edbo->first; eBone; eBone=eBone->next) { + if (eBone->prop) { + IDP_FreeProperty(eBone->prop); + MEM_freeN(eBone->prop); + } + } + BLI_freelistN(arm->edbo); + } + MEM_freeN(arm->edbo); arm->edbo= NULL; } @@ -2225,7 +2242,7 @@ void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d) VECCOPY(bone->head, curs); - if ( (U.flag & USER_ADD_VIEWALIGNED) ) + if (rv3d && (U.flag & USER_ADD_VIEWALIGNED)) VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1 else VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z @@ -2713,17 +2730,6 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int armature_duplicate_selected_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - int retv= armature_duplicate_selected_exec(C, op); - - if (retv == OPERATOR_FINISHED) { - RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); - } - - return retv; -} void ARMATURE_OT_duplicate(wmOperatorType *ot) { @@ -2732,15 +2738,11 @@ void ARMATURE_OT_duplicate(wmOperatorType *ot) ot->idname= "ARMATURE_OT_duplicate"; /* api callbacks */ - ot->invoke = armature_duplicate_selected_invoke; ot->exec = armature_duplicate_selected_exec; ot->poll = ED_operator_editarmature; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - /* to give to transform */ - RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); } @@ -3385,17 +3387,6 @@ static int armature_extrude_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int armature_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - if (OPERATOR_CANCELLED == armature_extrude_exec(C, op)) - return OPERATOR_CANCELLED; - - RNA_int_set(op->ptr, "mode", TFM_TRANSLATION); - WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr); - - return OPERATOR_FINISHED; -} - void ARMATURE_OT_extrude(wmOperatorType *ot) { /* identifiers */ @@ -3403,7 +3394,6 @@ void ARMATURE_OT_extrude(wmOperatorType *ot) ot->idname= "ARMATURE_OT_extrude"; /* api callbacks */ - ot->invoke= armature_extrude_invoke; ot->exec= armature_extrude_exec; ot->poll= ED_operator_editarmature; @@ -3412,8 +3402,6 @@ void ARMATURE_OT_extrude(wmOperatorType *ot) /* props */ RNA_def_boolean(ot->srna, "forked", 0, "Forked", ""); - /* to give to transform */ - RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); } /* ********************** Bone Add ********************/ @@ -3435,7 +3423,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op) Mat4Invert(obedit->imat, obedit->obmat); Mat4MulVecfl(obedit->imat, curs); - if (U.flag & USER_ADD_VIEWALIGNED) + if (rv3d && (U.flag & USER_ADD_VIEWALIGNED)) Mat3CpyMat4(obmat, rv3d->viewmat); else Mat3One(obmat); @@ -3450,7 +3438,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op) VECCOPY(bone->head, curs); - if(U.flag & USER_ADD_VIEWALIGNED) + if(rv3d && (U.flag & USER_ADD_VIEWALIGNED)) VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1 else VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 160f505c3f5..a06588f460b 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -69,7 +69,7 @@ static void waitcursor(int val) {} static void progress_bar() {} static void start_progress_bar() {} static void end_progress_bar() {} -static void error() {} +static void error(char *str) { printf("error: %s\n", str); } /* ************* XXX *************** */ @@ -1698,7 +1698,7 @@ static void meshdeform_matrix_solve(MeshDeformBind *mdb) nlDeleteContext(context); } -void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float (*vertexcos)[3], int totvert, float cagemat[][4]) +void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) { MeshDeformBind mdb; MDefBindInfluence *inf; @@ -1714,7 +1714,7 @@ void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, float memset(&mdb, 0, sizeof(MeshDeformBind)); /* get mesh and cage mesh */ - mdb.vertexcos= vertexcos; + mdb.vertexcos= (float(*)[3])vertexcos; mdb.totvert= totvert; mdb.cagedm= mesh_create_derived_no_deform(scene, mmd->object, NULL, CD_MASK_BAREMESH); diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h index 00c0aefaec7..1ee01561cd4 100644 --- a/source/blender/editors/armature/meshlaplacian.h +++ b/source/blender/editors/armature/meshlaplacian.h @@ -79,7 +79,7 @@ void rigid_deform_end(int cancel); /* Harmonic Coordinates */ void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, - float (*vertexcos)[3], int totvert, float cagemat[][4]); + float *vertexcos, int totvert, float cagemat[][4]); #endif diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 331bd6fa28f..993f1e49e71 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -1310,7 +1310,6 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) Object *ob; bArmature *arm; bPose *pose; - bPoseChannel *pchan; short done= 0; /* since this call may also be used from the buttons window, we need to check for where to get the object */ @@ -1334,18 +1333,12 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) /* add selected bones to group then */ // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) - for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { - /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ - // NOTE: sync this view3d_context() in space_view3d.c - if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - if (pchan->bone->flag & (BONE_SELECTED|BONE_ACTIVE)) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { pchan->agrp_index= pose->active_group; done= 1; } - } - } - + CTX_DATA_END; + /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); @@ -1438,54 +1431,6 @@ void POSE_OT_group_unassign (wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; } -/* ----------------- */ - -static int pose_groupOps_menu_invoke (bContext *C, wmOperator *op, wmEvent *evt) -{ - Object *ob= CTX_data_active_object(C); - uiPopupMenu *pup= uiPupMenuBegin(C, op->type->name, 0); - uiLayout *layout= uiPupMenuLayout(pup); - - /* sanity check - must have object with pose */ - if ELEM(NULL, ob, ob->pose) - return OPERATOR_CANCELLED; - - /* get mode of action */ - if (CTX_DATA_COUNT(C, selected_pchans)) { - /* if selected bone(s), include options to add/remove to active group */ - uiItemO(layout, "Add Selected to Active Group", 0, "POSE_OT_group_assign"); - - uiItemS(layout); - - uiItemO(layout, "Remove Selected from All Groups", 0, "POSE_OT_group_unassign"); - uiItemO(layout, "Remove Active Group", 0, "POSE_OT_group_remove"); - } - else { - /* no selected bones - so just options for groups management */ - uiItemO(layout, "Add New Group", 0, "POSE_OT_group_add"); - uiItemO(layout, "Remove Active Group", 0, "POSE_OT_group_remove"); - } - - return OPERATOR_CANCELLED; -} - -void POSE_OT_groups_menu (wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Bone Group Tools"; - ot->idname= "POSE_OT_groups_menu"; - ot->description= "Menu displaying available tools for Bone Groups."; - - /* api callbacks (only invoke needed) */ - ot->invoke= pose_groupOps_menu_invoke; - ot->poll= ED_operator_posemode; - - /* flags */ - ot->flag= OPTYPE_REGISTER; -} - -/* ********************************************** */ - static short pose_select_same_group (Object *ob) { bPose *pose= (ob)? ob->pose : NULL; diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 1ad3e1a42ec..48c14047524 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -4729,7 +4729,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname) cent[2]-= obedit->obmat[3][2]; if(rv3d) { - if (!newname && U.flag & USER_ADD_VIEWALIGNED) + if (!newname && (U.flag & USER_ADD_VIEWALIGNED)) Mat3CpyMat4(imat, rv3d->viewmat); else Mat3One(imat); diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 978edda27ca..0468299d1a1 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -479,7 +479,7 @@ static void txt_add_object(bContext *C, TextLine *firstline, int totline, float obedit= add_object(scene, OB_FONT); base= scene->basact; - ED_object_base_init_from_view(C, base); + ED_object_base_init_from_view(C, base, 1); /* seems to assume view align ? TODO - look into this, could be an operator option */ where_is_object(scene, obedit); obedit->loc[0] += offset[0]; diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c index c43c0bd43dc..039221d1cc4 100644 --- a/source/blender/editors/datafiles/B.blend.c +++ b/source/blender/editors/datafiles/B.blend.c @@ -1,1300 +1,12424 @@ /* DataToC output of file </Users/William/blender25/blender/release/datafiles/B_blend> */ -int datatoc_B_blend_size= 112944; +int datatoc_B_blend_size= 469420; char datatoc_B_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, 82, 69, 78, 68, - 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,224,236,191, 95, -255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55, 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,112, 24, 39, 3, - 1, 0, 0, 0, 48,216,135, 3, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47, 85,115,101,114,115, 47, 87,105,108,108,105, - 97,109, 47, 46, 66, 50, 53, 46, 98,108,101,110,100, 0,191, 95,255,127, 0, 0, 84,212,169, 2, 1, 0, 0, 0,112,237,191, 95, -255,127, 0, 0,214,197, 91, 0, 1, 0, 0, 0, 80,237,191, 95,255,127, 0, 0,208, 90,171, 2, 32, 0, 0, 0,224,237,191, 95, -255,127, 0, 0,160, 65, 13, 3, 1, 0, 0, 0,144,237,191, 95,255,127, 0, 0, 48,212,169, 2, 1, 0, 0, 0,192,237,191, 95, -255,127, 0, 0, 77,200, 91, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 32, 0, 0, 0, - 82, 69, 78, 68,160, 65, 13, 3, 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,232,237,191, 95,255,127, 0, 0, 16,238,191, 95,255,127, 0, 0, 89,207, 91, 0, 1, 0, 0, 0,224, 18, 39, 3, - 1, 0, 0, 0,160, 65, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0, 0, 22, 39, 3, 1, 0, 0, 0, 95, 1, 0, 0, 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, 87, 77, 87,105, -110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 23, 39, 3, 1, 0, 0, 0, 80, 23, 39, 3, 1, 0, 0, 0, 80, 23, 39, 3, 1, 0, 0, 0, 80, 23, 39, 3, - 1, 0, 0, 0, 3, 0, 0, 0, 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, 2, 0, 0, 0, - 2, 0, 0, 0, 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,240, 93, 38, 3, 1, 0, 0, 0,240, 93, 38, 3, 1, 0, 0, 0,240, 93, 38, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 94, 38, 3, 1, 0, 0, 0,208, 94, 38, 3, 1, 0, 0, 0,208, 94, 38, 3, - 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 80, 23, 39, 3, 1, 0, 0, 0, 96, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,104, 38, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112, 24, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 20, 3, 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, - 0, 0, 0, 0,208,174, 38, 3, 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, 48,110,234, 24, 1, 0, 0, 0, 0,142,181, 24, 1, 0, 0, 0, 0,142,181, 24, 1, 0, 0, 0,208,245, 38, 3, - 1, 0, 0, 0, 96, 42, 40, 3, 1, 0, 0, 0,208, 43, 40, 3, 1, 0, 0, 0,208, 43, 40, 3, 1, 0, 0, 0,144,225, 39, 3, - 1, 0, 0, 0, 32, 88,234, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0, -208, 0, 0, 0,112, 24, 39, 3, 1, 0, 0, 0,190, 0, 0, 0, 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, 83, 82, 83, 99,114,101,101,110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 25, 39, 3, - 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0, 0, 30, 39, 3, 1, 0, 0, 0, 96, 36, 39, 3, 1, 0, 0, 0,192, 36, 39, 3, - 1, 0, 0, 0,144,116, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,216,135, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,164, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 25, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 25, 39, 3, - 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, 68, 65, 84, 65, - 32, 0, 0, 0,224, 25, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 26, 39, 3, 1, 0, 0, 0,128, 25, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 26, 39, 3, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 26, 39, 3, 1, 0, 0, 0,224, 25, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 5, 20, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 26, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 64, 26, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 27, 39, 3, - 1, 0, 0, 0,160, 26, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5,249, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 27, 39, 3, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,124, 4, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4,249, 2, - 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 28, 39, 3, - 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4, 92, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 32, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 92, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 29, 39, 3, - 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4,100, 0, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 30, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 30, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 25, 39, 3, 1, 0, 0, 0, 64, 26, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 30, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 30, 39, 3, - 1, 0, 0, 0, 0, 30, 39, 3, 1, 0, 0, 0,224, 25, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 30, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 31, 39, 3, - 1, 0, 0, 0, 96, 30, 39, 3, 1, 0, 0, 0, 64, 26, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 31, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 31, 39, 3, - 1, 0, 0, 0,192, 30, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 31, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 31, 39, 3, - 1, 0, 0, 0, 32, 31, 39, 3, 1, 0, 0, 0,128, 25, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 31, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 32, 39, 3, - 1, 0, 0, 0,128, 31, 39, 3, 1, 0, 0, 0,160, 26, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 32, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 32, 39, 3, - 1, 0, 0, 0,224, 31, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 32, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 33, 39, 3, - 1, 0, 0, 0, 64, 32, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 33, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 33, 39, 3, - 1, 0, 0, 0,160, 32, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 33, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 33, 39, 3, - 1, 0, 0, 0, 0, 33, 39, 3, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 33, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 34, 39, 3, - 1, 0, 0, 0, 96, 33, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 34, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 34, 39, 3, - 1, 0, 0, 0,192, 33, 39, 3, 1, 0, 0, 0,160, 26, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 34, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 34, 39, 3, - 1, 0, 0, 0, 32, 34, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 34, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 35, 39, 3, - 1, 0, 0, 0,128, 34, 39, 3, 1, 0, 0, 0,128, 25, 39, 3, 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 35, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 35, 39, 3, - 1, 0, 0, 0,224, 34, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 35, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 36, 39, 3, - 1, 0, 0, 0, 64, 35, 39, 3, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 36, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 36, 39, 3, - 1, 0, 0, 0,160, 35, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 36, 39, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 39, 3, 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,192, 36, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96, 40, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0,224, 25, 39, 3, 1, 0, 0, 0, 64, 26, 39, 3, - 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0,250, 2, 0, 0, - 20, 3, 0, 0, 7, 7,161, 5, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240, 39, 35, 3, 1, 0, 0, 0,176,146, 39, 3, - 1, 0, 0, 0,176,146, 39, 3, 1, 0, 0, 0,160, 37, 39, 3, 1, 0, 0, 0, 0, 39, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 5, 43, 25, 1, 0, 0, 0,144,126, 41, 25, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,160, 37, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 39, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,180, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,161, 5, 26, 0,161, 5, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 5, 0, 0,250, 2, 0, 0, 19, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 5, 26, 0, - 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 41, 35, 3, 1, 0, 0, 0,240,242,237, 24, - 1, 0, 0, 0,240,242,237, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 1, 13, 3, - 1, 0, 0, 0,208,134,118, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 0, 39, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 37, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0,192,107, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,191,107, 69, 0, 0, 0,192, - 0, 0, 0, 0, 94, 7, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 93, 7, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 93, 7, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,111, 7, 5, 0, 94, 7, - 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, 20, 3, 0, 0, 20, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 40, 35, 3, 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, 68, 65, 84, 65, -160, 0, 0, 0, 96, 40, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 86, 39, 3, 1, 0, 0, 0,192, 36, 39, 3, - 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0,160, 26, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 4, 0, 0,160, 5, 0, 0, 0, 0, 0, 0, 91, 2, 0, 0, 4, 4, 36, 1, - 92, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 36, 35, 3, 1, 0, 0, 0, 96, 78, 39, 3, 1, 0, 0, 0,144, 85, 39, 3, - 1, 0, 0, 0, 64, 41, 39, 3, 1, 0, 0, 0,160, 42, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 77, 41, 25, 1, 0, 0, 0, 0,113, 41, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 41, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 42, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,146, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 1, 31, 0, 36, 1, 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,125, 4, 0, 0,160, 5, 0, 0, 61, 2, 0, 0, - 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 39, 35, 3, 1, 0, 0, 0,144, 94,234, 24, 1, 0, 0, 0,144, 94,234, 24, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 66, 40, 25, 1, 0, 0, 0,160, 31,118, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 42, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 41, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0,137, 67, 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,137, 67,254,191, 10,196, 0, 0, 0, 0, 19, 1, 0, 0, - 36, 1, 0, 0, 18, 0, 0, 0, 60, 2, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 18, 1, 0, 0, 18, 0, 0, 0, 60, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 36, 1, 61, 2, 19, 1, 43, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 49, 40, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,125, 4, 0, 0,160, 5, 0, 0, 0, 0, 0, 0, - 60, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 1, 61, 2, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 37, 35, 3, 1, 0, 0, 0, 16,178,237, 24, 1, 0, 0, 0,128, 38,238, 24, - 1, 0, 0, 0, 0, 44, 39, 3, 1, 0, 0, 0,208, 76, 39, 3, 1, 0, 0, 0, 32, 71, 42, 25, 1, 0, 0, 0,144,196,117, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 44, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 45, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 38, 35, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 18, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 45, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 47, 39, 3, - 1, 0, 0, 0, 0, 44, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, -101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, - 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 47, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 48, 39, 3, 1, 0, 0, 0,144, 45, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 48, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 50, 39, 3, - 1, 0, 0, 0, 32, 47, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, - 76, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64, 50, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 51, 39, 3, 1, 0, 0, 0,176, 48, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110, + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 48, + 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0, +224,236,191, 95,255,127, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 55, 7, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, + 64,154,143, 22, 1, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 60,109,101,109,111,114,121, 50, + 62, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, 84,198,157, 3, 1, 0, 0, 0, +112,237,191, 95,255,127, 0, 0, 66,237, 91, 0, 1, 0, 0, 0, 80,237,191, 95,255,127, 0, 0,208, 76,159, 3, 32, 0, 0, 0, +224,237,191, 95,255,127, 0, 0, 32, 4,255, 24, 1, 0, 0, 0,144,237,191, 95,255,127, 0, 0, 48,198,157, 3, 1, 0, 0, 0, +192,237,191, 95,255,127, 0, 0,185,239, 91, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,237,191, 95,255,127, 0, 0, + 32, 0, 0, 0, 82, 69, 78, 68, 32, 4,255, 24, 1, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,224,237,191, 95,255,127, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,232,237,191, 95,255,127, 0, 0, 16,238,191, 95,255,127, 0, 0,197,246, 91, 0, 1, 0, 0, 0, + 80, 21,142, 22, 1, 0, 0, 0, 32, 4,255, 24, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0, 8, 1, 0, 0,112, 24,142, 22, 1, 0, 0, 0, 96, 1, 0, 0, 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, + 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 25,142, 22, 1, 0, 0, 0,192, 25,142, 22, 1, 0, 0, 0,192, 25,142, 22, 1, 0, 0, 0, +192, 25,142, 22, 1, 0, 0, 0, 3, 0, 0, 0, 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, + 2, 0, 0, 0, 2, 0, 0, 0, 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,180,135, 22, 1, 0, 0, 0, 0,180,135, 22, 1, 0, 0, 0, + 0,180,135, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 68, 2, 1, 0, 0, 0, 0,140, 68, 2, 1, 0, 0, 0, + 0,140, 68, 2, 1, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,192, 25,142, 22, 1, 0, 0, 0, 97, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,186,135, 22, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 64,154,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 1, 0,238, 3, + 0, 0, 1, 0, 0, 0, 0, 0,240,148,136, 22, 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, 16, 19, 56, 25, 1, 0, 0, 0,112,150, 33, 3, 1, 0, 0, 0,112,150, 33, 3, 1, 0, 0, 0, +112,161, 37, 3, 1, 0, 0, 0, 48,208, 36, 3, 1, 0, 0, 0,144, 79, 37, 3, 1, 0, 0, 0,144, 79, 37, 3, 1, 0, 0, 0, + 48,157,251, 24, 1, 0, 0, 0, 32,192, 20, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,224, 26,142, 22, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,224,236,142, 22, 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, 83, 82, 65,110,105,109, 97,116, +105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 27,142, 22, 1, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0,176, 34,142, 22, 1, 0, 0, 0, 48, 45,142, 22, 1, 0, 0, 0, +144, 45,142, 22, 1, 0, 0, 0,176,218,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 27,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 80, 28,142, 22, 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, + 68, 65, 84, 65, 32, 0, 0, 0, 80, 28,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 28,142, 22, 1, 0, 0, 0, +240, 27,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +176, 28,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 29,142, 22, 1, 0, 0, 0, 80, 28,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 29,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,112, 29,142, 22, 1, 0, 0, 0,176, 28,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 29,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +208, 29,142, 22, 1, 0, 0, 0, 16, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, +112, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48, 30,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,240, 30,142, 22, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 30,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 80, 31,142, 22, 1, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,192, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176, 31,142, 22, 1, 0, 0, 0, +240, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,192, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +176, 31,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0,176, 31,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6,116, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +208, 32,142, 22, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2,116, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48, 33,142, 22, 1, 0, 0, 0, +112, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48, 33,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0, 48, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +156, 2, 52, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 80, 34,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 52, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 52, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 34,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 35,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 28,142, 22, 1, 0, 0, 0,176, 28,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 35,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 35,142, 22, 1, 0, 0, 0,176, 34,142, 22, 1, 0, 0, 0, + 80, 28,142, 22, 1, 0, 0, 0,112, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 35,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 35,142, 22, 1, 0, 0, 0, 16, 35,142, 22, 1, 0, 0, 0, +176, 28,142, 22, 1, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 35,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 36,142, 22, 1, 0, 0, 0,112, 35,142, 22, 1, 0, 0, 0, +112, 29,142, 22, 1, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 36,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 36,142, 22, 1, 0, 0, 0,208, 35,142, 22, 1, 0, 0, 0, +240, 27,142, 22, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 36,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 36,142, 22, 1, 0, 0, 0, 48, 36,142, 22, 1, 0, 0, 0, + 16, 29,142, 22, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 36,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 37,142, 22, 1, 0, 0, 0,144, 36,142, 22, 1, 0, 0, 0, +208, 29,142, 22, 1, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 37,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 37,142, 22, 1, 0, 0, 0,240, 36,142, 22, 1, 0, 0, 0, + 48, 30,142, 22, 1, 0, 0, 0,240, 30,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 37,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 38,142, 22, 1, 0, 0, 0, 80, 37,142, 22, 1, 0, 0, 0, + 16, 29,142, 22, 1, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 38,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 38,142, 22, 1, 0, 0, 0,176, 37,142, 22, 1, 0, 0, 0, +240, 30,142, 22, 1, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 38,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 38,142, 22, 1, 0, 0, 0, 16, 38,142, 22, 1, 0, 0, 0, +240, 27,142, 22, 1, 0, 0, 0,176, 31,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 38,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 39,142, 22, 1, 0, 0, 0,112, 38,142, 22, 1, 0, 0, 0, +144, 30,142, 22, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 39,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 39,142, 22, 1, 0, 0, 0,208, 38,142, 22, 1, 0, 0, 0, + 48, 30,142, 22, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 39,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 39,142, 22, 1, 0, 0, 0, 48, 39,142, 22, 1, 0, 0, 0, +176, 31,142, 22, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 39,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 40,142, 22, 1, 0, 0, 0,144, 39,142, 22, 1, 0, 0, 0, +176, 31,142, 22, 1, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 40,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 40,142, 22, 1, 0, 0, 0,240, 39,142, 22, 1, 0, 0, 0, + 16, 32,142, 22, 1, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 40,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 41,142, 22, 1, 0, 0, 0, 80, 40,142, 22, 1, 0, 0, 0, +112, 29,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 41,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 41,142, 22, 1, 0, 0, 0,176, 40,142, 22, 1, 0, 0, 0, +144, 30,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 41,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 41,142, 22, 1, 0, 0, 0, 16, 41,142, 22, 1, 0, 0, 0, +112, 32,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 41,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 42,142, 22, 1, 0, 0, 0,112, 41,142, 22, 1, 0, 0, 0, +176, 31,142, 22, 1, 0, 0, 0, 48, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 42,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 42,142, 22, 1, 0, 0, 0,208, 41,142, 22, 1, 0, 0, 0, +112, 32,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 42,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 42,142, 22, 1, 0, 0, 0, 48, 42,142, 22, 1, 0, 0, 0, + 48, 33,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 42,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 43,142, 22, 1, 0, 0, 0,144, 42,142, 22, 1, 0, 0, 0, +240, 30,142, 22, 1, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 43,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 43,142, 22, 1, 0, 0, 0,240, 42,142, 22, 1, 0, 0, 0, +144, 30,142, 22, 1, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 43,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 44,142, 22, 1, 0, 0, 0, 80, 43,142, 22, 1, 0, 0, 0, +208, 29,142, 22, 1, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 44,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 44,142, 22, 1, 0, 0, 0,176, 43,142, 22, 1, 0, 0, 0, + 80, 31,142, 22, 1, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 44,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 44,142, 22, 1, 0, 0, 0, 16, 44,142, 22, 1, 0, 0, 0, +240, 33,142, 22, 1, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 44,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 45,142, 22, 1, 0, 0, 0,112, 44,142, 22, 1, 0, 0, 0, +112, 29,142, 22, 1, 0, 0, 0, 48, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 45,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 44,142, 22, 1, 0, 0, 0, +208, 32,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +144, 45,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48, 49,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 29,142, 22, 1, 0, 0, 0, 80, 28,142, 22, 1, 0, 0, 0,176, 28,142, 22, 1, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0, 96,236,142, 22, 1, 0, 0, 0, 96,236,142, 22, 1, 0, 0, 0, +112, 46,142, 22, 1, 0, 0, 0,208, 47,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 82, 40, 3, 1, 0, 0, 0, 16,225,253, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112, 46,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,208, 47,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 47,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 46,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, 48, 49,142, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 80, 97,142, 22, 1, 0, 0, 0,144, 45,142, 22, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, +240, 30,142, 22, 1, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0, 16, 29,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 4, 4, 80, 1,192, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0,192, 88,142, 22, 1, 0, 0, 0,240, 95,142, 22, 1, 0, 0, 0, 16, 50,142, 22, 1, 0, 0, 0, +112, 51,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,224,253, 24, 1, 0, 0, 0, + 48,224,253, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16, 50,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +112, 51,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 80, 1, 31, 0, 80, 1, 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, 49, 6, 0, 0,128, 7, 0, 0,161, 1, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 51,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 50,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,199,195, 0, 0, 0, 0, + 0, 0, 0, 0, 1,128,159, 67, 1,128,199,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, 18, 0, 0, 0,160, 1, 0, 0, + 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 18, 0, 0, 0,160, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0, 80, 1,161, 1, 63, 1,143, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,183,250, 24, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,161, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 52,142, 22, 1, 0, 0, 0, + 48, 87,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 52,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96, 54,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255, 63, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 96, 54,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 55,142, 22, 1, 0, 0, 0,208, 52,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 55,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128, 57,142, 22, 1, 0, 0, 0, 96, 54,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +128, 57,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 59,142, 22, 1, 0, 0, 0,240, 55,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 76, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 59,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160, 60,142, 22, 1, 0, 0, 0,128, 57,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +160, 60,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 62,142, 22, 1, 0, 0, 0, 16, 59,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 76, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 62,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192, 63,142, 22, 1, 0, 0, 0,160, 60,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192, 63,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 65,142, 22, 1, 0, 0, 0, 48, 62,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 65,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224, 66,142, 22, 1, 0, 0, 0,192, 63,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +224, 66,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 68,142, 22, 1, 0, 0, 0, 80, 65,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 68,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 70,142, 22, 1, 0, 0, 0,224, 66,142, 22, 1, 0, 0, 0,144, 47,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 0, 70,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 71,142, 22, 1, 0, 0, 0,112, 68,142, 22, 1, 0, 0, 0, +192, 56,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95, +115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95, +115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254, 63, 1, 69, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 71,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32, 73,142, 22, 1, 0, 0, 0, 0, 70,142, 22, 1, 0, 0, 0, 16,109,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,153,254, 63, 1, 36, 0, 20, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32, 73,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 74,142, 22, 1, 0, 0, 0,144, 71,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,114, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176, 74,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64, 76,142, 22, 1, 0, 0, 0, 32, 73,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255,114, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 64, 76,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 77,142, 22, 1, 0, 0, 0,176, 74,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,114, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 77,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96, 79,142, 22, 1, 0, 0, 0, 64, 76,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254,114, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96, 79,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 80,142, 22, 1, 0, 0, 0,208, 77,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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,213,253,114, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 51, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 53, 39, 3, - 1, 0, 0, 0, 64, 50, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, - 76, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240, 80,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128, 82,142, 22, 1, 0, 0, 0, 96, 79,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96, 53, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 54, 39, 3, 1, 0, 0, 0,208, 51, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, + 0, 0, 84,253,114, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 88, 1, 0, 0, +128, 82,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 84,142, 22, 1, 0, 0, 0,240, 80,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,114, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16, 84,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160, 85,142, 22, 1, 0, 0, 0,128, 82,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253,114, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +160, 85,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 87,142, 22, 1, 0, 0, 0, 16, 84,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,114, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 87,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 85,142, 22, 1, 0, 0, 0,240, 28,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,135,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0, +192, 88,142, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,240, 95,142, 22, 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, 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, 1, 0, 1, 0, 1, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 48, 43,252, 24, 1, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 90,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96, 91,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 91,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90,142, 22, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,192, 92,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192, 92,142, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240, 54, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 56, 39, 3, - 1, 0, 0, 0, 96, 53, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, -111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, - 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128, 56, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 58, 39, 3, 1, 0, 0, 0,240, 54, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115, -115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115, -115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,240, 95,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 88,142, 22, 1, 0, 0, 0, 0, 90,142, 22, 1, 0, 0, 0, 96, 91,142, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 80, 97,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,109,142, 22, 1, 0, 0, 0, 48, 49,142, 22, 1, 0, 0, 0, +240, 27,142, 22, 1, 0, 0, 0,176, 31,142, 22, 1, 0, 0, 0, 16, 32,142, 22, 1, 0, 0, 0, 48, 30,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0,115, 0, 0, 0, 15, 15, 48, 6,116, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 15, 3, 1, 0, 0, 0,240,100,142, 22, 1, 0, 0, 0,224,107,142, 22, 1, 0, 0, 0, + 48, 98,142, 22, 1, 0, 0, 0,144, 99,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,200,252, 24, 1, 0, 0, 0, 80,199,254, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 98,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144, 99,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 4, 15, 3, 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, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 40, 1, 0, 0,144, 99,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 98,142, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 18, 0, 0, 0, 89, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 26, 0, 0, 0,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 3, 15, 3, 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, 68, 65, 84, 65,200, 0, 0, 0,240,100,142, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0,224,107,142, 22, 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, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 58, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 59, 39, 3, - 1, 0, 0, 0,128, 56, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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,253, - 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160, 59, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 61, 39, 3, 1, 0, 0, 0, 16, 58, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,101,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,103,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 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, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,252, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,103,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,101,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 61, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 62, 39, 3, - 1, 0, 0, 0,160, 59, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, - 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105, -110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,252, - 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 62, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 64, 39, 3, 1, 0, 0, 0, 48, 61, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,104,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,176,104,142, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,252, 76, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 64, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 65, 39, 3, - 1, 0, 0, 0,192, 62, 39, 3, 1, 0, 0, 0,144,118,121, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, -101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, - 18, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 65, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 67, 39, 3, 1, 0, 0, 0, 80, 64, 39, 3, 1, 0, 0, 0,128,129,121, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,224,107,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,100,142, 22, 1, 0, 0, 0,240,101,142, 22, 1, 0, 0, 0, 80,103,142, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 64,109,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,126,142, 22, 1, 0, 0, 0, 80, 97,142, 22, 1, 0, 0, 0, +240, 30,142, 22, 1, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0, 80, 34,142, 22, 1, 0, 0, 0, 80, 31,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0,193, 1, 0, 0, 51, 3, 0, 0, 3, 3, 80, 1,115, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 15, 3, 1, 0, 0, 0,224,112,142, 22, 1, 0, 0, 0,144,125,142, 22, 1, 0, 0, 0, + 32,110,142, 22, 1, 0, 0, 0,128,111,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1,252, 24, 1, 0, 0, 0, 48, 91,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,110,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,111,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,168, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 80, 1, 26, 0, 80, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 26, 3, 0, 0, 51, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,111,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,110,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, + 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,159, 67, 0,128,163,195, 0, 0, 0, 0, 63, 1, 0, 0, 80, 1, 0, 0, + 18, 0, 0, 0, 88, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, + 18, 0, 0, 0, 88, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 80, 1, 89, 1, 63, 1, 71, 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, 49, 6, 0, 0,128, 7, 0, 0,193, 1, 0, 0, 25, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1, 89, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,112,142, 22, 1, 0, 0, 0, +166, 0, 0, 0, 1, 0, 0, 0, 96,118,142, 22, 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, 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, 96,131, 16, 26, 1, 0, 0, 0, + 96,131, 16, 26, 1, 0, 0, 0, 64,114,142, 22, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 64,114,142, 22, 1, 0, 0, 0, +218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,144,114,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, +144,114,142, 22, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,242, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,253, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,251, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,238, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,237, 39, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,160,115,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,117,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, + 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195, 0, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0,117,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,115,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67, +223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0, +156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 1, 0, 0, 96,118,142, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144,125,142, 22, 1, 0, 0, 0, +224,112,142, 22, 1, 0, 0, 0,160,115,142, 22, 1, 0, 0, 0, 0,117,142, 22, 1, 0, 0, 0, 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, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 18, 1, 0, 0, 0, 0, 0, 0, 4, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, +160,119,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,121,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0,121,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,119,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 67, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 69, 39, 3, - 1, 0, 0, 0,224, 65, 39, 3, 1, 0, 0, 0, 96,131,121, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, - 18, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 69, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 70, 39, 3, 1, 0, 0, 0,112, 67, 39, 3, 1, 0, 0, 0,192,136,121, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, -110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105, -110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 18, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 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, 89, 6, 0, 0,108, 7, 0, 0, + 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 96,122,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 96,122,142, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 70, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 72, 39, 3, - 1, 0, 0, 0, 0, 69, 39, 3, 1, 0, 0, 0, 32,139,121, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100, -105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, - 18, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 72, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 73, 39, 3, 1, 0, 0, 0,144, 70, 39, 3, 1, 0, 0, 0,128,144,121, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144,125,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,118,142, 22, 1, 0, 0, 0,160,119,142, 22, 1, 0, 0, 0, 0,121,142, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,240,126,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,157,142, 22, 1, 0, 0, 0, + 64,109,142, 22, 1, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0, + 16, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0,117, 0, 0, 0, 21, 4, 0, 0, + 1, 1,147, 3,161, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0,240,151,142, 22, 1, 0, 0, 0, + 16,156,142, 22, 1, 0, 0, 0,208,127,142, 22, 1, 0, 0, 0, 96,147,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,206,253, 24, 1, 0, 0, 0, 96, 76, 40, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208,127,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,129,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,100, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,146, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,147, 3, 26, 0,147, 3, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0, +117, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,147, 3, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48,129,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,133,142, 22, 1, 0, 0, 0,208,127,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,157, 2, 0, 0,157, 2, 0, 0, +143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,135, 3, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 10, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,130,142, 22, 1, 0, 0, 0, 32,132,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,130,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,132,142, 22, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115, +104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115, +104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,132,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,130,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,223,253,143, 0,205, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,133,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,136,142, 22, 1, 0, 0, 0, 48,129,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 2, 0, 0, 47, 6, 0, 0, +143, 0, 0, 0,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 11, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,135,142, 22, 1, 0, 0, 0, 16,135,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 16,135,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, +112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, +112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,101,119, 32, 83, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255,144, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,136,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 96,147,142, 22, 1, 0, 0, 0,176,133,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 97,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 97,196, 0, 0,136,195,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,136, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,136, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,137, 2,163, 0,119, 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, 47, 6, 0, 0, 47, 6, 0, 0,143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,138,142, 22, 1, 0, 0, 0, +208,145,142, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,138,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +144,139,142, 22, 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, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, + 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128,254,163, 0,104, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,139,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,141,142, 22, 1, 0, 0, 0, 0,138,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, +108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, +108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,141,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176,142,142, 22, 1, 0, 0, 0,144,139,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45,253,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +176,142,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,144,142, 22, 1, 0, 0, 0, 32,141,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,252,163, 0, 3, 1, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64,144,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208,145,142, 22, 1, 0, 0, 0,176,142,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,229,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +208,145,142, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,144,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, + 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,147,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,136,142, 22, 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,157, 2, 0, 0, 47, 6, 0, 0,143, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,147, 3,135, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 6, 15, 3, 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, +192,148,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,148,142, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,220,141, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62, 46,247,227,190,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 97,195, 91, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,100,241,125, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,160, 32,182,197,149,185,190,137,232, 50, 62, 52,191, 78, 63, 0,128,213, 53, +215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62, 46,247,227,190,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 97,195, 91, 62, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,100,241,125, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,190,200, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 60,248, 2, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +240,151,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 16,156,142, 22, 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, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,153,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,154,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,154,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,153,142, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 16,156,142, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,151,142, 22, 1, 0, 0, 0, 80,153,142, 22, 1, 0, 0, 0, +176,154,142, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 16,157,142, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 48,185,142, 22, 1, 0, 0, 0,240,126,142, 22, 1, 0, 0, 0,176, 31,142, 22, 1, 0, 0, 0, + 48, 33,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0,112, 32,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,155, 2, 0, 0,117, 0, 0, 0, 51, 2, 0, 0, 2, 2,156, 2,191, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 14, 15, 3, 1, 0, 0, 0,112,163,142, 22, 1, 0, 0, 0, 48,184,142, 22, 1, 0, 0, 0,240,157,142, 22, 1, 0, 0, 0, + 16,162,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,174,250, 24, 1, 0, 0, 0, + 80,135,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,157,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,159,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0,117, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 16, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,159,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,160,142, 22, 1, 0, 0, 0,240,157,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0,128,201,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0,165, 1,200, 0,147, 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,216, 0, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0,165, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 17, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,160,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16,162,142, 22, 1, 0, 0, 0, 80,159,142, 22, 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,155, 2, 0, 0,155, 2, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 16, 18, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,162,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,160,142, 22, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 1, 0, 0, + 18, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,194, 1, 0, 0, 18, 0, 0, 0,164, 1, 0, 0, +111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0,195, 1,165, 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,217, 0, 0, 0,155, 2, 0, 0,143, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195, 1,165, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 15, 15, 3, 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, 68, 65, 84, 65,248, 0, 0, 0,112,163,142, 22, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, + 32,169,142, 22, 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, + 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,160,164,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +160,164,142, 22, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48,186,129, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,165,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,166,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,166,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192,167,142, 22, 1, 0, 0, 0, 0,165,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, + 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, + 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, + 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,167,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,166,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, + 0, 0, 0, 0,164, 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,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0, 32,169,142, 22, 1, 0, 0, 0, +167, 0, 0, 0, 1, 0, 0, 0, 16,180,142, 22, 1, 0, 0, 0,112,163,142, 22, 1, 0, 0, 0, 0,165,142, 22, 1, 0, 0, 0, +192,167,142, 22, 1, 0, 0, 0, 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,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,170,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,171,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,171,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192,172,142, 22, 1, 0, 0, 0, 0,170,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,172,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 32,174,142, 22, 1, 0, 0, 0, 96,171,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,174,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,175,142, 22, 1, 0, 0, 0,192,172,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,175,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,174,142, 22, 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,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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,224,176,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224,176,142, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, + 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, + 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195, +205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, + 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 16,180,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 48,184,142, 22, 1, 0, 0, 0, + 32,169,142, 22, 1, 0, 0, 0, 0,170,142, 22, 1, 0, 0, 0,128,175,142, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +112,181,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,182,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +208,182,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,181,142, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, + 48,184,142, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,180,142, 22, 1, 0, 0, 0, +112,181,142, 22, 1, 0, 0, 0,208,182,142, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 48,185,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,176,218,142, 22, 1, 0, 0, 0, 16,157,142, 22, 1, 0, 0, 0, + 48, 33,142, 22, 1, 0, 0, 0,112, 29,142, 22, 1, 0, 0, 0,208, 32,142, 22, 1, 0, 0, 0,144, 33,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 53, 2, 0, 0, 21, 4, 0, 0, 12, 12,156, 2,225, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 50, 15, 3, 1, 0, 0, 0, 48,190,142, 22, 1, 0, 0, 0,176,217,142, 22, 1, 0, 0, 0, + 16,186,142, 22, 1, 0, 0, 0,208,188,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,135,251, 24, 1, 0, 0, 0,144, 0,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,186,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,187,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,156, 2, 26, 0,156, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,155, 2, 0, 0, 53, 2, 0, 0, 78, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 51, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,187,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,208,188,142, 22, 1, 0, 0, 0, 16,186,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, + 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0,192,244,195, 0, 0, 82,194, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,199, 1,200, 0,181, 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,199, 0, 0, 0, 79, 2, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,199, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 52, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,188,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,187,142, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, + 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,192,244,195, 0, 0, 82,194,195, 1, 0, 0,212, 1, 0, 0, + 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 1, 0, 0, + 18, 0, 0, 0,198, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, + 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,212, 1,199, 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,200, 0, 0, 0,155, 2, 0, 0, 79, 2, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 1,199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 51, 15, 3, 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, 68, 65, 84, 65, 8, 1, 0, 0, 48,190,142, 22, 1, 0, 0, 0, + 21, 1, 0, 0, 1, 0, 0, 0,240,196,142, 22, 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, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 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, + 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,191,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,208,192,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 49, 2, 0, 0, 74, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,192,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 48,194,142, 22, 1, 0, 0, 0,112,191,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, + 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,200, 1,200, 0,182, 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,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,200, 1, 0, 0, 2, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,194,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144,195,142, 22, 1, 0, 0, 0,208,192,142, 22, 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,159, 3, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,195,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,194,142, 22, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, + 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, + 18, 0, 0, 0,199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,199, 2,200, 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,217, 0, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 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, 68, 65, 84, 65,248, 0, 0, 0,240,196,142, 22, 1, 0, 0, 0, +161, 0, 0, 0, 1, 0, 0, 0,160,202,142, 22, 1, 0, 0, 0, 48,190,142, 22, 1, 0, 0, 0,112,191,142, 22, 1, 0, 0, 0, +144,195,142, 22, 1, 0, 0, 0, 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, 32,198,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 32,198,142, 22, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48,186,129, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +128,198,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,199,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +224,199,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,201,142, 22, 1, 0, 0, 0,128,198,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, +172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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, +111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 64,201,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,199,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 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,159, 3, 0, 0, +111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0, +160,202,142, 22, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0,144,213,142, 22, 1, 0, 0, 0,240,196,142, 22, 1, 0, 0, 0, +128,198,142, 22, 1, 0, 0, 0, 64,201,142, 22, 1, 0, 0, 0, 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,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +128,203,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,204,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +224,204,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,206,142, 22, 1, 0, 0, 0,128,203,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, +111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, + 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 64,206,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,207,142, 22, 1, 0, 0, 0,224,204,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, +111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +160,207,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,209,142, 22, 1, 0, 0, 0, 64,206,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,167, 2, 0, 0,167, 2, 0, 0, +111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0,209,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,207,142, 22, 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,167, 2, 0, 0, +111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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, 96,210,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 96,210,142, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, +253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, +195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, +253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144,213,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +176,217,142, 22, 1, 0, 0, 0,160,202,142, 22, 1, 0, 0, 0,128,203,142, 22, 1, 0, 0, 0, 0,209,142, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,240,214,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,216,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 80,216,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,214,142, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0,176,217,142, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,213,142, 22, 1, 0, 0, 0,240,214,142, 22, 1, 0, 0, 0, 80,216,142, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,176,218,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,185,142, 22, 1, 0, 0, 0,240, 33,142, 22, 1, 0, 0, 0,144, 30,142, 22, 1, 0, 0, 0,208, 29,142, 22, 1, 0, 0, 0, + 80, 34,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, 53, 3, 0, 0, 21, 4, 0, 0, + 1, 1, 80, 1,225, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0,128,225,142, 22, 1, 0, 0, 0, + 32,235,142, 22, 1, 0, 0, 0,144,219,142, 22, 1, 0, 0, 0,240,220,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 40, 3, 1, 0, 0, 0,176,238, 36, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +144,219,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,220,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,128, 7, 0, 0, + 53, 3, 0, 0, 53, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +240,220,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,219,142, 22, 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, 49, 6, 0, 0,128, 7, 0, 0, + 53, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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, 80,222,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 80,222,142, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 24,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 12, 84, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, + 88,126,162,190,229,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0, +110,101,239, 64,151, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 3,201,194, 63,111,152,134,191,244,250, 39,191, 8,165, 39,191, +143,164,206, 63, 72,132,132, 63,180,164, 28, 63,149, 84, 28, 63,180,153,196,188, 23,219, 61, 64, 10,108,228,190, 52,247,227,190, + 82, 21, 64,191, 30,193,159,191,216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 23,234,167, 62,192,206,159,187, 0, 0,168,180, +110, 44,196,189,214, 36,193, 61,191, 91,138, 62, 0, 0, 28, 51,211,120, 21,194,145, 5, 2, 66, 7,136,213,193,193,214,159,192, +219, 38, 19, 66,197,173,255,193,155,101,210, 65,173, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63, 3,201,194, 63,111,152,134,191,244,250, 39,191, 8,165, 39,191, +143,164,206, 63, 72,132,132, 63,180,164, 28, 63,149, 84, 28, 63,180,153,196,188, 23,219, 61, 64, 10,108,228,190, 52,247,227,190, + 82, 21, 64,191, 30,193,159,191,216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,210, 47, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 7, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,128,225,142, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +160,229,142, 22, 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, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,224,226,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,228,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 1, + 26, 0,132, 1, 26, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,228,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,226,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67, + 0, 0, 62,195, 0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,132, 1, +208, 0,115, 1,190, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 1,208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,160,229,142, 22, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 32,235,142, 22, 1, 0, 0, 0, +128,225,142, 22, 1, 0, 0, 0,224,226,142, 22, 1, 0, 0, 0, 64,228,142, 22, 1, 0, 0, 0, 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,231,142, 22, 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, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0, 0,231,142, 22, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 80,231,142, 22, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 80,231,142, 22, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,112,253, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,112,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,238, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 96,237, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,232,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192,233,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,233,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,232,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, + 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, + 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 32,235,142, 22, 1, 0, 0, 0, +162, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,229,142, 22, 1, 0, 0, 0, 96,232,142, 22, 1, 0, 0, 0, +192,233,142, 22, 1, 0, 0, 0, 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, 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, 83, 78, 0, 0,208, 0, 0, 0,224,236,142, 22, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, + 64,154,143, 22, 1, 0, 0, 0,224, 26,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,237,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 48,243,142, 22, 1, 0, 0, 0, + 16,251,142, 22, 1, 0, 0, 0,112,251,142, 22, 1, 0, 0, 0, 64,123,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,237,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 80,238,142, 22, 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, 68, 65, 84, 65, 32, 0, 0, 0, 80,238,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +176,238,142, 22, 1, 0, 0, 0,240,237,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,176,238,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,239,142, 22, 1, 0, 0, 0, + 80,238,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 16,239,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0,176,238,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0, 16,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 48,240,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, +208,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +144,240,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +176,241,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0, + 80,241,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 16,242,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,243,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,243,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,238,142, 22, 1, 0, 0, 0,176,238,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,243,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,243,142, 22, 1, 0, 0, 0, + 48,243,142, 22, 1, 0, 0, 0, 80,238,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,243,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,244,142, 22, 1, 0, 0, 0, +144,243,142, 22, 1, 0, 0, 0,176,238,142, 22, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,244,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,244,142, 22, 1, 0, 0, 0, +240,243,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,244,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,245,142, 22, 1, 0, 0, 0, + 80,244,142, 22, 1, 0, 0, 0, 16,239,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,245,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,245,142, 22, 1, 0, 0, 0, +176,244,142, 22, 1, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,245,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,245,142, 22, 1, 0, 0, 0, + 16,245,142, 22, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,245,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,246,142, 22, 1, 0, 0, 0, +112,245,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,246,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,246,142, 22, 1, 0, 0, 0, +208,245,142, 22, 1, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,246,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,246,142, 22, 1, 0, 0, 0, + 48,246,142, 22, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,246,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,247,142, 22, 1, 0, 0, 0, +144,246,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,247,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,247,142, 22, 1, 0, 0, 0, +240,246,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,247,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,248,142, 22, 1, 0, 0, 0, + 80,247,142, 22, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,248,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,248,142, 22, 1, 0, 0, 0, +176,247,142, 22, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,248,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,248,142, 22, 1, 0, 0, 0, + 16,248,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,248,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,249,142, 22, 1, 0, 0, 0, +112,248,142, 22, 1, 0, 0, 0,240,237,142, 22, 1, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,249,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,249,142, 22, 1, 0, 0, 0, +208,248,142, 22, 1, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,249,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,249,142, 22, 1, 0, 0, 0, + 48,249,142, 22, 1, 0, 0, 0, 16,239,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,249,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,250,142, 22, 1, 0, 0, 0, +144,249,142, 22, 1, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,250,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,250,142, 22, 1, 0, 0, 0, +240,249,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,250,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,251,142, 22, 1, 0, 0, 0, + 80,250,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,251,142, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,250,142, 22, 1, 0, 0, 0,240,237,142, 22, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,112,251,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 16,255,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0, 80,238,142, 22, 1, 0, 0, 0,176,238,142, 22, 1, 0, 0, 0, +208,239,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, + 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0,192,153,143, 22, 1, 0, 0, 0, +192,153,143, 22, 1, 0, 0, 0, 80,252,142, 22, 1, 0, 0, 0,176,253,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 63, 17, 26, 1, 0, 0, 0, 48, 19,142, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80,252,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,253,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,253,142, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,252,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 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, + 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, + 16,255,142, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 11,143, 22, 1, 0, 0, 0,112,251,142, 22, 1, 0, 0, 0, +208,242,142, 22, 1, 0, 0, 0, 48,240,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, 16,239,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 15, 15,100, 1, 88, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 15, 3, 1, 0, 0, 0,176, 2,143, 22, 1, 0, 0, 0,160, 9,143, 22, 1, 0, 0, 0, +240,255,142, 22, 1, 0, 0, 0, 80, 1,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,229,146, 22, 1, 0, 0, 0, 96, 86,154, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,255,142, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80, 1,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 26, 0,100, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 4, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 1,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255,142, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, + 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,100, 1, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 3, 15, 3, 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, 68, 65, 84, 65,200, 0, 0, 0,176, 2,143, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0,160, 9,143, 22, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 3,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16, 5,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 5,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 3,143, 22, 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, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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,112, 6,143, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112, 6,143, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,160, 9,143, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 2,143, 22, 1, 0, 0, 0,176, 3,143, 22, 1, 0, 0, 0, 16, 5,143, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 0, 11,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 62,143, 22, 1, 0, 0, 0, 16,255,142, 22, 1, 0, 0, 0, + 48,240,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0,208,239,142, 22, 1, 0, 0, 0,144,240,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 89, 0, 0, 0, 21, 4, 0, 0, 4, 4,100, 1,189, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0, 0, 49,143, 22, 1, 0, 0, 0,128, 61,143, 22, 1, 0, 0, 0, +224, 11,143, 22, 1, 0, 0, 0, 64, 13,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 81,154, 22, 1, 0, 0, 0, 48, 39,141, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 11,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 64, 13,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,178, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,100, 1, 31, 0,100, 1, 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, 29, 6, 0, 0,128, 7, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 13,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 11,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, 67, + 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,169, 67,255,255, 98,196, 0, 0, 0, 0, 83, 1, 0, 0,100, 1, 0, 0, + 18, 0, 0, 0,157, 3, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, + 18, 0, 0, 0,157, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,100, 1,158, 3, 83, 1,140, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,118, 16, 26, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 29, 6, 0, 0,128, 7, 0, 0, 89, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 1,158, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 14,143, 22, 1, 0, 0, 0,112, 47,143, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 14,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 48, 16,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 82, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48, 16,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 17,143, 22, 1, 0, 0, 0, +160, 14,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 17,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 80, 19,143, 22, 1, 0, 0, 0, 48, 16,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 80, 19,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 20,143, 22, 1, 0, 0, 0, +192, 17,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 76, 1,178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224, 20,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,112, 22,143, 22, 1, 0, 0, 0, 80, 19,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,112, 22,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 24,143, 22, 1, 0, 0, 0, +224, 20,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 76, 1,102, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 24,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,144, 25,143, 22, 1, 0, 0, 0,112, 22,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,144, 25,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 27,143, 22, 1, 0, 0, 0, + 0, 24,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 76, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 27,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,176, 28,143, 22, 1, 0, 0, 0,144, 25,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,176, 28,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 30,143, 22, 1, 0, 0, 0, + 32, 27,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,253, 76, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64, 30,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,208, 31,143, 22, 1, 0, 0, 0,176, 28,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,252, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,208, 31,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 33,143, 22, 1, 0, 0, 0, + 64, 30,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83, +101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,252, 76, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 96, 33,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,240, 34,143, 22, 1, 0, 0, 0,208, 31,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,252, 76, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,240, 34,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 36,143, 22, 1, 0, 0, 0, + 96, 33,143, 22, 1, 0, 0, 0, 64, 47,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 82, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128, 36,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 16, 38,143, 22, 1, 0, 0, 0,240, 34,143, 22, 1, 0, 0, 0,192, 34,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,253, 82, 1,240, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 16, 38,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 39,143, 22, 1, 0, 0, 0, +128, 36,143, 22, 1, 0, 0, 0,128,241,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181,252, 82, 1,178, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 39,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 48, 41,143, 22, 1, 0, 0, 0, 16, 38,143, 22, 1, 0, 0, 0,112,108,242, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,251, 82, 1, 58, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 48, 41,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 42,143, 22, 1, 0, 0, 0, +160, 39,143, 22, 1, 0, 0, 0,160, 93,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,251, 82, 1,102, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 42,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 80, 44,143, 22, 1, 0, 0, 0, 48, 41,143, 22, 1, 0, 0, 0,128, 98,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,252, 82, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 80, 44,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 45,143, 22, 1, 0, 0, 0, +192, 42,143, 22, 1, 0, 0, 0, 64,105,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,251, 82, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 45,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,112, 47,143, 22, 1, 0, 0, 0, 80, 44,143, 22, 1, 0, 0, 0, 32,107,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,251, 82, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,112, 47,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 45,143, 22, 1, 0, 0, 0,128,109,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,251, 82, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 0, 49,143, 22, 1, 0, 0, 0, +162, 0, 0, 0, 1, 0, 0, 0, 96, 54,143, 22, 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, 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, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 18, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 88, 1, 0, 0,176, 73, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 75, 39, 3, - 1, 0, 0, 0, 32, 72, 39, 3, 1, 0, 0, 0,112,101,121, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, -111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, - 18, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 2, 0, 1, 0, 0, 0, 0, 0, 0,139, 17, 26, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 50,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160, 51,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 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,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 75, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 76, 39, 3, 1, 0, 0, 0,176, 73, 39, 3, 1, 0, 0, 0, 48,153,121, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, -115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101, -115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 18, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 51,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 53,143, 22, 1, 0, 0, 0, 64, 50,143, 22, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 53,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 51,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,228, 1,124, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 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, 68, 65, 84, 65,240, 0, 0, 0, 96, 54,143, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +128, 61,143, 22, 1, 0, 0, 0, 0, 49,143, 22, 1, 0, 0, 0, 64, 50,143, 22, 1, 0, 0, 0, 0, 53,143, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208, 76, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 75, 39, 3, 1, 0, 0, 0,144,155,121, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 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,253, - 18, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 96, 78, 39, 3, - 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144, 85, 39, 3, 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, 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, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 55,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,240, 56,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 56,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 55,143, 22, 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, 2, 0, 1, 0, 0, 0, 0, 0,240,158,234, 24, 1, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 79, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 81, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 81, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 79, 39, 3, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 96, 82, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 82, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, - 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67, -129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 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, 68, 65, 84, 65, - 32, 1, 0, 0,144, 85, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 78, 39, 3, - 1, 0, 0, 0,160, 79, 39, 3, 1, 0, 0, 0, 0, 81, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,230,135, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240, 86, 39, 3, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 98, 39, 3, 1, 0, 0, 0, 96, 40, 39, 3, 1, 0, 0, 0,128, 25, 39, 3, - 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0,160, 29, 39, 3, 1, 0, 0, 0,192, 27, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 15, 15,124, 4,100, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,224, 7, 35, 3, 1, 0, 0, 0,144, 90, 39, 3, 1, 0, 0, 0,128, 97, 39, 3, 1, 0, 0, 0,208, 87, 39, 3, - 1, 0, 0, 0, 48, 89, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,231, 42, 25, - 1, 0, 0, 0,144, 80, 41, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 87, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 48, 89, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,128,143, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,124, 4, 26, 0,124, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 9, 35, 3, 1, 0, 0, 0,208, 61,235, 24, 1, 0, 0, 0,208, 61,235, 24, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,218,117, 22, 1, 0, 0, 0, 16,201,117, 22, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 89, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 87, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 18, 0, 0, 0, - 73, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,124, 4, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0, 26, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4, 74, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 8, 35, 3, 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, 48,203,117, 22, 1, 0, 0, 0,128,185,117, 22, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0,144, 90, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0,128, 97, 39, 3, 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, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 80, 58,143, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80, 58,143, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 91, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0,240, 92, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 92, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 91, 39, 3, 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, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 80, 94, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80, 94, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, - 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67, -129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 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, 68, 65, 84, 65, - 32, 1, 0, 0,128, 97, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 90, 39, 3, - 1, 0, 0, 0,144, 91, 39, 3, 1, 0, 0, 0,240, 92, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,230,135, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224, 98, 39, 3, - 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144,116, 39, 3, 1, 0, 0, 0,240, 86, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, - 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0, 96, 27, 39, 3, 1, 0, 0, 0,224, 28, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,125, 4, 0, 0,160, 5, 0, 0, 93, 2, 0, 0,248, 2, 0, 0, 3, 3, 36, 1,156, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 5, 35, 3, 1, 0, 0, 0,128,102, 39, 3, 1, 0, 0, 0, 48,115, 39, 3, 1, 0, 0, 0,192, 99, 39, 3, - 1, 0, 0, 0, 32,101, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,219,117, 22, - 1, 0, 0, 0,160,185, 41, 25, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 99, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 32,101, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,146, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 36, 1, 26, 0, 36, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 4, 0, 0,160, 5, 0, 0,223, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 35, 3, 1, 0, 0, 0, 0,237, 42, 25, 1, 0, 0, 0, 0,237, 42, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 10, 42, 25, 1, 0, 0, 0, 16,206,117, 22, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,101, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 99, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,137, 67, 0, 0,228,194, 0, 0, 0,192, 19, 1, 0, 0, 36, 1, 0, 0, 18, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 18, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 36, 1,130, 0, 19, 1,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 4, 0, 0,160, 5, 0, 0, 93, 2, 0, 0,222, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 1,130, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 6, 35, 3, 1, 0, 0, 0,240,146, 40, 25, 1, 0, 0, 0,240,146, 40, 25, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 22, 12, 3, 1, 0, 0, 0, 96,210,117, 22, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,102, 39, 3, 1, 0, 0, 0,166, 0, 0, 0, - 1, 0, 0, 0, 0,108, 39, 3, 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, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,128, 61,143, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 54,143, 22, 1, 0, 0, 0,144, 55,143, 22, 1, 0, 0, 0,240, 56,143, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +224, 62,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192, 97,143, 22, 1, 0, 0, 0, 0, 11,143, 22, 1, 0, 0, 0, +112,242,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0,208,242,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 1, 1, 27, 3,148, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0, 48, 83,143, 22, 1, 0, 0, 0,192, 96,143, 22, 1, 0, 0, 0, +192, 63,143, 22, 1, 0, 0, 0,160, 78,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 29,141, 22, 1, 0, 0, 0,208,228,152, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192, 63,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 32, 65,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 70, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 27, 3, 26, 0, 27, 3, 26, 0, 0, 0, 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, 3, 0, 0, 27, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 65,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128, 66,143, 22, 1, 0, 0, 0,192, 63,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, 1, 3, 0, 0, 1, 3, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,122, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16, 10, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 66,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,224, 67,143, 22, 1, 0, 0, 0, 32, 65,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 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, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,224, 11, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 67,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,160, 78,143, 22, 1, 0, 0, 0,128, 66,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0,124,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,124,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 14, 1,163, 0,252, 0, 0, 0, 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, 6, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 69,143, 22, 1, 0, 0, 0, 16, 77,143, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 69,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,208, 70,143, 22, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254,163, 0,104, 1, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,208, 70,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 72,143, 22, 1, 0, 0, 0, + 64, 69,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, +101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,255,163, 0, 58, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96, 72,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,240, 73,143, 22, 1, 0, 0, 0,208, 70,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, +105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, +105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,254,163, 0, 59, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,240, 73,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 75,143, 22, 1, 0, 0, 0, + 96, 72,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255,163, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128, 75,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 16, 77,143, 22, 1, 0, 0, 0,240, 73,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, +103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, +103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,255,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 16, 77,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 75,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, +109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,255,163, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 78,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 67,143, 22, 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, 1, 3, 0, 0, 27, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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, 80,143, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 0, 80,143, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,210, 71,114, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, + 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, 88,126,162,190,229,251,159, 62, + 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 78,255,170, 64, 0, 0,128, 63, 4, 6,158, 63, 4,201,153,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,253,104,151, 63, +180,164, 28, 63,149, 84, 28, 63, 2,127,159,188,156,236, 88, 64, 10,108,228,190, 52,247,227,190,222,212, 27,191,248,135,182,191, +216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179, 7,178,171,189, 46, 11,169, 61, +217, 47,114, 62, 0, 0, 12,179,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193, +217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, 90, 38,173,190, 0,222,192,190, +152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63, 4,201,153,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,253,104,151, 63, +180,164, 28, 63,149, 84, 28, 63, 2,127,159,188,156,236, 88, 64, 10,108,228,190, 52,247,227,190,222,212, 27,191,248,135,182,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,123, 49,183, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 48, 83,143, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 80, 87,143, 22, 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, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +144, 84,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 85,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,239, 2, 26, 0,239, 2, 26, 0, 0, 0, + 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, 3, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 85,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 84,143, 22, 1, 0, 0, 0, + 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,146,211, 11, 68,174,122,214, 66, 82, 97,202, 67, +222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, +205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,239, 2,122, 1,222, 2,104, 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, 1, 3, 0, 0,239, 5, 0, 0, + 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2,122, 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, 68, 65, 84, 65, 32, 1, 0, 0, + 80, 87,143, 22, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,208, 92,143, 22, 1, 0, 0, 0, 48, 83,143, 22, 1, 0, 0, 0, +144, 84,143, 22, 1, 0, 0, 0,240, 85,143, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,242,199, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 88,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16, 90,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, + 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 90,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112, 91,143, 22, 1, 0, 0, 0,176, 88,143, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 91,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 90,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, + 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,208, 92,143, 22, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0,192, 96,143, 22, 1, 0, 0, 0, 80, 87,143, 22, 1, 0, 0, 0,176, 88,143, 22, 1, 0, 0, 0, +112, 91,143, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 0, 94,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 95,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96, 95,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94,143, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, +192, 96,143, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 92,143, 22, 1, 0, 0, 0, + 0, 94,143, 22, 1, 0, 0, 0, 96, 95,143, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +192, 97,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,123,143, 22, 1, 0, 0, 0,224, 62,143, 22, 1, 0, 0, 0, + 80,241,142, 22, 1, 0, 0, 0,112,239,142, 22, 1, 0, 0, 0,240,240,142, 22, 1, 0, 0, 0,176,241,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 6, 0, 0,149, 1, 0, 0, 21, 4, 0, 0, 16, 16, 28, 6,129, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 15, 3, 1, 0, 0, 0, 96,101,143, 22, 1, 0, 0, 0, 64,122,143, 22, 1, 0, 0, 0, +160, 98,143, 22, 1, 0, 0, 0, 0,100,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,179,137, 22, 1, 0, 0, 0, 96,214, 18, 26, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160, 98,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,100,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 28, 6, 26, 0, 28, 6, 26, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 30, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,100,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 98,143, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 80, 64,199,195, 40,160, 99, 68,192, 3, 91, 64,248, 73,254, 67, 11, 6, 0, 0, 28, 6, 0, 0, + 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 10, 6, 0, 0, + 18, 0, 0, 0,102, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 28, 6,103, 2, 11, 6, 85, 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, 27, 6, 0, 0,175, 1, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 6,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 29, 15, 3, 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,101,143, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0,224,106,143, 22, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 66, 86, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,102,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 32,104,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,104,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128,105,143, 22, 1, 0, 0, 0,192,102,143, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,105,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,104,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,224,106,143, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, + 32,118,143, 22, 1, 0, 0, 0, 96,101,143, 22, 1, 0, 0, 0,192,102,143, 22, 1, 0, 0, 0,128,105,143, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,108,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,109,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,109,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,208,110,143, 22, 1, 0, 0, 0, 16,108,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,110,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 48,112,143, 22, 1, 0, 0, 0,112,109,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,112,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144,113,143, 22, 1, 0, 0, 0,208,110,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,113,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,112,143, 22, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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,240,114,143, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,240,114,143, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61, +170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195, +205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 32,118,143, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 64,122,143, 22, 1, 0, 0, 0, +224,106,143, 22, 1, 0, 0, 0, 16,108,143, 22, 1, 0, 0, 0,144,113,143, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +128,119,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,120,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +224,120,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,119,143, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, + 64,122,143, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,118,143, 22, 1, 0, 0, 0, +128,119,143, 22, 1, 0, 0, 0,224,120,143, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 64,123,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 97,143, 22, 1, 0, 0, 0, +240,237,142, 22, 1, 0, 0, 0, 80,241,142, 22, 1, 0, 0, 0, 16,242,142, 22, 1, 0, 0, 0,112,242,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 6, 6, 0, 3,148, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 22, 15, 3, 1, 0, 0, 0, 64,128,143, 22, 1, 0, 0, 0,192,152,143, 22, 1, 0, 0, 0, + 32,124,143, 22, 1, 0, 0, 0,224,126,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,244, 36, 3, 1, 0, 0, 0,144,205,253, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,124,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,125,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 28, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,125,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,224,126,143, 22, 1, 0, 0, 0, 32,124,143, 22, 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, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,112, 24, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,126,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,125,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0,122, 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,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 23, 15, 3, 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, 68, 65, 84, 65,168, 0, 0, 0, 64,128,143, 22, 1, 0, 0, 0, +167, 0, 0, 0, 1, 0, 0, 0,224,131,143, 22, 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, 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,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 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,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,129,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,130,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,130,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,129,143, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, + 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, + 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 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,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 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, 68, 65, 84, 65, 32, 1, 0, 0,224,131,143, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 96,137,143, 22, 1, 0, 0, 0, 64,128,143, 22, 1, 0, 0, 0, 32,129,143, 22, 1, 0, 0, 0, +128,130,143, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,133,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160,134,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,134,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0,136,143, 22, 1, 0, 0, 0, 64,133,143, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,136,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,134,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 96,137,143, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +160,148,143, 22, 1, 0, 0, 0,224,131,143, 22, 1, 0, 0, 0, 64,133,143, 22, 1, 0, 0, 0, 0,136,143, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,138,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,240,139,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,139,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,141,143, 22, 1, 0, 0, 0,144,138,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,141,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,142,143, 22, 1, 0, 0, 0,240,139,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,142,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16,144,143, 22, 1, 0, 0, 0, 80,141,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,144,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,142,143, 22, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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,112,145,143, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,112,145,143, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61, +170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195, +205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,160,148,143, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,192,152,143, 22, 1, 0, 0, 0, + 96,137,143, 22, 1, 0, 0, 0,144,138,143, 22, 1, 0, 0, 0, 16,144,143, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 0,150,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,151,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96,151,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150,143, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, +192,152,143, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,148,143, 22, 1, 0, 0, 0, + 0,150,143, 22, 1, 0, 0, 0, 96,151,143, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, + 64,154,143, 22, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 48, 86,144, 22, 1, 0, 0, 0,224,236,142, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0, +112,159,143, 22, 1, 0, 0, 0,208,159,143, 22, 1, 0, 0, 0, 48,166,143, 22, 1, 0, 0, 0,144,166,143, 22, 1, 0, 0, 0, +144, 55,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,155,143, 22, 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, 68, 65, 84, 65, 32, 0, 0, 0, +176,155,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,112,156,143, 22, 1, 0, 0, 0,176,155,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,156,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +208,156,143, 22, 1, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0, +112,156,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48,157,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 80,158,143, 22, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0, +240,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 52, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +176,158,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 52, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 88, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,159,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,160,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,155,143, 22, 1, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,160,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,160,143, 22, 1, 0, 0, 0, +208,159,143, 22, 1, 0, 0, 0,176,155,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,160,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,160,143, 22, 1, 0, 0, 0, + 48,160,143, 22, 1, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,160,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,161,143, 22, 1, 0, 0, 0, +144,160,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,161,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,161,143, 22, 1, 0, 0, 0, +240,160,143, 22, 1, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,161,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,162,143, 22, 1, 0, 0, 0, + 80,161,143, 22, 1, 0, 0, 0,112,156,143, 22, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,162,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,162,143, 22, 1, 0, 0, 0, +176,161,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,162,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,162,143, 22, 1, 0, 0, 0, + 16,162,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,162,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,163,143, 22, 1, 0, 0, 0, +112,162,143, 22, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,163,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144,163,143, 22, 1, 0, 0, 0, +208,162,143, 22, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,144,163,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240,163,143, 22, 1, 0, 0, 0, + 48,163,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,240,163,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80,164,143, 22, 1, 0, 0, 0, +144,163,143, 22, 1, 0, 0, 0,112,156,143, 22, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 80,164,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176,164,143, 22, 1, 0, 0, 0, +240,163,143, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,176,164,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16,165,143, 22, 1, 0, 0, 0, + 80,164,143, 22, 1, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 16,165,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112,165,143, 22, 1, 0, 0, 0, +176,164,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,112,165,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208,165,143, 22, 1, 0, 0, 0, + 16,165,143, 22, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,208,165,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48,166,143, 22, 1, 0, 0, 0, +112,165,143, 22, 1, 0, 0, 0,144,157,143, 22, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 48,166,143, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,165,143, 22, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,144,166,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 48,170,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0,176,155,143, 22, 1, 0, 0, 0, 16,156,143, 22, 1, 0, 0, 0, + 48,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, + 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0,176, 85,144, 22, 1, 0, 0, 0, +176, 85,144, 22, 1, 0, 0, 0,112,167,143, 22, 1, 0, 0, 0,208,168,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 38, 55, 25, 1, 0, 0, 0,192,145,136, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +112,167,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,168,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 1, 0, 0, 0, 96,151, 21, 26, 1, 0, 0, 0, + 96,151, 21, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,171, 20, 26, 1, 0, 0, 0, + 48, 14, 21, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208,168,143, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,167,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 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, + 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, + 48,170,143, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240, 25,144, 22, 1, 0, 0, 0,144,166,143, 22, 1, 0, 0, 0, +144,157,143, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0,176,158,143, 22, 1, 0, 0, 0,112,156,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 51, 3, 0, 0, 4, 4,120, 1, 52, 3, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0, 96, 17,144, 22, 1, 0, 0, 0,144, 24,144, 22, 1, 0, 0, 0, + 16,171,143, 22, 1, 0, 0, 0,112,172,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,187,155, 22, 1, 0, 0, 0, 48,198,155, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,171,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,172,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,188, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,120, 1, 31, 0,120, 1, 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, 9, 6, 0, 0,128, 7, 0, 0, 21, 3, 0, 0, 51, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 1, 0, 0, 0, 0,117, 22, 26, 1, 0, 0, 0, 0,117, 22, 26, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 23, 22, 26, 1, 0, 0, 0,192, 32, 16, 26, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,172,143, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,171,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,179, 67, + 0,128, 64,196, 0, 0, 0, 0, 0, 0, 0, 0,252,127,179, 67,252,191, 64,196, 0, 0, 0, 0,103, 1, 0, 0,120, 1, 0, 0, + 18, 0, 0, 0, 20, 3, 0, 0, 0, 0, 0, 0,102, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,102, 1, 0, 0, + 18, 0, 0, 0, 20, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,120, 1, 21, 3,103, 1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,119, 13, 3, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 9, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 20, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 1, 21, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0,160, 63, 23, 26, 1, 0, 0, 0,144, 62,252, 24, 1, 0, 0, 0, +208,173,143, 22, 1, 0, 0, 0,208, 15,144, 22, 1, 0, 0, 0,176,205, 20, 26, 1, 0, 0, 0,192, 60, 21, 26, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,173,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 96,175,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,102, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 96,175,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,176,143, 22, 1, 0, 0, 0, +208,173,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,176,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,178,143, 22, 1, 0, 0, 0, 96,175,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,128,178,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,180,143, 22, 1, 0, 0, 0, +240,176,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 76, 1,178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,180,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,160,181,143, 22, 1, 0, 0, 0,128,178,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,160,181,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,183,143, 22, 1, 0, 0, 0, + 16,180,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 76, 1,102, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,183,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,184,143, 22, 1, 0, 0, 0,160,181,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 91, 42, 25, 1, 0, 0, 0,112, 91, 42, 25, - 1, 0, 0, 0,224,103, 39, 3, 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, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,224,103, 39, 3, 1, 0, 0, 0,218, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,104, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 48,104, 39, 3, - 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,216,135, 3, 1, 0, 0, 0, 19, 0, 0, 0, - 1, 0, 1, 0, 48,216,135, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,216,135, 3, 1, 0, 0, 0, 21, 0, 1, 0, - 1, 0, 1, 0, 48,216,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,176,155, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48,236,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,166, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0,208,159, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,224,164, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48,242,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,151, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 48,230,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,144,150, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0, 64,105, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,106, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0, -247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, - 0, 0, 1, 0, 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, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 1, 0, 0,160,106, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,105, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, - 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0, -247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, - 0, 1, 0, 0, 0,108, 39, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 48,115, 39, 3, 1, 0, 0, 0,128,102, 39, 3, - 1, 0, 0, 0, 64,105, 39, 3, 1, 0, 0, 0,160,106, 39, 3, 1, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192,184,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,186,143, 22, 1, 0, 0, 0, + 48,183,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 76, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,186,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,187,143, 22, 1, 0, 0, 0,192,184,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,224,187,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,189,143, 22, 1, 0, 0, 0, + 80,186,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,253, 76, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,189,143, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0,191,143, 22, 1, 0, 0, 0,224,187,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,255,114, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 0,191,143, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 0,144, 22, 1, 0, 0, 0, +112,189,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83, +101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254,114, 1, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 0,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192, 1,144, 22, 1, 0, 0, 0, 0,191,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254,114, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192, 1,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 3,144, 22, 1, 0, 0, 0, + 48, 0,144, 22, 1, 0, 0, 0, 64, 47,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,102, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 3,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224, 4,144, 22, 1, 0, 0, 0,192, 1,144, 22, 1, 0, 0, 0,192, 34,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,102, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,224, 4,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 6,144, 22, 1, 0, 0, 0, + 80, 3,144, 22, 1, 0, 0, 0,128,241,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,102, 1,178, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 6,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 8,144, 22, 1, 0, 0, 0,224, 4,144, 22, 1, 0, 0, 0,112,108,242, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254,102, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 0, 8,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 9,144, 22, 1, 0, 0, 0, +112, 6,144, 22, 1, 0, 0, 0,160, 93,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253,102, 1,102, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 9,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32, 11,144, 22, 1, 0, 0, 0, 0, 8,144, 22, 1, 0, 0, 0,128, 98,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253,102, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 32, 11,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 12,144, 22, 1, 0, 0, 0, +144, 9,144, 22, 1, 0, 0, 0, 64,105,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,102, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 12,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64, 14,144, 22, 1, 0, 0, 0, 32, 11,144, 22, 1, 0, 0, 0, 32,107,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253,102, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 64, 14,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 15,144, 22, 1, 0, 0, 0, +176, 12,144, 22, 1, 0, 0, 0,128,109,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,253,102, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 15,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 14,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,114, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 0, 1, 0, 0, 96, 17,144, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144, 24,144, 22, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0, +176, 45, 37, 3, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +160, 18,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 20,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0, 20,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 18,144, 22, 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, 89, 6, 0, 0,108, 7, 0, 0, + 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 96, 21,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 96, 21,144, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,144, 24,144, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 17,144, 22, 1, 0, 0, 0,160, 18,144, 22, 1, 0, 0, 0, 0, 20,144, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,240, 25,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224, 37,144, 22, 1, 0, 0, 0, + 48,170,143, 22, 1, 0, 0, 0, 80,155,143, 22, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0, +144,157,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, + 15, 15, 8, 6, 88, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 15, 3, 1, 0, 0, 0,144, 29,144, 22, 1, 0, 0, 0, +128, 36,144, 22, 1, 0, 0, 0,208, 26,144, 22, 1, 0, 0, 0, 48, 28,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,179,155, 22, 1, 0, 0, 0, 96,240,149, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208, 26,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 28,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 8, 6, 26, 0, 8, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 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, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 26, 0, 5, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 4, 15, 3, 1, 0, 0, 0,208,213,253, 24, 1, 0, 0, 0, +208,213,253, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 11, 21, 26, 1, 0, 0, 0, + 16,255, 19, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 48, 28,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 26,144, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 7, 6, 0, 0, 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 8, 6, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 6, 0, 0, + 26, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 62, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 3, 15, 3, 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,208,255, 19, 26, 1, 0, 0, 0, + 32,119,136, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,200, 0, 0, 0, +144, 29,144, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,128, 36,144, 22, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +144, 30,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 31,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 31,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 30,144, 22, 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, 87, 6, 0, 0, + 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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, 80, 33,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 80, 33,144, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,128, 36,144, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 29,144, 22, 1, 0, 0, 0,144, 30,144, 22, 1, 0, 0, 0,240, 31,144, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,224, 37,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,144, 55,144, 22, 1, 0, 0, 0, +240, 25,144, 22, 1, 0, 0, 0, 80,158,143, 22, 1, 0, 0, 0,240,157,143, 22, 1, 0, 0, 0, 48,157,143, 22, 1, 0, 0, 0, +176,158,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 6, 0, 0,128, 7, 0, 0, 53, 3, 0, 0, 21, 4, 0, 0, + 3, 3,120, 1,225, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 15, 3, 1, 0, 0, 0,128, 41,144, 22, 1, 0, 0, 0, + 48, 54,144, 22, 1, 0, 0, 0,192, 38,144, 22, 1, 0, 0, 0, 32, 40,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,166,155, 22, 1, 0, 0, 0, 80,177,155, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +192, 38,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 40,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,188, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,119, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,120, 1, 26, 0,120, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 6, 0, 0,128, 7, 0, 0, +252, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 1, 26, 0, 7, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 15, 3, 1, 0, 0, 0, 0,172,251, 24, 1, 0, 0, 0, + 0,172,251, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,177, 20, 26, 1, 0, 0, 0, + 64,178, 20, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 32, 40,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 38,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,179, 67, 0, 0, 53,195, 0, 0, 0, 0, +103, 1, 0, 0,120, 1, 0, 0, 18, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0,102, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,102, 1, 0, 0, 18, 0, 0, 0,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,120, 1,199, 0,103, 1,181, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 6, 0, 0,128, 7, 0, 0, + 53, 3, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 1,199, 0, 8, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 15, 3, 1, 0, 0, 0,240,255,253, 24, 1, 0, 0, 0, +240,255,253, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 71, 20, 26, 1, 0, 0, 0, + 32, 78, 22, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +128, 41,144, 22, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 47,144, 22, 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, 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, + 32, 64,255, 24, 1, 0, 0, 0, 32, 64,255, 24, 1, 0, 0, 0,224, 42,144, 22, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, +224, 42,144, 22, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48, 43,144, 22, 1, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0, 48, 43,144, 22, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +112,253, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +112,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,238, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 96,237, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 44,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160, 45,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 45,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, + 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, + 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 0, 47,144, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, + 48, 54,144, 22, 1, 0, 0, 0,128, 41,144, 22, 1, 0, 0, 0, 64, 44,144, 22, 1, 0, 0, 0,160, 45,144, 22, 1, 0, 0, 0, + 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, + 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64, 48,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 49,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, + 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,160, 49,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 48,144, 22, 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, + 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 1, 55, 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, 51,144, 22, 1, 0, 0, 0, + 68, 65, 84, 65,248, 2, 0, 0, 0, 51,144, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48, 54,144, 22, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,144, 22, 1, 0, 0, 0, 64, 48,144, 22, 1, 0, 0, 0, +160, 49,144, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 48,194,129, 3, 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, + 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,144, 55,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 37,144, 22, 1, 0, 0, 0, 16,159,143, 22, 1, 0, 0, 0,208,156,143, 22, 1, 0, 0, 0, +240,157,143, 22, 1, 0, 0, 0,112,159,143, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 0, 0, + 89, 0, 0, 0, 21, 4, 0, 0, 1, 1, 8, 6,189, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0, +144, 80,144, 22, 1, 0, 0, 0,176, 84,144, 22, 1, 0, 0, 0,112, 56,144, 22, 1, 0, 0, 0, 0, 76,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,134,155, 22, 1, 0, 0, 0,112,150,155, 22, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,112, 56,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 57,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 8, 6, + 26, 0, 8, 6, 26, 0, 0, 0, 0, 0, 0, 0, 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, 6, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 1, 0, 0, 0, +176, 38,252, 24, 1, 0, 0, 0,176, 38,252, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,106, 20, 26, 1, 0, 0, 0, 16,181, 63, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,208, 57,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 62,144, 22, 1, 0, 0, 0, +112, 56,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 42, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, + 43, 3,143, 0, 25, 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,159, 0, 0, 0,235, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0, 43, 3, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 10, 15, 3, 1, 0, 0, 0, +192, 62,112, 29, 1, 0, 0, 0, 96,220,112, 29, 1, 0, 0, 0, 48, 59,144, 22, 1, 0, 0, 0,192, 60,144, 22, 1, 0, 0, 0, +208,181, 63, 25, 1, 0, 0, 0, 80, 64, 17, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 48, 59,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 60,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 10, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101, +108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 60,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 59,144, 22, 1, 0, 0, 0, 16,106,155, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, +100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111, +100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,253,143, 0,205, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 80, 62,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64, 65,144, 22, 1, 0, 0, 0, +208, 57,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,159, 0, 0, 0,115, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 0,120, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 11, 15, 3, 1, 0, 0, 0, + 0, 62,255, 24, 1, 0, 0, 0, 0, 62,255, 24, 1, 0, 0, 0,176, 63,144, 22, 1, 0, 0, 0,176, 63,144, 22, 1, 0, 0, 0, + 16, 65, 17, 26, 1, 0, 0, 0, 96,191, 20, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,176, 63,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 12, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, + 0,110, 0,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,255,144, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 65,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 76,144, 22, 1, 0, 0, 0, 80, 62,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,192, 77,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 34,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,156, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,156, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,157, 2,163, 0,139, 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, 7, 6, 0, 0, 7, 6, 0, 0,115, 0, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 66,144, 22, 1, 0, 0, 0,112, 74,144, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 66,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 48, 68,144, 22, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254,163, 0,104, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 48, 68,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 69,144, 22, 1, 0, 0, 0, +160, 66,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, +101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171,252,163, 0, 58, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 69,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 80, 71,144, 22, 1, 0, 0, 0, 48, 68,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, +105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116, +105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,253,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 80, 71,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 72,144, 22, 1, 0, 0, 0, +192, 69,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,252,163, 0, 3, 1, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 72,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,112, 74,144, 22, 1, 0, 0, 0, 80, 71,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, +103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, +103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,112, 74,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 72,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, + 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, +109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,252,163, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 76,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,144, 22, 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,160, 0, 0, 0, 7, 6, 0, 0,115, 0, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 5,163, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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,128,193, 20, 26, 1, 0, 0, 0,240,161, 19, 26, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 77,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96, 77,144, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,203, 30,208, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,178,157,229, 62,183, 56, 39,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63,110, 52,161, 62, + 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,231, 70,186, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 62,239,191, 62,175,116, 85, 63, 48,205, 70,188, 0, 0,115,181,241, 1,125,190,149,231,243, 61, + 90,236, 12, 63, 0, 0,243, 52,215,104, 25,196,133,132,135, 67, 36, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195, +204,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,178,157,229, 62,183, 56, 39,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63,110, 52,161, 62, + 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,231, 70,186, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,219, 44,173, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,144, 80,144, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,176, 84,144, 22, 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, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +240, 81,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80, 83,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 80, 83,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 81,144, 22, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, +176, 84,144, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 80,144, 22, 1, 0, 0, 0, +240, 81,144, 22, 1, 0, 0, 0, 80, 83,144, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, + 48, 86,144, 22, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,208, 51,145, 22, 1, 0, 0, 0, 64,154,143, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 87,144, 22, 1, 0, 0, 0, + 32, 92,144, 22, 1, 0, 0, 0,128, 92,144, 22, 1, 0, 0, 0, 0,100,144, 22, 1, 0, 0, 0, 96,100,144, 22, 1, 0, 0, 0, + 80, 20,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 64, 87,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 87,144, 22, 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, 68, 65, 84, 65, 32, 0, 0, 0, +160, 87,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 88,144, 22, 1, 0, 0, 0, 64, 87,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 88,144, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 96, 88,144, 22, 1, 0, 0, 0,160, 87,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 88,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +192, 88,144, 22, 1, 0, 0, 0, 0, 88,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 89,144, 22, 1, 0, 0, 0, + 96, 88,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 32, 89,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0, 32, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 64, 90,144, 22, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6,148, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 64, 90,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,160, 90,144, 22, 1, 0, 0, 0, +224, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +160, 90,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, 64, 90,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 96, 91,144, 22, 1, 0, 0, 0,160, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 5,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 96, 91,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +192, 91,144, 22, 1, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 5, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,192, 91,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 32, 92,144, 22, 1, 0, 0, 0, + 96, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,148, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 32, 92,144, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 91,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 92,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,224, 92,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 87,144, 22, 1, 0, 0, 0, + 0, 88,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 92,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64, 93,144, 22, 1, 0, 0, 0,128, 92,144, 22, 1, 0, 0, 0,160, 87,144, 22, 1, 0, 0, 0, +192, 88,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 93,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,160, 93,144, 22, 1, 0, 0, 0,224, 92,144, 22, 1, 0, 0, 0, 0, 88,144, 22, 1, 0, 0, 0, + 32, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 93,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0, 94,144, 22, 1, 0, 0, 0, 64, 93,144, 22, 1, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, + 32, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 94,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 96, 94,144, 22, 1, 0, 0, 0,160, 93,144, 22, 1, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, +128, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 94,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,192, 94,144, 22, 1, 0, 0, 0, 0, 94,144, 22, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0, +224, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 94,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 32, 95,144, 22, 1, 0, 0, 0, 96, 94,144, 22, 1, 0, 0, 0, 96, 88,144, 22, 1, 0, 0, 0, + 64, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 95,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,128, 95,144, 22, 1, 0, 0, 0,192, 94,144, 22, 1, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0, + 64, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 95,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,224, 95,144, 22, 1, 0, 0, 0, 32, 95,144, 22, 1, 0, 0, 0, 64, 87,144, 22, 1, 0, 0, 0, +128, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 95,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64, 96,144, 22, 1, 0, 0, 0,128, 95,144, 22, 1, 0, 0, 0, 64, 87,144, 22, 1, 0, 0, 0, + 64, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 96,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,160, 96,144, 22, 1, 0, 0, 0,224, 95,144, 22, 1, 0, 0, 0, 32, 89,144, 22, 1, 0, 0, 0, +160, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 96,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0, 97,144, 22, 1, 0, 0, 0, 64, 96,144, 22, 1, 0, 0, 0, 96, 88,144, 22, 1, 0, 0, 0, +160, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0, 97,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 96, 97,144, 22, 1, 0, 0, 0,160, 96,144, 22, 1, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0, +160, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 96, 97,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,192, 97,144, 22, 1, 0, 0, 0, 0, 97,144, 22, 1, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, + 96, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,192, 97,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 32, 98,144, 22, 1, 0, 0, 0, 96, 97,144, 22, 1, 0, 0, 0, 32, 89,144, 22, 1, 0, 0, 0, + 96, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 32, 98,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,128, 98,144, 22, 1, 0, 0, 0,192, 97,144, 22, 1, 0, 0, 0,160, 90,144, 22, 1, 0, 0, 0, + 0, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128, 98,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,224, 98,144, 22, 1, 0, 0, 0, 32, 98,144, 22, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0, +192, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,224, 98,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 64, 99,144, 22, 1, 0, 0, 0,128, 98,144, 22, 1, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, +192, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 64, 99,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,160, 99,144, 22, 1, 0, 0, 0,224, 98,144, 22, 1, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, + 32, 92,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,160, 99,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0,100,144, 22, 1, 0, 0, 0, 64, 99,144, 22, 1, 0, 0, 0, 96, 91,144, 22, 1, 0, 0, 0, + 32, 92,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 0,100,144, 22, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 99,144, 22, 1, 0, 0, 0,192, 91,144, 22, 1, 0, 0, 0, + 32, 92,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,100,144, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0,104,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, +160, 87,144, 22, 1, 0, 0, 0, 0, 88,144, 22, 1, 0, 0, 0, 32, 89,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, +240, 35, 15, 3, 1, 0, 0, 0, 80, 51,145, 22, 1, 0, 0, 0, 80, 51,145, 22, 1, 0, 0, 0, 64,101,144, 22, 1, 0, 0, 0, +160,102,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,116, 16, 26, 1, 0, 0, 0, + 48, 91,147, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,101,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160,102,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,102,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,101,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 3, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, 0,104,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 48,176,144, 22, 1, 0, 0, 0, 96,100,144, 22, 1, 0, 0, 0, 64, 90,144, 22, 1, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0, +160, 90,144, 22, 1, 0, 0, 0, 96, 88,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 6, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0,147, 1, 0, 0, 4, 4, 96, 1,148, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0, + 80,162,144, 22, 1, 0, 0, 0,208,174,144, 22, 1, 0, 0, 0,224,104,144, 22, 1, 0, 0, 0, 64,106,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 97, 40, 3, 1, 0, 0, 0, 32, 60, 40, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,224,104,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,106,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,176, 67, + 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 96, 1, + 31, 0, 96, 1, 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, + 33, 6, 0, 0,128, 7, 0, 0,117, 1, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,106,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,104,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,255,127,167, 67, +254,127,177,195, 0, 0, 0, 0, 79, 1, 0, 0, 96, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 78, 1, 0, 0, 18, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 96, 1, +117, 1, 79, 1, 99, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,172,252, 24, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 33, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 1,117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,107,144, 22, 1, 0, 0, 0,192,160,144, 22, 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, + 68, 65, 84, 65, 88, 1, 0, 0,160,107,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,109,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255, 78, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,109,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,110,144, 22, 1, 0, 0, 0,160,107,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192,110,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,112,144, 22, 1, 0, 0, 0, + 48,109,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80,112,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,113,144, 22, 1, 0, 0, 0,192,110,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 76, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,224,113,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,115,144, 22, 1, 0, 0, 0, + 80,112,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, + 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 76, 1, 58, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,115,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0,117,144, 22, 1, 0, 0, 0,224,113,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 76, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 0,117,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,118,144, 22, 1, 0, 0, 0, +112,115,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 76, 1,105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,118,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32,120,144, 22, 1, 0, 0, 0, 0,117,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 32,120,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,121,144, 22, 1, 0, 0, 0, +144,118,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, + 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 76, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,121,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64,123,144, 22, 1, 0, 0, 0, 32,120,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 64,123,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,124,144, 22, 1, 0, 0, 0, +176,121,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,255, 51, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,124,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 96,126,144, 22, 1, 0, 0, 0, 64,123,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254, 51, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,109, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,110, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 96,126,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,127,144, 22, 1, 0, 0, 0, +208,124,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254, 51, 1, 36, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,127,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,129,144, 22, 1, 0, 0, 0, 96,126,144, 22, 1, 0, 0, 0, 64, 47,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 78, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,128,129,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,131,144, 22, 1, 0, 0, 0, +240,127,144, 22, 1, 0, 0, 0,192, 34,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,253, 78, 1,240, 1, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,110, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,109, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,131,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,160,132,144, 22, 1, 0, 0, 0,128,129,144, 22, 1, 0, 0, 0,128,241,242, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181,252, 78, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, - 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,112, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 0,112, 39, 3, - 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, - 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,160,132,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,134,144, 22, 1, 0, 0, 0, + 16,131,144, 22, 1, 0, 0, 0,112,108,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, + 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,251, 78, 1, 58, 0, + 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,134,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,135,144, 22, 1, 0, 0, 0,160,132,144, 22, 1, 0, 0, 0,160, 93,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,251, 78, 1,102, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,192,135,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,137,144, 22, 1, 0, 0, 0, + 48,134,144, 22, 1, 0, 0, 0,128, 98,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,252, 78, 1,105, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,137,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,224,138,144, 22, 1, 0, 0, 0,192,135,144, 22, 1, 0, 0, 0, 64,105,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,251, 78, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,224,138,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,140,144, 22, 1, 0, 0, 0, + 80,137,144, 22, 1, 0, 0, 0, 32,107,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, + 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,251, 78, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112,140,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0,142,144, 22, 1, 0, 0, 0,224,138,144, 22, 1, 0, 0, 0,128,109,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,188,251, 78, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 0,142,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,143,144, 22, 1, 0, 0, 0, +112,140,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 97,109,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,255, 51, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,143,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 32,145,144, 22, 1, 0, 0, 0, 0,142,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,112,108, 97,121,101,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,112,108, 97,121,101,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,110,100, 97,108,111,110,101, 32, 80,108, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,254, 51, 1,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 32,145,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,146,144, 22, 1, 0, 0, 0, +144,143,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 95,115,116,101,114,101,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 95,115,116,101,114,101,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,101,114,101,111, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,254, 51, 1, 36, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,146,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 64,148,144, 22, 1, 0, 0, 0, 32,145,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,115,104, 97,100,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,115,104, 97,100,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,254, 51, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 64,148,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,149,144, 22, 1, 0, 0, 0, +176,146,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,103, 97,109,101, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,253, 51, 1,124, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,208,149,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 96,151,144, 22, 1, 0, 0, 0, 64,148,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,115,111,117,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,103, 97,109,101, 95,115,111,117,110,100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,111,117,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98,253, 51, 1, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 96,151,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,152,144, 22, 1, 0, 0, 0, +208,149,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, + 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 51, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240,152,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,128,154,144, 22, 1, 0, 0, 0, 96,151,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255, 51, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,128,154,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,156,144, 22, 1, 0, 0, 0, +240,152,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95,112,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255, 51, 1,136, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,156,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,160,157,144, 22, 1, 0, 0, 0,128,154,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175,254, 51, 1, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,160,157,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,159,144, 22, 1, 0, 0, 0, + 16,156,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95, 97,109, 98,105,101,110,116, 95,111, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95, 97,109, 98,105,101,110,116, 95,111, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,109, 98,105,101,110,116, 32, + 79, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,253, 51, 1,199, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,159,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,192,160,144, 22, 1, 0, 0, 0,160,157,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 77,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,253, 51, 1, 85, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,192,160,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,159,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95,115,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, + 95,115,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,253, 51, 1, 60, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0, 80,162,144, 22, 1, 0, 0, 0, +162, 0, 0, 0, 1, 0, 0, 0,176,167,144, 22, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,208, 8,252, 24, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,163,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,164,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 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,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,164,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,166,144, 22, 1, 0, 0, 0,144,163,144, 22, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,166,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,164,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,228, 1,124, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 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, 68, 65, 84, 65,240, 0, 0, 0,176,167,144, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +208,174,144, 22, 1, 0, 0, 0, 80,162,144, 22, 1, 0, 0, 0,144,163,144, 22, 1, 0, 0, 0, 80,166,144, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,168,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 64,170,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,170,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,168,144, 22, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,160,171,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,160,171,144, 22, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,208,174,144, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,167,144, 22, 1, 0, 0, 0,224,168,144, 22, 1, 0, 0, 0, 64,170,144, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 48,176,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,224,212,144, 22, 1, 0, 0, 0, 0,104,144, 22, 1, 0, 0, 0, + 64, 87,144, 22, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0,224, 89,144, 22, 1, 0, 0, 0, 64, 90,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 17, 17, 32, 6,148, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 73, 15, 3, 1, 0, 0, 0,192,182,144, 22, 1, 0, 0, 0,224,211,144, 22, 1, 0, 0, 0, + 16,177,144, 22, 1, 0, 0, 0, 96,181,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,195,112, 29, 1, 0, 0, 0,192,133,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,177,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,178,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,196, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 6, 26, 0, 32, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 75, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,178,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,181,144, 22, 1, 0, 0, 0, 16,177,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0, 0,180,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,180,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,122, 1,203, 0,104, 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,219, 0, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,122, 1, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 75, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,179,144, 22, 1, 0, 0, 0,208,179,144, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,179,144, 22, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 63,151, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 96,181,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,178,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67,228, 46, 44,195,220,133,181, 68, + 10, 89,199,194, 66,214,169, 67, 51, 5, 0, 0, 68, 5, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 50, 5, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 68, 5, +122, 1, 51, 5,104, 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, +220, 0, 0, 0, 31, 6, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 5,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 74, 15, 3, 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, + 68, 65, 84, 65, 72, 0, 0, 0,192,182,144, 22, 1, 0, 0, 0,174, 0, 0, 0, 1, 0, 0, 0, 96,187,144, 22, 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, 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,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 64,183,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,184,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, + 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, + 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,160,184,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,186,144, 22, 1, 0, 0, 0, + 64,183,144, 22, 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, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0,186,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,184,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, 0, 0, 0, 64, + 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,122, 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,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3,122, 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, + 68, 65, 84, 65,168, 0, 0, 0, 96,187,144, 22, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0,191,144, 22, 1, 0, 0, 0, +192,182,144, 22, 1, 0, 0, 0, 64,183,144, 22, 1, 0, 0, 0, 0,186,144, 22, 1, 0, 0, 0, 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,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 64,188,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,189,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, + 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,160,189,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,188,144, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68, +176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3, +122, 1,239, 2,104, 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,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3,122, 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, + 68, 65, 84, 65, 32, 1, 0, 0, 0,191,144, 22, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,128,196,144, 22, 1, 0, 0, 0, + 96,187,144, 22, 1, 0, 0, 0, 64,188,144, 22, 1, 0, 0, 0,160,189,144, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 96,192,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,193,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, + 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +192,193,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,195,144, 22, 1, 0, 0, 0, 96,192,144, 22, 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,239, 5, 0, 0,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32,195,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,193,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, +128,196,144, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,192,207,144, 22, 1, 0, 0, 0, 0,191,144, 22, 1, 0, 0, 0, + 96,192,144, 22, 1, 0, 0, 0, 32,195,144, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,176,197,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,199,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, + 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,199,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,200,144, 22, 1, 0, 0, 0, +176,197,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 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, +153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112,200,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,201,144, 22, 1, 0, 0, 0, + 16,199,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,208,201,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,203,144, 22, 1, 0, 0, 0, +112,200,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +122, 2,163, 0,104, 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, +128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48,203,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,201,144, 22, 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, +153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 4, 24, 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,144,204,144, 22, 1, 0, 0, 0, + 68, 65, 84, 65,248, 2, 0, 0,144,204,144, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, +222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, +224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, + 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, +222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192,207,144, 22, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0,224,211,144, 22, 1, 0, 0, 0,128,196,144, 22, 1, 0, 0, 0,176,197,144, 22, 1, 0, 0, 0, + 48,203,144, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 48,194,129, 3, 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, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,209,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128,210,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,210,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,209,144, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,224,211,144, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,207,144, 22, 1, 0, 0, 0, 32,209,144, 22, 1, 0, 0, 0,128,210,144, 22, 1, 0, 0, 0, + 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,224,212,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +112,241,144, 22, 1, 0, 0, 0, 48,176,144, 22, 1, 0, 0, 0, 0, 91,144, 22, 1, 0, 0, 0, 96, 91,144, 22, 1, 0, 0, 0, + 32, 89,144, 22, 1, 0, 0, 0,160, 90,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 5, 0, 0,128, 7, 0, 0, +149, 1, 0, 0, 21, 4, 0, 0, 9, 9, 72, 2,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 66, 15, 3, 1, 0, 0, 0, +128,216,144, 22, 1, 0, 0, 0, 16,240,144, 22, 1, 0, 0, 0,192,213,144, 22, 1, 0, 0, 0, 32,215,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,233, 36, 3, 1, 0, 0, 0,208,110,113, 29, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192,213,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,215,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 18, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, + 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 72, 2, + 26, 0, 72, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 5, 0, 0,128, 7, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 68, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 32,215,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,213,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, + 0, 0, 0, 0,176,222, 8, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 2, 0, 0, 0, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0, 72, 2, +103, 2, 72, 2,103, 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, + 57, 5, 0, 0,128, 7, 0, 0,175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 2,103, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 67, 15, 3, 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, + 68, 65, 84, 65,144, 2, 0, 0,128,216,144, 22, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 16,222,144, 22, 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, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,219,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,220,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,182, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,108, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,220,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,219,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, 91, 1, 0, 0,108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, + 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 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, 53, 4, 0, 0,160, 5, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,222,144, 22, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, +144,227,144, 22, 1, 0, 0, 0,128,216,144, 22, 1, 0, 0, 0, 80,219,144, 22, 1, 0, 0, 0,176,220,144, 22, 1, 0, 0, 0, + 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, +112,223,144, 22, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,112,223,144, 22, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, + 13, 0, 0, 0, 13, 0, 0, 0,192,223,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0,192,223,144, 22, 1, 0, 0, 0, +217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,253, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 96,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,206,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,238, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,194,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,237, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208,224,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,226,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 68, 1, 30, 0, 68, 1, 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, 61, 6, 0, 0,128, 7, 0, 0, +252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48,226,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,224,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,153, 67,253,127,198,195, 0, 0, 0, 0, + 51, 1, 0, 0, 68, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 50, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 68, 1,159, 1, 51, 1,141, 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, 61, 6, 0, 0,128, 7, 0, 0, + 93, 2, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,159, 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, 68, 65, 84, 65, 0, 1, 0, 0, +144,227,144, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,240,232,144, 22, 1, 0, 0, 0, 16,222,144, 22, 1, 0, 0, 0, +208,224,144, 22, 1, 0, 0, 0, 48,226,144, 22, 1, 0, 0, 0, 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, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,228,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 48,230,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, + 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, + 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 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,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,230,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144,231,144, 22, 1, 0, 0, 0,208,228,144, 22, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,231,144, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,230,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, + 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 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, 68, 65, 84, 65,240, 0, 0, 0,240,232,144, 22, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0, 16,240,144, 22, 1, 0, 0, 0,144,227,144, 22, 1, 0, 0, 0,208,228,144, 22, 1, 0, 0, 0, +144,231,144, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 32,234,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,235,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +128,235,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,234,144, 22, 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, 89, 6, 0, 0,108, 7, 0, 0, + 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,224,236,144, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, +224,236,144, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16,240,144, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,232,144, 22, 1, 0, 0, 0, 32,234,144, 22, 1, 0, 0, 0,128,235,144, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,112,241,144, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80, 20,145, 22, 1, 0, 0, 0, +224,212,144, 22, 1, 0, 0, 0,192, 91,144, 22, 1, 0, 0, 0, 32, 92,144, 22, 1, 0, 0, 0, 96, 91,144, 22, 1, 0, 0, 0, + 0, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0,149, 1, 0, 0, 21, 4, 0, 0, + 1, 1,251, 3,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0,192, 5,145, 22, 1, 0, 0, 0, + 80, 19,145, 22, 1, 0, 0, 0, 80,242,144, 22, 1, 0, 0, 0, 48, 1,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 77,253, 24, 1, 0, 0, 0,160,199,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80,242,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,243,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192,126, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 3, 26, 0,251, 3, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0, +149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,243,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,245,144, 22, 1, 0, 0, 0, 80,242,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, 61, 1, 0, 0, 61, 1, 0, 0, +175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,103, 2, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 10, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 16,245,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,246,144, 22, 1, 0, 0, 0,176,243,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 0, 0, 55, 5, 0, 0, +175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 11, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +112,246,144, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 1,145, 22, 1, 0, 0, 0, 16,245,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,254,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,209,195, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,180, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,180, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,181, 1,163, 0,163, 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, 55, 5, 0, 0, 55, 5, 0, 0, +175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,247,144, 22, 1, 0, 0, 0,160,255,144, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, +208,247,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,249,144, 22, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254,163, 0,104, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,249,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +240,250,144, 22, 1, 0, 0, 0,208,247,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,254,253,163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +240,250,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,252,144, 22, 1, 0, 0, 0, 96,249,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,253,163, 0, 59, 1, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,252,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 16,254,144, 22, 1, 0, 0, 0,240,250,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80,254,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 16,254,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,255,144, 22, 1, 0, 0, 0,128,252,144, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, +111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, +111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,254,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,255,144, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,254,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 8,254,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48, 1,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,246,144, 22, 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, 61, 1, 0, 0, 55, 5, 0, 0, +175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 3,103, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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,144, 2,145, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, +144, 2,145, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,130, 29,122, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248, 2,131, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,221, 57, 80, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, + 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192, 5,145, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +224, 9,145, 22, 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, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 32, 7,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 8,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, + 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 6, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,128, 8,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 7,145, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68, +160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6, +107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 6,107, 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, + 68, 65, 84, 65, 32, 1, 0, 0,224, 9,145, 22, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, 96, 15,145, 22, 1, 0, 0, 0, +192, 5,145, 22, 1, 0, 0, 0, 32, 7,145, 22, 1, 0, 0, 0,128, 8,145, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 64, 11,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 12,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, + 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +160, 12,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 14,145, 22, 1, 0, 0, 0, 64, 11,145, 22, 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,239, 5, 0, 0,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0, 14,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 12,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, + 96, 15,145, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 80, 19,145, 22, 1, 0, 0, 0,224, 9,145, 22, 1, 0, 0, 0, + 64, 11,145, 22, 1, 0, 0, 0, 0, 14,145, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,144, 16,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 17,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,240, 17,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 16,145, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0, 80, 19,145, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 15,145, 22, 1, 0, 0, 0,144, 16,145, 22, 1, 0, 0, 0,240, 17,145, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 80, 20,145, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,241,144, 22, 1, 0, 0, 0,128, 89,144, 22, 1, 0, 0, 0,192, 88,144, 22, 1, 0, 0, 0, 32, 92,144, 22, 1, 0, 0, 0, +192, 91,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0,149, 1, 0, 0, 21, 4, 0, 0, + 3, 3, 60, 1,129, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 15, 3, 1, 0, 0, 0,240, 23,145, 22, 1, 0, 0, 0, + 80, 50,145, 22, 1, 0, 0, 0, 48, 21,145, 22, 1, 0, 0, 0,144, 22,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 94,112, 29, 1, 0, 0, 0,144,198,254, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 48, 21,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 22,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,158, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 60, 1, 26, 0, 60, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0, +149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +144, 22,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,149, 67, 0, 64, 21,196, 0, 0, 0, 0, + 43, 1, 0, 0, 60, 1, 0, 0, 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 42, 1, 0, 0, 18, 0, 0, 0,102, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 60, 1,103, 2, 43, 1, 85, 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, 59, 1, 0, 0, +175, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 1,103, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 23,145, 22, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0,192, 36,145, 22, 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, 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, +112,221, 19, 26, 1, 0, 0, 0,112,221, 19, 26, 1, 0, 0, 0, 80, 25,145, 22, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, + 80, 25,145, 22, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,160, 25,145, 22, 1, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,160, 25,145, 22, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, + 48,186,129, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +112,253, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +112,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 48,238, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 96,237, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 26,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16, 28,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 28,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +112, 29,145, 22, 1, 0, 0, 0,176, 26,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,182, 1, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 29,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +208, 30,145, 22, 1, 0, 0, 0, 16, 28,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 67, 1, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,208, 30,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 48, 32,145, 22, 1, 0, 0, 0,112, 29,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,211, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 32,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 30,145, 22, 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,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,212, 0,182, 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, +144, 33,145, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,144, 33,145, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, +121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, - 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 15,150, 72, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0, 48,115, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,108, 39, 3, 1, 0, 0, 0, 64,109, 39, 3, 1, 0, 0, 0,160,110, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,230,135, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, - 0, 0,250, 67, 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, 0, 0, 0, - 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 0, 0, 0,144,116, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 98, 39, 3, - 1, 0, 0, 0, 64, 29, 39, 3, 1, 0, 0, 0, 0, 27, 39, 3, 1, 0, 0, 0, 32, 28, 39, 3, 1, 0, 0, 0,160, 29, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0,101, 0, 0, 0,248, 2, 0, 0, 1, 1,124, 4, -148, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 10, 35, 3, 1, 0, 0, 0,144,141, 39, 3, 1, 0, 0, 0,176,145, 39, 3, - 1, 0, 0, 0,112,117, 39, 3, 1, 0, 0, 0, 0,137, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16,186, 41, 25, 1, 0, 0, 0,176, 18,119, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,117, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,118, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,143, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -123, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,124, 4, 26, 0,124, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 4, 0, 0,101, 0, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 4, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 18, 35, 3, 1, 0, 0, 0,144, 46, 43, 25, 1, 0, 0, 0,144, 46, 43, 25, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,243, 40, 25, 1, 0, 0, 0, 16,218,117, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,118, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,123, 39, 3, 1, 0, 0, 0,112,117, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 0,248,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,248,195, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 2, 2,143, 0,240, 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,159, 0, 0, 0,247, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 2, 2, 13, 0, 5, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 35, 3, 1, 0, 0, 0, 0,172,237, 24, 1, 0, 0, 0, 96,102,235, 24, - 1, 0, 0, 0, 48,120, 39, 3, 1, 0, 0, 0,192,121, 39, 3, 1, 0, 0, 0, 80,244, 40, 25, 1, 0, 0, 0,112,169,236, 24, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,120, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,121, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 15, 35, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,121, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,120, 39, 3, 1, 0, 0, 0,224, 74,191, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, - 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,254, -143, 0,120, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,123, 39, 3, - 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,126, 39, 3, 1, 0, 0, 0,208,118, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,127, 0, 0, 0, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 14, 0, 6, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 16, 35, 3, 1, 0, 0, 0, 80,149,236, 24, 1, 0, 0, 0, 80,149,236, 24, - 1, 0, 0, 0,176,124, 39, 3, 1, 0, 0, 0,176,124, 39, 3, 1, 0, 0, 0,128,158, 40, 25, 1, 0, 0, 0,208,226,117, 22, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,124, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 17, 35, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97, -116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97, -116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,126, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,137, 39, 3, - 1, 0, 0, 0, 80,123, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, - 6, 0,180, 0,122, 2,163, 0,104, 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,123, 4, 0, 0,123, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 12, 35, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,127, 39, 3, 1, 0, 0, 0,112,135, 39, 3, - 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, 68, 65, 84, 65, 88, 1, 0, 0,160,127, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,129, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 13, 35, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110, -115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254, -163, 0,104, 1, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,129, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,130, 39, 3, 1, 0, 0, 0,160,127, 39, 3, 1, 0, 0, 0, 16, 14, 35, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +159, 55,242, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,254,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 88, 1, 0, 0,192,130, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,132, 39, 3, - 1, 0, 0, 0, 48,129, 39, 3, 1, 0, 0, 0,192,165,190, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +192, 36,145, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,224, 40,145, 22, 1, 0, 0, 0,240, 23,145, 22, 1, 0, 0, 0, +176, 26,145, 22, 1, 0, 0, 0, 48, 32,145, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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,219,252, -163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32, 38,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128, 39,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,132, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,133, 39, 3, 1, 0, 0, 0,192,130, 39, 3, 1, 0, 0, 0,208, 66,189, 24, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115, -112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115, -112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128, 39,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 38,145, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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,192,251,163, 0, 3, 1, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 32, 1, 0, 0,224, 40,145, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 96, 46,145, 22, 1, 0, 0, 0,192, 36,145, 22, 1, 0, 0, 0, 32, 38,145, 22, 1, 0, 0, 0, +128, 39,145, 22, 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,133, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,135, 39, 3, - 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0,160, 90,189, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107, -103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,251, -163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,135, 39, 3, - 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,133, 39, 3, 1, 0, 0, 0,224,171,190, 24, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95, -111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95, -111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,251,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, - 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,137, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,126, 39, 3, 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, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 42,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160, 43,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 43,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 45,145, 22, 1, 0, 0, 0, 64, 42,145, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 45,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 43,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 96, 46,145, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, + 80, 50,145, 22, 1, 0, 0, 0,224, 40,145, 22, 1, 0, 0, 0, 64, 42,145, 22, 1, 0, 0, 0, 0, 45,145, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 0, 0, 0,123, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,220, 3,122, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 11, 35, 3, - 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,240,228,117, 22, 1, 0, 0, 0, 96,160,118, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,138, 39, 3, - 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96,138, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,156, 43,218, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, - 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, -166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, - 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, - 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62, -240, 75, 47,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 69,253,168, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188, -176, 69,195, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 62,239,191, 62, -175,116, 85, 63, 48,205, 70,188, 0, 0,115,181, 84, 86,113,190,200,167,232, 61, 7,111, 6, 63, 0, 0,224, 53,215,104, 25,196, -133,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, - 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188, -166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62, -240, 75, 47,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 69,253,168, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188, -176, 69,195, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, - 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,229,149,242, 58, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144, 47,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,240, 48,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240, 48,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 47,145, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 80, 50,145, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 46,145, 22, 1, 0, 0, 0,144, 47,145, 22, 1, 0, 0, 0, +240, 48,145, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,208, 51,145, 22, 1, 0, 0, 0, +190, 0, 0, 0, 1, 0, 0, 0, 96,116,146, 22, 1, 0, 0, 0, 48, 86,144, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 80,114,111,112,101,114,116,105,101,115, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 52,145, 22, 1, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0, +224, 58,145, 22, 1, 0, 0, 0, 0, 66,145, 22, 1, 0, 0, 0, 96, 66,145, 22, 1, 0, 0, 0, 0, 48,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, +155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +224, 52,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 53,145, 22, 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, 68, 65, 84, 65, 32, 0, 0, 0, 64, 53,145, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,160, 53,145, 22, 1, 0, 0, 0,224, 52,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 53,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 54,145, 22, 1, 0, 0, 0, 64, 53,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 0, 54,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 54,145, 22, 1, 0, 0, 0, +160, 53,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 96, 54,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 54,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 32, 55,145, 22, 1, 0, 0, 0, 96, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 55,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +128, 55,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 6, 24, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,128, 55,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224, 55,145, 22, 1, 0, 0, 0, + 32, 55,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +224, 55,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0,128, 55,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,160, 56,145, 22, 1, 0, 0, 0,224, 55,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 1, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160, 56,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 57,145, 22, 1, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 0, 57,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96, 57,145, 22, 1, 0, 0, 0, +160, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 2, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 96, 57,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, 0, 57,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0, 96, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 4, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +128, 58,145, 22, 1, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224, 58,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 59,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 53,145, 22, 1, 0, 0, 0,160, 53,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64, 59,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 59,145, 22, 1, 0, 0, 0,224, 58,145, 22, 1, 0, 0, 0, + 64, 53,145, 22, 1, 0, 0, 0, 96, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160, 59,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 60,145, 22, 1, 0, 0, 0, 64, 59,145, 22, 1, 0, 0, 0, +160, 53,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0, 60,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 60,145, 22, 1, 0, 0, 0,160, 59,145, 22, 1, 0, 0, 0, + 96, 54,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96, 60,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 60,145, 22, 1, 0, 0, 0, 0, 60,145, 22, 1, 0, 0, 0, +224, 52,145, 22, 1, 0, 0, 0, 96, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192, 60,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 61,145, 22, 1, 0, 0, 0, 96, 60,145, 22, 1, 0, 0, 0, + 0, 54,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32, 61,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 61,145, 22, 1, 0, 0, 0,192, 60,145, 22, 1, 0, 0, 0, +224, 52,145, 22, 1, 0, 0, 0,224, 55,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +128, 61,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 61,145, 22, 1, 0, 0, 0, 32, 61,145, 22, 1, 0, 0, 0, + 96, 54,145, 22, 1, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224, 61,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 62,145, 22, 1, 0, 0, 0,128, 61,145, 22, 1, 0, 0, 0, +224, 55,145, 22, 1, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64, 62,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 62,145, 22, 1, 0, 0, 0,224, 61,145, 22, 1, 0, 0, 0, +224, 55,145, 22, 1, 0, 0, 0,160, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160, 62,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 63,145, 22, 1, 0, 0, 0, 64, 62,145, 22, 1, 0, 0, 0, + 64, 56,145, 22, 1, 0, 0, 0, 0, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0, 63,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96, 63,145, 22, 1, 0, 0, 0,160, 62,145, 22, 1, 0, 0, 0, +160, 56,145, 22, 1, 0, 0, 0, 0, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96, 63,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192, 63,145, 22, 1, 0, 0, 0, 0, 63,145, 22, 1, 0, 0, 0, +160, 56,145, 22, 1, 0, 0, 0, 96, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192, 63,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32, 64,145, 22, 1, 0, 0, 0, 96, 63,145, 22, 1, 0, 0, 0, + 0, 57,145, 22, 1, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32, 64,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128, 64,145, 22, 1, 0, 0, 0,192, 63,145, 22, 1, 0, 0, 0, + 96, 57,145, 22, 1, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +128, 64,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224, 64,145, 22, 1, 0, 0, 0, 32, 64,145, 22, 1, 0, 0, 0, + 96, 57,145, 22, 1, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +224, 64,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64, 65,145, 22, 1, 0, 0, 0,128, 64,145, 22, 1, 0, 0, 0, +192, 57,145, 22, 1, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 64, 65,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160, 65,145, 22, 1, 0, 0, 0,224, 64,145, 22, 1, 0, 0, 0, + 32, 58,145, 22, 1, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +160, 65,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 66,145, 22, 1, 0, 0, 0, 64, 65,145, 22, 1, 0, 0, 0, +192, 54,145, 22, 1, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0, 66,145, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 65,145, 22, 1, 0, 0, 0, + 0, 54,145, 22, 1, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 96, 66,145, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 70,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 54,145, 22, 1, 0, 0, 0, 64, 53,145, 22, 1, 0, 0, 0,160, 53,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0,224,115,146, 22, 1, 0, 0, 0,224,115,146, 22, 1, 0, 0, 0, + 64, 67,145, 22, 1, 0, 0, 0,160, 68,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 23, 17, 26, 1, 0, 0, 0,240, 18,154, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 67,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,160, 68,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 68,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 67,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, 0, 70,145, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,208,123,145, 22, 1, 0, 0, 0, 96, 66,145, 22, 1, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0, +128, 58,145, 22, 1, 0, 0, 0,192, 54,145, 22, 1, 0, 0, 0, 0, 54,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,104, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0, 96, 92,145, 22, 1, 0, 0, 0,208,122,145, 22, 1, 0, 0, 0,224, 70,145, 22, 1, 0, 0, 0, + 64, 72,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,218,149, 22, 1, 0, 0, 0, +112,143,154, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 70,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 64, 72,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0, 0,180, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,104, 1, 31, 0,104, 1, 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, 25, 6, 0, 0,128, 7, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 72,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 70,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,171, 67, 0, 64,121,196, 0, 0, 0, 0, + 0, 0, 0, 0, 3,128,171, 67, 5, 64,121,196, 0, 0, 0, 0, 87, 1, 0, 0,104, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 86, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,104, 1,247, 3, 87, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 54, 40, 3, 1, 0, 0, 0, + 7, 0, 0, 0, 6, 0, 0, 0, 25, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 73,145, 22, 1, 0, 0, 0, +208, 90,145, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 73,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 48, 75,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255, 87, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 48, 75,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 76,145, 22, 1, 0, 0, 0,160, 73,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 66, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 76,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80, 78,145, 22, 1, 0, 0, 0, 48, 75,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,144,141, 39, 3, - 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,176,145, 39, 3, 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, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0, 48,230,135, 3, 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,111,255, 66, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 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,189, 24, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,142, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 80,144, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 80, 78,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 79,145, 22, 1, 0, 0, 0,192, 76,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,144, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,142, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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,165,254, 66, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65,200, 0, 0, 0,176,145, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,141, 39, 3, 1, 0, 0, 0,240,142, 39, 3, 1, 0, 0, 0, 80,144, 39, 3, - 1, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 79,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +112, 81,145, 22, 1, 0, 0, 0, 80, 78,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 66, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 83, 67, 0, 0, 0, 6, 0, 0, 48,216,135, 3, 1, 0, 0, 0,154, 0, 0, 0, - 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, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,230,135, 3, 1, 0, 0, 0,176,155, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,147, 39, 3, 1, 0, 0, 0,240,147, 39, 3, - 1, 0, 0, 0, 48,147, 39, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,148, 39, 3, - 1, 0, 0, 0, 32,211,117, 22, 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, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, 0, - 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 25, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, - 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 39, 3, 1, 0, 0, 0, 0,150, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +112, 81,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 83,145, 22, 1, 0, 0, 0,224, 79,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 66, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0, 83,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +144, 84,145, 22, 1, 0, 0, 0,112, 81,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 66, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +144, 84,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 86,145, 22, 1, 0, 0, 0, 0, 83,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 66, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32, 86,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176, 87,145, 22, 1, 0, 0, 0,144, 84,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 66, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +176, 87,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 89,145, 22, 1, 0, 0, 0, 32, 86,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 66, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64, 89,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208, 90,145, 22, 1, 0, 0, 0,176, 87,145, 22, 1, 0, 0, 0,240, 19,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255, 87, 1,204, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +208, 90,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 89,145, 22, 1, 0, 0, 0, + 32,158,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, +101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117, +101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,253, 87, 1, 36, 1, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0, 96, 92,145, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, + 96, 96,145, 22, 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, + 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, 6, 0, 6, 0, 6, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0,159,251, 24, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,160, 93,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 95,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65, + 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, + 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0, 95,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 93,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67, + 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1, + 0, 4,144, 1, 0, 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,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 0, 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, + 68, 65, 84, 65,144, 2, 0, 0, 96, 96,145, 22, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 64,109,145, 22, 1, 0, 0, 0, + 96, 92,145, 22, 1, 0, 0, 0,160, 93,145, 22, 1, 0, 0, 0, 0, 95,145, 22, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48, 99,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144,100,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,100,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,101,145, 22, 1, 0, 0, 0, 48, 99,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,101,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,103,145, 22, 1, 0, 0, 0,144,100,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,103,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,104,145, 22, 1, 0, 0, 0,240,101,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,104,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,103,145, 22, 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, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 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, + 16,106,145, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,106,145, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53, +215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 34,153, 65, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 64,109,145, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,113,145, 22, 1, 0, 0, 0, 96, 96,145, 22, 1, 0, 0, 0, + 48, 99,145, 22, 1, 0, 0, 0,176,104,145, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,110,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,112,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,112,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,110,145, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,113,145, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0,224,118,145, 22, 1, 0, 0, 0, 64,109,145, 22, 1, 0, 0, 0,160,110,145, 22, 1, 0, 0, 0, + 0,112,145, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,114,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 32,116,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,116,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128,117,145, 22, 1, 0, 0, 0,192,114,145, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,117,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,116,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,224,118,145, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +208,122,145, 22, 1, 0, 0, 0, 96,113,145, 22, 1, 0, 0, 0,192,114,145, 22, 1, 0, 0, 0,128,117,145, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,120,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,121,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,121,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,120,145, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,208,122,145, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,118,145, 22, 1, 0, 0, 0, 16,120,145, 22, 1, 0, 0, 0, +112,121,145, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,123,145, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,128,174,145, 22, 1, 0, 0, 0, 0, 70,145, 22, 1, 0, 0, 0,224, 52,145, 22, 1, 0, 0, 0, + 96, 54,145, 22, 1, 0, 0, 0, 64, 56,145, 22, 1, 0, 0, 0,224, 55,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,104, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0, 16,143,145, 22, 1, 0, 0, 0,128,173,145, 22, 1, 0, 0, 0,176,124,145, 22, 1, 0, 0, 0, + 16,126,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,141, 22, 1, 0, 0, 0, +192,215,141, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,124,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16,126,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0, 0,180, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,104, 1, 31, 0,104, 1, 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,103, 1, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,126,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,124,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, 67, 0, 0,121,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,127,171, 67,255, 63,121,196, 0, 0, 0, 0, 87, 1, 0, 0,104, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 86, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,104, 1,247, 3, 87, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,183, 63, 25, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,127,145, 22, 1, 0, 0, 0, +128,141,145, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,127,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0,129,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255, 86, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 0,129,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,130,145, 22, 1, 0, 0, 0,112,127,145, 22, 1, 0, 0, 0, + 64, 47,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 86, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144,130,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32,132,145, 22, 1, 0, 0, 0, 0,129,145, 22, 1, 0, 0, 0,192, 34,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32,132,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,133,145, 22, 1, 0, 0, 0,144,130,145, 22, 1, 0, 0, 0, +128,241,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 86, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,176,133,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64,135,145, 22, 1, 0, 0, 0, 32,132,145, 22, 1, 0, 0, 0,112,108,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 86, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 64,135,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,136,145, 22, 1, 0, 0, 0,176,133,145, 22, 1, 0, 0, 0, +160, 93,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 86, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,136,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96,138,145, 22, 1, 0, 0, 0, 64,135,145, 22, 1, 0, 0, 0,128, 98,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 86, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96,138,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,139,145, 22, 1, 0, 0, 0,208,136,145, 22, 1, 0, 0, 0, + 64,105,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240,139,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128,141,145, 22, 1, 0, 0, 0, 96,138,145, 22, 1, 0, 0, 0, 32,107,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +128,141,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,139,145, 22, 1, 0, 0, 0, +128,109,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 86, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 16,143,145, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, + 16,147,145, 22, 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, + 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, + 2, 0, 0, 0, 0, 0, 0, 0,192, 68, 40, 3, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,144,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,145,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65, + 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, + 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,176,145,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,144,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67, + 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1, + 0, 4,144, 1, 0, 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,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 0, 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, + 68, 65, 84, 65,144, 2, 0, 0, 16,147,145, 22, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,240,159,145, 22, 1, 0, 0, 0, + 16,143,145, 22, 1, 0, 0, 0, 80,144,145, 22, 1, 0, 0, 0,176,145,145, 22, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,149,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 64,151,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,151,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160,152,145, 22, 1, 0, 0, 0,224,149,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,152,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0,154,145, 22, 1, 0, 0, 0, 64,151,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,154,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 96,155,145, 22, 1, 0, 0, 0,160,152,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,155,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,154,145, 22, 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, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 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, +192,156,145, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,156,145, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53, +215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 34,153, 65, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +240,159,145, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 16,164,145, 22, 1, 0, 0, 0, 16,147,145, 22, 1, 0, 0, 0, +224,149,145, 22, 1, 0, 0, 0, 96,155,145, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,161,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,162,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,162,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,161,145, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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, 68, 65, 84, 65, 32, 1, 0, 0, 16,164,145, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0,144,169,145, 22, 1, 0, 0, 0,240,159,145, 22, 1, 0, 0, 0, 80,161,145, 22, 1, 0, 0, 0, +176,162,145, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,165,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +208,166,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,166,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 48,168,145, 22, 1, 0, 0, 0,112,165,145, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,168,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,166,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,144,169,145, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +128,173,145, 22, 1, 0, 0, 0, 16,164,145, 22, 1, 0, 0, 0,112,165,145, 22, 1, 0, 0, 0, 48,168,145, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,170,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 32,172,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,172,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,170,145, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,128,173,145, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,169,145, 22, 1, 0, 0, 0,192,170,145, 22, 1, 0, 0, 0, + 32,172,145, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,128,174,145, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,208,240,145, 22, 1, 0, 0, 0,208,123,145, 22, 1, 0, 0, 0,224, 55,145, 22, 1, 0, 0, 0, + 64, 56,145, 22, 1, 0, 0, 0, 0, 57,145, 22, 1, 0, 0, 0,160, 56,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +105, 1, 0, 0,247, 2, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0, 96,209,145, 22, 1, 0, 0, 0,208,239,145, 22, 1, 0, 0, 0, 96,175,145, 22, 1, 0, 0, 0, +192,176,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,181,147, 22, 1, 0, 0, 0, +240, 65,148, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96,175,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +192,176,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 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,105, 1, 0, 0,247, 2, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,176,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,175,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,190, 67, 0, 0,121,196, 0, 0, 0, 0, + 0, 0, 0, 0,251,255,190, 67,250, 63,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 35, 16, 26, 1, 0, 0, 0, + 3, 0, 0, 0, 2, 0, 0, 0,105, 1, 0, 0,247, 2, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,178,145, 22, 1, 0, 0, 0, +208,207,145, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,178,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176,179,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255,125, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +176,179,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,181,145, 22, 1, 0, 0, 0, 32,178,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 86, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64,181,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208,182,145, 22, 1, 0, 0, 0,176,179,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +208,182,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96,184,145, 22, 1, 0, 0, 0, 64,181,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 86, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,184,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +240,185,145, 22, 1, 0, 0, 0,208,182,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 86, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +240,185,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,187,145, 22, 1, 0, 0, 0, 96,184,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 86, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,187,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 16,189,145, 22, 1, 0, 0, 0,240,185,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 86, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 16,189,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,190,145, 22, 1, 0, 0, 0,128,187,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,160,190,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 48,192,145, 22, 1, 0, 0, 0, 16,189,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 86, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 48,192,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,193,145, 22, 1, 0, 0, 0,160,190,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 86, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192,193,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80,195,145, 22, 1, 0, 0, 0, 48,192,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,135,255, 86, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 80,195,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,196,145, 22, 1, 0, 0, 0,192,193,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,255, 86, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,224,196,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +112,198,145, 22, 1, 0, 0, 0, 80,195,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,213,254, 86, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +112,198,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,200,145, 22, 1, 0, 0, 0,224,196,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254, 86, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,200,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +144,201,145, 22, 1, 0, 0, 0,112,198,145, 22, 1, 0, 0, 0, 16,196,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,184,255,125, 1, 36, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,201,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,203,145, 22, 1, 0, 0, 0, 0,200,145, 22, 1, 0, 0, 0, +144,208,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,112,114,101,118,105,101,119, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,112,114,101,118,105,101,119, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,255,125, 1,136, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,203,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176,204,145, 22, 1, 0, 0, 0,144,201,145, 22, 1, 0, 0, 0, 16,221,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95,119,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,175,254,125, 1, 81, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +176,204,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,206,145, 22, 1, 0, 0, 0, 32,203,145, 22, 1, 0, 0, 0, +144,233,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 97,109, 98,105,101,110,116, + 95,111, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95, 97,109, 98,105,101,110,116, + 95,111, 99, 99,108,117,115,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,109, 98,105,101,110,116, 32, 79, 99, 99,108,117,115,105,111, +110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,253,125, 1,199, 0, 20, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64,206,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208,207,145, 22, 1, 0, 0, 0,176,204,145, 22, 1, 0, 0, 0, 16,246,141, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 79, 82, 76, 68, 95, 80, 84, 95,109,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77,105,115,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 99,253,125, 1, 85, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +208,207,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,206,145, 22, 1, 0, 0, 0, + 0, 9,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,115,116, 97,114,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 82, 76, 68, 95, 80, 84, 95,115,116, 97,114,115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,125, 1, 60, 0, 20, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0, 96,209,145, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, + 96,213,145, 22, 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, + 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, 2, 0, 2, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 4, 0, 0, 0,240,137, 17, 26, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,160,210,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,212,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65, + 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, + 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0,212,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,210,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67, + 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1, + 0, 4,144, 1, 0, 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,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 0, 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, + 68, 65, 84, 65,144, 2, 0, 0, 96,213,145, 22, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 64,226,145, 22, 1, 0, 0, 0, + 96,209,145, 22, 1, 0, 0, 0,160,210,145, 22, 1, 0, 0, 0, 0,212,145, 22, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 31, 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,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 6, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0, -154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 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,240,175, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 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,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, - 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, -128, 7, 56, 4, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,147, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,144,147, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,238, 1, 61, 1, 48,236,135, 3, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,147, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,240,147, 39, 3, - 1, 0, 0, 0, 48,147, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,126, 2, 26, 2, 48,242,135, 3, - 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,147, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,147, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,109, 0,128, 1, 48,230,135, 3, - 1, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0, 80,148, 39, 3, 1, 0, 0, 0,150, 0, 0, 0, 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,128, 63, 1, 0, 1, 0,205,204, 76, 63, - 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 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, - 2, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, - 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, - 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, - 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 0, 0, 0, 0,150, 39, 3, 1, 0, 0, 0,136, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 97,121,101, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, -152, 0, 0, 0,144,150, 39, 3, 1, 0, 0, 0, 29, 0, 0, 0, 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, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101, -114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 63,145,137, 68, 66,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 96,151, 39, 3, 1, 0, 0, 0, 41, 0, 0, 0, - 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, 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,144,153, 39, 3, - 1, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,155, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, - 56, 1, 0, 0,144,153, 39, 3, 1, 0, 0, 0, 72, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63, 0,155, 39, 3, - 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,216,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144,217,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,217,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,218,145, 22, 1, 0, 0, 0, 48,216,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,155, 39, 3, 1, 0, 0, 0, 70, 1, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 40, 0, 0, 0, 80,155, 39, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0, -216, 1, 0, 0,176,155, 39, 3, 1, 0, 0, 0,130, 0, 0, 0, 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, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,218,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,220,145, 22, 1, 0, 0, 0,144,217,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,220,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,221,145, 22, 1, 0, 0, 0,240,218,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,221,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,220,145, 22, 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, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 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, + 16,223,145, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,223,145, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53, +215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 34,153, 65, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 64,226,145, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,230,145, 22, 1, 0, 0, 0, 96,213,145, 22, 1, 0, 0, 0, + 48,216,145, 22, 1, 0, 0, 0,176,221,145, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,227,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,229,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,229,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,227,145, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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, 68, 65, 84, 65, 32, 1, 0, 0, 96,230,145, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0,224,235,145, 22, 1, 0, 0, 0, 64,226,145, 22, 1, 0, 0, 0,160,227,145, 22, 1, 0, 0, 0, + 0,229,145, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,231,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 32,233,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,233,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128,234,145, 22, 1, 0, 0, 0,192,231,145, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,234,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,233,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0,224,235,145, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +208,239,145, 22, 1, 0, 0, 0, 96,230,145, 22, 1, 0, 0, 0,192,231,145, 22, 1, 0, 0, 0,128,234,145, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 16,237,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,238,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,238,145, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,237,145, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,208,239,145, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,235,145, 22, 1, 0, 0, 0, 16,237,145, 22, 1, 0, 0, 0, +112,238,145, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,208,240,145, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 48,146, 22, 1, 0, 0, 0,128,174,145, 22, 1, 0, 0, 0,160, 56,145, 22, 1, 0, 0, 0, + 0, 57,145, 22, 1, 0, 0, 0,192, 57,145, 22, 1, 0, 0, 0, 96, 57,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +249, 2, 0, 0,135, 4, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0,144, 16,146, 22, 1, 0, 0, 0, 0, 47,146, 22, 1, 0, 0, 0,176,241,145, 22, 1, 0, 0, 0, + 16,243,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,155,146, 22, 1, 0, 0, 0, +224,142,146, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176,241,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16,243,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 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,249, 2, 0, 0,135, 4, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,243,145, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,241,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0,191, 67, 4, 64,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 66, 17, 26, 1, 0, 0, 0, + 4, 0, 0, 0, 3, 0, 0, 0,249, 2, 0, 0,135, 4, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,244,145, 22, 1, 0, 0, 0, + 0, 15,146, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,244,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0,246,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 0,246,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,247,145, 22, 1, 0, 0, 0,112,244,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,102, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,247,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32,249,145, 22, 1, 0, 0, 0, 0,246,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255,102, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32,249,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,250,145, 22, 1, 0, 0, 0,144,247,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,102, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,250,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64,252,145, 22, 1, 0, 0, 0, 32,249,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254,102, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 64,252,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,253,145, 22, 1, 0, 0, 0,176,250,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253,102, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,253,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96,255,145, 22, 1, 0, 0, 0, 64,252,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253,102, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96,255,145, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 0,146, 22, 1, 0, 0, 0,208,253,145, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,102, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240, 0,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128, 2,146, 22, 1, 0, 0, 0, 96,255,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253,102, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +128, 2,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 4,146, 22, 1, 0, 0, 0,240, 0,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,102, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 4,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160, 5,146, 22, 1, 0, 0, 0,128, 2,146, 22, 1, 0, 0, 0,224, 17,147, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,184,255,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +160, 5,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 7,146, 22, 1, 0, 0, 0, 16, 4,146, 22, 1, 0, 0, 0, +128, 53,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39,255,126, 1,121, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 7,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192, 8,146, 22, 1, 0, 0, 0,160, 5,146, 22, 1, 0, 0, 0, 96, 58,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,108,111, 99,107,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,108,111, 99,107,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,114, 97,110,115,102,111,114,109, 32, 76,111, 99,107,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192, 8,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 10,146, 22, 1, 0, 0, 0, 48, 7,146, 22, 1, 0, 0, 0, + 64, 63,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,114,101,108, 97,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,114,101,108, 97,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,108, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149,254,126, 1, 98, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 10,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224, 11,146, 22, 1, 0, 0, 0,192, 8,146, 22, 1, 0, 0, 0, 32, 68,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89,254,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +224, 11,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 13,146, 22, 1, 0, 0, 0, 80, 10,146, 22, 1, 0, 0, 0, + 0, 73,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,100,105,115,112,108, 97, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,100,105,115,112,108, 97, +121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,126, 1,107, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 13,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 15,146, 22, 1, 0, 0, 0,224, 11,146, 22, 1, 0, 0, 0,224, 77,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,100,117,112,108,105, 99, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 74, 69, 67, 84, 95, 80, 84, 95,100,117,112,108,105, 99, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,117,112,108,105, 99, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,154,253,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 0, 15,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 13,146, 22, 1, 0, 0, 0, +192, 82,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 97,110,105,109, 97,116, +105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 74, 69, 67, 84, 95, 80, 84, 95, 97,110,105,109, 97,116, +105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,105,109, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,252,126, 1,146, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0,144, 16,146, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, +144, 20,146, 22, 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, + 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, 3, 0, 3, 0, 3, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0,224, 84, 19, 26, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,208, 17,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48, 19,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65, + 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, + 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48, 19,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 17,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67, + 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1, + 0, 4,144, 1, 0, 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,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 0, 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, + 68, 65, 84, 65,144, 2, 0, 0,144, 20,146, 22, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,112, 33,146, 22, 1, 0, 0, 0, +144, 16,146, 22, 1, 0, 0, 0,208, 17,146, 22, 1, 0, 0, 0, 48, 19,146, 22, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 23,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +192, 24,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 24,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 32, 26,146, 22, 1, 0, 0, 0, 96, 23,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32, 26,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128, 27,146, 22, 1, 0, 0, 0,192, 24,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0,175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 27,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +224, 28,146, 22, 1, 0, 0, 0, 32, 26,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 3, 2, 0, 0, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 28,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 27,146, 22, 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, 3, 2, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 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, + 64, 30,146, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 64, 30,146, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181,195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53, +215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191,155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 34,153, 65, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +112, 33,146, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,144, 37,146, 22, 1, 0, 0, 0,144, 20,146, 22, 1, 0, 0, 0, + 96, 23,146, 22, 1, 0, 0, 0,224, 28,146, 22, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208, 34,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 48, 36,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48, 36,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 34,146, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6,107, 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, 68, 65, 84, 65, 32, 1, 0, 0,144, 37,146, 22, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 16, 43,146, 22, 1, 0, 0, 0,112, 33,146, 22, 1, 0, 0, 0,208, 34,146, 22, 1, 0, 0, 0, + 48, 36,146, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 38,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80, 40,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 40,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176, 41,146, 22, 1, 0, 0, 0,240, 38,146, 22, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 41,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 40,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 16, 43,146, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, + 0, 47,146, 22, 1, 0, 0, 0,144, 37,146, 22, 1, 0, 0, 0,240, 38,146, 22, 1, 0, 0, 0,176, 41,146, 22, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 44,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,160, 45,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 45,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 44,146, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 0, 47,146, 22, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 43,146, 22, 1, 0, 0, 0, 64, 44,146, 22, 1, 0, 0, 0, +160, 45,146, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 0, 48,146, 22, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,240,145, 22, 1, 0, 0, 0, 96, 57,145, 22, 1, 0, 0, 0, +192, 57,145, 22, 1, 0, 0, 0,128, 58,145, 22, 1, 0, 0, 0, 32, 58,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +137, 4, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, 4, 4,143, 1, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0,112, 84,146, 22, 1, 0, 0, 0,224,114,146, 22, 1, 0, 0, 0,224, 48,146, 22, 1, 0, 0, 0, + 64, 50,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,154, 22, 1, 0, 0, 0, +208, 54,141, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224, 48,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 64, 50,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,240, 65, + 0, 0, 0, 0, 0,128,199, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,199, 67, 0, 0,232, 65, 0,128,199, 67, 0, 0,232, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,143, 1, 31, 0,143, 1, 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,137, 4, 0, 0, 23, 6, 0, 0,247, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64, 50,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 48,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,191, 67, 0, 64,121,196, 0, 0, 0, 0,126, 1, 0, 0,143, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0,125, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,125, 1, 0, 0, 18, 0, 0, 0,246, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,143, 1,247, 3,126, 1,229, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 65,154, 22, 1, 0, 0, 0, + 6, 0, 0, 0, 5, 0, 0, 0,137, 4, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0,246, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,143, 1,247, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 51,146, 22, 1, 0, 0, 0, +224, 82,146, 22, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 51,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 48, 53,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 48, 53,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 54,146, 22, 1, 0, 0, 0,160, 51,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 81, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 54,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80, 56,146, 22, 1, 0, 0, 0, 48, 53,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 81, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 80, 56,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 57,146, 22, 1, 0, 0, 0,192, 54,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 81, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 57,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +112, 59,146, 22, 1, 0, 0, 0, 80, 56,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 81, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +112, 59,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 61,146, 22, 1, 0, 0, 0,224, 57,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 81, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 61,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +144, 62,146, 22, 1, 0, 0, 0,112, 59,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 81, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144, 62,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 64,146, 22, 1, 0, 0, 0, 0, 61,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 81, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32, 64,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176, 65,146, 22, 1, 0, 0, 0,144, 62,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 81, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +176, 65,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 67,146, 22, 1, 0, 0, 0, 32, 64,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 81, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 64, 67,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208, 68,146, 22, 1, 0, 0, 0,176, 65,146, 22, 1, 0, 0, 0, 96,212,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,109, 97,116,101,114,105, 97,108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,109, 97,116,101,114,105, 97,108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94,255,126, 1,126, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +208, 68,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 70,146, 22, 1, 0, 0, 0, 64, 67,146, 22, 1, 0, 0, 0, + 64,214,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,112,114,101,118, +105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,112,114,101,118, +105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,101,118,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,190,254,126, 1,136, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96, 70,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +240, 71,146, 22, 1, 0, 0, 0,208, 68,146, 22, 1, 0, 0, 0, 64,224,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,100,105,102,102,117,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,100,105,102,102,117,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,102,102,117,115,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,103,254,126, 1, 63, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +240, 71,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 73,146, 22, 1, 0, 0, 0, 96, 70,146, 22, 1, 0, 0, 0, + 32,226,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,112,101, 99, +117,108, 97,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,112,101, 99, +117,108, 97,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,112,101, 99,117,108, 97,114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,253,126, 1, 83, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128, 73,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 16, 75,146, 22, 1, 0, 0, 0,240, 71,146, 22, 1, 0, 0, 0, 0,228,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,148,253,126, 1, 80, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 16, 75,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160, 76,146, 22, 1, 0, 0, 0,128, 73,146, 22, 1, 0, 0, 0, +224,229,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,116,114, 97,110, +115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,116,114, 97,110, +115,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,112, 97,114,101,110, 99,121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,253,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,160, 76,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 48, 78,146, 22, 1, 0, 0, 0, 16, 75,146, 22, 1, 0, 0, 0,144,201,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,109,105,114,114,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,109,105,114,114,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77,105,114,114,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,100,253,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 48, 78,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 79,146, 22, 1, 0, 0, 0,160, 76,146, 22, 1, 0, 0, 0, +160,193,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,115,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,115,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,117, 98,115,117,114,102, 97, 99,101, 32, 83, 99, 97,116,116, +101,114,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,253,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,192, 79,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80, 81,146, 22, 1, 0, 0, 0, 48, 78,146, 22, 1, 0, 0, 0,112,227,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,116,114, 97,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,116,114, 97,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116,114, 97,110,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 80, 81,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 82,146, 22, 1, 0, 0, 0,192, 79,146, 22, 1, 0, 0, 0, +208,229,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,111,112,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,111,112,116,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,252,126, 1,208, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 82,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 81,146, 22, 1, 0, 0, 0, 48,232,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,104, 97,100,111,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 65, 84, 69, 82, 73, 65, 76, 95, 80, 84, 95,115,104, 97,100,111,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,104, 97,100,111,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52,252,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, +112, 84,146, 22, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,112, 88,146, 22, 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, 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, 5, 0, 5, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 96,213, 18, 26, 1, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 85,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16, 87,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 0, 68, 0, 0,200, 65, 0,192, 0, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, 26, 0,144, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 87,146, 22, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 85,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, 68, + 0, 0, 0, 0, 0,128, 26, 68, 56, 58, 14, 66, 61, 2,240, 67, 0, 0, 0, 0, 55, 58,142, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, + 0, 0, 0, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, + 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,144, 1, 0, 4,144, 1, 0, 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,143, 1, 0, 0, 26, 0, 0, 0, 25, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 0, 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, 68, 65, 84, 65,144, 2, 0, 0,112, 88,146, 22, 1, 0, 0, 0, +169, 0, 0, 0, 1, 0, 0, 0, 80,101,146, 22, 1, 0, 0, 0,112, 84,146, 22, 1, 0, 0, 0,176, 85,146, 22, 1, 0, 0, 0, + 16, 87,146, 22, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 64, 91,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160, 92,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 1, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 4, 2, 26, 0, 4, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, +149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +160, 92,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 94,146, 22, 1, 0, 0, 0, 64, 91,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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, +175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,107, 2, 0, 0, 5, 0, + 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0, 94,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 95,146, 22, 1, 0, 0, 0,160, 92,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, +175, 1, 0, 0,175, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96, 95,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 96,146, 22, 1, 0, 0, 0, 0, 94,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 3, 2, 0, 0, 3, 2, 0, 0, +175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +192, 96,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 95,146, 22, 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, 3, 2, 0, 0, +175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2,107, 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, 32, 98,146, 22, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 32, 98,146, 22, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 28,242,167, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191, +155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,155,253,159, 62, 81,240, 49, 63,144,213, 37,188, 0, 0,240,181, +195, 13,188,190,192, 73, 53, 62,101,126, 81, 63, 0, 64,164, 53,215,104, 25,196,135,132,135, 67, 38, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,160, 87,135,195,206,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,161,185, 9, 63,206,249,224,190,222,160, 81,191,184,158, 81,191, +155, 41,153, 63,139,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,191,147,142,188,204,156,122, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 34,153, 65, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,128, 62, 0, 0,128, 62, 0, 0, 0, 0,205,204,204, 61, -205,204,204, 61,205,204,204, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0, -128, 0, 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, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 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, 84, 88, 0, 0,176, 0, 0, 0,192,157, 39, 3, 1, 0, 0, 0, 27, 0, 0, 0, - 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, 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,176,158, 39, 3, - 1, 0, 0, 0,176,158, 39, 3, 1, 0, 0, 0,176,158, 39, 3, 1, 0, 0, 0,176,158, 39, 3, 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, 48,224,135, 3, 1, 0, 0, 0,255,255,255,255, - 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,158, 39, 3, - 1, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,159, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0, 16,159, 39, 3, - 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,230,135, 3, 1, 0, 0, 0, -119, 0, 0, 0, 1, 0, 0, 0, 48,236,135, 3, 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, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 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, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 80,101,146, 22, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +112,105,146, 22, 1, 0, 0, 0,112, 88,146, 22, 1, 0, 0, 0, 64, 91,146, 22, 1, 0, 0, 0,192, 96,146, 22, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,176,102,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,104,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, + 26, 0, 24, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 6, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,104,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,102,146, 22, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195,156,102, 95, 68, +160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 24, 6, +107, 2, 7, 6, 89, 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, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 6,107, 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, + 68, 65, 84, 65, 32, 1, 0, 0,112,105,146, 22, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,240,110,146, 22, 1, 0, 0, 0, + 80,101,146, 22, 1, 0, 0, 0,176,102,146, 22, 1, 0, 0, 0, 16,104,146, 22, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208,106,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,108,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, + 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48,108,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,109,146, 22, 1, 0, 0, 0,208,106,146, 22, 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,239, 5, 0, 0,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +144,109,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,108,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, +240,110,146, 22, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,224,114,146, 22, 1, 0, 0, 0,112,105,146, 22, 1, 0, 0, 0, +208,106,146, 22, 1, 0, 0, 0,144,109,146, 22, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 32,112,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,113,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,128,113,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32,112,146, 22, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0,224,114,146, 22, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,110,146, 22, 1, 0, 0, 0, 32,112,146, 22, 1, 0, 0, 0,128,113,146, 22, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0, 96,116,146, 22, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 64, 24, 38, 3, 1, 0, 0, 0, +208, 51,145, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 81,117, 97,100, 32, 86, +105,101,119, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,117,146, 22, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0,240,121,146, 22, 1, 0, 0, 0, 80,128,146, 22, 1, 0, 0, 0, +176,128,146, 22, 1, 0, 0, 0,240,235, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,117,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +208,117,146, 22, 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, + 68, 65, 84, 65, 32, 0, 0, 0,208,117,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,118,146, 22, 1, 0, 0, 0, +112,117,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48,118,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,118,146, 22, 1, 0, 0, 0,208,117,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,118,146, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, 48,118,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 80,119,146, 22, 1, 0, 0, 0,144,118,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0, +240,118,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +176,119,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +208,120,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 68, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0, +112,120,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 68, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48,121,146, 22, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,121,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 80,122,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,117,146, 22, 1, 0, 0, 0, 48,118,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,122,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +176,122,146, 22, 1, 0, 0, 0,240,121,146, 22, 1, 0, 0, 0,208,117,146, 22, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,122,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,123,146, 22, 1, 0, 0, 0, 80,122,146, 22, 1, 0, 0, 0, 48,118,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,123,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +112,123,146, 22, 1, 0, 0, 0,176,122,146, 22, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,123,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +208,123,146, 22, 1, 0, 0, 0, 16,123,146, 22, 1, 0, 0, 0,112,117,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,123,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 48,124,146, 22, 1, 0, 0, 0,112,123,146, 22, 1, 0, 0, 0,144,118,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,124,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +144,124,146, 22, 1, 0, 0, 0,208,123,146, 22, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,124,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +240,124,146, 22, 1, 0, 0, 0, 48,124,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,124,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 80,125,146, 22, 1, 0, 0, 0,144,124,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,125,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +176,125,146, 22, 1, 0, 0, 0,240,124,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,125,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 16,126,146, 22, 1, 0, 0, 0, 80,125,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,126,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +112,126,146, 22, 1, 0, 0, 0,176,125,146, 22, 1, 0, 0, 0,144,118,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,126,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +208,126,146, 22, 1, 0, 0, 0, 16,126,146, 22, 1, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,126,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 48,127,146, 22, 1, 0, 0, 0,112,126,146, 22, 1, 0, 0, 0,112,117,146, 22, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,127,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +144,127,146, 22, 1, 0, 0, 0,208,126,146, 22, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,127,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, +240,127,146, 22, 1, 0, 0, 0, 48,127,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,127,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 80,128,146, 22, 1, 0, 0, 0,144,127,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,128,146, 22, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,127,146, 22, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,128,146, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 80,132,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0,208,117,146, 22, 1, 0, 0, 0, + 48,118,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0, +192, 23, 38, 3, 1, 0, 0, 0,192, 23, 38, 3, 1, 0, 0, 0,144,129,146, 22, 1, 0, 0, 0,240,130,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 79, 33, 3, 1, 0, 0, 0,224,135, 40, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,144,129,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240,130,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, + 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0,240,130,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,129,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 3, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, + 68, 65, 84, 65,160, 0, 0, 0, 80,132,146, 22, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 80,206, 37, 3, 1, 0, 0, 0, +176,128,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0,112,120,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, +144,118,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 67, 3, 0, 0, + 4, 4,128, 1, 68, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0,192,197, 37, 3, 1, 0, 0, 0, +240,204, 37, 3, 1, 0, 0, 0, 48,133,146, 22, 1, 0, 0, 0,144,134,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 86,112, 29, 1, 0, 0, 0,240, 76,253, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 48,133,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,134,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,127, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,128, 1, 31, 0,128, 1, 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, 1, 6, 0, 0,128, 7, 0, 0, + 37, 3, 0, 0, 67, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 31, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +144,134,146, 22, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,133,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,183, 67, 0,128, 68,196, 0, 0, 0, 0, 0, 0, 0, 0,253,127,183, 67,253,191, 68,196, 0, 0, 0, 0, +111, 1, 0, 0,128, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,110, 1, 0, 0, 18, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,128, 1, 37, 3,111, 1, 19, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 77,253, 24, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 37, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,135,146, 22, 1, 0, 0, 0, 48,196, 37, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, +240,135,146, 22, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,164, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,110, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,164, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128,166, 37, 3, 1, 0, 0, 0,240,135,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +128,166, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,168, 37, 3, 1, 0, 0, 0,240,164, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 16,168, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160,169, 37, 3, 1, 0, 0, 0,128,166, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,165,254, 76, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +160,169, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,171, 37, 3, 1, 0, 0, 0, 16,168, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, + 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, + 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,171, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192,172, 37, 3, 1, 0, 0, 0,160,169, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,213,253, 76, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192,172, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,174, 37, 3, 1, 0, 0, 0, 48,171, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,144,150, 39, 3, 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, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,174, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224,175, 37, 3, 1, 0, 0, 0,192,172, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 60,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +224,175, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112,177, 37, 3, 1, 0, 0, 0, 80,174, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114, +111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114, +111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112,177, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0,179, 37, 3, 1, 0, 0, 0,224,175, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 0,179, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144,180, 37, 3, 1, 0, 0, 0,112,177, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,252, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144,180, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32,182, 37, 3, 1, 0, 0, 0, 0,179, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,252, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 32,182, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176,183, 37, 3, 1, 0, 0, 0,144,180, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,252, 76, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176,183, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64,185, 37, 3, 1, 0, 0, 0, 32,182, 37, 3, 1, 0, 0, 0, 64, 47,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,135,255,110, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 64,185, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208,186, 37, 3, 1, 0, 0, 0,176,183, 37, 3, 1, 0, 0, 0, +192, 34,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,110, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208,186, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96,188, 37, 3, 1, 0, 0, 0, 64,185, 37, 3, 1, 0, 0, 0,128,241,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,165,254,110, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96,188, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240,189, 37, 3, 1, 0, 0, 0,208,186, 37, 3, 1, 0, 0, 0, +112,108,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254,110, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,240,189, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128,191, 37, 3, 1, 0, 0, 0, 96,188, 37, 3, 1, 0, 0, 0,160, 93,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 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,149, 47, 63, - 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63, -149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,213,253,110, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +128,191, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,193, 37, 3, 1, 0, 0, 0,240,189, 37, 3, 1, 0, 0, 0, +128, 98,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253,110, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,193, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160,194, 37, 3, 1, 0, 0, 0,128,191, 37, 3, 1, 0, 0, 0, 64,105,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 60,253,110, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +160,194, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,196, 37, 3, 1, 0, 0, 0, 16,193, 37, 3, 1, 0, 0, 0, + 32,107,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253,110, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48,196, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160,194, 37, 3, 1, 0, 0, 0,128,109,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,110, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, +192,197, 37, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,240,204, 37, 3, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,224,224,112, 29, 1, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,199, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,200, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,200, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 37, 3, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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,192,201, 37, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192,201, 37, 3, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, - 1, 0,128, 51, 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, - 2, 0, 0,167, 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63, -157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51, -243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, - 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62, -237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 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,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79, 66, 0, 0,152, 4, 0, 0, 48,236,135, 3, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,242,135, 3, 1, 0, 0, 0, - 48,230,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,240,204, 37, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,197, 37, 3, 1, 0, 0, 0, 0,199, 37, 3, 1, 0, 0, 0, 96,200, 37, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 80,206, 37, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 64,218, 37, 3, 1, 0, 0, 0, 80,132,146, 22, 1, 0, 0, 0, +112,117,146, 22, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0,144,121,146, 22, 1, 0, 0, 0,176,119,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 0, 6, 84, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 15, 3, 1, 0, 0, 0,240,209, 37, 3, 1, 0, 0, 0,224,216, 37, 3, 1, 0, 0, 0, + 48,207, 37, 3, 1, 0, 0, 0,144,208, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 48,251, 24, 1, 0, 0, 0,144, 12,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,207, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,144,208, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 6, 26, 0, 0, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 4, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,208, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,207, 37, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, + 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 0, 6, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 3, 15, 3, 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, 68, 65, 84, 65,200, 0, 0, 0,240,209, 37, 3, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0,224,216, 37, 3, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,210, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,212, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,212, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,210, 37, 3, 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, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 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,176,213, 37, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,176,213, 37, 3, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,224,216, 37, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,209, 37, 3, 1, 0, 0, 0,240,210, 37, 3, 1, 0, 0, 0, 80,212, 37, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 64,218, 37, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,235, 37, 3, 1, 0, 0, 0, 80,206, 37, 3, 1, 0, 0, 0, +112,120,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, 80,119,146, 22, 1, 0, 0, 0,208,120,146, 22, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0, 21, 4, 0, 0, 3, 3,128, 1,209, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 15, 3, 1, 0, 0, 0,224,221, 37, 3, 1, 0, 0, 0,144,234, 37, 3, 1, 0, 0, 0, + 32,219, 37, 3, 1, 0, 0, 0,128,220, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,164,255, 24, 1, 0, 0, 0, 80,217,253, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,219, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,128,220, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,128, 1, 26, 0,128, 1, 26, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,220, 37, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,219, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, + 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,183, 67, 0, 0, 37,195, 0, 0, 0, 0,111, 1, 0, 0,128, 1, 0, 0, + 18, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, + 18, 0, 0, 0,182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,128, 1,183, 0,111, 1,165, 0, 0, 0, 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, 6, 0, 0,128, 7, 0, 0, 69, 3, 0, 0,251, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 1,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,221, 37, 3, 1, 0, 0, 0, +166, 0, 0, 0, 1, 0, 0, 0, 96,227, 37, 3, 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, 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,192,130,251, 24, 1, 0, 0, 0, +192,130,251, 24, 1, 0, 0, 0, 64,223, 37, 3, 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, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, 64,223, 37, 3, 1, 0, 0, 0, +218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,144,223, 37, 3, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, +144,223, 37, 3, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,128,242, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,253, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,112,251, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,238, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,237, 39, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,160,224, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,226, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, + 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, + 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195, 0, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 0,226, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160,224, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67, +223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0, +156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 1, 0, 0, 96,227, 37, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0,144,234, 37, 3, 1, 0, 0, 0, +224,221, 37, 3, 1, 0, 0, 0,160,224, 37, 3, 1, 0, 0, 0, 0,226, 37, 3, 1, 0, 0, 0, 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, 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, 68, 65, 84, 65, 40, 1, 0, 0, +160,228, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0,230, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 0,230, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,228, 37, 3, 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, 89, 6, 0, 0,108, 7, 0, 0, + 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 96,231, 37, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 96,231, 37, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,144,234, 37, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,227, 37, 3, 1, 0, 0, 0,160,228, 37, 3, 1, 0, 0, 0, 0,230, 37, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,240,235, 37, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,218, 37, 3, 1, 0, 0, 0, 48,121,146, 22, 1, 0, 0, 0,240,118,146, 22, 1, 0, 0, 0, 16,120,146, 22, 1, 0, 0, 0, +144,121,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, 85, 0, 0, 0, 21, 4, 0, 0, + 1, 1, 0, 6,193, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5, 15, 3, 1, 0, 0, 0,160, 18, 38, 3, 1, 0, 0, 0, +192, 22, 38, 3, 1, 0, 0, 0,208,236, 37, 3, 1, 0, 0, 0, 16, 14, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 44,255, 24, 1, 0, 0, 0, 96,216,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +208,236, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,238, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,192, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 6, 26, 0, 0, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48,238, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,242, 37, 3, 1, 0, 0, 0,208,236, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 71,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,128, 71,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 47, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 47, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 48, 3,143, 0, 30, 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, +111, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,167, 3, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 10, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,239, 37, 3, 1, 0, 0, 0, 32,241, 37, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,239, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,241, 37, 3, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115, +104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115, +104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 32,241, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,239, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,223,253,143, 0,205, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,242, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,245, 37, 3, 1, 0, 0, 0, 48,238, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, +111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 11, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,244, 37, 3, 1, 0, 0, 0, 16,244, 37, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 16,244, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, +112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111, +112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,108,101,116,101, 32, 83, 99,114,101,101,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255,144, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,245, 37, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 96, 0, 38, 3, 1, 0, 0, 0,176,242, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 77,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 35,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,160, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,160, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,161, 2,163, 0,143, 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,255, 5, 0, 0,255, 5, 0, 0,111, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 37, 3, 1, 0, 0, 0, +208,254, 37, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0,247, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +144,248, 37, 3, 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, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128,254,163, 0,104, 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, 68, 65, 84, 65, 88, 1, 0, 0, +144,248, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32,250, 37, 3, 1, 0, 0, 0, 0,247, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, +108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, +108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171,252,163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32,250, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +176,251, 37, 3, 1, 0, 0, 0,144,248, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45,253,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +176,251, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64,253, 37, 3, 1, 0, 0, 0, 32,250, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,252,163, 0, 3, 1, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64,253, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +208,254, 37, 3, 1, 0, 0, 0,176,251, 37, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +208,254, 37, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,253, 37, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, +111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, + 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 0, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240, 4, 38, 3, 1, 0, 0, 0,160,245, 37, 3, 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,255, 2, 0, 0,111, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,212, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 6, 15, 3, 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, +192, 1, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,192, 1, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, +173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 55,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,128,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 2, 19, 51, 1, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,128,191,176, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,194,128, 49,110, 18,131, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 55,224, 61,234,137, 22,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,217,167, 52, 24, 37, 18, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0,122, 67,160,144, 15,183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 2, 19, 51,255,255,127,191, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,127, 63,174, 2, 19, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,194,128, 49,110, 18,131, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 65, 55,224, 61,234,137, 22,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +243, 4, 53, 63,243, 4, 53,191, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 4, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 9, 38, 3, 1, 0, 0, 0, 96, 0, 38, 3, 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,255, 2, 0, 0, + 67, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,211, 1, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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, 80, 6, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 80, 6, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37,213, 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45,178,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128, 9, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16, 14, 38, 3, 1, 0, 0, 0,240, 4, 38, 3, 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, 3, 0, 0,255, 5, 0, 0,111, 0, 0, 0, 66, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,212, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 6, 15, 3, 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, +224, 10, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,224, 10, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, +173,161,136, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 55,224, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128,165, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 11, 0, 0,128, 63, 0, 0,128, 37, 0, 0, 0, 0, 0, 0,128, 37, 0, 0,128, 11, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 37, 0, 0,128, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +173,161,136,163, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,173,161,136, 61, 66, 55,224,163, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 55,224, 61,111, 18,131, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +215,211,111, 13,214,211,111, 65,214,211,111, 39, 0, 0, 0, 0, 23, 37, 18, 39, 23, 37, 18, 13, 23, 37, 18, 65, 0, 0, 0, 0, +255,255,121,195,255,255,121,169,255,255,121,143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128,165, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +173,161,136,163, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0,173,161,136, 61, 66, 55,224,163, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66, 55,224, 61,111, 18,131, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,252,194, 81, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0,191, 0, 0, 0,191, 0, 0, 0,191,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +143,226, 31, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 16, 14, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 9, 38, 3, 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, 3, 0, 0,255, 5, 0, 0, + 67, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,211, 1, 0, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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,112, 15, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, +112, 15, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,209,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255, 59,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128, 72, 1, 77,190, 0, 0, 0,128,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,160, 56, 49,188, 0, 0, 0, 0, + 88,126,162,190,229,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0, +110,101,239, 64,151, 62,208,192, 78,255,170, 64, 0, 0,128, 63,169, 11, 64, 63,150, 35, 18,191,244,250, 39,191, 8,165, 39,191, +131,188, 75, 63,203,225, 15, 63,180,164, 28, 63,149, 84, 28, 63,209,213, 65,188,135, 35,206, 63, 10,108,228,190, 52,247,227,190, +179, 97,189,190,167,116, 45,191,216, 49, 49, 65,152, 9, 52, 65,215,136, 32, 63,101, 79, 42, 63, 96, 26, 34,188, 0, 0, 92,181, +225,172, 52,190,162,226, 49, 62, 22,220,254, 62, 0, 0,209, 52,168,120, 21,194,107, 5, 2, 66,204,135,213,193,147,214,159,192, +177, 38, 19, 66,124,173,255,193, 97,101,210, 65,128, 40,160, 64,221,149, 47, 63, 86,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, + 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, 0, 0, 0, 0,192, 56, 49,188, 55, 53,101, 63, 52,247,227, 62, 0, 0, 0, 0, + 90, 38,173,190, 0,222,192,190,152, 9, 52,193, 0, 0,128, 63,169, 11, 64, 63,150, 35, 18,191,244,250, 39,191, 8,165, 39,191, +131,188, 75, 63,203,225, 15, 63,180,164, 28, 63,149, 84, 28, 63,209,213, 65,188,135, 35,206, 63, 10,108,228,190, 52,247,227,190, +179, 97,189,190,167,116, 45,191,216, 49, 49, 65,152, 9, 52, 65,128,248, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,248, 15, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,248, 15, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,241, 22, 72, 63, 78,162,246,190, 43, 8, 90,190, 3, 35,171,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,243, 9, 28, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,160, 18, 38, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +192, 22, 38, 3, 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, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 0, 20, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96, 21, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 96, 21, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 38, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0,192, 22, 38, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +160, 18, 38, 3, 1, 0, 0, 0, 0, 20, 38, 3, 1, 0, 0, 0, 96, 21, 38, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0, 64, 24, 38, 3, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0,112,219, 38, 3, 1, 0, 0, 0, + 96,116,146, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116, +105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 25, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0,144, 30, 38, 3, 1, 0, 0, 0,112, 38, 38, 3, 1, 0, 0, 0, +208, 38, 38, 3, 1, 0, 0, 0,240,195, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 25, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +176, 25, 38, 3, 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, + 68, 65, 84, 65, 32, 0, 0, 0,176, 25, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 26, 38, 3, 1, 0, 0, 0, + 80, 25, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 16, 26, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 26, 38, 3, 1, 0, 0, 0,176, 25, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 26, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208, 26, 38, 3, 1, 0, 0, 0, 16, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 26, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 48, 27, 38, 3, 1, 0, 0, 0,112, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 48, 27, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +144, 27, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240, 27, 38, 3, 1, 0, 0, 0, 48, 27, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240, 27, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +176, 28, 38, 3, 1, 0, 0, 0,240, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0, + 80, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,160, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 16, 29, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208, 29, 38, 3, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 2,160, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208, 29, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 48, 30, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 4, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 4, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 30, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 30, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 25, 38, 3, 1, 0, 0, 0, 16, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 30, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 31, 38, 3, 1, 0, 0, 0,144, 30, 38, 3, 1, 0, 0, 0, +176, 25, 38, 3, 1, 0, 0, 0,208, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 31, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 31, 38, 3, 1, 0, 0, 0,240, 30, 38, 3, 1, 0, 0, 0, + 16, 26, 38, 3, 1, 0, 0, 0, 48, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 31, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 32, 38, 3, 1, 0, 0, 0, 80, 31, 38, 3, 1, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0, 48, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 32, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 32, 38, 3, 1, 0, 0, 0,176, 31, 38, 3, 1, 0, 0, 0, + 48, 27, 38, 3, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 32, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 32, 38, 3, 1, 0, 0, 0, 16, 32, 38, 3, 1, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 32, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 33, 38, 3, 1, 0, 0, 0,112, 32, 38, 3, 1, 0, 0, 0, +112, 26, 38, 3, 1, 0, 0, 0,240, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 33, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 33, 38, 3, 1, 0, 0, 0,208, 32, 38, 3, 1, 0, 0, 0, + 80, 25, 38, 3, 1, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 33, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 33, 38, 3, 1, 0, 0, 0, 48, 33, 38, 3, 1, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 33, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 34, 38, 3, 1, 0, 0, 0,144, 33, 38, 3, 1, 0, 0, 0, +144, 27, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 34, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 34, 38, 3, 1, 0, 0, 0,240, 33, 38, 3, 1, 0, 0, 0, +240, 27, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 34, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 35, 38, 3, 1, 0, 0, 0, 80, 34, 38, 3, 1, 0, 0, 0, + 80, 28, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 35, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 35, 38, 3, 1, 0, 0, 0,176, 34, 38, 3, 1, 0, 0, 0, + 80, 25, 38, 3, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 35, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,208, 35, 38, 3, 1, 0, 0, 0, 16, 35, 38, 3, 1, 0, 0, 0, +240, 27, 38, 3, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +208, 35, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 48, 36, 38, 3, 1, 0, 0, 0,112, 35, 38, 3, 1, 0, 0, 0, + 80, 28, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 48, 36, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,144, 36, 38, 3, 1, 0, 0, 0,208, 35, 38, 3, 1, 0, 0, 0, +176, 28, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +144, 36, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,240, 36, 38, 3, 1, 0, 0, 0, 48, 36, 38, 3, 1, 0, 0, 0, + 16, 29, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +240, 36, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 80, 37, 38, 3, 1, 0, 0, 0,144, 36, 38, 3, 1, 0, 0, 0, +240, 27, 38, 3, 1, 0, 0, 0,208, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 80, 37, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,176, 37, 38, 3, 1, 0, 0, 0,240, 36, 38, 3, 1, 0, 0, 0, +144, 27, 38, 3, 1, 0, 0, 0,208, 29, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +176, 37, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 16, 38, 38, 3, 1, 0, 0, 0, 80, 37, 38, 3, 1, 0, 0, 0, + 48, 27, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 16, 38, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,112, 38, 38, 3, 1, 0, 0, 0,176, 37, 38, 3, 1, 0, 0, 0, +112, 26, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +112, 38, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 38, 38, 3, 1, 0, 0, 0, +208, 29, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +208, 38, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,112, 42, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0,176, 25, 38, 3, 1, 0, 0, 0, 16, 26, 38, 3, 1, 0, 0, 0, 48, 27, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0,240,218, 38, 3, 1, 0, 0, 0,240,218, 38, 3, 1, 0, 0, 0, +176, 39, 38, 3, 1, 0, 0, 0, 16, 41, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208, 56, 40, 3, 1, 0, 0, 0,144,246,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 39, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16, 41, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 41, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 39, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0,112, 42, 38, 3, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,224, 95, 38, 3, 1, 0, 0, 0,208, 38, 38, 3, 1, 0, 0, 0,240, 27, 38, 3, 1, 0, 0, 0, +208, 29, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0,112, 26, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 4, 4,144, 1, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 32, 15, 3, 1, 0, 0, 0, 0, 82, 38, 3, 1, 0, 0, 0,128, 94, 38, 3, 1, 0, 0, 0, 80, 43, 38, 3, 1, 0, 0, 0, +176, 44, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,240, 36, 3, 1, 0, 0, 0, +112,245,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80, 43, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176, 44, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,200, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,144, 1, 31, 0,144, 1, 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,241, 5, 0, 0,128, 7, 0, 0,229, 2, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 44, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 43, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 67, 0, 0, 62,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,127,191, 67,255,191, 52,196, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,228, 2, 0, 0, + 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,228, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,144, 1,229, 2,127, 1,211, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 34, 16, 26, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, 0, 0, 0, 0,228, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 1,229, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 46, 38, 3, 1, 0, 0, 0, +112, 80, 38, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 46, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160, 47, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,220,255,126, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +160, 47, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 49, 38, 3, 1, 0, 0, 0, 16, 46, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,114,101,110,100,101,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 76, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 48, 49, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192, 50, 38, 3, 1, 0, 0, 0,160, 47, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,111,255, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +192, 50, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 52, 38, 3, 1, 0, 0, 0, 48, 49, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,100,105,109,101,110,115,105, +111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 76, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80, 52, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224, 53, 38, 3, 1, 0, 0, 0,192, 50, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254, 76, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +224, 53, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 55, 38, 3, 1, 0, 0, 0, 80, 52, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,104, 97,100,105,110,103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 76, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 55, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 57, 38, 3, 1, 0, 0, 0,224, 53, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253, 76, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 0, 57, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 58, 38, 3, 1, 0, 0, 0,112, 55, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,101,114,102,111,114,109, + 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,144, 58, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32, 60, 38, 3, 1, 0, 0, 0, 0, 57, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253, 76, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 32, 60, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 61, 38, 3, 1, 0, 0, 0,144, 58, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253, 76, 1, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 61, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64, 63, 38, 3, 1, 0, 0, 0, 32, 60, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 50,255,126, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 64, 63, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 64, 38, 3, 1, 0, 0, 0,176, 61, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95, +115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121,105,110,103, 95, +115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83,101,116,115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254,126, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 64, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96, 66, 38, 3, 1, 0, 0, 0, 64, 63, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,153,254,126, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96, 66, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 67, 38, 3, 1, 0, 0, 0,208, 64, 38, 3, 1, 0, 0, 0, + 64, 47,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,126, 1, 61, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240, 67, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128, 69, 38, 3, 1, 0, 0, 0, 96, 66, 38, 3, 1, 0, 0, 0,192, 34,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,127,253,126, 1,240, 1, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +128, 69, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16, 71, 38, 3, 1, 0, 0, 0,240, 67, 38, 3, 1, 0, 0, 0, +128,241,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115, +105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254,126, 1,178, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16, 71, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160, 72, 38, 3, 1, 0, 0, 0,128, 69, 38, 3, 1, 0, 0, 0,112,108,242, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83,254,126, 1, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +160, 72, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48, 74, 38, 3, 1, 0, 0, 0, 16, 71, 38, 3, 1, 0, 0, 0, +160, 93,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253,126, 1,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48, 74, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192, 75, 38, 3, 1, 0, 0, 0,160, 72, 38, 3, 1, 0, 0, 0,128, 98,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84,253,126, 1,105, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192, 75, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80, 77, 38, 3, 1, 0, 0, 0, 48, 74, 38, 3, 1, 0, 0, 0, + 64,105,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114, +109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 80, 77, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224, 78, 38, 3, 1, 0, 0, 0,192, 75, 38, 3, 1, 0, 0, 0, 32,107,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36,253,126, 1, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, +224, 78, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 80, 38, 3, 1, 0, 0, 0, 80, 77, 38, 3, 1, 0, 0, 0, +128,109,243, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,253,126, 1, 0, 0, 20, 0, 0, 0, 4, 0, 7, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,112, 80, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 78, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,135,255,126, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0, + 0, 82, 38, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 96, 87, 38, 3, 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, 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, 2, 0, 1, 0, 0, 0, 0, 0,176,167, 20, 26, 1, 0, 0, 0, +255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64, 83, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,160, 84, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, + 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, + 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 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,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160, 84, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 86, 38, 3, 1, 0, 0, 0, 64, 83, 38, 3, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0, 86, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 84, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, + 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 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, 68, 65, 84, 65,240, 0, 0, 0, 96, 87, 38, 3, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0,128, 94, 38, 3, 1, 0, 0, 0, 0, 82, 38, 3, 1, 0, 0, 0, 64, 83, 38, 3, 1, 0, 0, 0, + 0, 86, 38, 3, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +144, 88, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,240, 89, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +240, 89, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 88, 38, 3, 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, 89, 6, 0, 0,108, 7, 0, 0, + 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 80, 91, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 80, 91, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, + 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,128, 94, 38, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 87, 38, 3, 1, 0, 0, 0,144, 88, 38, 3, 1, 0, 0, 0,240, 89, 38, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,224, 95, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 96,130, 38, 3, 1, 0, 0, 0, +112, 42, 38, 3, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, +240, 27, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 2, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,159, 1, 0, 0, + 18, 18,255, 2,160, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 76, 15, 3, 1, 0, 0, 0,128, 99, 38, 3, 1, 0, 0, 0, + 96,129, 38, 3, 1, 0, 0, 0,192, 96, 38, 3, 1, 0, 0, 0, 32, 98, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,251,249, 24, 1, 0, 0, 0,240,232,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +192, 96, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 98, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 63, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 2, 26, 0,255, 2, 26, 0, 0, 0, + 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, 2, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 78, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32, 98, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 96, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0,128, 63, 68, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0,128, 59, 68, 0, 0, 0, 0, 0, 0,195, 67, +238, 2, 0, 0,255, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,237, 2, 0, 0, 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,255, 2,134, 1,238, 2,134, 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,241, 2, 0, 0,239, 5, 0, 0, + 26, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2,134, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 77, 15, 3, 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, 68, 65, 84, 65,112, 0, 0, 0, +128, 99, 38, 3, 1, 0, 0, 0,177, 0, 0, 0, 1, 0, 0, 0,240,102, 38, 3, 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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0,192,186,153, 22, 1, 0, 0, 0, +112,243,140, 22, 1, 0, 0, 0, 48,171,153, 22, 1, 0, 0, 0, 48,171,153, 22, 1, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48,100, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,101, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, + 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,144,101, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,100, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, + 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5, +130, 1,240, 5,130, 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,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5,130, 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, + 68, 65, 84, 65,144, 2, 0, 0,240,102, 38, 3, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0,128,108, 38, 3, 1, 0, 0, 0, +128, 99, 38, 3, 1, 0, 0, 0, 48,100, 38, 3, 1, 0, 0, 0,144,101, 38, 3, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,192,105, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 32,107, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 32,107, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,105, 38, 3, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, +134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 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,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 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, 68, 65, 84, 65, 32, 1, 0, 0,128,108, 38, 3, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0, + 0,114, 38, 3, 1, 0, 0, 0,240,102, 38, 3, 1, 0, 0, 0,192,105, 38, 3, 1, 0, 0, 0, 32,107, 38, 3, 1, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,224,109, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,111, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, + 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, + 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, + 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5, 27, 0, 0, 0, 1, 0, 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,112,249,236, 24, 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,128,166, 39, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 64,111, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,160,112, 38, 3, 1, 0, 0, 0, +224,109, 38, 3, 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, - 80,159, 39, 3, 1, 0, 0, 0,144,159, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 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,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,160,112, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64,111, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, + 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5, +163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5,163, 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, + 68, 65, 84, 65,240, 0, 0, 0, 0,114, 38, 3, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, 64,125, 38, 3, 1, 0, 0, 0, +128,108, 38, 3, 1, 0, 0, 0,224,109, 38, 3, 1, 0, 0, 0,160,112, 38, 3, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,115, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144,116, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,116, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,117, 38, 3, 1, 0, 0, 0, 48,115, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,117, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,119, 38, 3, 1, 0, 0, 0,144,116, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,119, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,120, 38, 3, 1, 0, 0, 0,240,117, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,120, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,119, 38, 3, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, + 16,122, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 16,122, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, +147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53, +215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, +147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +218,210,190, 58, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 64,125, 38, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 96,129, 38, 3, 1, 0, 0, 0, 0,114, 38, 3, 1, 0, 0, 0, + 48,115, 38, 3, 1, 0, 0, 0,176,120, 38, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,126, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,128, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,128, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,126, 38, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 96,129, 38, 3, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,125, 38, 3, 1, 0, 0, 0,160,126, 38, 3, 1, 0, 0, 0, + 0,128, 38, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 96,130, 38, 3, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0,112,161, 38, 3, 1, 0, 0, 0,224, 95, 38, 3, 1, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0, +208, 26, 38, 3, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0,176, 28, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0,161, 1, 0, 0, 21, 4, 0, 0, 9, 9,240, 5,117, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 66, 15, 3, 1, 0, 0, 0, 0,134, 38, 3, 1, 0, 0, 0,112,160, 38, 3, 1, 0, 0, 0, 64,131, 38, 3, 1, 0, 0, 0, +160,132, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,251,249, 24, 1, 0, 0, 0, + 32, 87, 40, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,131, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160,132, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,161, 1, 0, 0,186, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 68, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,132, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,131, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68, +170, 86,234, 67, 86, 74,131, 68,162, 32, 58, 67,175,111,208, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 4, 10, 0,240, 5, 91, 2,240, 5, 91, 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,239, 5, 0, 0,187, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 67, 15, 3, 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, 68, 65, 84, 65,144, 2, 0, 0, 0,134, 38, 3, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, +144,139, 38, 3, 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, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,208,136, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 48,138, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,138, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,136, 38, 3, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0,240, 5, 0, 0, + 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, + 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, 92, 2,223, 5, 74, 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,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 92, 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, 68, 65, 84, 65, 32, 1, 0, 0,144,139, 38, 3, 1, 0, 0, 0, +173, 0, 0, 0, 1, 0, 0, 0, 16,145, 38, 3, 1, 0, 0, 0, 0,134, 38, 3, 1, 0, 0, 0,208,136, 38, 3, 1, 0, 0, 0, + 48,138, 38, 3, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,140, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80,142, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,142, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,143, 38, 3, 1, 0, 0, 0,240,140, 38, 3, 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,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,143, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,142, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, 16,145, 38, 3, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, + 80,156, 38, 3, 1, 0, 0, 0,144,139, 38, 3, 1, 0, 0, 0,240,140, 38, 3, 1, 0, 0, 0,176,143, 38, 3, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 64,146, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,160,147, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,147, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,149, 38, 3, 1, 0, 0, 0, 64,146, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,149, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,150, 38, 3, 1, 0, 0, 0,160,147, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,150, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192,151, 38, 3, 1, 0, 0, 0, 0,149, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,151, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,150, 38, 3, 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,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 32,153, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 32,153, 38, 3, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61, +170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195, +205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, + 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 80,156, 38, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,112,160, 38, 3, 1, 0, 0, 0, + 16,145, 38, 3, 1, 0, 0, 0, 64,146, 38, 3, 1, 0, 0, 0,192,151, 38, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +176,157, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,159, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 16,159, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,157, 38, 3, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, +112,160, 38, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,156, 38, 3, 1, 0, 0, 0, +176,157, 38, 3, 1, 0, 0, 0, 16,159, 38, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +112,161, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,240,195, 38, 3, 1, 0, 0, 0, 96,130, 38, 3, 1, 0, 0, 0, + 80, 25, 38, 3, 1, 0, 0, 0, 80, 28, 38, 3, 1, 0, 0, 0,112, 29, 38, 3, 1, 0, 0, 0, 16, 29, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0,159, 1, 0, 0, 18, 18,240, 2,160, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 76, 15, 3, 1, 0, 0, 0, 16,165, 38, 3, 1, 0, 0, 0,240,194, 38, 3, 1, 0, 0, 0, + 80,162, 38, 3, 1, 0, 0, 0,176,163, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 84, 40, 3, 1, 0, 0, 0, 48,172,252, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,162, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,163, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 60, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 2, 26, 0,240, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144, 78, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,163, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,162, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,192, 59, 68, + 0, 0, 0, 0, 0, 0, 9, 67, 0, 0, 0, 0, 0,192, 55, 68, 0, 0, 0, 0, 0, 0,195, 67,223, 2, 0, 0,240, 2, 0, 0, + 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 2, 0, 0, + 0, 0, 0, 0,133, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 2, 0, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,240, 2,134, 1,223, 2,134, 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,239, 2, 0, 0, 26, 0, 0, 0,159, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2,134, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 77, 15, 3, 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, 68, 65, 84, 65,112, 0, 0, 0, 16,165, 38, 3, 1, 0, 0, 0, +177, 0, 0, 0, 1, 0, 0, 0,128,168, 38, 3, 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, 18, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 64, 47,152, 22, 1, 0, 0, 0,240, 17,151, 22, 1, 0, 0, 0, +240,184, 63, 25, 1, 0, 0, 0,240,184, 63, 25, 1, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +192,165, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,167, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, + 32,167, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,165, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 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,239, 5, 0, 0, + 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 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, 68, 65, 84, 65,144, 2, 0, 0, +128,168, 38, 3, 1, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 16,174, 38, 3, 1, 0, 0, 0, 16,165, 38, 3, 1, 0, 0, 0, +192,165, 38, 3, 1, 0, 0, 0, 32,167, 38, 3, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 80,171, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,172, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, + 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, + 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,176,172, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,171, 38, 3, 1, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, + 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, +130, 1,223, 5,112, 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,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240, 5,130, 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, + 68, 65, 84, 65, 32, 1, 0, 0, 16,174, 38, 3, 1, 0, 0, 0,173, 0, 0, 0, 1, 0, 0, 0,144,179, 38, 3, 1, 0, 0, 0, +128,168, 38, 3, 1, 0, 0, 0, 80,171, 38, 3, 1, 0, 0, 0,176,172, 38, 3, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 52, 81, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +112,175, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,176, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 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,239, 5, 0, 0, + 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +208,176, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,178, 38, 3, 1, 0, 0, 0,112,175, 38, 3, 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,239, 5, 0, 0,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 48,178, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,176, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 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,239, 5, 0, 0, +112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 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, 68, 65, 84, 65,240, 0, 0, 0, +144,179, 38, 3, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,208,190, 38, 3, 1, 0, 0, 0, 16,174, 38, 3, 1, 0, 0, 0, +112,175, 38, 3, 1, 0, 0, 0, 48,178, 38, 3, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192,180, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,182, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, + 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 32,182, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,183, 38, 3, 1, 0, 0, 0, +192,180, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 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, +153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,128,183, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,184, 38, 3, 1, 0, 0, 0, + 32,182, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,224,184, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 64,186, 38, 3, 1, 0, 0, 0, +128,183, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +122, 2,163, 0,104, 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, +128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 64,186, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224,184, 38, 3, 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, +153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 4, 24, 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,160,187, 38, 3, 1, 0, 0, 0, + 68, 65, 84, 65,248, 2, 0, 0,160,187, 38, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, +222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, +224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, + 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, +222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,208,190, 38, 3, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0,240,194, 38, 3, 1, 0, 0, 0,144,179, 38, 3, 1, 0, 0, 0,192,180, 38, 3, 1, 0, 0, 0, + 64,186, 38, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 48,194,129, 3, 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, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 48,192, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144,193, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,193, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,192, 38, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,240,194, 38, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,190, 38, 3, 1, 0, 0, 0, 48,192, 38, 3, 1, 0, 0, 0,144,193, 38, 3, 1, 0, 0, 0, + 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, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,240,195, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,161, 38, 3, 1, 0, 0, 0,208, 29, 38, 3, 1, 0, 0, 0,144, 27, 38, 3, 1, 0, 0, 0, + 48, 27, 38, 3, 1, 0, 0, 0, 48, 30, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 5, 0, 0,128, 7, 0, 0, + 5, 3, 0, 0, 21, 4, 0, 0, 3, 3,144, 1, 17, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 15, 3, 1, 0, 0, 0, +144,199, 38, 3, 1, 0, 0, 0,144,217, 38, 3, 1, 0, 0, 0,208,196, 38, 3, 1, 0, 0, 0, 48,198, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,102,253, 24, 1, 0, 0, 0, 0, 90, 40, 3, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,208,196, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,198, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,200, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, + 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,144, 1, + 26, 0,144, 1, 26, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 5, 3, 0, 0, 30, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48,198, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,196, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,191, 67, + 0, 0,101,195, 0, 0, 0, 0,127, 1, 0, 0,144, 1, 0, 0, 18, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 18, 0, 0, 0,246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,144, 1, +247, 0,127, 1,229, 0, 0, 0, 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, 5, 0, 0,128, 7, 0, 0, 31, 3, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 1,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0,144,199, 38, 3, 1, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 16,205, 38, 3, 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, 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,240, 23, 22, 26, 1, 0, 0, 0,240, 23, 22, 26, 1, 0, 0, 0,240,200, 38, 3, 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, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,240,200, 38, 3, 1, 0, 0, 0,218, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 64,201, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 64,201, 38, 3, 1, 0, 0, 0,217, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,200,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,112,253, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 96,246, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,112,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,206,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 48,238, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 48,194,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 96,237, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,202, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,203, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 44, 1, 31, 0, 44, 1, 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,117, 4, 0, 0,160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 31, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,203, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,202, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, + 0, 0, 62,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,246,194, 0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, + 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, + 18, 0, 0, 0,140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 44, 1,141, 0, 27, 1,123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,160, 5, 0, 0, 77, 2, 0, 0,217, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 1, 0, 0, 16,205, 38, 3, 1, 0, 0, 0, +162, 0, 0, 0, 1, 0, 0, 0,112,210, 38, 3, 1, 0, 0, 0,144,199, 38, 3, 1, 0, 0, 0, 80,202, 38, 3, 1, 0, 0, 0, +176,203, 38, 3, 1, 0, 0, 0, 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, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 80,206, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176,207, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, + 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, + 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 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,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,207, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16,209, 38, 3, 1, 0, 0, 0, 80,206, 38, 3, 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,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,209, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176,207, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, + 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 8, 0,228, 1,124, 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,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 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, 68, 65, 84, 65,240, 0, 0, 0,112,210, 38, 3, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0, +144,217, 38, 3, 1, 0, 0, 0, 16,205, 38, 3, 1, 0, 0, 0, 80,206, 38, 3, 1, 0, 0, 0, 16,209, 38, 3, 1, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,211, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,213, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,213, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,211, 38, 3, 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, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 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, 96,214, 38, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 96,214, 38, 3, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, + 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, +184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 32, 1, 0, 0,144,217, 38, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112,210, 38, 3, 1, 0, 0, 0,160,211, 38, 3, 1, 0, 0, 0, 0,213, 38, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, +159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +112,219, 38, 3, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, 96,129, 39, 3, 1, 0, 0, 0, 64, 24, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0, +160,224, 38, 3, 1, 0, 0, 0, 0,225, 38, 3, 1, 0, 0, 0,192,231, 38, 3, 1, 0, 0, 0, 32,232, 38, 3, 1, 0, 0, 0, + 64, 82, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,220, 38, 3, 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, 68, 65, 84, 65, 32, 0, 0, 0, +224,220, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,160,221, 38, 3, 1, 0, 0, 0,224,220, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,221, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0,222, 38, 3, 1, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0, +160,221, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 96,222, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 7, 80, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +128,223, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, + 32,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 80, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +224,223, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 80, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0,225, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,225, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224,220, 38, 3, 1, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96,225, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,225, 38, 3, 1, 0, 0, 0, + 0,225, 38, 3, 1, 0, 0, 0,224,220, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192,225, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,226, 38, 3, 1, 0, 0, 0, + 96,225, 38, 3, 1, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32,226, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,226, 38, 3, 1, 0, 0, 0, +192,225, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,128,226, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,226, 38, 3, 1, 0, 0, 0, + 32,226, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,224,226, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,227, 38, 3, 1, 0, 0, 0, +128,226, 38, 3, 1, 0, 0, 0,160,221, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 64,227, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,227, 38, 3, 1, 0, 0, 0, +224,226, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160,227, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,228, 38, 3, 1, 0, 0, 0, + 64,227, 38, 3, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0,228, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,228, 38, 3, 1, 0, 0, 0, +160,227, 38, 3, 1, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96,228, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,228, 38, 3, 1, 0, 0, 0, + 0,228, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192,228, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 32,229, 38, 3, 1, 0, 0, 0, + 96,228, 38, 3, 1, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 32,229, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,128,229, 38, 3, 1, 0, 0, 0, +192,228, 38, 3, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,128,229, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,224,229, 38, 3, 1, 0, 0, 0, + 32,229, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,224,229, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 64,230, 38, 3, 1, 0, 0, 0, +128,229, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 64,230, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,160,230, 38, 3, 1, 0, 0, 0, +224,229, 38, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,160,230, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0,231, 38, 3, 1, 0, 0, 0, + 64,230, 38, 3, 1, 0, 0, 0,160,221, 38, 3, 1, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 0,231, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 96,231, 38, 3, 1, 0, 0, 0, +160,230, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 96,231, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0,192,231, 38, 3, 1, 0, 0, 0, + 0,231, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,192,231, 38, 3, 1, 0, 0, 0,192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,231, 38, 3, 1, 0, 0, 0, 64,224, 38, 3, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 32,232, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,192,235, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0,224,220, 38, 3, 1, 0, 0, 0, 64,221, 38, 3, 1, 0, 0, 0, + 96,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, + 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,240, 35, 15, 3, 1, 0, 0, 0,224,128, 39, 3, 1, 0, 0, 0, +224,128, 39, 3, 1, 0, 0, 0, 0,233, 38, 3, 1, 0, 0, 0, 96,234, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,250, 36, 3, 1, 0, 0, 0,112, 98,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 0,233, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 96,234, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 96,234, 38, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 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, + 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, +192,235, 38, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0,128, 29, 39, 3, 1, 0, 0, 0, 32,232, 38, 3, 1, 0, 0, 0, + 64,224, 38, 3, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0,160,221, 38, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, 4, 4,116, 1, 80, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0, 16, 13, 39, 3, 1, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0, +160,236, 38, 3, 1, 0, 0, 0, 0,238, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +224, 92, 40, 3, 1, 0, 0, 0, 48,232,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,160,236, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0,238, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,192, 65, 0, 0,144, 65, 0, 0,149, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 61, 68, 0, 0,184, 65, 0,192, 61, 68, 0, 0,184, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 24, 1, 26, 0, 24, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 0, 0,128, 7, 0, 0, 79, 1, 0, 0, 79, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 0,238, 38, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,236, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,128,178, 67, + 0, 0, 12,196, 0, 0, 0, 0, 0, 0, 0, 0,182,145,178, 67, 47,245,159,195, 0, 0, 0, 0, 99, 1, 0, 0,116, 1, 0, 0, + 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 98, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 98, 1, 0, 0, + 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,116, 1, 80, 1, 99, 1, 62, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 31,148, 22, 1, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 13, 6, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 1, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,239, 38, 3, 1, 0, 0, 0,128, 11, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96,239, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,240,240, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 34, 15, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,101, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0,240,240, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128,242, 38, 3, 1, 0, 0, 0, + 96,239, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 28, 1, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,128,242, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 16,244, 38, 3, 1, 0, 0, 0,240,240, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255, 28, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 88, 1, 0, 0, 16,244, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,160,245, 38, 3, 1, 0, 0, 0, +128,242, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111, +110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,254, 28, 1,178, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,160,245, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 48,247, 38, 3, 1, 0, 0, 0, 16,244, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,254, 28, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 48,247, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192,248, 38, 3, 1, 0, 0, 0, +160,245, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,253, 28, 1,102, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,192,248, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 80,250, 38, 3, 1, 0, 0, 0, 48,247, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,253, 28, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0, 80,250, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224,251, 38, 3, 1, 0, 0, 0, +192,248, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97, +110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,253, 28, 1, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224,251, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,112,253, 38, 3, 1, 0, 0, 0, 80,250, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, +103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,253, 28, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,112,253, 38, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0,255, 38, 3, 1, 0, 0, 0, +224,251, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, + 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,253, 28, 1, 0, 0, + 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, 0,255, 38, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,144, 0, 39, 3, 1, 0, 0, 0,112,253, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,109,101,115,104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95,109,101,115,104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255, 89, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,144, 0, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 32, 2, 39, 3, 1, 0, 0, 0, + 0,255, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,111,114,109, 97,108,115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102,255, 89, 1, 58, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 32, 2, 39, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,176, 3, 39, 3, 1, 0, 0, 0,144, 0, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,255, 89, 1, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,176, 3, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 64, 5, 39, 3, 1, 0, 0, 0, + 32, 2, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,101,114,116,101,120, 32, 71, +114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,198,254, 89, 1, 76, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 5, 39, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,208, 6, 39, 3, 1, 0, 0, 0,176, 3, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,104, 97,112,101, 95,107,101,121,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,104, 97,112,101, 95,107,101,121,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,112,101, 32, 75,101,121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181,254, 89, 1, 69, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,208, 6, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 96, 8, 39, 3, 1, 0, 0, 0, + 64, 5, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, +117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 32, 84,101,120,116,117, +114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157,254, 89, 1, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 96, 8, 39, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0,240, 9, 39, 3, 1, 0, 0, 0,208, 6, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95, 99,111,108,111,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95, 99,111,108,111,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 86,101,114,116,101,120, 32, 67,111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,254, 89, 1, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 88, 1, 0, 0,240, 9, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,128, 11, 39, 3, 1, 0, 0, 0, + 96, 8, 39, 3, 1, 0, 0, 0,240, 19,142, 22, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, + 80, 84, 95, 99,111,110,116,101,120,116, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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,255,101, 1,204, 0, + 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,128, 11, 39, 3, 1, 0, 0, 0, +193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 9, 39, 3, 1, 0, 0, 0, 32,158,243, 24, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 88, 84, 85, 82, 69, 95, 80, 84, 95,105,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 73,110,102,108,117,101,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212,253,101, 1, 36, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 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, + 68, 65, 84, 65, 0, 1, 0, 0, 16, 13, 39, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, 96, 24, 39, 3, 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, 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, 6, 0, 6, 0, 6, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 48, 22, 22, 26, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80, 14, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 15, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,211, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 1, 26, 0,167, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0, + 17, 1, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +176, 15, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16, 17, 39, 3, 1, 0, 0, 0, 80, 14, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,141, 2, 0, 0,141, 2, 0, 0, + 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,189, 0, 0, 0, 5, 0, + 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 16, 17, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112, 18, 39, 3, 1, 0, 0, 0,176, 15, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 51, 4, 0, 0, + 43, 1, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +112, 18, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208, 19, 39, 3, 1, 0, 0, 0, 16, 17, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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, 51, 4, 0, 0, 51, 4, 0, 0, + 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +208, 19, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 18, 39, 3, 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,141, 2, 0, 0, 51, 4, 0, 0, + 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 1,189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 21, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 48, 21, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,169,170, 28, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 56,117, 85, 63,240,246, 70,188, 0,224, 32,182, + 42, 13, 40,190, 78, 1,162, 61,203, 52,187, 62, 0, 0,149, 52,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 53,194,123,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,208,166,141, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96, 24, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +128, 28, 39, 3, 1, 0, 0, 0, 16, 13, 39, 3, 1, 0, 0, 0, 80, 14, 39, 3, 1, 0, 0, 0,208, 19, 39, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192, 25, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32, 27, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 32, 27, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 25, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0,128, 28, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 24, 39, 3, 1, 0, 0, 0,192, 25, 39, 3, 1, 0, 0, 0, 32, 27, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,128, 29, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 32, 52, 39, 3, 1, 0, 0, 0, +192,235, 38, 3, 1, 0, 0, 0,128,220, 38, 3, 1, 0, 0, 0, 0,222, 38, 3, 1, 0, 0, 0, 32,223, 38, 3, 1, 0, 0, 0, +224,223, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139, 4, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, + 6, 6,140, 4, 22, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 22, 15, 3, 1, 0, 0, 0, 16, 36, 39, 3, 1, 0, 0, 0, + 32, 51, 39, 3, 1, 0, 0, 0, 96, 30, 39, 3, 1, 0, 0, 0,176, 34, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240,118, 37, 3, 1, 0, 0, 0,224,129, 36, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 96, 30, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192, 31, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,145, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,139, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,140, 4, 26, 0,140, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,139, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 28, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +192, 31, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176, 34, 39, 3, 1, 0, 0, 0, 96, 30, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 75, 67, 0,128,122,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 1,128,122,196, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,251, 3, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,252, 3,203, 0,234, 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,219, 0, 0, 0, + 26, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,252, 3, 0, 0, 4, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 24, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 39, 3, 1, 0, 0, 0, 32, 33, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32, 33, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 27, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,176, 34, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, +154,153,121,191,205,204,252, 63, 0, 0,140,191, 0, 0, 6, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 3, 0, 0, 0, 0, 0, 0,252, 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,220, 0, 0, 0,139, 4, 0, 0, 26, 0, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 3,252, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 23, 15, 3, 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, 68, 65, 84, 65,168, 0, 0, 0, 16, 36, 39, 3, 1, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, + 0, 47, 39, 3, 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, + 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,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 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,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240, 36, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 80, 38, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80, 38, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +176, 39, 39, 3, 1, 0, 0, 0,240, 36, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176, 39, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 16, 41, 39, 3, 1, 0, 0, 0, 80, 38, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16, 41, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +112, 42, 39, 3, 1, 0, 0, 0,176, 39, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112, 42, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 41, 39, 3, 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,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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, +208, 43, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,208, 43, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, +226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53, +215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, +232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, +172,148, 0, 59, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 0, 47, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 32, 51, 39, 3, 1, 0, 0, 0, 16, 36, 39, 3, 1, 0, 0, 0, +240, 36, 39, 3, 1, 0, 0, 0,112, 42, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 96, 48, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192, 49, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,192, 49, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 48, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, 32, 51, 39, 3, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 39, 3, 1, 0, 0, 0, 96, 48, 39, 3, 1, 0, 0, 0, +192, 49, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 32, 52, 39, 3, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 64, 82, 39, 3, 1, 0, 0, 0,128, 29, 39, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0, + 32,223, 38, 3, 1, 0, 0, 0, 96,222, 38, 3, 1, 0, 0, 0,192,222, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +141, 4, 0, 0,128, 7, 0, 0, 81, 1, 0, 0, 21, 4, 0, 0, 1, 1,244, 2,197, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 5, 15, 3, 1, 0, 0, 0, 32, 77, 39, 3, 1, 0, 0, 0, 64, 81, 39, 3, 1, 0, 0, 0, 0, 53, 39, 3, 1, 0, 0, 0, +144, 72, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 11,251, 24, 1, 0, 0, 0, +192,179,251, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0, 53, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 96, 54, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 61, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,244, 2, 26, 0,244, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0, 81, 1, 0, 0,106, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,244, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176, 13, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96, 54, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +224, 58, 39, 3, 1, 0, 0, 0, 0, 53, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,141, 4, 0, 0,141, 4, 0, 0,107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,171, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 16, 10, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 55, 39, 3, 1, 0, 0, 0, + 80, 57, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 55, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80, 57, 39, 3, 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, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 80, 57, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 55, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, +111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, +111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84,111,111,108,115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,223,253,143, 0,205, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,224, 58, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +208, 61, 39, 3, 1, 0, 0, 0, 96, 54, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0,128, 7, 0, 0,107, 1, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +224, 11, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 60, 39, 3, 1, 0, 0, 0, + 64, 60, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, 64, 60, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 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, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 78,101,119, 32, 83, 99,114,101,101,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,255,144, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +208, 61, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144, 72, 39, 3, 1, 0, 0, 0,224, 58, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,192, 77,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,235,195, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,232, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,232, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,233, 1,163, 0,215, 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,128, 7, 0, 0,128, 7, 0, 0, +107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 7, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 63, 39, 3, 1, 0, 0, 0, 0, 71, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 48, 63, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,192, 64, 39, 3, 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, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,254,163, 0,104, 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, 68, 65, 84, 65, 88, 1, 0, 0,192, 64, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 80, 66, 39, 3, 1, 0, 0, 0, 48, 63, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,171,252,163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 80, 66, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,224, 67, 39, 3, 1, 0, 0, 0,192, 64, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, + 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,253,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,224, 67, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +112, 69, 39, 3, 1, 0, 0, 0, 80, 66, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18,252,163, 0, 3, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +112, 69, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 71, 39, 3, 1, 0, 0, 0,224, 67, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, +111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114, +111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 0, 71, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112, 69, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,205,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +144, 72, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 61, 39, 3, 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,141, 4, 0, 0,128, 7, 0, 0, +107, 1, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 2,171, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 6, 15, 3, 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,240, 73, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, +240, 73, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,160,246,154, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, + 52,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +188,173, 54, 64,136, 95,161,191,147,231,198, 63, 0, 0,128, 63,178,157,229, 62,131, 5,249,190,222,160, 81,191,184,158, 81,191, +117, 90,127, 63,195, 15,112, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,251,178,138, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,154,211, 93, 64, 0, 25, 95, 64, 52,240,191, 62,121,116, 85, 63,112,188, 70,188, 0, 0,180,181, +162,230,169,190,175,201, 35, 62,102, 67, 61, 63, 0, 0, 90, 53, 37,182, 14,195,119, 34,124, 66, 49, 99,155,194,199,253, 71,194, +254,229, 13, 67,182,178,122,194,141,128,154, 66,213,255, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63,178,157,229, 62,131, 5,249,190,222,160, 81,191,184,158, 81,191, +117, 90,127, 63,195, 15,112, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,251,178,138, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0,154,211, 93, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, + 0, 25, 95, 64,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,208,131, 30, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 32, 77, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, + 64, 81, 39, 3, 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, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,128, 78, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224, 79, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,224, 79, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128, 78, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0, 64, 81, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 77, 39, 3, 1, 0, 0, 0,128, 78, 39, 3, 1, 0, 0, 0,224, 79, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 64, 82, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 52, 39, 3, 1, 0, 0, 0,224,223, 38, 3, 1, 0, 0, 0,128,223, 38, 3, 1, 0, 0, 0,160,224, 38, 3, 1, 0, 0, 0, + 64,224, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0, 0, 0, 0, 0, 79, 1, 0, 0, + 4, 4,127, 1, 80, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 32, 15, 3, 1, 0, 0, 0,112,112, 39, 3, 1, 0, 0, 0, +224,127, 39, 3, 1, 0, 0, 0, 32, 83, 39, 3, 1, 0, 0, 0,128, 84, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16,198,254, 24, 1, 0, 0, 0, 96, 80, 42, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 32, 83, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128, 84, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,192, 65, 0, 0, 0, 0, 0,128,133, 67, 0, 0, 0, 0, 0, 0,192, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,192, 61, 68, 0, 0,184, 65, 0,192, 61, 68, 0, 0,184, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 11, 1, 24, 0, 11, 1, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0, + 79, 1, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16, 35, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, +128, 84, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 83, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0,184, 67, 0, 0,179,195, 0, 0, 0, 0, 0, 0, 0, 0, 91, 26,184, 67, 83,245,159,195, 0, 0, 0, 0, +110, 1, 0, 0,127, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0,109, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,109, 1, 0, 0, 18, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,127, 1, 80, 1,110, 1, 62, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 53, 20, 26, 1, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0,141, 4, 0, 0, 11, 6, 0, 0, + 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127, 1, 80, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 33, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,224, 85, 39, 3, 1, 0, 0, 0,224,110, 39, 3, 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, 68, 65, 84, 65, 88, 1, 0, 0, +224, 85, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,112, 87, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 34, 15, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, +120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,112, 1, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,112, 87, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 0, 89, 39, 3, 1, 0, 0, 0,224, 85, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 1,171,255, 84, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 0, 89, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,144, 90, 39, 3, 1, 0, 0, 0,112, 87, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,232,255, 84, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,144, 90, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 32, 92, 39, 3, 1, 0, 0, 0, 0, 89, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +188, 2, 54,255, 84, 1,178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 32, 92, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,176, 93, 39, 3, 1, 0, 0, 0,144, 90, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, +105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4,174,255, 84, 1, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0,176, 93, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 64, 95, 39, 3, 1, 0, 0, 0, 32, 92, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100, 5,130,255, 84, 1,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 88, 1, 0, 0, + 64, 95, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,208, 96, 39, 3, 1, 0, 0, 0,176, 93, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 6,127,255, 84, 1,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,208, 96, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, + 96, 98, 39, 3, 1, 0, 0, 0, 64, 95, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 8,232,255, 84, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, + 96, 98, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0,240, 99, 39, 3, 1, 0, 0, 0,208, 96, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, +114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8,232,255, 84, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0,240, 99, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +128,101, 39, 3, 1, 0, 0, 0, 96, 98, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 8,232,255, 84, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +128,101, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 16,103, 39, 3, 1, 0, 0, 0,240, 99, 39, 3, 1, 0, 0, 0, + 0,218,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95, +109,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95, 99,111,110,116,101,120,116, 95, +109,101,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,255,112, 1, 36, 0, 0, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 16,103, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +160,104, 39, 3, 1, 0, 0, 0,128,101, 39, 3, 1, 0, 0, 0,224,222,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,110,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 78,111,114,109, 97,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,172,254,112, 1, 58, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +160,104, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 48,106, 39, 3, 1, 0, 0, 0, 16,103, 39, 3, 1, 0, 0, 0, +192,227,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,101,116,116,105,110,103,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,101,116,116,105,110,103,115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,101,116,116,105,110,103,115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,254,112, 1, 36, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 48,106, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +192,107, 39, 3, 1, 0, 0, 0,160,104, 39, 3, 1, 0, 0, 0,160,232,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95,103,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 86,101,114,116,101,120, 32, 71,114,111,117,112,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,106,254,112, 1, 76, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +192,107, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 80,109, 39, 3, 1, 0, 0, 0, 48,106, 39, 3, 1, 0, 0, 0, +128,237,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,104, 97,112,101, 95,107,101, +121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,115,104, 97,112,101, 95,107,101, +121,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,112,101, 32, 75,101,121,115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89,254,112, 1, 69, 0, 0, 0, 0, 0, 4, 0, 6, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, 80,109, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, +224,110, 39, 3, 1, 0, 0, 0,192,107, 39, 3, 1, 0, 0, 0, 96,242,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 95, 80, 84, 95,117,118, 95,116,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 32, 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 91,255,112, 1, 69, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 1, 0, 0, +224,110, 39, 3, 1, 0, 0, 0,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,109, 39, 3, 1, 0, 0, 0, +192,247,240, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95, 99, +111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 95, 80, 84, 95,118,101,114,116,101,120, 95, 99, +111,108,111,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,101,114,116,101,120, 32, 67,111,108,111,114,115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,112, 1, 69, 0, 0, 0, 0, 0, 0, 0, 7, 0, + 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 68, 65, 84, 65, 0, 1, 0, 0,112,112, 39, 3, 1, 0, 0, 0,162, 0, 0, 0, 1, 0, 0, 0, +192,123, 39, 3, 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, + 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, 4, 0, 4, 0, 4, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 64,148, 21, 26, 1, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,176,113, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,115, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,211, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 1, + 26, 0,167, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +141, 2, 0, 0, 51, 4, 0, 0, 17, 1, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 1, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 16,115, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,116, 39, 3, 1, 0, 0, 0, +176,113, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 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, +141, 2, 0, 0,141, 2, 0, 0, 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,189, 0, 0, 0, 5, 0, 3, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,112,116, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,117, 39, 3, 1, 0, 0, 0, + 16,115, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +141, 2, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0,208,117, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 48,119, 39, 3, 1, 0, 0, 0, +112,116, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +122, 2,163, 0,104, 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, + 51, 4, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 48,119, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +208,117, 39, 3, 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, +141, 2, 0, 0, 51, 4, 0, 0, 43, 1, 0, 0,231, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 1,189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,120, 39, 3, 1, 0, 0, 0, + 68, 65, 84, 65,248, 2, 0, 0,144,120, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169,170, 28, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 53,194,123,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 56,117, 85, 63, +240,246, 70,188, 0,224, 32,182, 42, 13, 40,190, 78, 1,162, 61,203, 52,187, 62, 0, 0,149, 52,215,104, 25,196,134,132,135, 67, + 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 53,194,123,191, +222,160, 81,191,184,158, 81,191,115, 90,127, 63, 63,179,242, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188, 65, 57, 12, 64, +129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,208,166,141, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,192,123, 39, 3, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0,224,127, 39, 3, 1, 0, 0, 0,112,112, 39, 3, 1, 0, 0, 0,176,113, 39, 3, 1, 0, 0, 0, + 48,119, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 48,194,129, 3, 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, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 32,125, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +128,126, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,128,126, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32,125, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, +112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, + 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,224,127, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192,123, 39, 3, 1, 0, 0, 0, 32,125, 39, 3, 1, 0, 0, 0,128,126, 39, 3, 1, 0, 0, 0, + 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, + 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 96,129, 39, 3, 1, 0, 0, 0,190, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,219, 38, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0,144,134, 39, 3, 1, 0, 0, 0,240,134, 39, 3, 1, 0, 0, 0, + 80,141, 39, 3, 1, 0, 0, 0,176,141, 39, 3, 1, 0, 0, 0, 32,212, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,186,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,155,180, 21, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208,130, 39, 3, 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, 68, 65, 84, 65, 32, 0, 0, 0,208,130, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 48,131, 39, 3, 1, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 4, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 48,131, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,131, 39, 3, 1, 0, 0, 0, +208,130, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 49, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +144,131, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, 48,131, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0,144,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, +176,132, 39, 3, 1, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 22, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0, + 80,132, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7,240, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 16,133, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0,208,133, 39, 3, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 3, 22, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,208,133, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, + 48,134, 39, 3, 1, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 48,134, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0,144,134, 39, 3, 1, 0, 0, 0, +208,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3,240, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +144,134, 39, 3, 1, 0, 0, 0,191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,134, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 88, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,134, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 80,135, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,130, 39, 3, 1, 0, 0, 0, + 48,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,135, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176,135, 39, 3, 1, 0, 0, 0,240,134, 39, 3, 1, 0, 0, 0,208,130, 39, 3, 1, 0, 0, 0, +240,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,135, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 16,136, 39, 3, 1, 0, 0, 0, 80,135, 39, 3, 1, 0, 0, 0, 48,131, 39, 3, 1, 0, 0, 0, + 80,132, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,136, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,112,136, 39, 3, 1, 0, 0, 0,176,135, 39, 3, 1, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, + 80,132, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,136, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,208,136, 39, 3, 1, 0, 0, 0, 16,136, 39, 3, 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0, +176,132, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,136, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,137, 39, 3, 1, 0, 0, 0,112,136, 39, 3, 1, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0, + 16,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,137, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,144,137, 39, 3, 1, 0, 0, 0,208,136, 39, 3, 1, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, +112,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,137, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,240,137, 39, 3, 1, 0, 0, 0, 48,137, 39, 3, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0, +208,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,137, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 80,138, 39, 3, 1, 0, 0, 0,144,137, 39, 3, 1, 0, 0, 0,208,133, 39, 3, 1, 0, 0, 0, + 48,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,138, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,176,138, 39, 3, 1, 0, 0, 0,240,137, 39, 3, 1, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0, + 48,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,176,138, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 16,139, 39, 3, 1, 0, 0, 0, 80,138, 39, 3, 1, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0, +144,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 16,139, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,112,139, 39, 3, 1, 0, 0, 0,176,138, 39, 3, 1, 0, 0, 0,144,131, 39, 3, 1, 0, 0, 0, +144,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,112,139, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,208,139, 39, 3, 1, 0, 0, 0, 16,139, 39, 3, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0, +144,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,208,139, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 48,140, 39, 3, 1, 0, 0, 0,112,139, 39, 3, 1, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0, +144,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 48,140, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,144,140, 39, 3, 1, 0, 0, 0,208,139, 39, 3, 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0, +112,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,144,140, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0,240,140, 39, 3, 1, 0, 0, 0, 48,140, 39, 3, 1, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0, + 48,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,240,140, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 80,141, 39, 3, 1, 0, 0, 0,144,140, 39, 3, 1, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, +208,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 80,141, 39, 3, 1, 0, 0, 0, +192, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,140, 39, 3, 1, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0, +208,133, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,176,141, 39, 3, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 80,145, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,131, 39, 3, 1, 0, 0, 0, +208,130, 39, 3, 1, 0, 0, 0, 48,131, 39, 3, 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 49, 4, 0, 0, 7, 7,129, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, +240, 35, 15, 3, 1, 0, 0, 0,128,233, 39, 3, 1, 0, 0, 0,128,233, 39, 3, 1, 0, 0, 0,144,142, 39, 3, 1, 0, 0, 0, +240,143, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,182,250, 24, 1, 0, 0, 0, +176, 57,113, 29, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,144,142, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,143, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,161, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 32,240, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,129, 7, 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 23, 4, 0, 0, 48, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +176, 37, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,143, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,142, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 7, 0,112, 7, 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, 49, 4, 0, 0, 49, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, +208, 36, 15, 3, 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, 68, 65, 84, 65,160, 0, 0, 0, 80,145, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, + 64,157, 39, 3, 1, 0, 0, 0,176,141, 39, 3, 1, 0, 0, 0,112,130, 39, 3, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0, +144,134, 39, 3, 1, 0, 0, 0,144,131, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 87, 0, 0, 0, 15, 15,129, 7, 88, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 2, 15, 3, 1, 0, 0, 0, +240,148, 39, 3, 1, 0, 0, 0,224,155, 39, 3, 1, 0, 0, 0, 48,146, 39, 3, 1, 0, 0, 0,144,147, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,226,250, 24, 1, 0, 0, 0, 32,181,250, 24, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 48,146, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,144,147, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, + 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 4, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0,144,147, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,146, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 18, 0, 0, 0, 61, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,129, 7, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 26, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +129, 7, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 3, 15, 3, 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, + 68, 65, 84, 65,200, 0, 0, 0,240,148, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0,224,155, 39, 3, 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, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,240,149, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 80,151, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, + 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 6, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 80,151, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +240,149, 39, 3, 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, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 6, 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,176,152, 39, 3, 1, 0, 0, 0, + 68, 65, 84, 65,248, 2, 0, 0,176,152, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190, -227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64, -151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, - 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, - 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 32, 1, 0, 0,224,155, 39, 3, 1, 0, 0, 0, +157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,148, 39, 3, 1, 0, 0, 0,240,149, 39, 3, 1, 0, 0, 0, + 80,151, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 48,194,129, 3, 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, + 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 64,157, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, +160,178, 39, 3, 1, 0, 0, 0, 80,145, 39, 3, 1, 0, 0, 0, 16,133, 39, 3, 1, 0, 0, 0,208,133, 39, 3, 1, 0, 0, 0, +176,132, 39, 3, 1, 0, 0, 0,144,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, + 89, 0, 0, 0,239, 1, 0, 0, 8, 8,129, 7,151, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 69, 15, 3, 1, 0, 0, 0, + 64,162, 39, 3, 1, 0, 0, 0,160,177, 39, 3, 1, 0, 0, 0, 32,158, 39, 3, 1, 0, 0, 0,224,160, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 90,251, 24, 1, 0, 0, 0,160,161,253, 24, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 32,158, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,128,159, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 31, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 32,240, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, + 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,129, 7, + 26, 0,129, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128, 7, 0, 0, 89, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +129, 7, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 72, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0,128,159, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,224,160, 39, 3, 1, 0, 0, 0, + 32,158, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0,128,181,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, + 0,128,181,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0, +125, 1,203, 0,107, 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, +165, 6, 0, 0,128, 7, 0, 0,115, 0, 0, 0,239, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +220, 0,125, 1, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 71, 15, 3, 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, + 68, 65, 84, 65, 40, 1, 0, 0,224,160, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +128,159, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,164, 6, 0, 0, 18, 0, 0, 0,124, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, + 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,165, 6, +125, 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,164, 6, 0, 0,115, 0, 0, 0,239, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +165, 6,125, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 70, 15, 3, 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, + 68, 65, 84, 65,240, 0, 0, 0, 64,162, 39, 3, 1, 0, 0, 0,163, 0, 0, 0, 1, 0, 0, 0,128,173, 39, 3, 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, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,112,163, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +208,164, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,252, 5, 26, 0,252, 5, 26, 0, 0, 0, 0, 0, 0, 0, 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, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,252, 5, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,208,164, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 48,166, 39, 3, 1, 0, 0, 0,112,163, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,113, 1, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 48,166, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +144,167, 39, 3, 1, 0, 0, 0,208,164, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 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, 5, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,167, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +240,168, 39, 3, 1, 0, 0, 0, 48,166, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,251, 5, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,168, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,144,167, 39, 3, 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,240,236,236, 24, 1, 0, 0, 0, 96,242,236, 24, 1, 0, 0, 0, 25, 0, 0, 0, 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, 68, 65, 84, 65, 8, 0, 0, 0, 80,159, 39, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,144,159, 39, 3, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,242,135, 3, 1, 0, 0, 0,119, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,236,135, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,252, 5,113, 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, + 80,170, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, 80,170, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, + 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 79,145, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, + 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, +185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, +178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, +112,240,191, 62,108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180, +182,107, 25,196, 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, + 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, +162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, +178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, +145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96,151, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 13,114,156, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, +128,173, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0,160,177, 39, 3, 1, 0, 0, 0, 64,162, 39, 3, 1, 0, 0, 0, +112,163, 39, 3, 1, 0, 0, 0,240,168, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,224,174, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 64,176, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,176, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,174, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0,160,177, 39, 3, 1, 0, 0, 0, +172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 39, 3, 1, 0, 0, 0,224,174, 39, 3, 1, 0, 0, 0, + 64,176, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,160,178, 39, 3, 1, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 32,212, 39, 3, 1, 0, 0, 0, 64,157, 39, 3, 1, 0, 0, 0,208,133, 39, 3, 1, 0, 0, 0, +240,131, 39, 3, 1, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0, 48,134, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 79, 3, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, 2, 2, 80, 3, 37, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144, 14, 15, 3, 1, 0, 0, 0, 0,185, 39, 3, 1, 0, 0, 0, 32,211, 39, 3, 1, 0, 0, 0,128,179, 39, 3, 1, 0, 0, 0, +160,183, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,162,253, 24, 1, 0, 0, 0, +160,247,254, 24, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,128,179, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +224,180, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 84, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 80, 3, 26, 0, 80, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0,241, 1, 0, 0, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 16, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,224,180, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 64,182, 39, 3, 1, 0, 0, 0,128,179, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0,128,252,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,217, 0, 11, 2,200, 0,249, 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,216, 0, 0, 0, 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 11, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 17, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 64,182, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +160,183, 39, 3, 1, 0, 0, 0,224,180, 39, 3, 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, 79, 3, 0, 0, 79, 3, 0, 0, 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 16, 18, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,160,183, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64,182, 39, 3, 1, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, + 18, 0, 0, 0,118, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,118, 2, 0, 0, 18, 0, 0, 0, 10, 2, 0, 0, +111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0,119, 2, 11, 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,217, 0, 0, 0, 79, 3, 0, 0, 11, 2, 0, 0, 21, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,119, 2, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +112, 15, 15, 3, 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, 68, 65, 84, 65,248, 0, 0, 0, 0,185, 39, 3, 1, 0, 0, 0,161, 0, 0, 0, 1, 0, 0, 0, +176,190, 39, 3, 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, + 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, 48,186, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 48,186, 39, 3, 1, 0, 0, 0, 20, 1, 0, 0, 1, 0, 0, 0, 48,186,129, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,144,186, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,240,187, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 2, 26, 0,152, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,240,187, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,189, 39, 3, 1, 0, 0, 0,144,186, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, + 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67, 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0, 24, 2,181, 0, 6, 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,180, 0, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 24, 2, 0, 0, 2, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,189, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,187, 39, 3, 1, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, + 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0,128, 4,196, 0, 0, 64,193,210, 1, 0, 0,227, 1, 0, 0, + 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, + 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, + 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,227, 1, 24, 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,181, 0, 0, 0,151, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 24, 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, 68, 65, 84, 65, 8, 1, 0, 0,176,190, 39, 3, 1, 0, 0, 0, + 21, 1, 0, 0, 1, 0, 0, 0, 16,196, 39, 3, 1, 0, 0, 0, 0,185, 39, 3, 1, 0, 0, 0,144,186, 39, 3, 1, 0, 0, 0, + 80,189, 39, 3, 1, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48,186,129, 3, 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, + 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,191, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,193, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,193, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,194, 39, 3, 1, 0, 0, 0,240,191, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, + 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, + 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, + 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 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,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,194, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,193, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, + 0, 0, 0, 0,164, 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,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 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, 68, 65, 84, 65,168, 0, 0, 0, 16,196, 39, 3, 1, 0, 0, 0, +167, 0, 0, 0, 1, 0, 0, 0, 0,207, 39, 3, 1, 0, 0, 0,176,190, 39, 3, 1, 0, 0, 0,240,191, 39, 3, 1, 0, 0, 0, +176,194, 39, 3, 1, 0, 0, 0, 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,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 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,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,240,196, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 80,198, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 80,198, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,176,199, 39, 3, 1, 0, 0, 0,240,196, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,176,199, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 16,201, 39, 3, 1, 0, 0, 0, 80,198, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, 16,201, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,112,202, 39, 3, 1, 0, 0, 0,176,199, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0,112,202, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,201, 39, 3, 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,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 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,208,203, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0,208,203, 39, 3, 1, 0, 0, 0, +156, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, +226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192, +248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, + 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, + 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195, +205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, + 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, + 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0, 0,207, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 32,211, 39, 3, 1, 0, 0, 0, + 16,196, 39, 3, 1, 0, 0, 0,240,196, 39, 3, 1, 0, 0, 0,112,202, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 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, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 96,208, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,192,209, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, +101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +192,209, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,208, 39, 3, 1, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 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,151, 4, 0, 0, +127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 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, 68, 65, 84, 65,200, 0, 0, 0, + 32,211, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,207, 39, 3, 1, 0, 0, 0, + 96,208, 39, 3, 1, 0, 0, 0,192,209, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 32,212, 39, 3, 1, 0, 0, 0,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,178, 39, 3, 1, 0, 0, 0, + 48,134, 39, 3, 1, 0, 0, 0,112,133, 39, 3, 1, 0, 0, 0, 80,132, 39, 3, 1, 0, 0, 0,176,132, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, 8, 8, 48, 4, 37, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208, 69, 15, 3, 1, 0, 0, 0, 32,217, 39, 3, 1, 0, 0, 0,128,232, 39, 3, 1, 0, 0, 0, + 0,213, 39, 3, 1, 0, 0, 0,192,215, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +176,176,151, 22, 1, 0, 0, 0,176,195,140, 22, 1, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 0,213, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 96,214, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,135, 68, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 4, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0,224,156, 68, 0, 0,200, 65, 0,224,156, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0, 56, 4, 24, 0, 56, 4, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0,128, 7, 0, 0,241, 1, 0, 0,241, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,112, 72, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0, 96,214, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,192,215, 39, 3, 1, 0, 0, 0, 0,213, 39, 3, 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,128, 7, 0, 0,128, 7, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,144, 71, 15, 3, 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, 68, 65, 84, 65, 40, 1, 0, 0,192,215, 39, 3, 1, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,214, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 36, 2, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 47, 4, 0, 0, + 18, 0, 0, 0, 36, 2, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, +105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 48, 4, 37, 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, 81, 3, 0, 0,128, 7, 0, 0,241, 1, 0, 0, 21, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4, 37, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,176, 70, 15, 3, 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, 68, 65, 84, 65,240, 0, 0, 0, 32,217, 39, 3, 1, 0, 0, 0, +163, 0, 0, 0, 1, 0, 0, 0, 96,228, 39, 3, 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, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 80,218, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,176,219, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, +225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, + 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, 68, 65, 84, 65, 40, 1, 0, 0, +176,219, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 16,221, 39, 3, 1, 0, 0, 0, 80,218, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 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,153, 2, 0, 0,153, 2, 0, 0, +251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, + 3, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, + 16,221, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,112,222, 39, 3, 1, 0, 0, 0,176,219, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, +251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +112,222, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,208,223, 39, 3, 1, 0, 0, 0, 16,221, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 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,128, 7, 0, 0,128, 7, 0, 0, +251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 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, 68, 65, 84, 65, 40, 1, 0, 0, +208,223, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,222, 39, 3, 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,153, 2, 0, 0,128, 7, 0, 0, +251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 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, 48,225, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,248, 2, 0, 0, + 48,225, 39, 3, 1, 0, 0, 0,156, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191, +118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, + 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191, +118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, 96,228, 39, 3, 1, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, +128,232, 39, 3, 1, 0, 0, 0, 32,217, 39, 3, 1, 0, 0, 0, 80,218, 39, 3, 1, 0, 0, 0,208,223, 39, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 48,194,129, 3, 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, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 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, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,192,229, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 32,231, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, + 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4, 26, 0, 0, 0, 1, 0, 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, + 68, 65, 84, 65, 40, 1, 0, 0, 32,231, 39, 3, 1, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192,229, 39, 3, 1, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, +122, 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,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 4,122, 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, + 68, 65, 84, 65,200, 0, 0, 0,128,232, 39, 3, 1, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96,228, 39, 3, 1, 0, 0, 0,192,229, 39, 3, 1, 0, 0, 0, 32,231, 39, 3, 1, 0, 0, 0, 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, 1, 0, 0, 0, 6, 0, 0, 0, + 83, 67, 0, 0, 0, 6, 0, 0, 48,186,129, 3, 1, 0, 0, 0,154, 0, 0, 0, 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, 83, 67, 83, 99,101,110,101, 0, +116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,194,129, 3, 1, 0, 0, 0,128,242, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 39, 3, 1, 0, 0, 0,192,234, 39, 3, 1, 0, 0, 0, 0,234, 39, 3, 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, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,235, 39, 3, 1, 0, 0, 0,208, 89, 16, 26, 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, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 25, 0, +141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, + 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,208,236, 39, 3, 1, 0, 0, 0,208,236, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 66, + 0, 0,200, 66, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 5, 0, 2, 0, 1, 0, 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, 47, 47, 98, 97, 99,107, 98,117, +102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, + 6, 0, 0, 0, 16, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, + 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, +102,166,171, 67, 0, 0,128, 63, 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, +176,171,135, 22, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 0, 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,205,204, 28, 65, 0, 0, 0, 0, + 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 0,234, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 96,234, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,180, 2,209, 1, 48,200,129, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 96,234, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0,192,234, 39, 3, 1, 0, 0, 0, 0,234, 39, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0,126, 3, 6, 3, 48,206,129, 3, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +192,234, 39, 3, 1, 0, 0, 0,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,234, 39, 3, 1, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,153, 0, 47, 2, 48,194,129, 3, 1, 0, 0, 0, 68, 65, 84, 65,120, 1, 0, 0, + 32,235, 39, 3, 1, 0, 0, 0,150, 0, 0, 0, 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,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63, +111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 0, 1, 0, 1, 0, 0, 0, 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, 2, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 5, 0, 5, 0,255,255, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, + 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 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, 68, 65, 84, 65, 88, 0, 0, 0,208,236, 39, 3, 1, 0, 0, 0,136, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 32, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0,152, 0, 0, 0, + 96,237, 39, 3, 1, 0, 0, 0, 29, 0, 0, 0, 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, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, + 48, 49, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 63,145,137, 68, 66,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,248, 1, 0, 0, 48,238, 39, 3, 1, 0, 0, 0, 41, 0, 0, 0, 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, + 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 96,240, 39, 3, 1, 0, 0, 0, + 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,242, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65, 56, 1, 0, 0, + 96,240, 39, 3, 1, 0, 0, 0, 73, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,208,241, 39, 3, 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,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,241, 39, 3, 1, 0, 0, 0, 71, 1, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 32,242, 39, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,216, 1, 0, 0, +128,242, 39, 3, 1, 0, 0, 0,130, 0, 0, 0, 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, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 62, 0, 0,128, 62, 0, 0,128, 62, 0, 0, 0, 0,205,204,204, 61,205,204,204, 61, +205,204,204, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 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, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, + 0, 0,128, 62, 0, 0, 0, 0, 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, 84, 88, 0, 0,176, 0, 0, 0,144,244, 39, 3, 1, 0, 0, 0, 27, 0, 0, 0, 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, + 84, 88, 84,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0,128,245, 39, 3, 1, 0, 0, 0, +128,245, 39, 3, 1, 0, 0, 0,128,245, 39, 3, 1, 0, 0, 0,128,245, 39, 3, 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, 48,128,129, 3, 1, 0, 0, 0,255,255,255,255, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,128,245, 39, 3, 1, 0, 0, 0, + 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 35, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0,128, 37, 35, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,194,129, 3, 1, 0, 0, 0,119, 0, 0, 0, + 1, 0, 0, 0, 48,200,129, 3, 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, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 11, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96,237, 39, 3, 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,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -229,123, 38, 63, 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63, -236, 13, 98,189, 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62, -164,111, 75, 63, 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 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,149, 47, 63, 53, 70, 58, 63, +222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, + 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, - 0, 0, 0,179, 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, - 37,255, 16, 63, 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63, -166,111, 75, 63, 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, - 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, + 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, + 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, +167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, + 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, - 32, 3, 0, 0,208,159, 39, 3, 1, 0, 0, 0, 44, 0, 0, 0, 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, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +152, 4, 0, 0, 48,200,129, 3, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 48,206,129, 3, 1, 0, 0, 0, 48,194,129, 3, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 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,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, - 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, - 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 0, 0, 3, 3, 0, 1, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, - 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 48,163, 39, 3, - 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,176, 19,253, 24, 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,112,253, 39, 3, 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,128,164, 39, 3, 1, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 61, -205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 48,163, 39, 3, - 1, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,164, 39, 3, - 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, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 40, 0, 0, 0,128,164, 39, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, -104, 1, 0, 0,224,164, 39, 3, 1, 0, 0, 0, 39, 0, 0, 0, 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, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, - 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 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,224,245, 39, 3, + 1, 0, 0, 0, 32,246, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 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,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, + 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, + 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63, +169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 69, 0, 0, -144, 1, 0, 0,128,166, 39, 3, 1, 0, 0, 0, 54, 0, 0, 0, 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, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,168, 39, 3, 1, 0, 0, 0, 64,175, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,170, 39, 3, 1, 0, 0, 0,208,172, 39, 3, 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,144,168, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48,171, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160,173, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, - 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 80,168, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,208,159, 39, 3, - 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,144,168, 39, 3, 1, 0, 0, 0, 75, 1, 0, 0, 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, 48,170, 39, 3, - 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,160, 24,253, 24, 1, 0, 0, 0,176, 31,253, 24, 1, 0, 0, 0, 25, 0, 0, 0, 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, 68, 65, 84, 65, 8, 0, 0, 0,224,245, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0, 32,246, 39, 3, 1, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,152, 4, 0, 0, 48,206,129, 3, 1, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48,200,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 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, + 48,238, 39, 3, 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, 68, 65, 84, 65,192, 0, 0, 0, 48,170, 39, 3, 1, 0, 0, 0, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63, -255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191, -230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, - 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63, -247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63, -230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, - 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, -104, 1, 0, 0, 48,171, 39, 3, 1, 0, 0, 0, 75, 1, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, + 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, + 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, + 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, + 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, + 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, + 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,172, 39, 3, 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, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0, + 96,246, 39, 3, 1, 0, 0, 0, 44, 0, 0, 0, 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, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 23, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, + 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, + 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 3, + 67, 0, 0, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63, +205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63,192,249, 39, 3, 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, 68, 65, 84, 65, -144, 0, 0, 0,208,172, 39, 3, 1, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, - 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,160,173, 39, 3, 1, 0, 0, 0, 75, 1, 0, 0, 5, 0, 0, 0, 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, 64,175, 39, 3, - 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, + 16,251, 39, 3, 1, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63,205,204, 76, 61,205,204,204, 61, +102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0,192,249, 39, 3, 1, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,251, 39, 3, 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, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, + 16,251, 39, 3, 1, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 48,212,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, + 48,212,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 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, + 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, + 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, + 9, 9, 9,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 10, 10, 10,153, 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, + 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, + 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,102, 19, 19, 19,204, 27, 27, 27,255, 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, + 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, + 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, + 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, + 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, + 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, + 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, + 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, + 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, + 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, + 5, 5, 5,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, + 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, + 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, + 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, + 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, + 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, + 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, + 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, + 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, + 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, + 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, + 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, + 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, + 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, + 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, + 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, + 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, + 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, + 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, + 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, + 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, + 97, 97, 97,255,100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255,102,102,102,255,101,101,101,255, 99, 99, 99,255, + 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, + 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, + 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, 80, 80, 80,255, 93, 93, 93,255,100,100,100,255, +104,104,104,255,107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255,109,109,109,255,107,107,107,255,106,106,106,255, +103,103,103,255,100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, + 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, + 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, 89, 89, 89,255,100,100,100,255,107,107,107,255, +112,112,112,255,114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255,115,115,115,255,114,114,114,255,112,112,112,255, +110,110,110,255,107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, + 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, + 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, 95, 95, 95,255,107,107,107,255,114,114,114,255, +118,118,118,255,121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255,122,122,122,255,122,122,122,255,120,120,120,255, +118,118,118,255,114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, + 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, + 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153,101,101,101,255,113,113,113,255,120,120,120,255, +125,125,125,255,127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255,131,131,131,255,131,131,131,255,131,131,131,255, +129,129,129,255,125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255,103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, + 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, + 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153,106,106,106,255,118,118,118,255,126,126,126,255, +131,131,131,255,134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255,142,142,142,255,147,147,147,255,149,149,149,255, +148,148,148,255,142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255,108,108,108,255,102,102,102,255, 97, 97, 97,255, + 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, + 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102,109,109,109,255,123,123,123,255,131,131,131,255, +136,136,136,255,140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255,156,156,156,255,168,168,168,255,176,176,176,255, +177,177,177,255,168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255,114,114,114,255,107,107,107,255,101,101,101,255, + 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, + 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51,110,110,110,255,127,127,127,255,136,136,136,255, +142,142,142,255,145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255,174,174,174,255,195,195,195,255,212,212,212,255, +216,216,216,255,204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255,121,121,121,255,112,112,112,255,106,106,106,255, + 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, + 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0,107,107,107,255,130,130,130,255,140,140,140,255, +146,146,146,255,150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255,191,191,191,255,219,219,219,255,246,246,246,255, +254,254,254,255,237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255,127,127,127,255,117,117,117,255,110,110,110,255, +103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, + 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, 65, 65, 65,153,129,129,129,255,142,142,142,255, +149,149,149,255,154,154,154,255,157,157,157,255,163,163,163,255,176,176,176,255,199,199,199,255,232,232,232,255,255,255,255,255, +255,255,255,255,255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255,132,132,132,255,121,121,121,255,113,113,113,255, +106,106,106,255,100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, + 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 51,127,127,127,255,143,143,143,255, +152,152,152,255,157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255,198,198,198,255,227,227,227,255,253,253,253,255, +255,255,255,255,250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255,135,135,135,255,124,124,124,255,117,117,117,255, +110,110,110,255,103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, + 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255, +153,153,153,255,159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255,188,188,188,255,209,209,209,255,228,228,228,255, +234,234,234,255,224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255,136,136,136,255,127,127,127,255,119,119,119,255, +112,112,112,255,105,105,105,255, 98, 98, 98,255, 91, 91, 91,255, 83, 83, 83,255, 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, + 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255, +151,151,151,255,160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255,178,178,178,255,189,189,189,255,200,200,200,255, +202,202,202,255,195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255,137,137,137,255,129,129,129,255,121,121,121,255, +114,114,114,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, + 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102, +145,145,145,255,157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255,172,172,172,255,176,176,176,255,180,180,180,255, +179,179,179,255,174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255,137,137,137,255,130,130,130,255,122,122,122,255, +115,115,115,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, + 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 78, 78, 78,153,149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255,169,169,169,255,170,170,170,255,169,169,169,255, +167,167,167,255,164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255,137,137,137,255,130,130,130,255,123,123,123,255, +115,115,115,255,106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, + 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255,167,167,167,255,167,167,167,255,166,166,166,255, +163,163,163,255,160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255,137,137,137,255,129,129,129,255,121,121,121,255, +113,113,113,255,105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255,161,161,161,255,163,163,163,255,162,162,162,255, +160,160,160,255,157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255,135,135,135,255,127,127,127,255,119,119,119,255, +110,110,110,255,101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255,148,148,148,255,154,154,154,255,155,155,155,255, +154,154,154,255,152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255,130,130,130,255,122,122,122,255,114,114,114,255, +104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 73, 73,153,103,103,103,204,137,137,137,255, +140,140,140,255,140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255,120,120,120,255,113,113,113,255,102,102,102,255, + 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, + 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,104, 1, 0, 0,112,251, 39, 3, 1, 0, 0, 0, + 39, 0, 0, 0, 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, 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 22, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 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, 16,253, 39, 3, 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, 68, 65, 84, 65, 40, 0, 0, 0, 16,253, 39, 3, 1, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 48,230,129, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 48,230,129, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,144, 1, 0, 0,112,253, 39, 3, 1, 0, 0, 0, 54, 0, 0, 0, 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, + 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 64,255, 39, 3, 1, 0, 0, 0, 48, 6, 40, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 40, 3, 1, 0, 0, 0,192, 3, 40, 3, 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,128,255, 39, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2, 40, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 4, 40, 3, 1, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 64,255, 39, 3, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 96,246, 39, 3, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,128,255, 39, 3, 1, 0, 0, 0, + 76, 1, 0, 0, 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, 32, 1, 40, 3, 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, 68, 65, 84, 65,192, 0, 0, 0, 32, 1, 40, 3, 1, 0, 0, 0, + 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, + 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, + 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, +245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, + 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, +230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 32, 2, 40, 3, 1, 0, 0, 0, 76, 1, 0, 0, 5, 0, 0, 0, + 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, +192, 3, 40, 3, 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, 68, 65, 84, 65,120, 0, 0, 0, 64,175, 39, 3, 1, 0, 0, 0, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, - 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 85, 83, 69, 82,160, 11, 0, 0, 96,186,112, 1, - 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 0, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, - 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100, -101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0,192, 3, 40, 3, 1, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,144, 4, 40, 3, 1, 0, 0, 0, + 76, 1, 0, 0, 5, 0, 0, 0, 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, 48, 6, 40, 3, 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, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0, 48, 6, 40, 3, 1, 0, 0, 0, + 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, + 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, + 85, 83, 69, 82,160, 11, 0, 0,192,162,118, 1, 1, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 33,152, 1, 0, 63, 2, 0, 0, + 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114, +112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111, +117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1304,1587 +12428,1602 @@ char datatoc_B_blend[]= { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 8, 0, 0, 0, - 3, 0, 0, 0, 48, 52, 6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 48, 4,136, 3, 1, 0, 0, 0, 48, 28,136, 3, - 1, 0, 0, 0,128,161,118, 22, 1, 0, 0, 0,128,161,118, 22, 1, 0, 0, 0,224,172,118, 22, 1, 0, 0, 0,224,172,118, 22, - 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, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, - 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, - 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, - 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, - 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0,250, 0, 0, 0,100, 0,100, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0, 48, 4,136, 3, 1, 0, 0, 0,187, 0, 0, 0, - 1, 0, 0, 0, 48, 28,136, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, - 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, - 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, - 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255, -255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, -255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, - 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, - 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, -128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255, -255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255, -255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230, -100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, -255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255,100,100,100,255, - 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180,100,100,100,180, -128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255,240,235,100,255, -215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255, -250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 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,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, - 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, - 82, 96,110,255,124,137,150,255, 3, 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, -255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 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,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, - 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, - 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, - 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40, -255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255, -219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, - 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18, -255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, - 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, - 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, - 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, - 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, - 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, - 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, - 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -216, 21, 0, 0, 48, 28,136, 3, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 4,136, 3, - 1, 0, 0, 0, 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 25, 0, -231,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, - 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, - 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0, -236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 25, 0, -236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,175,175,175, 51, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, -143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, - 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10, -255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,100,143,143,143,100, 96,192, 64,255, - 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255, -255,255,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 82, 96,110,255,124,137,150,255, 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,255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0, -112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 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,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 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,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,143,143,143,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, - 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,255,255,255,170,255, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 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,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255, -169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, - 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,153,153,153,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, - 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0, -112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 5, 0, 2, 0, 0, 8, 0, 0, + 2, 0, 0, 0, 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, + 48, 4,130, 3, 1, 0, 0, 0, 48, 28,130, 3, 1, 0, 0, 0, 0,251, 36, 3, 1, 0, 0, 0, 0,251, 36, 3, 1, 0, 0, 0, + 16, 6, 37, 3, 1, 0, 0, 0, 16, 6, 37, 3, 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, + 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63, +205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191,154,153,153, 62, +102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, 0, 0, 0, 0, +205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, 25, 0, 15, 0, +120, 0, 60, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0,250, 0, 0, 0, +100, 0,100, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255, -230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,150,150,150,255, -129,131,144,255,127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, -143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, - 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10, -255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 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, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, - 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, - 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, - 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, - 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, - 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, - 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, - 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,100,228, 0, 0, 48, 68,168, 2, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 36, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, - 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, - 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97, -108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97, -118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, - 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101, -115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, - 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0, -119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42, -114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97, -109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0, -118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105, -116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, - 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105, -112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101, -105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101, -114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108, -101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115, -108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0, -115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, - 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99, -117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95, -112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122, -101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,108,101, 0, 99,108,105,112, -115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97, -119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 89, - 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, - 0, 89, 70, 95, 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101, -115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117, -108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101, -110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0,115, -111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110, -100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, - 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0, 42, -114,101,110,100,101,114, 95,116,101,120,116, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, - 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97, -115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108, -101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0, -112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, - 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0, -112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, - 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0, -114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111, -114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0, -109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, - 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110, -115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, - 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, - 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109, -112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0, -108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0, -115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108, -101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, - 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101, -115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42, -105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118, -101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101, -119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97, -108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, - 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111, -116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, 42,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115, -112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,112,100,112, 97,100, 50, 91, 50, 93, 0, 42,112, -111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, - 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105, -115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101, -101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116, -121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101,110,100, 0,105,110,116, 95,109,117,108,116,105, -112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, - 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105, -103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116, -101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, - 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117, -110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, - 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121, -112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115, -105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, - 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105, -108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107, -101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108, -117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, - 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, - 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115, -104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, - 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102, -102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115, -115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102, -102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0, -114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, - 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, - 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101, -115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97, -108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116, -121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117, -110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101, -114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98, -105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116, -109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, - 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, - 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111, -110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115, -101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, - 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95, -103,108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101, -120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0, -101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101, -109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, - 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97, -108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105, -122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, - 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102, -102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,116,101,112,115, 0,109, 97,116,101,114,105, 97,108, - 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114, -103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97, -110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0, -115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0, -102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101, -108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105, -109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112, -116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, - 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103, -108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95, -116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95, -109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, - 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, - 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116, -114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0, -115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, - 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, - 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101, -108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97, -103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110, -101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, - 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, - 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98, -108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, - 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111, -110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97, -109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115, -115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111, -108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, - 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120, -116,117,114,101,100, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0, -105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, - 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, - 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101, -108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, - 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, - 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, - 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, - 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97, -103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110, -116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0, -104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, - 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100, -114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95, -115,109,111,111,116,104, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120, -116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99, -116,110,117, 0, 42,108, 97,115,116,115,101,108, 98,112, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, - 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0, -117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, - 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, - 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111, -110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, - 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117, -114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, - 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109, -115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, - 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0, -116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102, -108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105, -118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116, -112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, - 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115, -101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99, -111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, - 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0, -109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, - 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101, -110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108, -118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, - 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, - 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115, -117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, - 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97, -110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, - 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102, -102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95, -116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101, -114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108, -117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97, -103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42, -100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, - 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120, -109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, - 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, - 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97, -115,112,101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112, -101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0, -104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, - 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117, -108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110, -116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105, -110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114, -109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, - 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101, -119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0, -110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100, -109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117, -101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0,110,101,101,100, 98,105,110,100, 0, 42, 98,105,110,100,119,101,105,103, -104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105, -100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, - 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101, -108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0,116,111,116,100,109,118,101,114,116, 0, -116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,115,121,115, 0,112,111,115,105,116,105,111, -110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, - 0,112,114,111,116,101, 99,116, 0, 42,117,110,100,111, 95,118,101,114,116,115, 0,117,110,100,111, 95,118,101,114,116,115, 95, -116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,108,118,108, 0,116,111,116,108,118,108, 0,115,105,109,112,108, -101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114,111,117,112, - 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, 0,115,104, -114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101,108,115, 0, - 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105,110, 79,112, -116,115, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115,119, 0,116,121, -112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0,100,118, 0,100, -119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, - 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, 0,112, 97,114, -116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116,114, 91, 51, 50, - 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, 0, 42,112,114, -111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112,111,115,101, 0, - 42,103,112,100, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0, -109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, - 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0, -100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, - 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, - 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116, -115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97, -103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0, -115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112, -111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0, -100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112, -105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110, -116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0, -100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109, -112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110, -115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122, -101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, - 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105, -111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107, -115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117, -112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112, -101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, - 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, - 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116, -101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112, -108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110, -111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, - 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95, -109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110, -103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, - 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97, -100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100, -101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0, 97, - 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, - 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0, -107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114, -101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101, -105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, - 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97, -114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, - 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109, -101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, - 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, - 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97, -110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, - 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, - 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, - 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, - 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, - 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103, -115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116, -111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, - 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97, -115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112, -104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99, -116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114, -111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101, -115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105, -110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108, -118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111, -110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116, -105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, - 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0, -115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102, -102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119, -101,105,103,104,116,115, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, - 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120,121,122, 0,114,101, 97, -108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, - 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77, -111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118, -121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0,103,115,116, 97,114, 0, -109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108, -122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0, -115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83, -105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0, -118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110, -101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115, -117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, - 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0, -102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112, -115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, - 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, - 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118, -101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, - 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110, -114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120, -112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103, -114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, - 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, - 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112, -104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115, -116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114, -115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111, -108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, - 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98, -105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, - 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, - 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114, -114,101, 99,116,105,111,110, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, - 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101, -114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114, -109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, - 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, - 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, - 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97, -109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99, -111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0, -118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105, -111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0, -114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101, -114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0, -109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112, -108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111, -118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115, -107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, - 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,102,102, 99,111,100,101, 99,100, 97, -116, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116, -104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100, -103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, - 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 49, 0,114,116, 50, 0,115,116,101,114,101,111,109, -111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120, -115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, - 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105, -115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97, -121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114, -101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102, -114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115, -112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114, -115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0, -112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, - 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, - 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95, -115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105, -115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108, -105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, - 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98, -117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, - 73, 99, 97,117,115,100,101,112,116,104, 0, 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112, -104,111,116,111,110, 99,111,117,110,116, 0, 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110, -114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, - 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105, -116,121, 0, 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112, -111,119,101,114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, - 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111, -108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115, -116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, - 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,115, -117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105, -109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, - 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97, -109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100, -111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105, -108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, - 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97, -100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, - 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97, -109,105,110,103, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, - 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, - 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0, -112, 97,105,110,116, 0,116,111,111,108, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103, -108,101, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0, -116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105, -116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97, -119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, - 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101, -116, 95,115,116,114,101,110,103,116,104, 0,103, 97,109,109, 97, 0,109,117,108, 0, 42,118,112, 97,105,110,116, 95,112,114,101, -118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118, -103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102, -108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95, -111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101, -114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, - 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115, -105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0, -117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102, -108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111, -105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114, -111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108, -101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95, -102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111, -111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104, -111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101, -110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116, -101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115, -107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108, -105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114, -114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105, -109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0, -115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103, -101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101, -110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111, -115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, - 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112, -108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105, -110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, - 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, - 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, - 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100, -101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101, -116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0,116,111,116,111, 98,106, 0, -116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101, -115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116, -101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100, 0, 42,115,101, -116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, - 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0, 42,101,100, - 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97,110, -115,102,111,114,109, 95,115,112, 97, 99,101,115, 0,115,111,117,110,100, 95,104, 97,110,100,108,101,115, 0, 42,116,104,101, 68, - 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, - 0,102,114, 97,109,101, 95,115,116,101,112, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121, -105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, - 0, 98,108,101,110,100, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, - 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101, -114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115, -109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, - 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109, -122,111,111,109, 0,118,105,101,119, 98,117,116, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101,114,115, -112, 0,118,105,101,119, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108, -118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, - 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, - 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121, -112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97, -121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116, -114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110, -101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,103,114,105, -100,118,105,101,119, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0,103,114, -105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107,101,121, -102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,116,119,100,114, 97, -119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0, -122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112, -114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0, -109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99, -114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0, -107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0, -111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, - 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103, -104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97, -105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114, -101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114, -101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0, -116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97, -109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98, -111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102, -112, 0,109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, 97,109, -115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95, -110,101,120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117, -116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116, -114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, - 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116, -108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99, -117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115, -116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0, 42, -116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116, -104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, - 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105, -118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116, -120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, - 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42, -112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, - 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, - 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, - 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115, -112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114, -101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101, -115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112, -111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97, -108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42, -114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, - 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,105,109,103, - 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108, -108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 56, 93, 0,102,105,108,101,110, 97,109,101, - 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0,112,111, -105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111,119, 0, -115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, 99,111, -108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103,101,116, -108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101,108, 99, -104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99,101, 0, -116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115,112, 97, - 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97,110,101, -108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, 91, 52, - 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, 0,116, -101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97,100,101, -100,111,119,110, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101, -108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, - 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95, -115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99, -111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, - 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100, -101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95, -109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111, -120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, 99,111, -108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116,105,116, -108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97,100,101, -114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100,101,114, - 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,105,116, -108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, - 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108,105,115, -116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101,108, 91, - 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, 93, 0, -112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97,100,101, - 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, 0,115, -101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111,117,112, - 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, 52, 93, - 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, - 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, 93, 0, -101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0,102, 97, - 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, - 0,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111, -115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99, -102,114, 97,109,101, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97, -110,110,101,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105,122,101, - 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, 0,115, -121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, 93, 0, -109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100,105,111, - 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105,116,105, -111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, 52, 93, - 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95, -115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104,112, 97, -100, 91, 51, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105, -108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101, -113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0, -116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 97,114,109, 91, 50, 48, 93, 0, - 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, - 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, - 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, - 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, - 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0, -121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,103, 97,109,101,102,108, - 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, - 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, - 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, - 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, - 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115, -104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101, -121,109, 97,112,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, - 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95, -101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105, -110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108, -105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97, -110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99, -111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109,101, -109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101, -115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101, -114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102, -105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100, -111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0,105,112,111, 95, -110,101,119, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, - 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118,101,114,116, - 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, - 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100, -111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115, -111,114, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110, -105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119, -118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, - 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0, -111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109, -101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, - 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0, -108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105, -112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42, -102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, - 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, - 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105, -103,110,109,101,110,116, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116, -114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115, -105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111, -110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, - 0,103,108,111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111, -109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104, -116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105, -110, 91, 51, 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, - 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111,114,120, - 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, - 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115,116, 97, -114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42,105, 98, -117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42,105,110, -115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114, -105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102,115, 0, -109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,104, 97,110,100,115,105, -122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, 97, 99, -102, 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111, -117,110,100, 0, 42,115,111,117,110,100, 95,104, 97,110,100,108,101, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110, -101,110,114, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114, -116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110, -100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, - 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97, -103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103, -101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67, -108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111, -109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, - 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114, -111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0, 42,102,114, 97,109, -101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109,101, 0, - 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111,114,109, -102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108,105,102, -101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102,118,101, - 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0,109, 97, -116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, 0,111, -109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0,118,101, -114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117,112,110, - 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115,101,100, -101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42,109, 97, - 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, 0,116, -111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108,117,101, - 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97,109,101, - 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97,116,110, - 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, - 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, 98,106, -101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102,114,101, -113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101,120, 0, - 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, 97,116, -102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0, - 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, - 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, - 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115, -116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, - 49, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111,112,121, -109, 97,100,101, 0,112, 97,100, 50, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, - 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101, -114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108, -105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, - 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109,105,110, - 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, - 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116, -112,114,111,112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, 49, 0, -105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114,103, 95, - 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100,121, 84, -121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, 52, 93, - 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0,103,111, - 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116,115,112, -101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101,100,100, - 97,109,112, 0, 42,115,111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97,110,103, -101,100, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, 95,100, -105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, 97, 99, -116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95, - 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107,101,100, -102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99,104,101, - 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102, -115, 91, 51, 93, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, - 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97, -114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0, -122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95, -116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42,115, -107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104, -111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116, -115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0, -112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102, -114, 97,109,101, 0, 42,112,114,111,112, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, - 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105, -107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, - 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, - 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, - 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105, -116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105, -107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 99, -104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101, -116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99, -116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, - 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120, -115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112, -109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99, -115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0,102,105, -108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105,100,116,104, 0,116,105,109,101, -115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99, -101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95, -101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, - 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0, -105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, - 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, - 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, - 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0, -115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119,102,108, - 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, - 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76, -105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, - 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111, -109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116, -111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101, -108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117, -114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114, -105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110, -110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, - 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101, -119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101, -114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, - 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110, -101,119, 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51, 50, 93, 0,108, 97,115,116,121, 0,111,117,116,112,117, -116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117, -115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0, -101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, - 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111, -100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, - 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95, -105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0, 42,115,101,108,105,110, 0, 42, -115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100, -114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,116, 99,104, - 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112, -101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0, 99,117,114,118, -101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104, -116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,105,116,101,114, 0,119,114, - 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, - 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, - 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121, -112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0, -109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108, -101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0, -109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, - 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, - 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,114,114, 0, 99, -108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119,109, -117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0, -106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111, -116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117, -108,112,116, 95,116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, - 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97, -120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, - 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0, -112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, - 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105, -101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,105,118,101, 0,108,111,111,112, 0,104, 97,105, -114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118, -101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, - 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,114,101,110, 95,115,116,101, -112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108, -101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, - 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115, -112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, - 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112, -108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108, -105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, - 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95, -114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99, -116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, - 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0, -114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, - 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0, -114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, - 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, - 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117, -103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117, -103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99, -108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108, -105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, - 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, - 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42, -112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104, -105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104, -101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117, -116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, - 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, - 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, - 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0, -118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114, -115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0, 91, 51, 93, - 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, - 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, - 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119, -105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95, -115,109,111,111,116,104, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120, -115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110, -100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114,101,115, -101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101,108,102, - 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111,112, 95, - 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99,107,110, -101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, 0,103, -115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98,117,102, -102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109,101,115, -115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101,108, 0, - 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119,115, 0, -105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112,101,114, 97,116,111,114,115, - 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, - 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,100,101,102, 97,117,108,116, - 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42,103,104, -111,115,116,119,105,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, - 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, - 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97, -116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, - 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115, -117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111, -112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109, -111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101, -105,100, 0,114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101, -109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111, -109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, 91, 50, - 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107,101,121, -109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114,101,101, - 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, - 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112, -104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108, -117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116, -101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108, -101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0, 42,114,110, 97, 95, -112, 97,116,104, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0,101,120,112,114,101,115,115,105, -111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99, -111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110, -103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116, -105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, - 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,112,109,111,100,101, 0,112, 97,116,104,115, 0,107,101,121, -105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95, -116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100, -101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, - 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95, -102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, - 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97, -110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116, -105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102, -117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115, -109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97, 99, 99, -117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101, -100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101, -114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110, -100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97, -120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115, -116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 0, 42,102, -108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95, -119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, - 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, - 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115, -101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, - 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, - 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, - 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100, -101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42, -118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0,110,117,109,112,111,105,110,116,115, 0, 84, 89, 80, 69, -194, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0, -108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110, -107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,105, 0, -118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, - 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112, -101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70, -105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, - 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, - 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105, -110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97, -109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101, -120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, - 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, - 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 80, 97,114,116,105, 99,108,101, 83,121, -115,116,101,109, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112, -105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109, -101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, - 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, - 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, - 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, - 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, - 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101, -115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105, -115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, - 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, - 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105, -103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, - 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 32, 40, 49, - 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, 32, 35,100,101, -102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100,101,102,105,110, -101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, - 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, 32, 49, 32, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, - 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, - 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, 35,100,101,102, -105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 32, 50, 32, - 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, - 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 32, 50, - 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, - 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, - 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35,100,101,102,105, -110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 32, 54, 52, - 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, 88, 32, 52, 32, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102,105,110,101, 32, - 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, - 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, - 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 32, 49, - 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 32, 49, - 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, 32, 35,100,101, -102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 32, - 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, - 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, - 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 32, 54, 52, 32, - 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, 99,104, 97,114, - 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, 32,108,101,118, -101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100,105,102,105,101, -100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116,111,109, 68, 97, -116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, 10, 9,115,104, -111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, 95, 99,114,101, - 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77,117,108,116,105, -114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116,105, 97,108, 86, -105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118,101,114,116, 95, -109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, - 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, 32,101,100,103, -101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, 32, 45, 49, 61, - 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, 59, 10, 9, 77, - 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32,116, -111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97,100, 59, 10,125, - 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114,116, 45, 62,102, -108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, - 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, 69, 77, 80, 9, - 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101,100,103,101, 45, - 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, - 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 9, - 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, 9, 40, 49, 60, - 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, 77, 69, 95, 72, - 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 9, 9, 40, 49, - 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, 49, 60, 60, 55, - 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, 56, 41, 10, 35, -100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, 32,112,117,110, -111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 47, 42, 32,114, -101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114,100,101,114,101, -100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 49, - 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 9, - 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, - 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, - 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105, -110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, 51, 9, 9, - 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, - 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, 9, 56, 10, 10, - 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 77, - 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, 9, 9, 9, 50, - 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105,115, 32,117,115, -101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62,116,121,112,101, - 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110,101, 32, 77, 69, - 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, 42, 32,109,116, -102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 9, - 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102,116,101,114, 32, - 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117,115,101, 32, 97, -102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, 86, 69, 9, 50, - 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, - 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 9, 9, 51, 50, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115,101,100, 44, 32, -115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, - 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, 9, 49, 10, 35, -100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, - 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 9, 56, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 9, - 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 87, 79, 83, 73, - 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, 9, 49, 48, 50, - 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100,101,102,105,110, -101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, 32, 90, 32, 97, -120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, - 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, 9, 49, 54, 51, - 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101,115, 32, 49, 45, - 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, 76, 44, 32, 87, - 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116,104, 32,116,104, -105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, 50, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, 97,108,112,104, - 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110,103, 33, 32, 42, - 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105,110, 32,116,104, -101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, 35,100,101,102, -105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117,110,119,114, 97, -112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, 49, 10, 35,100, -101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105,110,101, 32, 84, - 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, - 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, 32, 32, 49, 54, - 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101,102,105,110,101, - 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, - 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, 32,105,110, 32, -110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105,110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, 32,101,100,105, -116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, 66, 80,111,105, -110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97,114,116, 32, 42, - 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, 97, 99,101,109, -111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101,100,105,115,116, 44, 32,115, -104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117,108,112,111,115, 44, 32,117, -108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102,108,111, 97,116, - 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69,216, 24, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77, -117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116, -105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117, -105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, - 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101, -108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116, -116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108, -108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, - 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115, -116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65, -114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, - 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110, -103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, - 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117, -114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, - 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102, -111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116, -105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97, -112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, -105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, - 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 66,117,108,108,101,116, 83,111,102,116, 66, -111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, - 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, - 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, - 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87, -111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, - 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, - 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, - 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105, -110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117, -115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114, -117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97, -110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, - 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, - 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, - 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, - 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68, -101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105, -101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, - 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99, -101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, - 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105, -108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101, -101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83, -112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99, -101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, - 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, - 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, - 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, - 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84, -104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105,103,104,116, 0, - 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97, -110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121, -112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97, -108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, - 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99, -101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113, -117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, 97, 83,116, 97, - 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97, -114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97, -114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, - 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111, -114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, - 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116, -117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115, -105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101, -110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, - 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108, -101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111, -110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106, -101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117, -110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99, -116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, - 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, - 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, - 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, - 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99, -116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, - 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, - 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, - 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99, -116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, - 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 80, -111,115,101, 67,104, 97,110,110,101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105, -111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110, -101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116, -114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97, 99, -107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97, -120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, - 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116, -114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110, -116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, - 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115, -116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76, -105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107, -119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, - 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107, -101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0, -117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, - 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66, -105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, - 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, - 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86, -101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68, -105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101, -110,115, 68,105,115,116, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105, -110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, - 97, 76, 97,121,101,114, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, - 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, - 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104, -116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, - 66,111,105,100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, - 84,114,101,101, 0, 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, - 71, 80, 68,115,112,111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, - 71, 80, 68,108, 97,121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0,119,109, 87,105,110, -100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0, -119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, - 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119, -109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110, -101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, - 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111, -100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, - 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 67,104, 97,110,110,101,108, - 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, - 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, - 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65, -100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, - 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105, -100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103, -101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, - 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, - 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,152, 4,112, 0, 36, 0, 56, 0, -112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, 0, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1, -104, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 96, 0,240, 1, 32, 1,232, 0,136, 0,248, 1, 56, 1, 80, 0, 88, 0, 32, 3, -104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,144, 1, 20, 0, 48, 0, - 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, - 4, 0, 0, 1, 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, 96, 0,112, 0,120, 0, 88, 0,120, 0, -152, 0, 88, 0, 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, 80, 0,112, 0,128, 0,216, 0,128, 0, -240, 0, 72, 0,128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, 0, 0, 88, 0, 8, 0, 8, 0, 8, 1, -104, 0, 96, 0, 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0, -152, 0, 32, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,216, 1, 40, 0,184, 0,152, 0, - 64, 0, 24, 0, 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, - 72, 0,112, 1, 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, - 56, 0,152, 0, 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0, -168, 0,224, 0,144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,112, 0, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, - 32, 0, 80, 2, 16, 1, 16, 0,216, 21, 56, 0,160, 11, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, - 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 0, - 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, - 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, - 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0, -224, 0, 40, 0, 24, 1,176, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, - 80, 0,120, 0, 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 28, 0, - 28, 0, 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0, 8, 1, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, - 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, - 24, 0, 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,168, 0, 72, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0, -104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0, -104, 0,112, 0,104, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 83, 84, 82, 67, -136, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0, + 48, 4,130, 3, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, 48, 28,130, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, + 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, + 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, + 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, + 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, + 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, + 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, + 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, + 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, + 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, + 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, +115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 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,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255, +124,137,150,255, 3, 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,255,255,255,128, + 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 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,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 3, 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,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, 82, 96,110,255, +124,137,150,255, 3, 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,255,255,255,128, + 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255, +126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 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,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, + 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 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,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255, +108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, +255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 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,255,255,255,128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, + 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0, +169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, + 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0, +244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0, +111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0, +141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, + 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 21, 0, 0, 48, 28,130, 3, 1, 0, 0, 0,187, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 4,130, 3, 1, 0, 0, 0, 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, + 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 25, 0,231,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255, +255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, + 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, + 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, + 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, +255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255, +255,255,255,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255, +255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +175,175,175, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, + 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255, +255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,130, 0,255, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +107,107,107,100,143,143,143,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 79,101, 73,255,135,177,125,255,255,255,255,255,255,255,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 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,255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 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, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,204,255,255,170,204, 96,192, 64,255, 82, 96,110,255, +124,137,150,255, 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,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +143,143,143,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +107,107,107,255,178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +228,156,198,255,255,255,170,255, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 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, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255, +109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,255,133, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +153,153,153,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +143,143,143,255,198,119,119,255,255, 0, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,100, 0, 0,255, 0, 0,200,255, +128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, + 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255, +255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 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, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, + 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, 0, 0, 0,255, +255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60, +255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 0, 0,150,150,150,255,129,131,144,255,127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, + 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255, +255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 3, 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,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +114,114,114,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0, +247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, + 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, + 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, + 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, + 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0, +108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0, +131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,184,228, 0, 0, + 48,134,156, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, 38, 11, 0, 0, 42,110,101,120, +116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, + 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0, +103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, + 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101, +110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105, +100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, + 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0, +112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, + 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112, +101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97, +120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0, +101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100, +101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115, +104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101, +108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105, +100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108, +101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102, +114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, + 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111, +114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, + 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110, +100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108, +101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, + 97, 0, 97,110,103,108,101, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116, +104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, + 89, 70, 95,100,111,102,100,105,115,116, 0, 89, 70, 95, 97,112,101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112, +101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95, 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102, +114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, + 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, + 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, + 0, 42, 97,110,105,109, 0, 42,114,114, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103, +101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119, +101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108, +101, 0, 42,112,114,101,118,105,101,119, 0, 42,114,101,110,100,101,114, 95,116,101,120,116, 0,108, 97,115,116,117,112,100, 97, +116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95, +121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, + 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, + 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97, +112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, + 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114, +109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95, +109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, + 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, + 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102, +102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121, +109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116, +102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, + 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101, +110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, + 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108, +102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122, +101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97, +110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, + 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, + 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, + 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, + 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, + 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101, +115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95, +116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108, +111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105,110,116,115, 0,112,100,112, 97,100, 0, 42,112,115,121,115, 0, +112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, +112,100,112, 97,100, 50, 91, 50, 93, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110,116, 95,100, 97,116, + 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111,105,115,101, 95,105, +110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, 91, 51, 93, 0,110, +111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0,114,101,115,111,108, + 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, 0,101,120,116,101, +110,100, 0,105,110,116, 95,109,117,108,116,105,112,108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111, +117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, 42,100, 97,116, 97,115,101,116, 0,110,111,105,115,101,115,105,122, +101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, + 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, + 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97, +105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, + 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105, +115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116, +121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, + 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114, +111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121, +114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42, +110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115, +101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0, +109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115, +104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115, +112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, + 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0, +115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115, +105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102, +108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, + 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112, +101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101, +122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116, +101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121, +112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101, +115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122, +101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115, +105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105, +110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, + 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0, +115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, + 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0, 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112, +104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109, 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, + 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108,117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, + 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111,119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, + 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, + 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0, +114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115, +109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, + 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109, +109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, + 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101, +112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,116, +101,112,115, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112, +101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98, +103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111, +114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115, +108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95, +109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0, +102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100, +101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101, +100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115, +115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115, +104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111, +115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, + 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0, +114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102, +108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0, +115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110, +100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118, +110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0, +115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, + 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115, +104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0, +114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, + 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101, +110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0, +112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103, +114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0, +120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115, +115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115, +115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95, +102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115, +101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97, +109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101, +108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0, +101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, + 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, + 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42, +108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, + 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, + 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114, +117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110, +111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99, +104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101, +118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116, +104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, + 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101, +115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114, +101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97,115,116,115,101,108, 98,112, 0,115,112, 97, 99,101, +109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122, +101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121, +111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105, +116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, + 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116, +111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, + 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, + 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118, +101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109, +115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, + 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99, +116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111, +116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112, +101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, + 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0, +101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, + 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, + 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105, +115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108, +102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, + 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105, +110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97, +103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, + 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111, +114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101, +108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, + 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, + 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42, +111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114, +103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117, +110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108, +105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, + 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114, +112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116, +105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0, +109,105,100,108,101,118,101,108, 0,116,101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0, +117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114, +111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111, +114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112,101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67, +111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, + 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0, +100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100, +101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103, +101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42, +105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106, +101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110, +116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, + 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110, +116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98, +118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114, +116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0,110,101,101,100, 98,105, +110,100, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111,115, 0,116,111,116, 99, 97,103,101, +118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121, +110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108, +109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, + 93, 0,116,111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0, +112,115,121,115, 0,112,111,115,105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, + 97, 99,101,112, 97, 0,118,103,114,111,117,112, 0,112,114,111,116,101, 99,116, 0, 42,117,110,100,111, 95,118,101,114,116,115, + 0,117,110,100,111, 95,118,101,114,116,115, 95,116,111,116, 0,117,110,100,111, 95,115,105,103,110, 97,108, 0,108,118,108, 0, +116,111,116,108,118,108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, + 97,114,103,101,116, 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115, +104,114,105,110,107, 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, + 98,115,117,114,102, 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, + 91, 50, 93, 0,111,114,105,103,105,110, 79,112,116,115, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116, +115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102, +118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0, +108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, + 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0, +112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111, +120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111, +115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110, +101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, 95,109,111, +100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114,105,103, 91, + 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0,114,111,116, + 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0,100,114,111, +116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, 93, 91, 52, + 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, 99,116,102, +108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0,105,112,111, +102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97,103, 0, 98, +111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0,100,117,112, +101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102,111,114,109, +102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101,108, 0,109, +105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114,101,115,104, +111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119,116,121,112, +101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, 97, 99,101, +115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, 97, 99,116, +117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102,108, 97,103, + 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110,105,115,111, +116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, 0,110,108, + 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, 42,115,111, +102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101,115,116,114, +105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, 97,108, 99, +111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 42,100, +101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97,115,116, 68, + 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, 97,109,112, + 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, 99,116,105, +118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111,109, 97,116, + 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102,105,101,108, +100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120,105,115, 0, +122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, 0,102, 95, +115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0,102, 95,112, +111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109,112, 0,112, +100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99,116, 0,112, +100,101,102, 95,114,102,114,105, 99,116, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109, +112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, + 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, + 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110, +103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118, +105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121, +112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, + 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, + 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, + 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, + 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, + 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, + 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99, +105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, + 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, + 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, + 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99, +111,108,108,105,115,105,111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111, +110,115, 0,119,101,108,100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115, +112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115, +115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, + 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114, +105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101, +102,103,111, 97,108, 0,118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, + 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0, +110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, + 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112, +111,105,110,116,107,101,121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108, +108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103, +101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, + 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, + 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, + 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105,103,104,116,115, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, + 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105, +101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, + 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117, +101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110, +116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110, +105,109, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0,105,110, +105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117,114,102, + 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, + 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100,111,109, + 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114,116, 83, +108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, 97,116, +101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117,114,102, + 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114,116,105, + 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, 83,117, +114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, 69,110, +100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110,103,116, +104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102,111,114, + 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, 0,108, + 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, 0,104, +111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97,109, 98, +107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108,105,110, +102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, 82, 97, +100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115,105, 99, +115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112,104,121, +115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, 97, 0, +109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, 97,114, + 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115,116, 97, +114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101,110,100, + 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, 99, 0, + 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, 97,111, +109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, 95, 97, +100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, 0, 97, +111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104, +111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97, +115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115,101,108, 99,111,108, 0, +115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97, +116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75, +101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101, +114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114, +121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97, +100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 0, + 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, + 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117, +109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, + 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105, +122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111, +102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95, +109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114, +105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, + 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97, +116, 97, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101, +115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114, +102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, + 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 49, + 0,114,116, 50, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, + 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114, +116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112, +101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, + 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, + 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112, +104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116, +121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0, +120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, +111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, +115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, + 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, + 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, +116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, +101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, 99, 97, 99,104,101, 0, 71, 73,109,101,116,104,111,100, + 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99,116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111, +114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, 95, 99,108, 97,109,112,114,103, 98, 0,121,102,112, 97, +100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100,101,112,116,104, 0, 71, 73,112,105,120,101,108,115,112, +101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99,111,117,110,116, 0, 71, 73,109,105,120,112,104,111,116, +111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, + 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97,109,112,108,101,115, 0,121,102,112, 97,100, 50, 0, 71, + 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114,101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111, +119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112, +111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, + 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, + 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117, +100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, + 93, 0,115,105,109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100, +111,119,115, 97,109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109, +112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, + 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100, +101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, + 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116, +101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98, +115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114, +114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, + 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105,110,103, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, + 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114, +117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117, +114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,116,111,111,108, 0,115,101, 97,109, 95, 98,108,101,101, +100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101, +114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, + 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0, +101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, + 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101, +116, 95,115,105,122,101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0,103, 97,109,109, 97, 0,109,117,108, + 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105, +110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116, +121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103, +114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97, +108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118, +101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0, +117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, + 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97, +108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, + 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, + 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, + 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109, +111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116, +111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95, +100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100, +105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116, +104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108, +100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107, +103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109, +105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, + 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97, +110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116, +104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, + 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116, +112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115, +117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, + 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, + 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98, +100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111, +112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, + 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, + 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97, +103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95, +109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, 98, +106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116, +109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121, +115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0, 42, 99, 97,109,101,114, 97, 0, 42,119,111,114,108,100, 0, 42, +115,101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, + 51, 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0, 42, +101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, + 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0,115,111,117,110,100, 95,104, 97,110,100,108,101,115, 0, 42,116,104, +101, 68, 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97, +109,101, 0,102,114, 97,109,101, 95,115,116,101,112, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107, +101,121,105,110,103,115,101,116,115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110, +103,115, 0, 98,108,101,110,100, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, + 91, 52, 93, 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0, +112,101,114,115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101, +114,115,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, + 97,116, 91, 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, + 97,109,122,111,111,109, 0,118,105,101,119, 98,117,116, 0,114,102,108, 97,103, 0,118,105,101,119,108,111, 99,107, 0,112,101, +114,115,112, 0,118,105,101,119, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, + 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116, +104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, + 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101,119, 0,114,101,103,105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101, +116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0, +108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101, +110,116,114,101, 95, 98,111,110,101, 91, 51, 50, 93, 0,108, 97,121, 97, 99,116, 0,100,114, 97,119,116,121,112,101, 0,115, 99, +101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,103, +114,105,100,118,105,101,119, 0,112, 97,100,102, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101,115, 0, +103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, 0,107, +101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0,116,119,100, +114, 97,119,102,108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97, +119, 0,122, 98,117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, + 42,112,114,111,112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115, +107, 0,109,105,110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0, +115, 99,114,111,108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111, +109, 0,107,101,101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110, +120, 0,111,108,100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0, +116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, + 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0, +109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0, +112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, + 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111, +109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101, +110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, + 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, + 95,102,112, 0,109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, + 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114, +115, 95,110,101,120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121, +111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, + 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, + 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111, +117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, + 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, + 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, + 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105, +100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, + 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0, +108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, + 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115, +116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, + 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101, +114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, + 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, + 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, + 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0, +116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105, +108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108, +108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116, +118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, + 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117, +110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,105, +109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114, +111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 56, 93, 0,102,105,108,101,110, 97, +109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95,108, 0, +112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97,100,111, +119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100,111,119, + 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105,100,103, +101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, 98,101, +108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, 97, 99, +101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111,110,115, +112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0,112, 97, +110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110,101,114, + 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, 52, 93, + 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115,104, 97, +100,101,100,111,119,110, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95, +115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101, +108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101, +110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0, +119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, + 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108, +105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111, +108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, + 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, 0,119, + 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, 0,116, +105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104,101, 97, +100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, 97,100, +101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116, +105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101, +120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, 0,108, +105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97,110,101, +108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 91, 52, + 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115,104, 97, +100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, 52, 93, + 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103,114,111, +117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114,109, 91, + 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100, +103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, 91, 52, + 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, 93, 0, +102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, + 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95, +112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, + 0, 99,102,114, 97,109,101, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99, +104, 97,110,110,101,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115,105, +122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, 93, + 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, 52, + 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117,100, +105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115,105, +116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, 91, + 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101, +120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0,104, +112, 97,100, 91, 51, 93, 0,115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116, +102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116, +115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109, +101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 97,114,109, 91, 50, 48, + 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95,103,114,111,117,112, 0,115,112,101, 99, 91, 52, 93, 0,100,117,112, +102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102,111,110,116,100, +105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117,100,105,114, 91, + 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113,100,105,114, 91, + 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, 91, 49, 54, 48, + 93, 0,121,102,101,120,112,111,114,116,100,105,114, 91, 49, 54, 48, 93, 0,118,101,114,115,105,111,110,115, 0,103, 97,109,101, +102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110, +103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105, +122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111, +114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0, +116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114, +101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0, +107,101,121,109, 97,112,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101, +112,115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103, +112, 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116, +116,105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, + 0,108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95, +104, 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101, +120, 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0, +109,101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97, +109,101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110, +116,101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, + 95,102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0, +110,100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0,105,112, +111, 95,110,101,119, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, + 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118,101, +114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101, +110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, + 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117, +114,115,111,114, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, + 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110, +101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, + 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115, +120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116, +105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, + 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108, +108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103, +114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, + 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115, +112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105, +110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97, +108,105,103,110,109,101,110,116, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114, +115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101, +114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115, +105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97, +103,115, 0,103,108,111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, + 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110,114, 0, 98,111,116,116,111,109, 0,114,105, +103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, + 97,105,110, 91, 51, 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, 0, +115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0,111, +114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, 98, + 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,115, +116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, 42, +105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, 42, +105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, 95, +112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111,102, +115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,104, 97,110,100, +115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0,102, 97, 99,102, 48, 0,102, + 97, 99,102, 49, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42, +115,111,117,110,100, 0, 42,115,111,117,110,100, 95,104, 97,110,100,108,101, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99, +101,110,101,110,114, 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, + 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108, +101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115, +101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105, +109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101, +100,103,101, 87,105,100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0, +102, 67,108, 97,109,112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, + 67,111,109,112, 0, 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70, +105,110, 0, 83, 99, 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, + 0,114,111,116, 73,110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0, 42,102,114, + 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108,105,100, 70,114, 97,109, +101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, 97,114,116, 0,110,111, +114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, 0,114, 97,110,100,108, +105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108,101,110, 0,100,101,102, +118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105,108,100, 91, 52, 93, 0, +109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116,105, 99,115,116,101,112, + 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97,103, 50,110,101,103, 0, +118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, 0,118,103,114,111,117, +112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117,115,101,100, 0,117,115, +101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115,116,118, 97,108, 0, 42, +109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97,109,101, 91, 51, 50, 93, + 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0,109, 97,120,118, 97,108, +117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101,114,105, 97,108, 78, 97, +109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, 51, 50, 93, 0,109, 97, +116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97,110,110,101,108, 91, 51, + 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106,101, 99,116, 0,115,117, + 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112,117,108,115,101, 0,102, +114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106,111,121,105,110,100,101, +120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, 0,104, 97,116, 0,104, + 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0,109,111,100,117,108,101, 91, 54, 52, + 93, 0, 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110, +107,115, 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111, +112, 91, 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, + 0,115,116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, + 97,100, 49, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,109, 97,107,101, 99,111,112,121, 0, 99,111, +112,121,109, 97,100,101, 0,112, 97,100, 50, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86,101,108,111, 99,105,116,121, 91, 51, + 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102,108, 97,103, 0,100,121,110, 95,111, +112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111,114, 99,101,114,111,116, 91, 51, 93, + 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117,108, 97,114,118,101,108,111, 99,105, +116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,109, +105,110, 0,109, 97,120, 0,118,105,115,105,102, 97, 99, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, + 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, + 97,116,112,114,111,112, 91, 51, 50, 93, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, 95, + 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97,114, +103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111,100, +121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, 54, + 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, 0, +103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111,116, +115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101,101, +100,100, 97,109,112, 0, 42,115,111,117,114, 99,101, 0,102,114, 97,109,101,115,107,105,112, 0,109,117,116,101, 0, 99,104, 97, +110,103,101,100, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, 99,101, + 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, 95,102, + 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101, +114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, 99,107, +101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, 97, 99, +104,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95, +111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, + 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104, +101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, + 0,120,119,105,100,116,104, 0,122,119,105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104, +101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, + 42,101,100, 98,111, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111,116,101, 99,116,101,100, 0,103,104, +111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121,112,101, 0,112, 97,116,104,115,105, +122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104,115,102, 0,112, 97,116,104,101,102, + 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0,115,116, 97,114,116, 95,102,114, 97, +109,101, 0,101,110,100, 95,102,114, 97,109,101, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101, +108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, + 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, + 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, + 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97, +100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105, +109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, + 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, + 0, 99,104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102, +115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, + 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105, +107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110,115,116,101,112, 0,109, + 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120,118,101,108, 0,100, 97, +109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115,116,111,109, 67,111,108, + 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, 97,114,107,101,114, 0, +102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0, 97, 99,116,110,114, 0, 97, 99,116,119,105,100,116,104, 0,116,105, +109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, + 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105, +110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, + 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116, +115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111, +110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111, +108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, + 51, 93, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97, +103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102,108, 97,103, 0,102,111,108,108,111,119, +102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108, +103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105, +110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110, +118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102, +114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, + 0,116,111, 95,109, 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110, +110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, + 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115, +116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, + 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, + 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42, +110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110, +116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111, +119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, + 42,110,101,119, 95,110,111,100,101, 0,117,115,101,114,110, 97,109,101, 91, 51, 50, 93, 0,108, 97,115,116,121, 0,111,117,116, +112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, + 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, + 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118, +114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111, +110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99, +107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117, +114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0, 42,115,101,108,105,110, + 0, 42,115,101,108,111,117,116, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, + 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,116, + 99,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110, +115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0, 99,117, +114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104,101,105, +103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,105,116,101,114, 0, +119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, + 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107, +101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107, +116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111, +112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110, +103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100, +101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98, +108,101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, + 0, 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,114,114, + 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98, +119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110, +101, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109, +111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, + 99,117,108,112,116, 95,116,111,111,108, 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111, +110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0, +109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, 0, 42,112,111,111,108, 0,118,101,108, 91, 51, 93, 0,114,111, +116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117, +109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115, +101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0, +100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0, 97,108,105,118,101, 0,108,111,111,112, 0,104, + 97,105,114, 95,105,110,100,101,120, 0, 42, 98,111,105,100,115, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, + 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0, +100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,114,101,110, 95,115, +116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110, +103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, + 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, + 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105, +108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105, +109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109, +112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111, +114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105, +100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, + 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, + 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122, +101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119, +110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98, +114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122, +101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, + 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114, +111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114, +111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, + 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, + 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97, +105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116, +115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, + 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, + 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, + 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95, +111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95, +102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108, +100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101, +115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, + 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116, +111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0, 91, + 51, 93, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, + 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108, +101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, + 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116, +121, 95,115,109,111,111,116,104, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, + 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98, +101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114, +101,115,101,116,115, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101, +108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111, +112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99, +107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, + 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98, +117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109, +101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101, +108, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119, +115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112,101,114, 97,116,111, +114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111, +114,115, 0,107,101,121, 99,111,110,102,105,103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,100,101,102, 97,117, +108,116, 97, 99,116,109, 97,112, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116,105,109,101,114, 0, 42, +103,104,111,115,116,119,105,110, 0, 42,110,101,119,115, 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, + 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, + 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115, +116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0, +100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, + 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112, +114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101, +121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, + 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105, +116,101,109,115, 0, 98, 97,115,101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115, +116,111,109,100, 97,116, 97, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0,109,118, 97,108, + 91, 50, 93, 0,112,114,101,118,120, 0,112,114,101,118,121, 0,117,110,105, 99,111,100,101, 0, 97,115, 99,105,105, 0, 42,107, +101,121,109, 97,112, 95,105,100,110, 97,109,101, 0, 99,117,115,116,111,109, 0, 99,117,115,116,111,109,100, 97,116, 97,102,114, +101,101, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116, +115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, + 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, + 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97, +102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, + 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0, 42,114,110, + 97, 95,112, 97,116,104, 0, 97,114,114, 97,121, 95,105,110,100,101,120, 0,105,100,116,121,112,101, 0,101,120,112,114,101,115, +115,105,111,110, 91, 50, 53, 54, 93, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 99,111,108,111,114, 95,109,111,100,101, + 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112, +105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, + 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, + 91, 54, 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114,111,117,112,109,111,100,101, 0,112, 97,116,104,115, 0,107, +101,121,105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, + 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114, +105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100, +101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97, +114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108, +111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115, +116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100, +105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, + 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, + 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97, + 99, 99,117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112, +101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95, +112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, + 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95, +109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, + 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 0, + 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101, +120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, + 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, + 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111, +105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95, +119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, + 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95, +104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, + 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, + 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0,110,117,109,112,111,105,110,116,115, 0, 0, 0, + 84, 89, 80, 69,195, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0, +105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, + 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, + 99, 50,105, 0,118,101, 99, 50,102, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51, +100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, + 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97, +114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118, +101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105, +112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101, +120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108, +101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, + 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, + 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, + 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 80, 97,114,116,105, 99, +108,101, 83,121,115,116,101,109, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, + 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86, +111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111, +110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77, +101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117, +114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, + 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101, +102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100, +105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, + 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80, +111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101, +114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, + 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 32, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 32, 40, 49, 60, 60, 49, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, + 77, 32, 40, 49, 60, 60, 50, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 32, 40, 49, 60, 60, 51, 41, 32, + 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, 32, 40, 49, 60, 60, 53, 41, 32, 35,100, +101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 32, 40, 49, 60, 60, 55, 41, 32, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 32, 40, 49, 60, 60, 56, 41, 32, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 83, 72, 65, 82, 80, 32, 40, 49, 60, 60, 57, 41, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, + 49, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 32, 50, 32, 35,100,101,102,105,110,101, 32, + 77, 69, 95, 70, 76, 73, 80, 86, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 52, 32, 56, 32, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, + 80, 82, 79, 74, 88, 90, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 89, 90, 32, 54, 52, 32, 32, + 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, 86, + 51, 32, 50, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 86, 51, 86, 52, 32, 52, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 32, 56, 32, 32, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 83, 77, 79, 79, 84, 72, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, + 69, 76, 32, 50, 32, 32, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 32, 48, 32, 35,100,101,102,105,110,101, + 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 32, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 32, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 49, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, + 84, 73, 86, 69, 32, 50, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 49, 32, 52, 32, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 83, 69, 76, 50, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 32, 49, 54, 32, 35, +100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, + 69, 32, 54, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 32, 49, 32, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 32, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 69, + 88, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, 82, 84, 32, 56, 32, 35,100,101,102, +105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 32, 49, 54, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, + 68, 67, 79, 76, 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, 76, 69, 83, 32, 49, 50, 56, 32, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 32, 50, 53, 54, 32, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 84, 87, 79, 83, 73, 68, 69, 32, 53, 49, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, + 76, 69, 32, 49, 48, 50, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 32, 50, 48, 52, 56, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 32, 52, 48, 57, 54, 32, 32, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 83, 72, 65, 68, 79, 87, 32, 56, 49, 57, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, + 78, 84, 32, 49, 54, 51, 56, 52, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 32, 48, 32, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 32, 49, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 32, 50, + 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 32, 52, 32, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 83, 85, 66, 32, 51, 32, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 32, 49, 32, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 32, 50, 32, 35,100,101,102,105,110,101, + 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 32, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, + 82, 69, 67, 65, 84, 69, 68, 52, 32, 56, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 32, 49, 54, 32, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 32, 51, 50, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, + 32, 54, 52, 32, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 52, 32, 49, 50, 56, 32, 35,101,110,100,105,102,100, 32, + 99,104, 97,114, 32,117,115,101, 95, 99,111,108, 44, 32,102,108, 97,103, 59, 10, 10, 9, 47, 42, 32, 83,112,101, 99,105, 97,108, + 32,108,101,118,101,108, 32, 49, 32,100, 97,116, 97, 32,116,104, 97,116, 32, 99, 97,110,110,111,116, 32, 98,101, 32,109,111,100, +105,102,105,101,100, 32,102,114,111,109, 32,111,116,104,101,114, 32,108,101,118,101,108,115, 32, 42, 47, 10, 9, 67,117,115,116, +111,109, 68, 97,116, 97, 32,118,100, 97,116, 97, 59, 10, 9, 67,117,115,116,111,109, 68, 97,116, 97, 32,102,100, 97,116, 97, 59, + 10, 9,115,104,111,114,116, 32, 42,101,100,103,101, 95,102,108, 97,103,115, 59, 10, 9, 99,104, 97,114, 32, 42,101,100,103,101, + 95, 99,114,101, 97,115,101,115, 59, 10,125, 32, 77,117,108,116,105,114,101,115, 59, 10, 10, 47, 42, 42, 32, 69,110,100, 32, 77, +117,108,116,105,114,101,115, 32, 42, 42, 47, 10, 10,116,121,112,101,100,101,102, 32,115,116,114,117, 99,116, 32, 80, 97,114,116, +105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 32,123, 10, 9,117,110,115,105,103,110,101,100, 32,105,110,116, 32, 42,118, +101,114,116, 95,109, 97,112, 59, 32, 47, 42, 32,118,101,114,116, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, + 32, 78,101,119, 32, 73,110,100,101,120, 32, 42, 47, 10, 9,105,110,116, 32, 42,101,100,103,101, 95,109, 97,112, 59, 32, 47, 42, + 32,101,100,103,101, 95,109, 97,112, 91, 79,108,100, 32, 73,110,100,101,120, 93, 61, 32, 78,101,119, 32, 73,110,100,101,120, 44, + 32, 45, 49, 61, 32,104,105,100,100,101,110, 32, 42, 47, 10, 9, 77, 70, 97, 99,101, 32, 42,111,108,100, 95,102, 97, 99,101,115, + 59, 10, 9, 77, 69,100,103,101, 32, 42,111,108,100, 95,101,100,103,101,115, 59, 10, 9,117,110,115,105,103,110,101,100, 32,105, +110,116, 32,116,111,116,102, 97, 99,101, 44, 32,116,111,116,101,100,103,101, 44, 32,116,111,116,118,101,114,116, 44, 32,112, 97, +100, 59, 10,125, 32, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 59, 10, 10, 47, 42, 32,109,118,101,114, +116, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, + 95, 83, 80, 72, 69, 82, 69, 84, 69, 83, 84, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 80, 72, 69, 82, 69, 84, + 69, 77, 80, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 72, 73, 68, 69, 9, 9, 9, 49, 54, 10, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 86, 69, 82, 84, 95, 77, 69, 82, 71, 69, 68, 9, 9, 40, 49, 60, 60, 54, 41, 10, 10, 47, 42, 32,109,101, +100,103,101, 45, 62,102,108, 97,103, 32, 40, 49, 61, 83, 69, 76, 69, 67, 84, 41, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 69, 68, 71, 69, 68, 82, 65, 87, 9, 9, 9, 40, 49, 60, 60, 49, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, + 69, 65, 77, 9, 9, 9, 9, 40, 49, 60, 60, 50, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 71, 79, 78, 9, 9, 9, + 9, 40, 49, 60, 60, 51, 41, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,114,101,115,101,114,118,101, 32, 49, 54, 32,102,111,114, 32, + 77, 69, 95, 72, 73, 68, 69, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 69, 68, 71, 69, 82, 69, 78, 68, 69, 82, + 9, 9, 40, 49, 60, 60, 53, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 76, 79, 79, 83, 69, 69, 68, 71, 69, 9, 9, 40, + 49, 60, 60, 55, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 69, 65, 77, 95, 76, 65, 83, 84, 9, 9, 40, 49, 60, 60, + 56, 41, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 83, 72, 65, 82, 80, 9, 9, 9, 40, 49, 60, 60, 57, 41, 10, 10, 47, 42, + 32,112,117,110,111, 32, 61, 32,118,101,114,116,101,120,110,111,114,109, 97,108, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, + 47, 42, 32,114,101,110,100,101,114, 32, 97,115,115,117,109,101,115, 32,102,108,105,112,115, 32,116,111, 32, 98,101, 32,111,114, +100,101,114,101,100, 32,108,105,107,101, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, + 73, 80, 86, 49, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 50, 9, 9, 50, 10, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 70, 76, 73, 80, 86, 51, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 76, 73, + 80, 86, 52, 9, 9, 56, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 89, 9, 9, 49, 54, 10, 35,100,101, +102,105,110,101, 32, 77, 69, 95, 80, 82, 79, 74, 88, 90, 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 80, 82, + 79, 74, 89, 90, 9, 9, 54, 52, 10, 10, 47, 42, 32,101,100, 99,111,100,101, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35, +100,101,102,105,110,101, 32, 77, 69, 95, 86, 49, 86, 50, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 50, + 86, 51, 9, 9, 9, 50, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 51, 86, 49, 9, 9, 9, 52, 10, 35,100,101,102,105, +110,101, 32, 77, 69, 95, 86, 51, 86, 52, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 52, 86, 49, 9, 9, + 9, 56, 10, 10, 47, 42, 32,102,108, 97,103, 32, 40,109,102, 97, 99,101, 41, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, + 69, 95, 83, 77, 79, 79, 84, 72, 9, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 65, 67, 69, 95, 83, 69, 76, + 9, 9, 9, 50, 10, 9, 9, 9, 9, 9, 9, 47, 42, 32,102,108, 97,103, 32, 77, 69, 95, 72, 73, 68, 69, 61, 61, 49, 54, 32,105, +115, 32,117,115,101,100, 32,104,101,114,101, 32,116,111,111, 32, 42, 47, 32, 10, 47, 42, 32,109,115,101,108,101, 99,116, 45, 62, +116,121,112,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 86, 83, 69,108, 9, 48, 10, 35,100,101,102,105,110, +101, 32, 77, 69, 95, 69, 83, 69,108, 32, 49, 10, 35,100,101,102,105,110,101, 32, 77, 69, 95, 70, 83, 69, 76, 32, 50, 10, 10, 47, + 42, 32,109,116,102, 97, 99,101, 45, 62,102,108, 97,103, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, + 69, 67, 84, 9, 49, 32, 47, 42, 32,117,115,101, 32, 77, 70, 97, 99,101, 32,104,105,100,101, 32,102,108, 97,103, 32, 40, 97,102, +116,101,114, 32, 50, 46, 52, 51, 41, 44, 32,115,104,111,117,108,100, 32, 98,101, 32, 97, 98,108,101, 32,116,111, 32,114,101,117, +115,101, 32, 97,102,116,101,114, 32, 50, 46, 52, 52, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 67, 84, 73, + 86, 69, 9, 50, 32, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 33, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, + 70, 95, 83, 69, 76, 49, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 50, 9, 9, 56, 10, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 51, 9, 9, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 69, 76, 52, + 9, 9, 51, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 72, 73, 68, 69, 9, 9, 54, 52, 32, 47, 42, 32,117,110,117,115, +101,100, 44, 32,115, 97,109,101, 32, 97,115, 32, 84, 70, 95, 83, 69, 76, 69, 67, 84, 32, 42, 47, 10, 10, 47, 42, 32,109,116,102, + 97, 99,101, 45, 62,109,111,100,101, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 89, 78, 65, 77, 73, 67, 9, + 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 83, 79, 82, 84, 9, 50, 10, 35,100,101,102,105,110, +101, 32, 84, 70, 95, 84, 69, 88, 9, 9, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 86, 69, + 82, 84, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 76, 73, 71, 72, 84, 9, 9, 49, 54, 10, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 83, 72, 65, 82, 69, 68, 67, 79, 76, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, 73, + 76, 69, 83, 9, 9, 49, 50, 56, 9, 9, 47, 42, 32,100,101,112,114,101, 99, 97,116,101,100, 32, 42, 47, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 9, 50, 53, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 84, + 87, 79, 83, 73, 68, 69, 9, 9, 53, 49, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 73, 78, 86, 73, 83, 73, 66, 76, 69, + 9, 49, 48, 50, 52, 10, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 79, 66, 67, 79, 76, 9, 9, 50, 48, 52, 56, 10, 35,100, +101,102,105,110,101, 32, 84, 70, 95, 66, 73, 76, 76, 66, 79, 65, 82, 68, 50, 9, 52, 48, 57, 54, 9, 47, 42, 32,119,105,116,104, + 32, 90, 32, 97,120,105,115, 32, 99,111,110,115,116,114, 97,105,110,116, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, + 95, 83, 72, 65, 68, 79, 87, 9, 9, 56, 49, 57, 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 66, 77, 70, 79, 78, 84, 9, + 9, 49, 54, 51, 56, 52, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,116,114, 97,110,115,112, 44, 32,118, 97,108,117,101, +115, 32, 49, 45, 52, 32, 97,114,101, 32,117,115,101,100, 32, 97,115, 32,102,108, 97,103,115, 32,105,110, 32,116,104,101, 32, 71, + 76, 44, 32, 87, 65, 82, 78, 73, 78, 71, 44, 32, 84, 70, 95, 83, 85, 66, 32, 99, 97,110,116, 32,119,111,114,107, 32,119,105,116, +104, 32,116,104,105,115, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 79, 76, 73, 68, 9, 48, 10, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 65, 68, 68, 9, 9, 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 65, 76, 80, 72, 65, 9, + 50, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 67, 76, 73, 80, 9, 9, 52, 32, 47, 42, 32, 99,108,105,112,109, 97,112, 32, + 97,108,112,104, 97, 47, 98,105,110, 97,114,121, 32, 97,108,112,104, 97, 32, 97,108,108, 32,111,114, 32,110,111,116,104,105,110, +103, 33, 32, 42, 47, 10, 10, 47, 42, 32,115,117, 98, 32,105,115, 32,110,111,116, 32, 97,118, 97,105,108, 97, 98,108,101, 32,105, +110, 32,116,104,101, 32,117,115,101,114, 32,105,110,116,101,114,102, 97, 99,101, 32, 97,110,121,109,111,114,101, 32, 42, 47, 10, + 35,100,101,102,105,110,101, 32, 84, 70, 95, 83, 85, 66, 9, 9, 51, 10, 10, 10, 47, 42, 32,109,116,102, 97, 99,101, 45, 62,117, +110,119,114, 97,112, 32, 42, 47, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 49, 9, + 49, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 50, 9, 50, 10, 35,100,101,102,105, +110,101, 32, 84, 70, 95, 68, 69, 80, 82, 69, 67, 65, 84, 69, 68, 51, 9, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 68, + 69, 80, 82, 69, 67, 65, 84, 69, 68, 52, 9, 56, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 49, 9, 9, 32, 32, + 32, 32, 49, 54, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 50, 9, 9, 32, 32, 32, 32, 51, 50, 10, 35,100,101, +102,105,110,101, 32, 84, 70, 95, 80, 73, 78, 51, 9, 32, 32, 32, 9, 9, 54, 52, 10, 35,100,101,102,105,110,101, 32, 84, 70, 95, + 80, 73, 78, 52, 9, 32, 32, 32, 32, 9, 49, 50, 56, 10, 10, 35,101,110,100,105,102, 10,100,105, 79, 67, 75, 33,110,100,101,120, + 32,105,110, 32,110,117,114, 98, 32,108,105,115,116, 32, 42, 47, 10, 9,105,110,116, 32, 97, 99,116,110,117, 59, 10, 9, 47, 42, + 32,101,100,105,116, 44, 32,108, 97,115,116, 32,115,101,108,101, 99,116,101,100, 32, 98,112,111,105,110,116, 32, 42, 47, 10, 9, + 66, 80,111,105,110,116, 32, 42,108, 97,115,116,115,101,108, 98,112, 59, 10, 9, 10, 9, 47, 42, 32,102,111,110,116, 32,112, 97, +114,116, 32, 42, 47, 10, 9,115,104,111,114,116, 32,108,101,110, 44, 32,108,105,110,101,115, 44, 32,112,111,115, 44, 32,115,112, + 97, 99,101,109,111,100,101, 59, 10, 9,102,108,111, 97,116, 32,115,112, 97, 99,105,110,103, 44, 32,108,105,110,101,100,105,115, +116, 44, 32,115,104,101, 97,114, 44, 32,102,115,105,122,101, 44, 32,119,111,114,100,115,112, 97, 99,101, 44, 32,117,108,112,111, +115, 44, 32,117,108,104,101,105,103,104,116, 59, 10, 9,102,108,111, 97,116, 32,120,111,102, 44, 32,121,111,102, 59, 10, 9,102, +108,111, 97,116, 32,108,105,110,101,119,105,100,116,104, 59, 10, 70, 82, 69, 69,216, 24, 0, 77,117,108,116,105,114,101,115, 67, +111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, + 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, +105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105, +110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107, +101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105, +102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108, +111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101, +116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, + 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101, +101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115, +104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115, +104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116, +101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77, +111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110, +107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111, +100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 76, 97,116,116,105, 99,101, 0, 98, 68,101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105, +111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 66,117,108,108,101,116, 83, +111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72, +111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103, +104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114, +116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, + 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107, +116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 70, 70, 77,112,101,103, 67,111,100,101, 99, 68, 97,116, 97, 0, 65,117, +100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, 0, 82,101,110,100,101,114, 68, + 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111,109,101, 0, 71, 97,109,101, 70, +114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107,101,114, 0, 80, 97,105,110,116, + 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99, +108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, 83,101,116,116,105,110,103,115, + 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99,117,108,112,116, 0, 86, 80, 97, +105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, 85,110,105,116, 83,101,116,116, +105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105,116,105,110,103, 0, 83, 99,101, +110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, 82,101,103,105,111,110, 86,105, +101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105,101,119, 68, 97,116, 97, 0, 86, +105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114,101, 0,119,109, 84,105,109,101, +114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, 68, 0, 83,112, 97, 99,101, 73, +110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111,112,101, 83,104,101,101,116, 0, + 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83,101,108,101, 99,116, 80, 97,114, + 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119,109, 79,112,101,114, 97,116,111, +114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84,114,101,101, 83,116,111,114,101, + 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103,101, 0, 83,112, 97, 99,101, 78, +108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, + 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83, +112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115, +111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83, +116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105, +100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, + 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101,109,101, 0, 83,111,108,105,100, 76,105, +103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101, +108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, + 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71, +108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, + 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97, +108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, + 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110,100, 0, 83,111,117,110,100, 72, 97,110,100,108,101, 0, 77,101,116, + 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111, +114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, 67,111,110,116,114, +111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, + 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83, +101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, + 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101,110,115,111,114, 0, + 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111, +108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100, +111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110, +115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116, +114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112,114,101,115,115,105, +111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100, +100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, + 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, + 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, 80,114,111,112,101, +114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, + 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, + 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110, +100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97, +109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, + 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116, +111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97, +116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, + 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, + 86,101,114,116, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103, +115, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, + 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67, +104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77, +105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97, +105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, + 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 76,111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105, +115,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110, +115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83, +116,114,105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100, +101, 76,105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, + 0, 98, 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117, +114, 68, 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97, +108, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105, +108,101, 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, + 70,108,111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111, +108, 0, 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100, +101, 71,108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, + 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118, +101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, + 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, + 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, + 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, + 99,108,101, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116, +116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97, +114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105, +110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101, +114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97, +103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, + 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73, +116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116, +111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, + 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108, +111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101, +115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78, +111,105,115,101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 67,104, 97,110,110,101,108, 68,114,105,118,101,114, 0, + 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, 0, 65,110,105,109, 77, 97, +112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, 95, 80, 97,116,104, 0, 75, +101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65,100,116, 84,101,109,112,108, + 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, 65,118,111,105,100, 0, 66, +111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105,100, 82,117,108,101, 70,111, +108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103,101, 83,112,101,101,100, 0, + 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, 76, 85, 73, 68, 95, 51, 68, + 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, 4, 0, 4, 0, + 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, 16, 0, 16, 0, + 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,152, 4,112, 0, 36, 0, 56, 0,112, 0,128, 0, +168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,152, 0, 40, 0, 0, 6,184, 1, 0, 0, 0, 0, 0, 0, 16, 1,104, 1,120, 1, + 24, 0, 8, 3,200, 0, 0, 0, 96, 0,240, 1, 32, 1,232, 0,136, 0,248, 1, 56, 1, 80, 0, 88, 0, 32, 3,104, 0, 88, 1, + 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,144, 1, 20, 0, 48, 0, 64, 0, 24, 0, + 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 32, 0,112, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, 4, 0, 4, 0, 0, 1, + 32, 0, 16, 0, 0, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 72, 0, 96, 0,112, 0,120, 0, 88, 0,120, 0,152, 0, 88, 0, + 80, 0,128, 0, 80, 0,104, 0,248, 0, 56, 0,192, 0,176, 0,216, 0, 80, 0,112, 0,128, 0,216, 0,128, 0,240, 0, 72, 0, +128, 0, 0, 0,144, 0, 32, 0, 8, 2,152, 0, 0, 0,112, 0, 0, 0, 0, 0, 88, 0, 8, 0, 8, 0, 8, 1,104, 0, 96, 0, + 88, 0, 88, 0, 88, 0,192, 1,136, 0,128, 0, 72, 0,232, 0, 48, 0, 0, 0,144, 0, 88, 0,104, 0,120, 0,152, 0, 32, 1, +224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,216, 1, 40, 0,184, 0,152, 0, 64, 0, 24, 0, + 88, 0, 24, 4, 64, 0, 24, 0, 16, 0, 96, 0, 88, 0, 32, 0, 40, 1, 48, 0, 8, 0,112, 0, 88, 0, 56, 0, 72, 0,120, 1, + 32, 0, 8, 0, 16, 0, 48, 2, 0, 0, 0, 0, 64, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 56, 0,152, 0, + 72, 0,208, 0,248, 0, 32, 0, 0, 1,240, 0,208, 1,104, 0, 0, 0,152, 0, 0, 0, 40, 1, 16, 0, 16, 0,168, 0,224, 0, +144, 2,120, 2, 64, 0,200, 0, 32, 1, 72, 0,208, 2, 40, 0,112, 0, 40, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0, 80, 2, + 16, 1, 16, 0,216, 21, 56, 0,160, 11, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, + 48, 0, 16, 0, 8, 0, 52, 0, 0, 1, 32, 1,200, 1, 8, 1, 48, 1, 64, 0, 32, 0, 12, 0, 24, 0, 48, 0, 16, 0, 24, 0, + 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0, +108, 0, 72, 0, 72, 0, 96, 0,104, 0, 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0, +112, 0, 84, 0, 32, 0, 96, 0, 56, 0, 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,224, 0, 40, 0, + 32, 1,176, 0, 16, 0, 24, 0, 24, 0, 0, 2, 4, 0, 40, 0,120, 0, 8, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, + 56, 0, 48, 0, 48, 0, 72, 0, 48, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 28, 0, 28, 0, + 28, 0, 56, 0, 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0, 8, 1, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, + 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 32, 0, 12, 0, 56, 0, 24, 0, + 72, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 8, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 32, 0, 40, 0,192, 0, 40, 0, 32, 0, 8, 1,224, 0,168, 0, 72, 0, 0, 0, 0, 0,120, 0, 0, 0,120, 0, 0, 0,104, 0, + 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0,112, 0, 32, 1, 16, 0,104, 0, 0, 1, 40, 0,200, 0,104, 0, +112, 0,104, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, 0, 0, 0, 0, 0, 0, 83, 84, 82, 67, +137, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 15, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, @@ -3153,7 +14292,7 @@ char datatoc_B_blend[]= { 46, 0,134, 0, 32, 0,164, 0,194, 0, 4, 0,194, 0, 0, 0,194, 0, 1, 0, 0, 0,100, 5, 7, 0,101, 5,195, 0, 6, 0, 189, 0, 85, 5, 7, 0,102, 5, 4, 0, 90, 0, 0, 0,103, 5, 0, 0,104, 5, 0, 0,191, 2,196, 0, 9, 0,189, 0, 85, 5, 7, 0,105, 5, 7, 0,106, 5, 2, 0, 70, 1, 2, 0, 19, 0, 4, 0, 36, 0, 4, 0,107, 5, 87, 0,108, 5, 9, 0, 89, 5, -197, 0, 72, 0,196, 0,109, 5,196, 0,110, 5,195, 0, 81, 3, 7, 0,111, 5, 2, 0,112, 5, 2, 0,113, 5, 7, 0,114, 5, +197, 0, 74, 0,196, 0,109, 5,196, 0,110, 5,195, 0, 81, 3, 7, 0,111, 5, 2, 0,112, 5, 2, 0,113, 5, 7, 0,114, 5, 7, 0,115, 5, 2, 0,228, 3, 2, 0,116, 5, 7, 0,117, 5, 7, 0,118, 5, 7, 0,119, 5, 2, 0,120, 5, 2, 0, 96, 5, 2, 0,121, 5, 2, 0,122, 5, 2, 0,123, 5, 2, 0,124, 5, 7, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, 2, 0,128, 5, 2, 0,129, 5, 2, 0,130, 5, 2, 0,131, 5, 2, 0,132, 5, 2, 0,133, 5, 2, 0,134, 5,191, 0,135, 5,193, 0,136, 5, @@ -3162,80 +14301,80 @@ char datatoc_B_blend[]= { 7, 0,153, 5, 7, 0,154, 5, 7, 0,155, 5, 7, 0,156, 5, 7, 0,157, 5, 7, 0,158, 5, 2, 0,159, 5, 0, 0,160, 5, 0, 0,161, 5, 0, 0,162, 5, 0, 0,163, 5, 32, 0,164, 5, 0, 0,165, 5, 0, 0,166, 5, 0, 0,167, 5, 0, 0,168, 5, 0, 0,169, 5, 0, 0,170, 5, 0, 0,171, 5, 0, 0,172, 5, 2, 0,173, 5, 2, 0,174, 5, 2, 0,175, 5, 2, 0,176, 5, - 2, 0,177, 5,198, 0, 8, 0, 4, 0,178, 5, 4, 0,179, 5, 4, 0,180, 5, 4, 0,181, 5, 4, 0,182, 5, 4, 0,183, 5, - 4, 0, 54, 0, 4, 0,126, 2,199, 0, 3, 0, 7, 0,184, 5, 2, 0,185, 5, 2, 0, 19, 0,200, 0, 2, 0, 7, 0,186, 5, - 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,187, 5,176, 0,188, 5, 46, 0,189, 5, 47, 0,238, 0, - 12, 0,190, 5,177, 0,191, 5, 32, 0,192, 5, 7, 0,193, 5, 7, 0,194, 5, 7, 0,195, 5, 7, 0,196, 5, 4, 0,112, 3, - 2, 0, 19, 0, 2, 0, 64, 1, 61, 0, 59, 1,201, 0,197, 5,197, 0,198, 5,202, 0,199, 5,183, 0,182, 0,181, 0,200, 5, - 12, 0,100, 0, 12, 0,201, 5, 12, 0,202, 5,203, 0,203, 5, 2, 0,204, 5, 2, 0,205, 5, 2, 0,247, 0, 2, 0,206, 5, - 4, 0,207, 5, 4, 0,208, 5, 12, 0,209, 5,186, 0, 77, 5,187, 0,210, 5,199, 0,211, 5,162, 0, 94, 3,200, 0,212, 5, -204, 0, 6, 0, 47, 0,238, 0, 45, 0, 58, 1, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,106, 0, 7, 0,213, 5,205, 0, 35, 0, - 7, 0,214, 5, 7, 0,215, 5, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 7, 0,220, 5, 7, 0,221, 5, - 7, 0,222, 5, 7, 0, 77, 1, 7, 0,223, 5, 7, 0,224, 5, 7, 0,225, 5, 7, 0,226, 5, 7, 0,171, 0, 2, 0,227, 5, - 2, 0,228, 5, 2, 0, 71, 2, 2, 0,229, 5, 2, 0,230, 5, 2, 0,231, 5, 2, 0,232, 5, 7, 0,233, 5, 72, 0,234, 5, -162, 0, 94, 3,205, 0,235, 5,206, 0,236, 5,207, 0,237, 5,208, 0,238, 5,209, 0,239, 5,210, 0,240, 5, 7, 0,241, 5, - 2, 0,242, 5, 2, 0,243, 5, 4, 0,239, 1,211, 0, 54, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, - 7, 0,246, 5, 2, 0,247, 5, 7, 0,222, 5, 7, 0, 77, 1, 7, 0, 43, 0, 4, 0,248, 5, 2, 0,231, 5, 2, 0,232, 5, - 32, 0,187, 5, 32, 0,249, 5,204, 0,250, 5,211, 0,235, 5, 0, 0,251, 5, 4, 0,112, 3, 4, 0,252, 5, 2, 0,253, 5, - 2, 0, 70, 0, 2, 0,254, 5, 2, 0,255, 5, 2, 0,239, 1, 2, 0, 19, 0, 2, 0, 29, 2, 2, 0, 0, 6, 7, 0,112, 0, - 7, 0, 1, 6, 7, 0, 2, 6, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6, 7, 0,171, 0, 7, 0,193, 5, 2, 0, 6, 6, - 2, 0,122, 1, 2, 0, 7, 6, 2, 0, 8, 6, 2, 0, 9, 6, 2, 0, 10, 6, 2, 0, 11, 6, 2, 0, 12, 6, 2, 0, 13, 6, - 2, 0, 14, 6, 4, 0, 15, 6, 12, 0, 16, 6, 2, 0, 17, 6, 2, 0,140, 2, 2, 0, 18, 6, 0, 0, 19, 6, 0, 0, 20, 6, - 9, 0, 21, 6,162, 0, 94, 3,213, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 22, 6, 23, 0, 23, 6, 23, 0, 24, 6, - 7, 0, 25, 6, 7, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, - 2, 0, 33, 6, 2, 0, 19, 0, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,255, 5, - 7, 0, 39, 6, 7, 0, 40, 6, 4, 0, 41, 6, 4, 0, 42, 6,212, 0, 6, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, - 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5,214, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, - 7, 0,246, 5, 2, 0,247, 5,215, 0, 43, 6, 46, 0,134, 0,216, 0, 14, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, - 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5,213, 0, 44, 6,217, 0, 45, 6, 12, 0, 46, 6, 2, 0, 70, 1, 2, 0, 47, 6, - 4, 0, 19, 0, 7, 0, 48, 6, 4, 0,255, 5,218, 0, 20, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, - 7, 0,246, 5, 2, 0,247, 5,206, 0,236, 5,213, 0, 44, 6, 2, 0, 49, 6, 2, 0, 50, 6, 2, 0, 51, 6, 2, 0, 52, 6, - 2, 0, 34, 6, 2, 0, 53, 6, 0, 0, 19, 0, 0, 0,137, 1, 9, 0, 66, 2, 4, 0, 54, 6, 4, 0, 55, 6, 27, 0, 56, 6, -219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5,213, 0, 44, 6, - 7, 0, 90, 2, 7, 0, 91, 2, 2, 0, 49, 6, 2, 0, 57, 6, 2, 0, 58, 6, 2, 0, 59, 6, 4, 0, 19, 0, 7, 0, 60, 6, -162, 0, 94, 3,220, 0, 16, 0, 0, 0, 61, 6, 0, 0, 62, 6, 0, 0, 63, 6, 0, 0, 64, 6, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0, 65, 6, 2, 0, 66, 6, 2, 0,182, 1, 2, 0, 67, 6, 4, 0, 68, 6, 4, 0, 69, 6, 2, 0, 70, 6, 2, 0, 71, 6, - 0, 0, 72, 6, 0, 0, 73, 6,221, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 4, 0, 37, 0, -220, 0, 74, 6,222, 0, 75, 6, 12, 0, 76, 6, 12, 0, 77, 6,223, 0, 78, 6,210, 0, 79, 6,224, 0, 80, 6, 2, 0, 81, 6, - 2, 0, 82, 6, 2, 0, 83, 6, 2, 0, 70, 0,225, 0, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, - 7, 0,246, 5, 2, 0,247, 5,213, 0, 44, 6, 12, 0, 84, 6,226, 0, 85, 6, 0, 0, 86, 6,227, 0, 87, 6, 4, 0, 88, 6, - 4, 0, 89, 6, 2, 0, 19, 0, 2, 0, 90, 6, 2, 0, 91, 6, 2, 0, 37, 0,228, 0, 29, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5, 47, 0,230, 2, 45, 0, 58, 1, 64, 0, 92, 6, 2, 0,133, 0, - 2, 0, 93, 6, 2, 0, 70, 0, 2, 0, 94, 6, 4, 0, 19, 0, 2, 0, 95, 6, 2, 0, 96, 6, 2, 0, 97, 6, 2, 0,239, 1, - 0, 0, 98, 6, 0, 0, 99, 6, 0, 0,100, 6, 0, 0,255, 5, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0, 60, 6, 7, 0,122, 1, - 7, 0,101, 6, 7, 0,102, 6,162, 0, 94, 3,229, 0, 11, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, - 7, 0,246, 5, 2, 0,247, 5, 2, 0, 47, 6, 2, 0, 19, 0, 4, 0, 37, 0,217, 0, 45, 6,213, 0, 44, 6,230, 0, 27, 0, -212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5, 42, 0,103, 6, 4, 0,104, 6, - 4, 0,105, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,106, 6, 0, 0,107, 6, 0, 0,108, 6, 4, 0,109, 6, 4, 0,110, 6, - 4, 0,111, 6, 4, 0,112, 6, 2, 0,113, 6, 2, 0,114, 6, 7, 0,115, 6, 23, 0,116, 6, 23, 0,117, 6, 4, 0,118, 6, - 4, 0,119, 6, 0, 0,120, 6, 0, 0,121, 6,231, 0, 10, 0, 27, 0, 31, 0, 9, 0,122, 6, 9, 0,123, 6, 9, 0,124, 6, - 9, 0,125, 6, 9, 0,126, 6, 4, 0, 90, 0, 4, 0,127, 6, 0, 0,128, 6, 0, 0,129, 6,232, 0, 10, 0,212, 0, 0, 0, -212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5,231, 0,130, 6, 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, - 9, 0,131, 6,233, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5,213, 0, 44, 6, - 4, 0, 19, 0, 4, 0,132, 6,234, 0, 23, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, - 2, 0,247, 5,213, 0, 44, 6, 27, 0,133, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, 7, 0,134, 6, 9, 0,135, 6, - 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,136, 6, 7, 0,137, 6, 61, 0, 59, 1, 61, 0,138, 6, 4, 0,139, 6, 2, 0,140, 6, - 2, 0, 37, 0,162, 0, 94, 3,235, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, - 2, 0,247, 5, 2, 0, 19, 0, 2, 0,121, 3, 4, 0, 37, 0,162, 0, 94, 3,236, 0, 42, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5,213, 0, 44, 6,222, 0, 75, 6, 0, 0, 61, 6, 0, 0, 62, 6, - 0, 0, 63, 6, 2, 0, 17, 0, 2, 0, 71, 6, 2, 0, 19, 0, 2, 0, 65, 6, 9, 0,135, 6, 4, 0, 68, 6, 4, 0,141, 6, - 4, 0,142, 6, 4, 0, 69, 6, 23, 0,143, 6, 23, 0,144, 6, 7, 0,145, 6, 7, 0,146, 6, 7, 0,147, 6, 7, 0,134, 6, - 2, 0,148, 6, 2, 0,237, 0, 2, 0,182, 1, 2, 0, 67, 6, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0,149, 6, 2, 0,150, 6, - 9, 0,151, 6, 9, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 2, 0,156, 6, 0, 0, 73, 6, 57, 0,157, 6, -237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0, 4, 0,158, 6, 4, 0, 23, 0, 0, 0, 84, 0, 4, 0,159, 6, 4, 0, 17, 0, -238, 0, 13, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5, 4, 0, 17, 0, - 4, 0,160, 6, 4, 0, 19, 0, 4, 0,106, 6, 12, 0,161, 6, 12, 0,162, 6, 0, 0,163, 6,239, 0, 5, 0,212, 0, 0, 0, -212, 0, 1, 0, 12, 0,244, 5, 4, 0,245, 5, 4, 0, 37, 0,240, 0, 7, 0,240, 0, 0, 0,240, 0, 1, 0, 0, 0,164, 6, - 2, 0,165, 6, 2, 0,166, 6, 2, 0,167, 6, 2, 0, 37, 0,241, 0, 12, 0, 2, 0,166, 6, 2, 0,168, 6, 2, 0,169, 6, - 0, 0,191, 2, 2, 0,170, 6, 2, 0,171, 6, 2, 0,172, 6, 2, 0,173, 6, 2, 0,174, 6, 2, 0, 34, 6, 7, 0,175, 6, - 7, 0,176, 6,242, 0, 18, 0,242, 0, 0, 0,242, 0, 1, 0, 0, 0,234, 3,241, 0,177, 6,241, 0,178, 6,241, 0,179, 6, -241, 0,180, 6, 7, 0,181, 6, 2, 0,182, 6, 2, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, - 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6,243, 0, 10, 0, 0, 0,192, 6, 0, 0,193, 6, 0, 0,194, 6, - 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 2, 0,198, 6, 2, 0,199, 6, 2, 0,200, 6, 2, 0, 37, 0,244, 0, 8, 0, - 0, 0,201, 6, 0, 0,202, 6, 0, 0,203, 6, 0, 0,204, 6, 0, 0,205, 6, 0, 0,206, 6, 7, 0,213, 5, 7, 0, 37, 0, -245, 0, 17, 0,243, 0,207, 6,243, 0,208, 6,243, 0,209, 6,243, 0,210, 6,243, 0,211, 6,243, 0,212, 6,243, 0,213, 6, + 2, 0,177, 5, 4, 0,178, 5, 4, 0,179, 5,198, 0, 8, 0, 4, 0,180, 5, 4, 0,181, 5, 4, 0,182, 5, 4, 0,183, 5, + 4, 0,184, 5, 4, 0,185, 5, 4, 0, 54, 0, 4, 0,126, 2,199, 0, 3, 0, 7, 0,186, 5, 2, 0,187, 5, 2, 0, 19, 0, +200, 0, 2, 0, 7, 0,188, 5, 4, 0, 19, 0, 46, 0, 38, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0,189, 5,176, 0,190, 5, + 46, 0,191, 5, 47, 0,238, 0, 12, 0,192, 5,177, 0,193, 5, 32, 0,194, 5, 7, 0,195, 5, 7, 0,196, 5, 7, 0,197, 5, + 7, 0,198, 5, 4, 0,112, 3, 2, 0, 19, 0, 2, 0, 64, 1, 61, 0, 59, 1,201, 0,199, 5,197, 0,200, 5,202, 0,201, 5, +183, 0,182, 0,181, 0,202, 5, 12, 0,100, 0, 12, 0,203, 5, 12, 0,204, 5,203, 0,205, 5, 2, 0,206, 5, 2, 0,207, 5, + 2, 0,247, 0, 2, 0,208, 5, 4, 0,209, 5, 4, 0,210, 5, 12, 0,211, 5,186, 0, 77, 5,187, 0,212, 5,199, 0,213, 5, +162, 0, 94, 3,200, 0,214, 5,204, 0, 6, 0, 47, 0,238, 0, 45, 0, 58, 1, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,106, 0, + 7, 0,215, 5,205, 0, 35, 0, 7, 0,216, 5, 7, 0,217, 5, 7, 0,218, 5, 7, 0,219, 5, 7, 0,220, 5, 7, 0,221, 5, + 7, 0,222, 5, 7, 0,223, 5, 7, 0,224, 5, 7, 0, 77, 1, 7, 0,225, 5, 7, 0,226, 5, 7, 0,227, 5, 7, 0,228, 5, + 7, 0,171, 0, 2, 0,229, 5, 2, 0,230, 5, 2, 0, 71, 2, 2, 0,231, 5, 2, 0,232, 5, 2, 0,233, 5, 2, 0,234, 5, + 7, 0,235, 5, 72, 0,236, 5,162, 0, 94, 3,205, 0,237, 5,206, 0,238, 5,207, 0,239, 5,208, 0,240, 5,209, 0,241, 5, +210, 0,242, 5, 7, 0,243, 5, 2, 0,244, 5, 2, 0,245, 5, 4, 0,239, 1,211, 0, 54, 0,212, 0, 0, 0,212, 0, 1, 0, + 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 7, 0,224, 5, 7, 0, 77, 1, 7, 0, 43, 0, 4, 0,250, 5, + 2, 0,233, 5, 2, 0,234, 5, 32, 0,189, 5, 32, 0,251, 5,204, 0,252, 5,211, 0,237, 5, 0, 0,253, 5, 4, 0,112, 3, + 4, 0,254, 5, 2, 0,255, 5, 2, 0, 70, 0, 2, 0, 0, 6, 2, 0, 1, 6, 2, 0,239, 1, 2, 0, 19, 0, 2, 0, 29, 2, + 2, 0, 2, 6, 7, 0,112, 0, 7, 0, 3, 6, 7, 0, 4, 6, 7, 0, 5, 6, 7, 0, 6, 6, 7, 0, 7, 6, 7, 0,171, 0, + 7, 0,195, 5, 2, 0, 8, 6, 2, 0,122, 1, 2, 0, 9, 6, 2, 0, 10, 6, 2, 0, 11, 6, 2, 0, 12, 6, 2, 0, 13, 6, + 2, 0, 14, 6, 2, 0, 15, 6, 2, 0, 16, 6, 4, 0, 17, 6, 12, 0, 18, 6, 2, 0, 19, 6, 2, 0,140, 2, 2, 0, 20, 6, + 0, 0, 21, 6, 0, 0, 22, 6, 9, 0, 23, 6,162, 0, 94, 3,213, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 24, 6, + 23, 0, 25, 6, 23, 0, 26, 6, 7, 0, 27, 6, 7, 0, 28, 6, 7, 0, 29, 6, 7, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, + 2, 0, 33, 6, 2, 0, 34, 6, 2, 0, 35, 6, 2, 0, 19, 0, 2, 0, 36, 6, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0, 39, 6, + 2, 0, 40, 6, 2, 0, 1, 6, 7, 0, 41, 6, 7, 0, 42, 6, 4, 0, 43, 6, 4, 0, 44, 6,212, 0, 6, 0,212, 0, 0, 0, +212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,214, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, + 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,215, 0, 45, 6, 46, 0,134, 0,216, 0, 14, 0,212, 0, 0, 0, +212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,217, 0, 47, 6, 12, 0, 48, 6, + 2, 0, 70, 1, 2, 0, 49, 6, 4, 0, 19, 0, 7, 0, 50, 6, 4, 0, 1, 6,218, 0, 20, 0,212, 0, 0, 0,212, 0, 1, 0, + 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,206, 0,238, 5,213, 0, 46, 6, 2, 0, 51, 6, 2, 0, 52, 6, + 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 36, 6, 2, 0, 55, 6, 0, 0, 19, 0, 0, 0,137, 1, 9, 0, 66, 2, 4, 0, 56, 6, + 4, 0, 57, 6, 27, 0, 58, 6,219, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, + 2, 0,249, 5,213, 0, 46, 6, 7, 0, 90, 2, 7, 0, 91, 2, 2, 0, 51, 6, 2, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, + 4, 0, 19, 0, 7, 0, 62, 6,162, 0, 94, 3,220, 0, 16, 0, 0, 0, 63, 6, 0, 0, 64, 6, 0, 0, 65, 6, 0, 0, 66, 6, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0,182, 1, 2, 0, 69, 6, 4, 0, 70, 6, 4, 0, 71, 6, + 2, 0, 72, 6, 2, 0, 73, 6, 0, 0, 74, 6, 0, 0, 75, 6,221, 0, 16, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, + 4, 0,247, 5, 4, 0, 37, 0,220, 0, 76, 6,222, 0, 77, 6, 12, 0, 78, 6, 12, 0, 79, 6,223, 0, 80, 6,210, 0, 81, 6, +224, 0, 82, 6, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0, 85, 6, 2, 0, 70, 0,225, 0, 17, 0,212, 0, 0, 0,212, 0, 1, 0, + 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 12, 0, 86, 6,226, 0, 87, 6, 0, 0, 88, 6, +227, 0, 89, 6, 4, 0, 90, 6, 4, 0, 91, 6, 2, 0, 19, 0, 2, 0, 92, 6, 2, 0, 93, 6, 2, 0, 37, 0,228, 0, 29, 0, +212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 47, 0,230, 2, 45, 0, 58, 1, + 64, 0, 94, 6, 2, 0,133, 0, 2, 0, 95, 6, 2, 0, 70, 0, 2, 0, 96, 6, 4, 0, 19, 0, 2, 0, 97, 6, 2, 0, 98, 6, + 2, 0, 99, 6, 2, 0,239, 1, 0, 0,100, 6, 0, 0,101, 6, 0, 0,102, 6, 0, 0, 1, 6, 7, 0, 90, 2, 7, 0, 91, 2, + 7, 0, 62, 6, 7, 0,122, 1, 7, 0,103, 6, 7, 0,104, 6,162, 0, 94, 3,229, 0, 11, 0,212, 0, 0, 0,212, 0, 1, 0, + 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 49, 6, 2, 0, 19, 0, 4, 0, 37, 0,217, 0, 47, 6, +213, 0, 46, 6,230, 0, 27, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, + 42, 0,105, 6, 4, 0,106, 6, 4, 0,107, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,108, 6, 0, 0,109, 6, 0, 0,110, 6, + 4, 0,111, 6, 4, 0,112, 6, 4, 0,113, 6, 4, 0,114, 6, 2, 0,115, 6, 2, 0,116, 6, 7, 0,117, 6, 23, 0,118, 6, + 23, 0,119, 6, 4, 0,120, 6, 4, 0,121, 6, 0, 0,122, 6, 0, 0,123, 6,231, 0, 10, 0, 27, 0, 31, 0, 9, 0,124, 6, + 9, 0,125, 6, 9, 0,126, 6, 9, 0,127, 6, 9, 0,128, 6, 4, 0, 90, 0, 4, 0,129, 6, 0, 0,130, 6, 0, 0,131, 6, +232, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5,231, 0,132, 6, 2, 0, 90, 0, + 2, 0,133, 0, 4, 0, 43, 0, 9, 0,133, 6,233, 0, 8, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, + 7, 0,248, 5,213, 0, 46, 6, 4, 0, 19, 0, 4, 0,134, 6,234, 0, 23, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, + 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, 27, 0,135, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,133, 0, + 7, 0,136, 6, 9, 0,137, 6, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,138, 6, 7, 0,139, 6, 61, 0, 59, 1, 61, 0,140, 6, + 4, 0,141, 6, 2, 0,142, 6, 2, 0, 37, 0,162, 0, 94, 3,235, 0, 10, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, + 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5, 2, 0, 19, 0, 2, 0,121, 3, 4, 0, 37, 0,162, 0, 94, 3,236, 0, 42, 0, +212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6,222, 0, 77, 6, + 0, 0, 63, 6, 0, 0, 64, 6, 0, 0, 65, 6, 2, 0, 17, 0, 2, 0, 73, 6, 2, 0, 19, 0, 2, 0, 67, 6, 9, 0,137, 6, + 4, 0, 70, 6, 4, 0,143, 6, 4, 0,144, 6, 4, 0, 71, 6, 23, 0,145, 6, 23, 0,146, 6, 7, 0,147, 6, 7, 0,148, 6, + 7, 0,149, 6, 7, 0,136, 6, 2, 0,150, 6, 2, 0,237, 0, 2, 0,182, 1, 2, 0, 69, 6, 2, 0, 37, 0, 2, 0, 43, 0, + 2, 0,151, 6, 2, 0,152, 6, 9, 0,153, 6, 9, 0,154, 6, 9, 0,155, 6, 9, 0,156, 6, 9, 0,157, 6, 2, 0,158, 6, + 0, 0, 75, 6, 57, 0,159, 6,237, 0, 7, 0,237, 0, 0, 0,237, 0, 1, 0, 4, 0,160, 6, 4, 0, 23, 0, 0, 0, 84, 0, + 4, 0,161, 6, 4, 0, 17, 0,238, 0, 13, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, + 2, 0,249, 5, 4, 0, 17, 0, 4, 0,162, 6, 4, 0, 19, 0, 4, 0,108, 6, 12, 0,163, 6, 12, 0,164, 6, 0, 0,165, 6, +239, 0, 5, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 4, 0, 37, 0,240, 0, 7, 0,240, 0, 0, 0, +240, 0, 1, 0, 0, 0,166, 6, 2, 0,167, 6, 2, 0,168, 6, 2, 0,169, 6, 2, 0, 37, 0,241, 0, 12, 0, 2, 0,168, 6, + 2, 0,170, 6, 2, 0,171, 6, 0, 0,191, 2, 2, 0,172, 6, 2, 0,173, 6, 2, 0,174, 6, 2, 0,175, 6, 2, 0,176, 6, + 2, 0, 36, 6, 7, 0,177, 6, 7, 0,178, 6,242, 0, 18, 0,242, 0, 0, 0,242, 0, 1, 0, 0, 0,234, 3,241, 0,179, 6, +241, 0,180, 6,241, 0,181, 6,241, 0,182, 6, 7, 0,183, 6, 2, 0,184, 6, 2, 0,185, 6, 2, 0,186, 6, 2, 0,187, 6, + 2, 0,188, 6, 2, 0,189, 6, 2, 0,190, 6, 2, 0,191, 6, 2, 0,192, 6, 2, 0,193, 6,243, 0, 10, 0, 0, 0,194, 6, + 0, 0,195, 6, 0, 0,196, 6, 0, 0,197, 6, 0, 0,198, 6, 0, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, + 2, 0, 37, 0,244, 0, 8, 0, 0, 0,203, 6, 0, 0,204, 6, 0, 0,205, 6, 0, 0,206, 6, 0, 0,207, 6, 0, 0,208, 6, + 7, 0,215, 5, 7, 0, 37, 0,245, 0, 17, 0,243, 0,209, 6,243, 0,210, 6,243, 0,211, 6,243, 0,212, 6,243, 0,213, 6, 243, 0,214, 6,243, 0,215, 6,243, 0,216, 6,243, 0,217, 6,243, 0,218, 6,243, 0,219, 6,243, 0,220, 6,243, 0,221, 6, -244, 0,222, 6, 0, 0,223, 6,246, 0, 71, 0, 0, 0,224, 6, 0, 0,225, 6, 0, 0,196, 6, 0, 0,226, 6, 0, 0,227, 6, +243, 0,222, 6,243, 0,223, 6,244, 0,224, 6, 0, 0,225, 6,246, 0, 71, 0, 0, 0,226, 6, 0, 0,227, 6, 0, 0,198, 6, 0, 0,228, 6, 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 0, 0,237, 6, 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, 0, 0,241, 6, 0, 0,242, 6, 0, 0,243, 6, 0, 0,244, 6, 0, 0,245, 6, 0, 0,246, 6, 0, 0,247, 6, 0, 0,248, 6, 0, 0,249, 6, 0, 0,250, 6, 0, 0,251, 6, @@ -3244,293 +14383,294 @@ char datatoc_B_blend[]= { 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, - 0, 0, 36, 7, 0, 0, 92, 0,247, 0, 5, 0, 0, 0, 37, 7, 0, 0,248, 6, 0, 0,250, 6, 2, 0, 19, 0, 2, 0, 37, 0, -248, 0, 24, 0,248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 38, 7,246, 0, 39, 7,246, 0, 40, 7,246, 0, 41, 7, + 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 92, 0,247, 0, 5, 0, 0, 0, 39, 7, 0, 0,250, 6, 0, 0,252, 6, + 2, 0, 19, 0, 2, 0, 37, 0,248, 0, 24, 0,248, 0, 0, 0,248, 0, 1, 0, 0, 0, 20, 0,245, 0, 40, 7,246, 0, 41, 7, 246, 0, 42, 7,246, 0, 43, 7,246, 0, 44, 7,246, 0, 45, 7,246, 0, 46, 7,246, 0, 47, 7,246, 0, 48, 7,246, 0, 49, 7, -246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7,246, 0, 55, 7,247, 0, 56, 7, 4, 0, 57, 7, - 4, 0, 37, 0,249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,139, 2, 7, 0, 58, 7, 7, 0, 44, 2,250, 0, 73, 0, - 4, 0, 19, 0, 4, 0, 59, 7, 4, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, - 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 2, 0, 70, 7, 2, 0, 37, 0, 4, 0, 71, 7, 4, 0, 72, 7, - 4, 0, 73, 7, 4, 0, 74, 7, 2, 0, 75, 7, 2, 0, 76, 7, 4, 0, 77, 7, 4, 0, 78, 7, 4, 0, 79, 7, 4, 0, 80, 7, - 4, 0, 81, 7, 4, 0,161, 6, 4, 0, 82, 7, 2, 0, 83, 7, 2, 0, 84, 7, 2, 0, 85, 7, 2, 0, 86, 7, 12, 0, 87, 7, - 12, 0, 88, 7, 12, 0, 89, 7, 12, 0, 90, 7, 0, 0, 91, 7, 2, 0, 92, 7, 2, 0, 93, 7, 2, 0, 94, 7, 2, 0, 95, 7, - 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7,249, 0,100, 7, 2, 0,101, 7, 2, 0,102, 7, 2, 0,103, 7, - 2, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7, 4, 0,109, 7, 4, 0,110, 7, 2, 0,111, 7, - 2, 0,112, 7, 2, 0,113, 7, 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7, - 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 7, 0,125, 7, 2, 0,140, 5, 2, 0,141, 5, - 55, 0,126, 7,215, 0, 21, 0, 27, 0, 31, 0, 12, 0,127, 7, 12, 0,128, 7, 12, 0,129, 7, 12, 0,244, 5, 46, 0,134, 0, - 46, 0,130, 7, 2, 0,131, 7, 2, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, - 2, 0, 37, 0, 2, 0,138, 7, 2, 0,139, 7, 4, 0, 70, 0,210, 0,140, 7, 9, 0,141, 7, 2, 0,142, 7,251, 0, 5, 0, -251, 0, 0, 0,251, 0, 1, 0,251, 0,143, 7, 13, 0,144, 7, 4, 0, 19, 0,252, 0, 7, 0,252, 0, 0, 0,252, 0, 1, 0, -251, 0,145, 7,251, 0,146, 7, 2, 0,249, 4, 2, 0, 19, 0, 4, 0, 37, 0,253, 0, 25, 0,253, 0, 0, 0,253, 0, 1, 0, -254, 0,147, 7,255, 0, 80, 6, 0, 0,148, 7, 0, 0,149, 7, 0, 0,150, 7, 2, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, - 2, 0,154, 7, 2, 0,155, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,156, 7, 2, 0,157, 7, 2, 0,158, 7, 4, 0,159, 7, -253, 0,160, 7, 9, 0,161, 7, 4, 0,162, 7, 4, 0,163, 7, 4, 0,164, 7, 4, 0,165, 7, 0, 0,166, 7, 0, 1, 22, 0, - 0, 1, 0, 0, 0, 1, 1, 0,251, 0,145, 7,251, 0,146, 7,251, 0,167, 7,251, 0,168, 7,215, 0,169, 7, 23, 0, 52, 0, - 0, 0,245, 5, 0, 0,170, 7, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0,171, 7, 2, 0, 37, 0, 2, 0,134, 7, 2, 0,159, 6, - 2, 0, 19, 0, 1, 1,147, 7, 12, 0,172, 7, 12, 0,244, 5, 12, 0,173, 7, 12, 0,174, 7, 2, 1, 21, 0, 2, 1, 0, 0, - 2, 1, 1, 0,213, 0, 44, 6, 23, 0,175, 7, 23, 0,176, 7, 2, 0, 35, 6, 2, 0, 36, 6, 2, 0,177, 7, 2, 0,178, 7, - 2, 0,179, 7, 2, 0, 19, 0, 7, 0, 86, 2, 2, 0,133, 7, 2, 0,137, 7, 4, 0, 43, 0, 3, 1,147, 7, 12, 0,180, 7, - 12, 0,181, 7, 12, 0,173, 7, 0, 0,182, 7, 9, 0,183, 7, 4, 1, 12, 0, 0, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, - 2, 0,187, 7, 2, 0,188, 7, 2, 0,236, 4, 2, 0,231, 4,215, 0,189, 7, 46, 0,190, 7, 4, 0,191, 7, 4, 0,192, 7, - 0, 0, 35, 0, 5, 1, 1, 0, 0, 0,193, 7, 6, 1, 8, 0, 57, 0,194, 7, 57, 0,195, 7, 6, 1,196, 7, 6, 1,197, 7, - 6, 1,198, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,199, 7, 7, 1, 4, 0, 4, 0,104, 6, 4, 0,200, 7, 4, 0,109, 6, - 4, 0,201, 7, 8, 1, 2, 0, 4, 0,202, 7, 4, 0,203, 7, 9, 1, 7, 0, 7, 0,204, 7, 7, 0,205, 7, 7, 0,206, 7, - 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,115, 4, 7, 0,207, 7, 10, 1, 6, 0, 0, 0,208, 7, 0, 0, 63, 6, 49, 0,137, 0, - 2, 0,106, 0, 2, 0,235, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0, 11, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, - 4, 0, 28, 0, 4, 0,209, 7, 4, 0,210, 7, 4, 0,211, 7, 5, 1,212, 7, 0, 0,208, 7, 4, 0,213, 7, 4, 0,214, 7, - 10, 1, 88, 3, 7, 1,215, 7, 8, 1,216, 7, 9, 1,217, 7, 6, 1,218, 7, 6, 1,219, 7, 6, 1,220, 7, 57, 0,221, 7, - 57, 0,222, 7, 12, 1, 12, 0, 0, 0, 6, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0, 4, 0,235, 0, 9, 0,228, 0, - 7, 0,230, 0, 7, 0,231, 0, 9, 0,223, 7, 9, 0,224, 7, 9, 0,232, 0, 9, 0,234, 0, 13, 1, 43, 0, 13, 1, 0, 0, - 13, 1, 1, 0, 9, 0,225, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, - 4, 0,226, 7, 4, 0,227, 7, 4, 0,210, 7, 4, 0,211, 7, 4, 0,228, 7, 4, 0,246, 0, 4, 0,229, 7, 4, 0,230, 7, - 7, 0,106, 5, 7, 0,231, 7, 4, 0,126, 0, 4, 0,232, 7, 11, 1,233, 7, 36, 0, 80, 0, 46, 0,134, 0, 49, 0,137, 0, - 7, 0,234, 7, 7, 0,235, 7, 12, 1, 60, 1, 13, 1,236, 7, 13, 1,237, 7, 13, 1,238, 7, 12, 0,239, 7, 14, 1,240, 7, - 15, 1,241, 7, 7, 0,242, 7, 7, 0,243, 7, 4, 0,244, 7, 7, 0,245, 7, 9, 0,246, 7, 4, 0,247, 7, 4, 0,248, 7, - 4, 0,249, 7, 7, 0,250, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0, 12, 0,251, 7, 13, 1,252, 7,201, 0, 6, 0, - 12, 0,253, 7, 12, 0,239, 7, 12, 0,254, 7, 13, 1,255, 7, 0, 0, 0, 8, 0, 0, 1, 8, 17, 1, 4, 0, 7, 0, 2, 8, - 7, 0,109, 0, 2, 0, 3, 8, 2, 0, 4, 8, 18, 1, 6, 0, 7, 0, 5, 8, 7, 0, 6, 8, 7, 0, 7, 8, 7, 0, 8, 8, - 4, 0, 9, 8, 4, 0, 10, 8, 19, 1, 12, 0, 7, 0, 11, 8, 7, 0, 12, 8, 7, 0, 13, 8, 7, 0, 14, 8, 7, 0, 15, 8, - 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8, 4, 0,234, 2, 4, 0, 21, 8, 20, 1, 2, 0, - 7, 0, 75, 5, 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 22, 8, 7, 0, 23, 8, 4, 0, 90, 0, 4, 0,192, 2, 4, 0, 24, 8, - 22, 1, 6, 0, 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 25, 8, 2, 0, 57, 0, 23, 1, 8, 0, - 23, 1, 0, 0, 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 25, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, - 24, 1, 45, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 25, 8, 2, 0,242, 0, 2, 0, 29, 4, - 2, 0, 26, 8, 7, 0, 27, 8, 7, 0, 89, 0, 7, 0,247, 2, 4, 0, 28, 8, 4, 0, 82, 0, 4, 0,194, 2, 7, 0, 29, 8, - 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0,244, 2, 7, 0, 57, 1, 7, 0, 35, 8, - 7, 0, 36, 8, 7, 0, 37, 0, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0, 39, 8, 2, 0, 40, 8, 2, 0, 41, 8, 2, 0, 42, 8, - 2, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8, 2, 0, 29, 2, 2, 0, 48, 8, 2, 0, 26, 2, - 2, 0, 49, 8, 0, 0, 50, 8, 0, 0, 51, 8, 7, 0,240, 0, 25, 1, 52, 8, 68, 0,242, 1, 26, 1, 16, 0, 26, 1, 0, 0, - 26, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 25, 8, 2, 0,242, 0, 7, 0,239, 2, 7, 0,240, 2, 7, 0,241, 2, - 7, 0, 75, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0, 53, 8, 7, 0,244, 2, 7, 0,246, 2, 7, 0,247, 2,227, 0, 5, 0, - 2, 0, 17, 0, 2, 0,199, 7, 2, 0, 19, 0, 2, 0, 54, 8, 27, 0,133, 6,226, 0, 3, 0, 4, 0, 69, 0, 4, 0, 55, 8, -227, 0, 2, 0, 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, - 9, 0, 56, 8, 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 77, 1, 7, 0, 57, 8, 4, 0, 58, 8, 4, 0, 37, 0, 29, 1, 4, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0, 0, 0, 20, 0, 67, 0, 59, 8, 7, 0, 77, 1, - 7, 0, 37, 0, 31, 1, 6, 0, 2, 0, 60, 8, 2, 0, 61, 8, 2, 0, 17, 0, 2, 0, 62, 8, 0, 0, 63, 8, 0, 0, 64, 8, - 32, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 65, 8, 0, 0, 66, 8, 33, 1, 3, 0, 4, 0, 17, 0, - 4, 0, 37, 0, 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 67, 8, 2, 0, 68, 8, 2, 0, 19, 0, 2, 0, 37, 0, 35, 1, 6, 0, - 0, 0, 20, 0, 0, 0, 69, 8, 2, 0, 70, 8, 2, 0,244, 2, 2, 0, 70, 1, 2, 0, 70, 0, 36, 1, 5, 0, 0, 0, 20, 0, - 7, 0,109, 0, 7, 0,117, 4, 2, 0, 19, 0, 2, 0,206, 2, 37, 1, 3, 0, 0, 0, 20, 0, 4, 0,194, 2, 4, 0, 67, 8, - 38, 1, 7, 0, 0, 0, 20, 0, 7, 0,117, 4, 0, 0, 71, 8, 0, 0, 72, 8, 2, 0, 70, 1, 2, 0, 43, 0, 4, 0, 73, 8, - 39, 1, 4, 0, 0, 0, 74, 8, 0, 0, 75, 8, 4, 0, 17, 0, 7, 0,210, 2, 40, 1, 3, 0, 32, 0, 76, 8, 0, 0, 77, 8, - 0, 0, 78, 8, 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0, 2, 0, 79, 8, 2, 0, 19, 0, 2, 0, 80, 8, - 2, 0, 81, 8, 2, 0, 82, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 42, 1, 83, 8, 32, 0, 45, 0, - 2, 0, 90, 5, 2, 0,242, 7, 2, 0, 84, 8, 2, 0, 37, 0, 43, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0, 85, 8, - 2, 0, 19, 0, 2, 0,206, 2, 2, 0, 86, 8, 4, 0, 87, 8, 4, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 91, 8, - 44, 1, 1, 0, 0, 0, 92, 8, 45, 1, 4, 0, 42, 0,103, 6, 0, 0, 93, 8, 4, 0, 70, 1, 4, 0, 19, 0, 42, 1, 18, 0, - 42, 1, 0, 0, 42, 1, 1, 0, 42, 1, 94, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 95, 8, 2, 0, 82, 8, 2, 0, 79, 8, - 2, 0, 96, 8, 2, 0, 70, 0, 2, 0,239, 1, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1, 83, 8, 41, 1, 97, 8, 2, 0, 15, 0, - 2, 0, 98, 8, 4, 0, 99, 8, 47, 1, 3, 0, 4, 0,220, 2, 4, 0, 37, 0, 32, 0, 45, 0, 48, 1, 12, 0,160, 0,100, 8, - 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 27, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,101, 8, 2, 0,102, 8, 2, 0,103, 8, - 2, 0,104, 8, 2, 0,105, 8, 7, 0,106, 8, 49, 1, 13, 0, 2, 0, 19, 0, 2, 0,107, 8, 4, 0, 27, 8, 4, 0, 89, 0, - 2, 0,108, 8, 7, 0,243, 3, 7, 0,109, 8, 14, 1,240, 7, 50, 1,110, 8, 2, 0, 17, 0, 2, 0,111, 8, 2, 0,112, 8, - 2, 0,113, 8, 51, 1, 11, 0, 4, 0,220, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 81, 0,114, 8, 0, 0, 20, 0, - 7, 0,115, 8, 7, 0,116, 8, 7, 0,129, 3, 2, 0,117, 8, 2, 0,118, 8, 52, 1, 5, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 4, 0, 37, 0, 46, 0,134, 0, 32, 0,187, 5, 53, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0, 65, 8, - 32, 0, 45, 0, 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 79, 8, 2, 0,130, 3, 7, 0,119, 8, 7, 0,120, 8, - 7, 0, 65, 1, 7, 0, 66, 1, 7, 0,101, 3, 7, 0,104, 3, 7, 0,121, 8, 7, 0,122, 8, 32, 0,123, 8, 55, 1, 10, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 27, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,101, 8, 2, 0, 43, 0, 2, 0, 64, 0, - 2, 0,124, 8, 2, 0,125, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,241, 2, 7, 0,126, 8, 7, 0,127, 8, 7, 0,236, 2, - 2, 0, 19, 0, 2, 0,206, 2, 7, 0,128, 8, 57, 1, 12, 0, 2, 0, 17, 0, 2, 0, 70, 1, 2, 0, 19, 0, 2, 0,244, 2, - 2, 0,220, 2, 2, 0,129, 8, 4, 0, 37, 0, 7, 0,130, 8, 7, 0,131, 8, 7, 0,132, 8, 7, 0,133, 8, 0, 0,134, 8, - 58, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 27, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,137, 1, 2, 0, 64, 0, - 2, 0,124, 8, 2, 0,125, 8, 59, 1, 7, 0, 4, 0,194, 2, 4, 0,135, 8, 4, 0,136, 8, 4, 0,137, 8, 7, 0,138, 8, - 7, 0,139, 8, 0, 0, 71, 8, 60, 1, 7, 0, 0, 0,140, 8, 32, 0,141, 8, 0, 0, 77, 8, 2, 0,142, 8, 2, 0, 43, 0, - 4, 0, 70, 0, 0, 0, 78, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 27, 8, 4, 0, 89, 0, 0, 0,143, 8, - 0, 0,144, 8, 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,145, 8, - 7, 0,146, 8, 42, 0,103, 6, 64, 1, 4, 0, 0, 0, 71, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 65, 1, 2, 0, - 4, 0, 17, 0, 4, 0, 24, 6, 66, 1, 6, 0, 0, 0, 74, 8, 0, 0, 75, 8, 4, 0, 17, 0, 7, 0, 37, 2, 32, 0, 51, 3, - 32, 0,147, 8, 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 94, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 79, 8, - 2, 0,148, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0, 7, 0,129, 3, 7, 0,149, 8, 7, 0,150, 8, - 7, 0,151, 8, 7, 0,152, 8, 4, 0, 19, 0, 7, 0,129, 8, 7, 0,153, 8, 7, 0,154, 8, 7, 0, 37, 0, 15, 1, 12, 0, - 15, 1, 0, 0, 15, 1, 1, 0, 14, 1,155, 8, 9, 0,223, 0, 4, 0,172, 3, 4, 0,230, 3, 4, 0,231, 3, 4, 0,156, 8, - 4, 0,157, 8, 4, 0,158, 8, 7, 0,243, 3, 7, 0, 37, 0, 50, 1, 8, 0, 7, 0,159, 8, 7, 0,160, 8, 7, 0,161, 8, - 7, 0,162, 8, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8, 14, 1, 15, 0, 27, 0, 31, 0, 0, 0,222, 0, - 43, 0,149, 0, 9, 0,223, 0, 43, 0,167, 8, 36, 0, 80, 0, 7, 0,243, 3, 7, 0,168, 8, 7, 0,109, 8, 7, 0,159, 8, - 7, 0,160, 8, 7, 0,169, 8, 4, 0, 90, 0, 4, 0,158, 8, 9, 0,170, 8, 68, 1, 15, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 0, 1,171, 8,213, 0, 44, 6, 14, 1,240, 7, 2, 0, 70, 1, 2, 0,107, 8, - 2, 0, 90, 2, 2, 0, 91, 2, 2, 0, 19, 0, 2, 0, 96, 6, 4, 0, 70, 0, 69, 1, 6, 0, 69, 1, 0, 0, 69, 1, 1, 0, - 32, 0, 45, 0, 9, 0,172, 8, 4, 0,247, 0, 4, 0, 37, 0, 68, 0, 4, 0, 27, 0, 31, 0, 12, 0,173, 8, 4, 0,131, 0, - 7, 0,174, 8, 70, 1, 25, 0, 70, 1, 0, 0, 70, 1, 1, 0, 70, 1, 38, 0, 12, 0,175, 8, 0, 0, 20, 0, 7, 0,176, 8, - 7, 0,177, 8, 7, 0,178, 8, 7, 0,179, 8, 4, 0, 19, 0, 7, 0,180, 8, 7, 0,181, 8, 7, 0,182, 8, 7, 0, 77, 1, - 7, 0, 37, 2, 7, 0,183, 8, 7, 0,192, 2, 7, 0,184, 8, 7, 0,185, 8, 7, 0,186, 8, 7, 0,187, 8, 7, 0,188, 8, - 7, 0,172, 0, 2, 0,131, 0, 2, 0,121, 5, 71, 1, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0,189, 8, 12, 0,190, 8, - 12, 0,191, 8, 9, 0,192, 8, 4, 0, 19, 0, 4, 0,253, 5, 2, 0,248, 2, 2, 0, 54, 6, 2, 0,131, 0, 2, 0,193, 8, - 2, 0,194, 8, 2, 0,195, 8, 2, 0,196, 8, 2, 0,197, 8, 4, 0,198, 8, 4, 0,199, 8, 4, 0,200, 8, 4, 0,201, 8, - 4, 0,202, 8, 4, 0,203, 8, 72, 1, 2, 0, 7, 0,153, 2, 4, 0, 19, 0, 73, 1, 5, 0, 72, 1,204, 8, 4, 0,192, 2, - 4, 0,205, 8, 4, 0,206, 8, 4, 0, 19, 0, 74, 1, 6, 0, 4, 0, 37, 0, 4, 0, 54, 6, 4, 0,200, 8, 4, 0,201, 8, - 4, 0,202, 8, 4, 0,203, 8, 75, 1, 42, 0, 75, 1, 0, 0, 75, 1, 1, 0, 26, 0,207, 8, 12, 0,156, 3, 0, 0, 20, 0, - 2, 0, 19, 0, 2, 0,208, 8, 2, 0,209, 8, 2, 0,210, 8, 2, 0,115, 3, 2, 0,211, 8, 4, 0, 73, 2, 4, 0,200, 8, - 4, 0,201, 8, 70, 1,212, 8, 75, 1, 38, 0, 75, 1,213, 8, 12, 0,214, 8, 9, 0,215, 8, 9, 0,216, 8, 9, 0,217, 8, - 7, 0, 65, 1, 7, 0,172, 0, 7, 0,218, 8, 7, 0, 16, 2, 7, 0,106, 3, 7, 0,108, 3, 2, 0,138, 3, 2, 0, 37, 0, - 7, 0,219, 8, 7, 0,220, 8, 7, 0,111, 3, 7, 0,221, 8, 7, 0,222, 8, 7, 0,223, 8, 7, 0,224, 8, 7, 0,225, 8, - 7, 0,226, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0, 66, 2, 32, 0,229, 8,161, 0, 11, 0, 12, 0,230, 8, 2, 0, 19, 0, - 2, 0,231, 8, 7, 0,102, 2, 7, 0,232, 8, 7, 0,233, 8, 12, 0,234, 8, 4, 0,235, 8, 4, 0,236, 8, 9, 0,237, 8, - 9, 0,238, 8, 76, 1, 1, 0, 4, 0,236, 8, 77, 1, 12, 0, 4, 0,236, 8, 7, 0, 91, 8, 2, 0,239, 8, 2, 0,240, 8, - 7, 0,241, 8, 7, 0,242, 8, 2, 0,243, 8, 2, 0, 19, 0, 7, 0,244, 8, 7, 0,245, 8, 7, 0,246, 8, 7, 0,247, 8, - 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,248, 8, 4, 0, 19, 0, 4, 0,249, 8, 0, 0,234, 3,247, 0,250, 8, -160, 0, 7, 0, 27, 0, 31, 0, 12, 0,251, 8, 12, 0,230, 8, 12, 0,252, 8, 12, 0,100, 0, 4, 0, 19, 0, 4, 0,253, 8, -217, 0, 4, 0, 27, 0,155, 8, 12, 0,230, 8, 4, 0,254, 8, 4, 0, 19, 0, 79, 1, 17, 0,212, 0, 0, 0,212, 0, 1, 0, - 12, 0,244, 5, 4, 0,245, 5, 7, 0,246, 5, 2, 0,247, 5,213, 0, 44, 6,160, 0, 91, 3,217, 0,255, 8, 0, 0, 70, 1, - 0, 0, 47, 6, 2, 0, 19, 0, 2, 0, 0, 9, 2, 0, 97, 6, 2, 0, 96, 6, 2, 0, 1, 9, 7, 0, 2, 9, 80, 1, 8, 0, - 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 3, 9, 36, 0, 80, 0, 12, 0, 95, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 4, 9, - 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 5, 9, 82, 1, 14, 0, 82, 1, 0, 0, - 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 6, 9, 0, 0, 7, 9, 0, 0, 5, 9, 7, 0, 8, 9, - 7, 0, 9, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 10, 9, 7, 0, 11, 9, 83, 1, 9, 0, 83, 1, 0, 0, 83, 1, 1, 0, - 32, 0, 12, 9, 0, 0,251, 2, 7, 0, 13, 9, 2, 0, 14, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 15, 9, 84, 1, 7, 0, - 42, 0,103, 6, 26, 0,207, 8, 4, 0, 19, 0, 4, 0, 16, 9, 12, 0, 17, 9, 32, 0, 12, 9, 0, 0,251, 2, 85, 1, 15, 0, - 32, 0, 12, 9, 2, 0, 18, 9, 2, 0, 19, 0, 2, 0, 19, 9, 2, 0, 20, 9, 0, 0,251, 2, 32, 0, 21, 9, 0, 0, 22, 9, - 7, 0, 23, 9, 7, 0, 37, 2, 7, 0, 24, 9, 7, 0, 25, 9, 2, 0, 17, 0, 2, 0, 70, 1, 7, 0, 77, 1, 86, 1, 6, 0, - 32, 0, 12, 9, 4, 0, 26, 9, 4, 0, 27, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,251, 2, 87, 1, 4, 0, 32, 0, 12, 9, - 4, 0, 19, 0, 4, 0, 26, 9, 0, 0,251, 2, 88, 1, 4, 0, 32, 0, 12, 9, 4, 0, 19, 0, 4, 0, 26, 9, 0, 0,251, 2, - 89, 1, 10, 0, 32, 0, 12, 9, 4, 0, 28, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0, 99, 6, 2, 0, 29, 9, 2, 0, 43, 0, - 2, 0, 70, 0, 7, 0, 30, 9, 0, 0,251, 2, 90, 1, 4, 0, 32, 0, 12, 9, 4, 0, 19, 0, 4, 0, 26, 9, 0, 0,251, 2, - 91, 1, 10, 0, 32, 0, 12, 9, 2, 0, 17, 0, 2, 0, 37, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,126, 8, 7, 0,127, 8, - 4, 0, 37, 0,160, 0,100, 8, 0, 0,251, 2, 92, 1, 4, 0, 32, 0, 12, 9, 4, 0,116, 3, 4, 0, 31, 9, 0, 0,251, 2, - 93, 1, 5, 0, 32, 0, 12, 9, 7, 0,125, 0, 4, 0, 32, 9, 4, 0,116, 3, 4, 0,117, 3, 94, 1, 6, 0, 32, 0, 12, 9, - 4, 0, 33, 9, 4, 0, 34, 9, 7, 0, 35, 9, 7, 0, 36, 9, 0, 0,251, 2, 95, 1, 16, 0, 32, 0, 12, 9, 32, 0,213, 8, - 4, 0, 17, 0, 7, 0, 37, 9, 7, 0, 38, 9, 7, 0, 39, 9, 7, 0, 40, 9, 7, 0, 41, 9, 7, 0, 42, 9, 7, 0, 43, 9, - 7, 0, 44, 9, 7, 0, 45, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 96, 1, 3, 0, 32, 0, 12, 9, - 4, 0, 19, 0, 4, 0, 29, 2, 97, 1, 5, 0, 32, 0, 12, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 46, 9, 0, 0,251, 2, - 98, 1, 10, 0, 32, 0, 12, 9, 0, 0,251, 2, 2, 0, 47, 9, 2, 0, 48, 9, 0, 0, 49, 9, 0, 0, 50, 9, 7, 0, 51, 9, - 7, 0, 52, 9, 7, 0, 53, 9, 7, 0, 54, 9, 99, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0, 55, 9, 7, 0, 56, 9, 2, 0, 19, 0, 2, 0, 29, 2,100, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0, 55, 9, 7, 0, 56, 9, 2, 0, 19, 0, 2, 0, 29, 2,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 55, 9, 7, 0, 56, 9, 2, 0, 19, 0, 2, 0, 29, 2,102, 1, 7, 0, 32, 0, 12, 9, - 0, 0,251, 2, 7, 0, 77, 1, 7, 0, 86, 1, 2, 0, 19, 0, 2, 0, 70, 1, 4, 0, 37, 0,103, 1, 5, 0, 32, 0, 51, 3, - 7, 0, 77, 1, 2, 0, 55, 3, 0, 0, 57, 3, 0, 0, 57, 9,104, 1, 10, 0,104, 1, 0, 0,104, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0, 58, 9, 7, 0, 21, 1, 7, 0, 22, 1, 2, 0,248, 8, 2, 0, 59, 9, 32, 0, 45, 0,105, 1, 22, 0, -105, 1, 0, 0,105, 1, 1, 0, 2, 0, 19, 0, 2, 0, 70, 1, 2, 0, 60, 9, 2, 0, 61, 9, 36, 0, 80, 0,160, 0,100, 8, - 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 62, 9, 7, 0, 63, 9, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0,237, 2, - 7, 0, 66, 9, 7, 0,102, 8, 7, 0, 67, 9, 0, 0, 68, 9, 0, 0, 69, 9, 12, 0, 97, 3,106, 1, 8, 0, 7, 0, 44, 2, - 7, 0,126, 8, 7, 0,127, 8, 9, 0, 2, 0, 2, 0, 70, 9, 2, 0, 71, 9, 2, 0, 72, 9, 2, 0, 73, 9,107, 1, 18, 0, -107, 1, 0, 0,107, 1, 1, 0,107, 1, 74, 9, 0, 0, 20, 0,106, 1, 75, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 76, 9, - 2, 0, 77, 9, 2, 0, 78, 9, 2, 0, 79, 9, 4, 0, 43, 0, 7, 0, 80, 9, 7, 0, 81, 9, 4, 0, 82, 9, 4, 0, 83, 9, -107, 1, 84, 9,108, 1, 85, 9,109, 1, 34, 0,109, 1, 0, 0,109, 1, 1, 0,109, 1, 86, 9, 0, 0, 20, 0, 0, 0, 87, 9, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,209, 7, 2, 0,242, 7, 2, 0, 88, 9, 2, 0,133, 0, 2, 0, 77, 9, 2, 0,199, 7, - 12, 0, 95, 8, 12, 0, 89, 9, 27, 0,133, 6, 9, 0, 90, 9, 7, 0, 80, 9, 7, 0, 81, 9, 7, 0, 75, 2, 7, 0, 91, 9, - 2, 0, 92, 9, 2, 0, 93, 9, 7, 0, 94, 9, 7, 0, 95, 9, 2, 0, 96, 9, 2, 0, 97, 9, 9, 0, 98, 9, 24, 0, 99, 9, - 24, 0,100, 9, 24, 0,101, 9,110, 1,150, 0,111, 1,102, 9,112, 1,103, 9,108, 1, 8, 0,108, 1, 0, 0,108, 1, 1, 0, -109, 1,104, 9,109, 1,105, 9,107, 1,106, 9,107, 1, 84, 9, 4, 0, 19, 0, 4, 0, 37, 0, 61, 0, 20, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 12, 0,107, 9, 12, 0,108, 9,106, 1,109, 9, 12, 0,110, 9, 4, 0, 17, 0, 4, 0,111, 9, 4, 0,112, 9, - 4, 0,113, 9, 12, 0,114, 9,112, 1,115, 9,107, 1,116, 9,107, 1,117, 9, 9, 0,118, 9, 9, 0,119, 9, 4, 0,120, 9, - 9, 0,121, 9, 9, 0,122, 9, 9, 0,123, 9,113, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,199, 7, 0, 0,124, 9, - 0, 0,125, 9, 2, 0, 37, 0,114, 1, 16, 0, 2, 0,153, 7, 2, 0,154, 7, 2, 0,126, 9, 2, 0,150, 8, 2, 0,127, 9, - 2, 0, 68, 0, 7, 0,236, 2, 7, 0,128, 9, 7, 0,129, 9, 2, 0, 92, 1, 0, 0,130, 9, 0, 0,105, 5, 2, 0,131, 9, - 2, 0, 37, 0, 4, 0,132, 9, 4, 0,133, 9,115, 1, 9, 0, 7, 0,134, 9, 7, 0,135, 9, 7, 0,169, 8, 7, 0,109, 0, - 7, 0,136, 9, 7, 0, 60, 6, 2, 0,137, 9, 0, 0,138, 9, 0, 0, 37, 0,116, 1, 4, 0, 7, 0,139, 9, 7, 0,140, 9, - 2, 0,137, 9, 2, 0, 37, 0,117, 1, 3, 0, 7, 0,141, 9, 7, 0,142, 9, 7, 0, 15, 0,118, 1, 7, 0, 0, 0, 6, 2, - 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,181, 4, 4, 0,126, 0, 4, 0, 35, 4,119, 1, 7, 0, 7, 0,143, 9, - 7, 0,144, 9, 7, 0,145, 9, 7, 0, 86, 2, 7, 0,146, 9, 7, 0,147, 9, 7, 0,148, 9,120, 1, 4, 0, 2, 0,149, 9, - 2, 0,150, 9, 2, 0,151, 9, 2, 0,152, 9,121, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,122, 1, 2, 0, 0, 0,166, 0, - 0, 0,153, 9,123, 1, 1, 0, 0, 0, 20, 0,124, 1, 10, 0, 0, 0,154, 9, 0, 0,155, 9, 0, 0, 53, 6, 0, 0,156, 9, - 2, 0,126, 9, 2, 0,157, 9, 7, 0,158, 9, 7, 0,159, 9, 7, 0,160, 9, 7, 0, 66, 9,125, 1, 2, 0, 9, 0,161, 9, - 9, 0,162, 9,126, 1, 11, 0, 0, 0,235, 4, 0, 0, 17, 0, 0, 0,137, 9, 0, 0,109, 0, 0, 0,163, 9, 0, 0,106, 0, - 0, 0, 71, 2, 7, 0,164, 9, 7, 0,165, 9, 7, 0,166, 9, 7, 0,167, 9,127, 1, 8, 0, 7, 0, 60, 8, 7, 0,125, 0, - 7, 0,105, 5, 7, 0,158, 2, 7, 0,168, 9, 7, 0,236, 0, 7, 0,169, 9, 4, 0, 17, 0,128, 1, 4, 0, 2, 0,170, 9, - 2, 0,171, 9, 2, 0,172, 9, 2, 0, 37, 0,129, 1, 1, 0, 0, 0, 20, 0,130, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 2, 0, 19, 0, 2, 0,173, 9,131, 1, 10, 0, 2, 0,223, 3, 2, 0, 19, 0, 7, 0,117, 4, 7, 0,174, 9, 7, 0,175, 9, - 7, 0,176, 9, 7, 0,177, 9,130, 1,178, 9,130, 1,179, 9,130, 1,180, 9, 64, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, - 24, 0,181, 9, 24, 0,182, 9,131, 1,183, 9, 7, 0,184, 9, 7, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9,132, 1, 4, 0, - 47, 0,230, 2, 7, 0,188, 9, 7, 0,171, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,132, 1,189, 9, 64, 0,178, 9, - 51, 0,135, 1, 2, 0, 19, 0, 2, 0,213, 5, 4, 0,106, 0, 7, 0,190, 9, 7, 0, 83, 2, 4, 0,191, 9, 7, 0,192, 9, - 7, 0,193, 9, 7, 0,194, 9, 7, 0,171, 1, 2, 0,105, 1, 0, 0,195, 9, 0, 0,191, 6,133, 1, 10, 0, 4, 0, 17, 0, - 4, 0,125, 0, 4, 0, 19, 0, 4, 0,178, 3, 4, 0,196, 9, 4, 0,197, 9, 4, 0,198, 9, 0, 0, 92, 0, 0, 0, 20, 0, - 9, 0, 2, 0, 92, 0, 6, 0,133, 1,199, 9, 4, 0,200, 9, 4, 0,201, 9, 4, 0,202, 9, 4, 0, 37, 0, 9, 0,203, 9, -134, 1, 5, 0, 7, 0,153, 2, 7, 0,220, 2, 7, 0, 37, 2, 2, 0,129, 2, 2, 0, 37, 0,135, 1, 5, 0, 7, 0,153, 2, - 7, 0,204, 9, 7, 0,205, 9, 7, 0,206, 9, 7, 0,220, 2,136, 1, 5, 0, 32, 0,207, 9,137, 1, 22, 0, 7, 0,186, 5, - 7, 0,208, 9, 7, 0, 57, 0,138, 1, 7, 0, 4, 0,209, 9, 4, 0,210, 9, 4, 0,211, 9, 7, 0,212, 9, 7, 0,213, 9, - 7, 0,214, 9, 7, 0, 57, 0,139, 1, 8, 0,139, 1, 0, 0,139, 1, 1, 0, 32, 0, 45, 0, 4, 0, 38, 3, 2, 0, 19, 0, - 2, 0, 70, 1, 7, 0,220, 2, 7, 0, 68, 8,140, 1, 6, 0,140, 1, 0, 0,140, 1, 1, 0, 32, 0, 45, 0, 2, 0,205, 2, - 2, 0, 19, 0, 2, 0,215, 9,141, 1, 18, 0,135, 1,172, 3,135, 1,216, 9,134, 1,217, 9,135, 1, 52, 8,136, 1,218, 9, - 4, 0, 82, 0, 7, 0,220, 2, 7, 0,247, 2, 7, 0,219, 9, 4, 0,209, 9, 4, 0,220, 9, 7, 0,213, 9, 7, 0,214, 9, - 7, 0,106, 0, 2, 0, 19, 0, 2, 0,221, 9, 2, 0,222, 9, 2, 0,223, 9,142, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0, -143, 1,224, 9,169, 0, 57, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 47, 9, 2, 0,225, 9, 2, 0,226, 9, 2, 0,138, 3, - 2, 0,227, 9, 2, 0,228, 9, 2, 0,229, 9, 2, 0,230, 9, 2, 0,231, 9, 2, 0,232, 9, 2, 0,233, 9, 2, 0,223, 4, - 2, 0, 98, 5, 2, 0,234, 9, 2, 0,235, 9, 2, 0,236, 9, 2, 0,237, 9, 2, 0,238, 9, 2, 0, 26, 2, 2, 0, 45, 8, - 2, 0, 21, 8, 2, 0,239, 9, 2, 0,240, 9, 2, 0,188, 3, 2, 0,189, 3, 2, 0,241, 9, 2, 0,242, 9, 2, 0,243, 9, - 2, 0,244, 9, 7, 0,245, 9, 7, 0,246, 9, 7, 0,247, 9, 2, 0,248, 9, 2, 0,249, 9, 7, 0,250, 9, 7, 0,251, 9, - 7, 0,252, 9, 7, 0, 27, 8, 7, 0, 89, 0, 7, 0,247, 2, 7, 0, 33, 8, 7, 0,253, 9, 7, 0,254, 9, 7, 0,255, 9, - 4, 0, 28, 8, 4, 0, 26, 8, 4, 0, 0, 10, 7, 0, 29, 8, 7, 0, 30, 8, 7, 0, 31, 8, 7, 0, 1, 10, 7, 0, 2, 10, - 7, 0, 3, 10, 7, 0, 4, 10, 7, 0, 5, 10, 7, 0, 57, 0, 7, 0, 6, 10, 7, 0, 7, 10, 7, 0, 8, 10, 7, 0, 9, 10, - 7, 0,129, 3, 7, 0,106, 0, 7, 0, 10, 10, 7, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 14, 10, 7, 0, 15, 10, - 7, 0, 16, 10, 4, 0, 17, 10, 4, 0, 18, 10, 7, 0, 19, 10, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10, - 7, 0,210, 0, 7, 0, 24, 10, 7, 0,214, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0, 25, 10, 7, 0, 26, 10, 7, 0, 27, 10, - 7, 0, 28, 10, 7, 0, 29, 10, 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, - 7, 0, 36, 10, 7, 0, 37, 10, 4, 0, 38, 10, 4, 0, 39, 10, 68, 0,161, 3, 12, 0, 40, 10, 68, 0, 41, 10, 32, 0, 42, 10, - 32, 0, 43, 10, 36, 0, 80, 0,164, 0, 62, 1,164, 0, 44, 10, 59, 0, 44, 0, 59, 0, 0, 0, 59, 0, 1, 0,142, 1, 45, 10, -141, 1, 46, 10,138, 1,213, 8,171, 0,239, 3, 9, 0,240, 3,144, 1, 47, 10,144, 1, 48, 10, 12, 0, 49, 10, 12, 0, 50, 10, -134, 0, 51, 10,142, 0, 52, 10,142, 0, 53, 10, 32, 0, 54, 10, 32, 0, 55, 10, 32, 0, 38, 0, 12, 0, 17, 9, 0, 0, 20, 0, - 7, 0,240, 0, 7, 0, 18, 3, 7, 0, 56, 10, 4, 0,194, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 28, 8, 4, 0, 57, 10, - 4, 0, 58, 10, 4, 0, 59, 10, 2, 0,247, 0, 2, 0, 60, 10, 2, 0, 61, 10, 2, 0, 62, 10, 0, 0, 63, 10, 2, 0, 64, 10, - 2, 0, 65, 10, 2, 0, 66, 10, 9, 0, 67, 10,138, 0, 56, 4, 12, 0, 5, 3, 12, 0, 68, 10,145, 1, 69, 10,146, 1, 70, 10, - 7, 0, 71, 10,136, 0, 35, 0,147, 1,170, 8, 7, 0, 26, 4, 7, 0, 72, 10, 7, 0, 73, 10, 7, 0,120, 4, 7, 0, 74, 10, - 7, 0,139, 3, 7, 0,129, 3, 7, 0, 75, 10, 7, 0, 85, 2, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0, 78, 10, 7, 0, 79, 10, - 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 27, 4, 7, 0, 82, 10, 7, 0, 83, 10, 7, 0, 84, 10, 7, 0, 28, 4, 7, 0, 24, 4, - 7, 0, 25, 4, 7, 0, 85, 10, 4, 0, 86, 10, 4, 0, 90, 0, 4, 0, 87, 10, 4, 0, 88, 10, 2, 0, 89, 10, 2, 0, 90, 10, - 2, 0, 91, 10, 2, 0, 92, 10, 2, 0, 93, 10, 2, 0, 37, 0,169, 0, 57, 4,137, 0, 8, 0,147, 1, 94, 10, 7, 0, 95, 10, - 7, 0, 96, 10, 7, 0,243, 1, 7, 0, 97, 10, 4, 0, 90, 0, 2, 0, 98, 10, 2, 0, 99, 10,148, 1, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,100, 10,149, 1, 6, 0,149, 1, 0, 0,149, 1, 1, 0,148, 1,204, 8, 4, 0,253, 0, - 2, 0,101, 10, 2, 0, 19, 0,150, 1, 5, 0,150, 1, 0, 0,150, 1, 1, 0, 12, 0,102, 10, 4, 0,103, 10, 4, 0, 19, 0, -151, 1, 9, 0,151, 1, 0, 0,151, 1, 1, 0, 12, 0,124, 0,150, 1,104, 10, 4, 0, 19, 0, 2, 0,101, 10, 2, 0,105, 10, - 7, 0, 91, 0, 0, 0,106, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,251, 4, 4, 0, 19, 0, 2, 0,107, 10, 2, 0,108, 10, - 9, 0,109, 10,152, 1, 7, 0,152, 1, 0, 0,152, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,110, 10, - 0, 0,111, 10,153, 1, 5, 0, 12, 0,112, 10, 4, 0,113, 10, 4, 0,114, 10, 4, 0, 19, 0, 4, 0, 37, 0,154, 1, 18, 0, - 27, 0, 31, 0,155, 1,115, 10,155, 1,116, 10, 12, 0,117, 10, 4, 0,118, 10, 2, 0,119, 10, 2, 0, 37, 0, 12, 0,120, 10, - 12, 0,121, 10,153, 1,122, 10, 12, 0,123, 10, 12, 0,124, 10, 12, 0,125, 10,156, 1,126, 10, 4, 0,127, 10, 4, 0, 70, 0, - 12, 0,128, 10,210, 0,129, 10,155, 1, 30, 0,155, 1, 0, 0,155, 1, 1, 0, 9, 0,130, 10, 4, 0,132, 7, 4, 0, 37, 0, -215, 0, 43, 6,215, 0,131, 10, 0, 0,132, 10, 2, 0,133, 10, 2, 0,134, 10, 2, 0,153, 7, 2, 0,154, 7, 2, 0,135, 10, - 2, 0,136, 10, 2, 0,178, 3, 2, 0,159, 6, 2, 0,137, 10, 2, 0,138, 10, 4, 0,239, 1,157, 1,139, 10,158, 1,140, 10, -159, 1,141, 10, 4, 0,142, 10, 4, 0,143, 10, 9, 0,144, 10, 12, 0,121, 10, 12, 0,173, 7, 12, 0,145, 10, 12, 0,146, 10, - 12, 0,147, 10,160, 1, 16, 0,160, 1, 0, 0,160, 1, 1, 0, 0, 0,148, 10, 26, 0, 30, 0, 2, 0,149, 10, 2, 0, 17, 0, - 2, 0, 15, 0, 2, 0,150, 10, 2, 0,151, 10, 2, 0,152, 10, 2, 0,153, 10, 2, 0,154, 10, 2, 0, 19, 0, 2, 0,155, 10, - 2, 0, 71, 2,161, 1,156, 10,162, 1, 10, 0,162, 1, 0, 0,162, 1, 1, 0, 12, 0,157, 10, 0, 0,148, 10, 2, 0,158, 10, - 2, 0,159, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,160, 10, 9, 0,161, 10,156, 1, 7, 0,156, 1, 0, 0,156, 1, 1, 0, - 0, 0,148, 10, 0, 0,162, 10, 12, 0, 90, 7, 4, 0,163, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0, - 0, 0,148, 10, 26, 0, 30, 0,163, 1,147, 7, 9, 0,164, 10,161, 1,156, 10,153, 1,165, 10, 12, 0,166, 10,223, 0,167, 10, - 2, 0, 19, 0, 2, 0,137, 1,157, 1, 23, 0,157, 1, 0, 0,157, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 5, 0, - 2, 0, 6, 0, 2, 0,168, 10, 2, 0,169, 10, 2, 0,170, 10, 2, 0,171, 10, 0, 0,172, 10, 0, 0, 37, 0, 2, 0,150, 10, - 2, 0,151, 10, 2, 0,152, 10, 2, 0,153, 10, 2, 0,154, 10, 2, 0, 43, 0, 0, 0,173, 10, 2, 0,174, 10, 2, 0,175, 10, - 4, 0, 70, 0, 9, 0,164, 10,164, 1, 8, 0,164, 1, 0, 0,164, 1, 1, 0, 9, 0, 2, 0, 9, 0,176, 10, 0, 0,234, 3, - 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,177, 10,165, 1, 5, 0, 7, 0,178, 10, 4, 0,179, 10, 4, 0,180, 10, 4, 0, 70, 1, - 4, 0, 19, 0,166, 1, 6, 0, 7, 0,181, 10, 7, 0,182, 10, 7, 0,183, 10, 7, 0,184, 10, 4, 0, 17, 0, 4, 0, 19, 0, -167, 1, 5, 0, 7, 0,126, 8, 7, 0,127, 8, 7, 0,220, 2, 2, 0, 40, 2, 2, 0, 41, 2,168, 1, 5, 0,167, 1, 2, 0, - 4, 0, 54, 0, 7, 0,185, 10, 7, 0,126, 8, 7, 0,127, 8,169, 1, 4, 0, 2, 0,186, 10, 2, 0,187, 10, 2, 0,188, 10, - 2, 0,189, 10,170, 1, 2, 0, 42, 0,130, 6, 26, 0,207, 8,171, 1, 3, 0, 24, 0,190, 10, 4, 0, 19, 0, 4, 0, 37, 0, -172, 1, 6, 0, 7, 0,106, 0, 7, 0,222, 2, 7, 0,191, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,192, 10,173, 1, 9, 0, -173, 1, 0, 0,173, 1, 1, 0, 27, 0,133, 6, 0, 0,193, 10, 4, 0,194, 10, 4, 0,195, 10, 4, 0, 90, 0, 4, 0, 37, 0, - 0, 0,234, 3,174, 1, 6, 0, 12, 0, 17, 9, 0, 0,196, 10, 7, 0, 61, 0, 7, 0,177, 10, 4, 0, 17, 0, 4, 0, 19, 0, -175, 1, 3, 0, 7, 0,197, 10, 4, 0, 19, 0, 4, 0, 37, 0,176, 1, 15, 0,176, 1, 0, 0,176, 1, 1, 0, 78, 1, 3, 9, -174, 1, 62, 0, 12, 0, 97, 3, 35, 0, 50, 0,175, 1,198, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 16, 1, - 4, 0,194, 10, 0, 0,193, 10, 4, 0,199, 10, 7, 0,200, 10,177, 1, 2, 0, 0, 0,201, 10, 0, 0,202, 10,178, 1, 4, 0, -178, 1, 0, 0,178, 1, 1, 0,160, 0, 51, 3, 12, 0,203, 10,179, 1, 24, 0,179, 1, 0, 0,179, 1, 1, 0, 12, 0,204, 10, -160, 0,100, 8,178, 1,205, 10, 12, 0,206, 10, 12, 0, 97, 3, 0, 0,234, 3, 7, 0,177, 10, 7, 0,207, 10, 7, 0, 88, 0, - 7, 0, 89, 0, 7, 0, 62, 9, 7, 0, 63, 9, 7, 0,237, 2, 7, 0, 66, 9, 7, 0,102, 8, 7, 0, 67, 9, 2, 0,208, 10, - 2, 0,209, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,180, 1, 6, 0,180, 1, 0, 0,180, 1, 1, 0, - 12, 0,204, 10, 4, 0, 19, 0, 4, 0,157, 2, 0, 0,234, 3,181, 1, 10, 0,181, 1, 0, 0,181, 1, 1, 0, 27, 0,133, 6, - 0, 0,210, 10, 4, 0,195, 10, 4, 0,211, 10, 0, 0,193, 10, 4, 0,194, 10, 2, 0, 19, 0, 2, 0,212, 10,182, 1, 7, 0, -182, 1, 0, 0,182, 1, 1, 0, 12, 0,213, 10, 0, 0,234, 3, 2, 0, 19, 0, 2, 0,214, 10, 4, 0,215, 10,183, 1, 5, 0, -183, 1, 0, 0,183, 1, 1, 0, 0, 0,193, 10, 4, 0,194, 10, 7, 0,210, 2, 39, 0, 12, 0,160, 0, 91, 3,160, 0,216, 10, -178, 1,205, 10, 12, 0,217, 10,179, 1,218, 10, 12, 0,219, 10, 12, 0,220, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,221, 10, - 2, 0,222, 10, 7, 0,223, 10,184, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,185, 1, 5, 0,185, 1, 0, 0,185, 1, 1, 0, - 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,186, 1, 6, 0,185, 1,224, 10, 32, 0, 45, 0, 4, 0,225, 10, 7, 0,226, 10, - 4, 0,227, 10, 4, 0,248, 8,187, 1, 3, 0,185, 1,224, 10, 4, 0,225, 10, 7, 0,228, 10,188, 1, 8, 0,185, 1,224, 10, - 32, 0, 45, 0, 7, 0, 65, 1, 7, 0,229, 10, 7, 0, 18, 3, 7, 0,169, 8, 4, 0,225, 10, 4, 0,230, 10,189, 1, 5, 0, -185, 1,224, 10, 7, 0,231, 10, 7, 0,242, 7, 7, 0,243, 2, 7, 0, 57, 0,190, 1, 3, 0,185, 1,224, 10, 7, 0,169, 8, - 7, 0,232, 10,137, 1, 4, 0, 7, 0,233, 10, 7, 0, 12, 10, 2, 0,234, 10, 2, 0, 70, 1,191, 1, 14, 0,191, 1, 0, 0, -191, 1, 1, 0, 12, 0,235, 10, 12, 0,236, 10, 12, 0,237, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,238, 10, - 7, 0,239, 10, 4, 0,227, 10, 4, 0,248, 8, 7, 0,243, 3, 7, 0,245, 2,143, 1, 23, 0, 4, 0,225, 10, 4, 0,240, 10, - 7, 0,241, 10, 7, 0, 57, 0, 7, 0,242, 10, 7, 0,241, 2, 7, 0,233, 10, 7, 0,243, 10, 7, 0,222, 2, 7, 0,244, 10, - 7, 0,117, 4, 7, 0,245, 10, 7, 0,246, 10, 7, 0,247, 10, 7, 0,248, 10, 7, 0,249, 10, 7, 0,250, 10, 7, 0,251, 10, - 7, 0,252, 10, 7, 0,253, 10, 7, 0,254, 10, 7, 0,255, 10, 12, 0, 0, 11,122, 0, 34, 0,121, 0, 1, 11,192, 1, 2, 11, - 68, 0, 3, 11, 68, 0, 41, 10, 68, 0, 4, 11,193, 1, 5, 11, 48, 0,165, 0, 48, 0, 6, 11, 48, 0, 7, 11, 7, 0, 8, 11, - 7, 0, 9, 11, 7, 0, 10, 11, 7, 0, 11, 11, 7, 0, 12, 11, 7, 0, 4, 9, 7, 0, 13, 11, 7, 0,171, 1, 7, 0, 14, 11, - 4, 0, 15, 11, 4, 0, 16, 11, 4, 0, 17, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 18, 11, 2, 0, 19, 11, 2, 0, 20, 11, - 4, 0, 21, 11, 7, 0,222, 2, 4, 0, 22, 11, 7, 0, 23, 11, 4, 0, 24, 11,138, 0, 25, 11, 12, 0, 26, 11,169, 0, 57, 4, -123, 0, 11, 0,121, 0, 1, 11, 59, 0,255, 0, 7, 0,138, 1, 7, 0, 4, 9, 7, 0, 27, 11, 7, 0, 28, 11, 2, 0, 29, 11, - 2, 0, 30, 11, 2, 0, 31, 11, 2, 0, 17, 0, 4, 0, 37, 0,124, 0, 13, 0,121, 0, 1, 11,140, 0, 15, 3,142, 0, 17, 3, - 7, 0,204, 8, 7, 0, 32, 11, 7, 0, 33, 11, 7, 0, 67, 1, 7, 0, 34, 11, 4, 0, 35, 11, 4, 0, 13, 3, 2, 0, 17, 0, +246, 0, 50, 7,246, 0, 51, 7,246, 0, 52, 7,246, 0, 53, 7,246, 0, 54, 7,246, 0, 55, 7,246, 0, 56, 7,246, 0, 57, 7, +247, 0, 58, 7, 4, 0, 59, 7, 4, 0, 37, 0,249, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,139, 2, 7, 0, 60, 7, + 7, 0, 44, 2,250, 0, 73, 0, 4, 0, 19, 0, 4, 0, 61, 7, 4, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, + 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 2, 0, 72, 7, 2, 0, 37, 0, + 4, 0, 73, 7, 4, 0, 74, 7, 4, 0, 75, 7, 4, 0, 76, 7, 2, 0, 77, 7, 2, 0, 78, 7, 4, 0, 79, 7, 4, 0, 80, 7, + 4, 0, 81, 7, 4, 0, 82, 7, 4, 0, 83, 7, 4, 0,163, 6, 4, 0, 84, 7, 2, 0, 85, 7, 2, 0, 86, 7, 2, 0, 87, 7, + 2, 0, 88, 7, 12, 0, 89, 7, 12, 0, 90, 7, 12, 0, 91, 7, 12, 0, 92, 7, 0, 0, 93, 7, 2, 0, 94, 7, 2, 0, 95, 7, + 2, 0, 96, 7, 2, 0, 97, 7, 2, 0, 98, 7, 2, 0, 99, 7, 2, 0,100, 7, 2, 0,101, 7,249, 0,102, 7, 2, 0,103, 7, + 2, 0,104, 7, 2, 0,105, 7, 2, 0,106, 7, 2, 0,107, 7, 2, 0,108, 7, 2, 0,109, 7, 2, 0,110, 7, 4, 0,111, 7, + 4, 0,112, 7, 2, 0,113, 7, 2, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, 2, 0,117, 7, 2, 0,118, 7, 2, 0,119, 7, + 2, 0,120, 7, 2, 0,121, 7, 2, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, 0, 0,125, 7, 0, 0,126, 7, 7, 0,127, 7, + 2, 0,140, 5, 2, 0,141, 5, 55, 0,128, 7,215, 0, 21, 0, 27, 0, 31, 0, 12, 0,129, 7, 12, 0,130, 7, 12, 0,131, 7, + 12, 0,246, 5, 46, 0,134, 0, 46, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 2, 0,135, 7, 2, 0,136, 7, 2, 0,137, 7, + 2, 0,138, 7, 2, 0,139, 7, 2, 0, 37, 0, 2, 0,140, 7, 2, 0,141, 7, 4, 0, 70, 0,210, 0,142, 7, 9, 0,143, 7, + 2, 0,144, 7,251, 0, 5, 0,251, 0, 0, 0,251, 0, 1, 0,251, 0,145, 7, 13, 0,146, 7, 4, 0, 19, 0,252, 0, 7, 0, +252, 0, 0, 0,252, 0, 1, 0,251, 0,147, 7,251, 0,148, 7, 2, 0,249, 4, 2, 0, 19, 0, 4, 0, 37, 0,253, 0, 25, 0, +253, 0, 0, 0,253, 0, 1, 0,254, 0,149, 7,255, 0, 82, 6, 0, 0,150, 7, 0, 0,151, 7, 0, 0,152, 7, 2, 0,153, 7, + 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,158, 7, 2, 0,159, 7, + 2, 0,160, 7, 4, 0,161, 7,253, 0,162, 7, 9, 0,163, 7, 4, 0,164, 7, 4, 0,165, 7, 4, 0,166, 7, 4, 0,167, 7, + 0, 0,168, 7, 0, 1, 22, 0, 0, 1, 0, 0, 0, 1, 1, 0,251, 0,147, 7,251, 0,148, 7,251, 0,169, 7,251, 0,170, 7, +215, 0,171, 7, 23, 0, 52, 0, 0, 0,247, 5, 0, 0,172, 7, 2, 0, 37, 6, 2, 0, 38, 6, 2, 0,173, 7, 2, 0, 37, 0, + 2, 0,136, 7, 2, 0,161, 6, 2, 0, 19, 0, 1, 1,149, 7, 12, 0,174, 7, 12, 0,246, 5, 12, 0,175, 7, 12, 0,176, 7, + 2, 1, 21, 0, 2, 1, 0, 0, 2, 1, 1, 0,213, 0, 46, 6, 23, 0,177, 7, 23, 0,178, 7, 2, 0, 37, 6, 2, 0, 38, 6, + 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, 2, 0, 19, 0, 7, 0, 86, 2, 2, 0,135, 7, 2, 0,139, 7, 4, 0, 43, 0, + 3, 1,149, 7, 12, 0,182, 7, 12, 0,183, 7, 12, 0,175, 7, 0, 0,184, 7, 9, 0,185, 7, 4, 1, 12, 0, 0, 0,186, 7, + 2, 0,187, 7, 2, 0,188, 7, 2, 0,189, 7, 2, 0,190, 7, 2, 0,236, 4, 2, 0,231, 4,215, 0,191, 7, 46, 0,192, 7, + 4, 0,193, 7, 4, 0,194, 7, 0, 0, 35, 0, 5, 1, 1, 0, 0, 0,195, 7, 6, 1, 8, 0, 57, 0,196, 7, 57, 0,197, 7, + 6, 1,198, 7, 6, 1,199, 7, 6, 1,200, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,201, 7, 7, 1, 4, 0, 4, 0,106, 6, + 4, 0,202, 7, 4, 0,111, 6, 4, 0,203, 7, 8, 1, 2, 0, 4, 0,204, 7, 4, 0,205, 7, 9, 1, 7, 0, 7, 0,206, 7, + 7, 0,207, 7, 7, 0,208, 7, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,115, 4, 7, 0,209, 7, 10, 1, 6, 0, 0, 0,210, 7, + 0, 0, 65, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0,235, 4, 4, 0, 37, 0, 11, 1, 21, 0, 11, 1, 0, 0, 11, 1, 1, 0, + 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0,211, 7, 4, 0,212, 7, 4, 0,213, 7, 5, 1,214, 7, 0, 0,210, 7, + 4, 0,215, 7, 4, 0,216, 7, 10, 1, 88, 3, 7, 1,217, 7, 8, 1,218, 7, 9, 1,219, 7, 6, 1,220, 7, 6, 1,221, 7, + 6, 1,222, 7, 57, 0,223, 7, 57, 0,224, 7, 12, 1, 12, 0, 0, 0, 6, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0, + 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0, 7, 0,231, 0, 9, 0,225, 7, 9, 0,226, 7, 9, 0,232, 0, 9, 0,234, 0, + 13, 1, 43, 0, 13, 1, 0, 0, 13, 1, 1, 0, 9, 0,227, 7, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, + 4, 0, 23, 0, 4, 0, 88, 0, 4, 0,228, 7, 4, 0,229, 7, 4, 0,212, 7, 4, 0,213, 7, 4, 0,230, 7, 4, 0,246, 0, + 4, 0,231, 7, 4, 0,232, 7, 7, 0,106, 5, 7, 0,233, 7, 4, 0,126, 0, 4, 0,234, 7, 11, 1,235, 7, 36, 0, 80, 0, + 46, 0,134, 0, 49, 0,137, 0, 7, 0,236, 7, 7, 0,237, 7, 12, 1, 60, 1, 13, 1,238, 7, 13, 1,239, 7, 13, 1,240, 7, + 12, 0,241, 7, 14, 1,242, 7, 15, 1,243, 7, 7, 0,244, 7, 7, 0,245, 7, 4, 0,246, 7, 7, 0,247, 7, 9, 0,248, 7, + 4, 0,249, 7, 4, 0,250, 7, 4, 0,251, 7, 7, 0,252, 7, 16, 1, 4, 0, 16, 1, 0, 0, 16, 1, 1, 0, 12, 0,253, 7, + 13, 1,254, 7,201, 0, 6, 0, 12, 0,255, 7, 12, 0,241, 7, 12, 0, 0, 8, 13, 1, 1, 8, 0, 0, 2, 8, 0, 0, 3, 8, + 17, 1, 4, 0, 7, 0, 4, 8, 7, 0,109, 0, 2, 0, 5, 8, 2, 0, 6, 8, 18, 1, 6, 0, 7, 0, 7, 8, 7, 0, 8, 8, + 7, 0, 9, 8, 7, 0, 10, 8, 4, 0, 11, 8, 4, 0, 12, 8, 19, 1, 12, 0, 7, 0, 13, 8, 7, 0, 14, 8, 7, 0, 15, 8, + 7, 0, 16, 8, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 20, 8, 7, 0, 21, 8, 7, 0, 22, 8, 4, 0,234, 2, + 4, 0, 23, 8, 20, 1, 2, 0, 7, 0, 75, 5, 7, 0, 37, 0, 21, 1, 5, 0, 7, 0, 24, 8, 7, 0, 25, 8, 4, 0, 90, 0, + 4, 0,192, 2, 4, 0, 26, 8, 22, 1, 6, 0, 22, 1, 0, 0, 22, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 27, 8, + 2, 0, 57, 0, 23, 1, 8, 0, 23, 1, 0, 0, 23, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 27, 8, 2, 0, 57, 0, + 7, 0, 23, 0, 7, 0,126, 0, 24, 1, 45, 0, 24, 1, 0, 0, 24, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 27, 8, + 2, 0,242, 0, 2, 0, 29, 4, 2, 0, 28, 8, 7, 0, 29, 8, 7, 0, 89, 0, 7, 0,247, 2, 4, 0, 30, 8, 4, 0, 82, 0, + 4, 0,194, 2, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 34, 8, 7, 0, 35, 8, 7, 0, 36, 8, 7, 0,244, 2, + 7, 0, 57, 1, 7, 0, 37, 8, 7, 0, 38, 8, 7, 0, 37, 0, 7, 0, 39, 8, 7, 0, 40, 8, 7, 0, 41, 8, 2, 0, 42, 8, + 2, 0, 43, 8, 2, 0, 44, 8, 2, 0, 45, 8, 2, 0, 46, 8, 2, 0, 47, 8, 2, 0, 48, 8, 2, 0, 49, 8, 2, 0, 29, 2, + 2, 0, 50, 8, 2, 0, 26, 2, 2, 0, 51, 8, 0, 0, 52, 8, 0, 0, 53, 8, 7, 0,240, 0, 25, 1, 54, 8, 68, 0,242, 1, + 26, 1, 16, 0, 26, 1, 0, 0, 26, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 27, 8, 2, 0,242, 0, 7, 0,239, 2, + 7, 0,240, 2, 7, 0,241, 2, 7, 0, 75, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0, 55, 8, 7, 0,244, 2, 7, 0,246, 2, + 7, 0,247, 2,227, 0, 5, 0, 2, 0, 17, 0, 2, 0,201, 7, 2, 0, 19, 0, 2, 0, 56, 8, 27, 0,135, 6,226, 0, 3, 0, + 4, 0, 69, 0, 4, 0, 57, 8,227, 0, 2, 0, 27, 1, 7, 0, 27, 1, 0, 0, 27, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0, 22, 0, 9, 0, 58, 8, 28, 1, 5, 0, 0, 0, 20, 0, 7, 0, 77, 1, 7, 0, 59, 8, 4, 0, 60, 8, + 4, 0, 37, 0, 29, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 30, 1, 4, 0, 0, 0, 20, 0, + 67, 0, 61, 8, 7, 0, 77, 1, 7, 0, 37, 0, 31, 1, 6, 0, 2, 0, 62, 8, 2, 0, 63, 8, 2, 0, 17, 0, 2, 0, 64, 8, + 0, 0, 65, 8, 0, 0, 66, 8, 32, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0, 67, 8, 0, 0, 68, 8, + 33, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 34, 1, 4, 0, 2, 0, 69, 8, 2, 0, 70, 8, 2, 0, 19, 0, + 2, 0, 37, 0, 35, 1, 6, 0, 0, 0, 20, 0, 0, 0, 71, 8, 2, 0, 72, 8, 2, 0,244, 2, 2, 0, 70, 1, 2, 0, 70, 0, + 36, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,117, 4, 2, 0, 19, 0, 2, 0,206, 2, 37, 1, 3, 0, 0, 0, 20, 0, + 4, 0,194, 2, 4, 0, 69, 8, 38, 1, 7, 0, 0, 0, 20, 0, 7, 0,117, 4, 0, 0, 73, 8, 0, 0, 74, 8, 2, 0, 70, 1, + 2, 0, 43, 0, 4, 0, 75, 8, 39, 1, 4, 0, 0, 0, 76, 8, 0, 0, 77, 8, 4, 0, 17, 0, 7, 0,210, 2, 40, 1, 3, 0, + 32, 0, 78, 8, 0, 0, 79, 8, 0, 0, 80, 8, 41, 1, 18, 0, 41, 1, 0, 0, 41, 1, 1, 0, 2, 0, 17, 0, 2, 0, 81, 8, + 2, 0, 19, 0, 2, 0, 82, 8, 2, 0, 83, 8, 2, 0, 84, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, + 42, 1, 85, 8, 32, 0, 45, 0, 2, 0, 90, 5, 2, 0,244, 7, 2, 0, 86, 8, 2, 0, 37, 0, 43, 1, 11, 0, 0, 0, 20, 0, + 0, 0, 17, 0, 0, 0, 87, 8, 2, 0, 19, 0, 2, 0,206, 2, 2, 0, 88, 8, 4, 0, 89, 8, 4, 0, 90, 8, 4, 0, 91, 8, + 4, 0, 92, 8, 4, 0, 93, 8, 44, 1, 1, 0, 0, 0, 94, 8, 45, 1, 4, 0, 42, 0,105, 6, 0, 0, 95, 8, 4, 0, 70, 1, + 4, 0, 19, 0, 42, 1, 18, 0, 42, 1, 0, 0, 42, 1, 1, 0, 42, 1, 96, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 97, 8, + 2, 0, 84, 8, 2, 0, 81, 8, 2, 0, 98, 8, 2, 0, 70, 0, 2, 0,239, 1, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1, 85, 8, + 41, 1, 99, 8, 2, 0, 15, 0, 2, 0,100, 8, 4, 0,101, 8, 47, 1, 3, 0, 4, 0,220, 2, 4, 0, 37, 0, 32, 0, 45, 0, + 48, 1, 12, 0,160, 0,102, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 29, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,103, 8, + 2, 0,104, 8, 2, 0,105, 8, 2, 0,106, 8, 2, 0,107, 8, 7, 0,108, 8, 49, 1, 13, 0, 2, 0, 19, 0, 2, 0,109, 8, + 4, 0, 29, 8, 4, 0, 89, 0, 2, 0,110, 8, 7, 0,243, 3, 7, 0,111, 8, 14, 1,242, 7, 50, 1,112, 8, 2, 0, 17, 0, + 2, 0,113, 8, 2, 0,114, 8, 2, 0,115, 8, 51, 1, 11, 0, 4, 0,220, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, + 81, 0,116, 8, 0, 0, 20, 0, 7, 0,117, 8, 7, 0,118, 8, 7, 0,129, 3, 2, 0,119, 8, 2, 0,120, 8, 52, 1, 5, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,189, 5, 53, 1, 5, 0, 4, 0, 19, 0, 4, 0, 17, 0, + 0, 0, 20, 0, 0, 0, 67, 8, 32, 0, 45, 0, 54, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 81, 8, 2, 0,130, 3, + 7, 0,121, 8, 7, 0,122, 8, 7, 0, 65, 1, 7, 0, 66, 1, 7, 0,101, 3, 7, 0,104, 3, 7, 0,123, 8, 7, 0,124, 8, + 32, 0,125, 8, 55, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 29, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,103, 8, + 2, 0, 43, 0, 2, 0, 64, 0, 2, 0,126, 8, 2, 0,127, 8, 56, 1, 8, 0, 32, 0, 45, 0, 7, 0,241, 2, 7, 0,128, 8, + 7, 0,129, 8, 7, 0,236, 2, 2, 0, 19, 0, 2, 0,206, 2, 7, 0,130, 8, 57, 1, 12, 0, 2, 0, 17, 0, 2, 0, 70, 1, + 2, 0, 19, 0, 2, 0,244, 2, 2, 0,220, 2, 2, 0,131, 8, 4, 0, 37, 0, 7, 0,132, 8, 7, 0,133, 8, 7, 0,134, 8, + 7, 0,135, 8, 0, 0,136, 8, 58, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 29, 8, 4, 0, 89, 0, 0, 0, 20, 0, + 2, 0,137, 1, 2, 0, 64, 0, 2, 0,126, 8, 2, 0,127, 8, 59, 1, 7, 0, 4, 0,194, 2, 4, 0,137, 8, 4, 0,138, 8, + 4, 0,139, 8, 7, 0,140, 8, 7, 0,141, 8, 0, 0, 73, 8, 60, 1, 7, 0, 0, 0,142, 8, 32, 0,143, 8, 0, 0, 79, 8, + 2, 0,144, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0, 80, 8, 61, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 29, 8, + 4, 0, 89, 0, 0, 0,145, 8, 0, 0,146, 8, 62, 1, 1, 0, 4, 0, 19, 0, 63, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,147, 8, 7, 0,148, 8, 42, 0,105, 6, 64, 1, 4, 0, 0, 0, 71, 2, 2, 0, 19, 0, 4, 0, 17, 0, + 32, 0, 45, 0, 65, 1, 2, 0, 4, 0, 17, 0, 4, 0, 26, 6, 66, 1, 6, 0, 0, 0, 76, 8, 0, 0, 77, 8, 4, 0, 17, 0, + 7, 0, 37, 2, 32, 0, 51, 3, 32, 0,149, 8, 46, 1, 10, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1, 96, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 81, 8, 2, 0,150, 8, 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 67, 1, 10, 0, 7, 0,129, 3, + 7, 0,151, 8, 7, 0,152, 8, 7, 0,153, 8, 7, 0,154, 8, 4, 0, 19, 0, 7, 0,131, 8, 7, 0,155, 8, 7, 0,156, 8, + 7, 0, 37, 0, 15, 1, 12, 0, 15, 1, 0, 0, 15, 1, 1, 0, 14, 1,157, 8, 9, 0,223, 0, 4, 0,172, 3, 4, 0,230, 3, + 4, 0,231, 3, 4, 0,158, 8, 4, 0,159, 8, 4, 0,160, 8, 7, 0,243, 3, 7, 0, 37, 0, 50, 1, 8, 0, 7, 0,161, 8, + 7, 0,162, 8, 7, 0,163, 8, 7, 0,164, 8, 7, 0,165, 8, 7, 0,166, 8, 7, 0,167, 8, 7, 0,168, 8, 14, 1, 15, 0, + 27, 0, 31, 0, 0, 0,222, 0, 43, 0,149, 0, 9, 0,223, 0, 43, 0,169, 8, 36, 0, 80, 0, 7, 0,243, 3, 7, 0,170, 8, + 7, 0,111, 8, 7, 0,161, 8, 7, 0,162, 8, 7, 0,171, 8, 4, 0, 90, 0, 4, 0,160, 8, 9, 0,172, 8, 68, 1, 15, 0, +212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 0, 1,173, 8,213, 0, 46, 6, 14, 1,242, 7, + 2, 0, 70, 1, 2, 0,109, 8, 2, 0, 90, 2, 2, 0, 91, 2, 2, 0, 19, 0, 2, 0, 98, 6, 4, 0, 70, 0, 69, 1, 6, 0, + 69, 1, 0, 0, 69, 1, 1, 0, 32, 0, 45, 0, 9, 0,174, 8, 4, 0,247, 0, 4, 0, 37, 0, 68, 0, 4, 0, 27, 0, 31, 0, + 12, 0,175, 8, 4, 0,131, 0, 7, 0,176, 8, 70, 1, 26, 0, 70, 1, 0, 0, 70, 1, 1, 0, 26, 0,177, 8, 70, 1, 38, 0, + 12, 0,178, 8, 0, 0, 20, 0, 7, 0,179, 8, 7, 0,180, 8, 7, 0,181, 8, 7, 0,182, 8, 4, 0, 19, 0, 7, 0,183, 8, + 7, 0,184, 8, 7, 0,185, 8, 7, 0, 77, 1, 7, 0, 37, 2, 7, 0,186, 8, 7, 0,192, 2, 7, 0,187, 8, 7, 0,188, 8, + 7, 0,189, 8, 7, 0,190, 8, 7, 0,191, 8, 7, 0,172, 0, 2, 0,131, 0, 2, 0,121, 5, 71, 1, 22, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 12, 0,192, 8, 12, 0,193, 8, 12, 0,194, 8, 9, 0,195, 8, 4, 0, 19, 0, 4, 0,255, 5, 2, 0,248, 2, + 2, 0, 56, 6, 2, 0,131, 0, 2, 0,196, 8, 2, 0,197, 8, 2, 0,198, 8, 2, 0,199, 8, 2, 0,200, 8, 4, 0,201, 8, + 4, 0,202, 8, 4, 0,203, 8, 4, 0,204, 8, 4, 0,205, 8, 4, 0,206, 8, 72, 1, 2, 0, 7, 0,153, 2, 4, 0, 19, 0, + 73, 1, 5, 0, 72, 1,207, 8, 4, 0,192, 2, 4, 0,208, 8, 4, 0,209, 8, 4, 0, 19, 0, 74, 1, 6, 0, 4, 0, 37, 0, + 4, 0, 56, 6, 4, 0,203, 8, 4, 0,204, 8, 4, 0,205, 8, 4, 0,206, 8, 75, 1, 42, 0, 75, 1, 0, 0, 75, 1, 1, 0, + 26, 0,177, 8, 12, 0,156, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0,210, 8, 2, 0,211, 8, 2, 0,212, 8, 2, 0,115, 3, + 2, 0,213, 8, 4, 0, 73, 2, 4, 0,203, 8, 4, 0,204, 8, 70, 1,214, 8, 75, 1, 38, 0, 75, 1,215, 8, 12, 0,216, 8, + 9, 0,217, 8, 9, 0,218, 8, 9, 0,219, 8, 7, 0, 65, 1, 7, 0,172, 0, 7, 0,220, 8, 7, 0, 16, 2, 7, 0,106, 3, + 7, 0,108, 3, 2, 0,138, 3, 2, 0, 37, 0, 7, 0,221, 8, 7, 0,222, 8, 7, 0,111, 3, 7, 0,223, 8, 7, 0,224, 8, + 7, 0,225, 8, 7, 0,226, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0,229, 8, 7, 0,230, 8, 7, 0, 66, 2, 32, 0,231, 8, +161, 0, 11, 0, 12, 0,232, 8, 2, 0, 19, 0, 2, 0,233, 8, 7, 0,102, 2, 7, 0,234, 8, 7, 0,235, 8, 12, 0,236, 8, + 4, 0,237, 8, 4, 0,238, 8, 9, 0,239, 8, 9, 0,240, 8, 76, 1, 1, 0, 4, 0,238, 8, 77, 1, 12, 0, 4, 0,238, 8, + 7, 0, 93, 8, 2, 0,241, 8, 2, 0,242, 8, 7, 0,243, 8, 7, 0,244, 8, 2, 0,245, 8, 2, 0, 19, 0, 7, 0,246, 8, + 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 78, 1, 7, 0, 78, 1, 0, 0, 78, 1, 1, 0, 12, 0,250, 8, 4, 0, 19, 0, + 4, 0,251, 8, 0, 0,234, 3,247, 0,252, 8,160, 0, 7, 0, 27, 0, 31, 0, 12, 0,253, 8, 12, 0,232, 8, 12, 0,254, 8, + 12, 0,100, 0, 4, 0, 19, 0, 4, 0,255, 8,217, 0, 4, 0, 27, 0,157, 8, 12, 0,232, 8, 4, 0, 0, 9, 4, 0, 19, 0, + 79, 1, 17, 0,212, 0, 0, 0,212, 0, 1, 0, 12, 0,246, 5, 4, 0,247, 5, 7, 0,248, 5, 2, 0,249, 5,213, 0, 46, 6, +160, 0, 91, 3,217, 0, 1, 9, 0, 0, 70, 1, 0, 0, 49, 6, 2, 0, 19, 0, 2, 0, 2, 9, 2, 0, 99, 6, 2, 0, 98, 6, + 2, 0, 3, 9, 7, 0, 4, 9, 80, 1, 8, 0, 80, 1, 0, 0, 80, 1, 1, 0, 78, 1, 5, 9, 36, 0, 80, 0, 12, 0, 95, 3, + 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 6, 9, 81, 1, 5, 0, 81, 1, 0, 0, 81, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, + 0, 0, 7, 9, 82, 1, 14, 0, 82, 1, 0, 0, 82, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 8, 9, + 0, 0, 9, 9, 0, 0, 7, 9, 7, 0, 10, 9, 7, 0, 11, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 12, 9, 7, 0, 13, 9, + 83, 1, 9, 0, 83, 1, 0, 0, 83, 1, 1, 0, 32, 0, 14, 9, 0, 0,251, 2, 7, 0, 15, 9, 2, 0, 16, 9, 2, 0, 19, 0, + 2, 0, 17, 0, 2, 0, 17, 9, 84, 1, 7, 0, 42, 0,105, 6, 26, 0,177, 8, 4, 0, 19, 0, 4, 0, 18, 9, 12, 0, 19, 9, + 32, 0, 14, 9, 0, 0,251, 2, 85, 1, 15, 0, 32, 0, 14, 9, 2, 0, 20, 9, 2, 0, 19, 0, 2, 0, 21, 9, 2, 0, 22, 9, + 0, 0,251, 2, 32, 0, 23, 9, 0, 0, 24, 9, 7, 0, 25, 9, 7, 0, 37, 2, 7, 0, 26, 9, 7, 0, 27, 9, 2, 0, 17, 0, + 2, 0, 70, 1, 7, 0, 77, 1, 86, 1, 6, 0, 32, 0, 14, 9, 4, 0, 28, 9, 4, 0, 29, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,251, 2, 87, 1, 4, 0, 32, 0, 14, 9, 4, 0, 19, 0, 4, 0, 28, 9, 0, 0,251, 2, 88, 1, 4, 0, 32, 0, 14, 9, + 4, 0, 19, 0, 4, 0, 28, 9, 0, 0,251, 2, 89, 1, 10, 0, 32, 0, 14, 9, 4, 0, 30, 9, 7, 0,125, 0, 4, 0, 19, 0, + 2, 0,101, 6, 2, 0, 31, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0, 32, 9, 0, 0,251, 2, 90, 1, 4, 0, 32, 0, 14, 9, + 4, 0, 19, 0, 4, 0, 28, 9, 0, 0,251, 2, 91, 1, 10, 0, 32, 0, 14, 9, 2, 0, 17, 0, 2, 0, 37, 4, 4, 0, 88, 0, + 4, 0, 89, 0, 7, 0,128, 8, 7, 0,129, 8, 4, 0, 37, 0,160, 0,102, 8, 0, 0,251, 2, 92, 1, 4, 0, 32, 0, 14, 9, + 4, 0,116, 3, 4, 0, 33, 9, 0, 0,251, 2, 93, 1, 4, 0, 32, 0, 14, 9, 4, 0,116, 3, 4, 0, 37, 0, 0, 0,251, 2, + 94, 1, 5, 0, 32, 0, 14, 9, 7, 0,125, 0, 4, 0, 34, 9, 4, 0,116, 3, 4, 0,117, 3, 95, 1, 6, 0, 32, 0, 14, 9, + 4, 0, 35, 9, 4, 0, 36, 9, 7, 0, 37, 9, 7, 0, 38, 9, 0, 0,251, 2, 96, 1, 16, 0, 32, 0, 14, 9, 32, 0,215, 8, + 4, 0, 17, 0, 7, 0, 39, 9, 7, 0, 40, 9, 7, 0, 41, 9, 7, 0, 42, 9, 7, 0, 43, 9, 7, 0, 44, 9, 7, 0, 45, 9, + 7, 0, 46, 9, 7, 0, 47, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0, 97, 1, 3, 0, 32, 0, 14, 9, + 4, 0, 19, 0, 4, 0, 29, 2, 98, 1, 5, 0, 32, 0, 14, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0, 48, 9, 0, 0,251, 2, + 99, 1, 10, 0, 32, 0, 14, 9, 0, 0,251, 2, 2, 0, 49, 9, 2, 0, 50, 9, 0, 0, 51, 9, 0, 0, 52, 9, 7, 0, 53, 9, + 7, 0, 54, 9, 7, 0, 55, 9, 7, 0, 56, 9,100, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 7, 0, 57, 9, 7, 0, 58, 9, 2, 0, 19, 0, 2, 0, 29, 2,101, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, + 7, 0, 12, 0, 7, 0, 57, 9, 7, 0, 58, 9, 2, 0, 19, 0, 2, 0, 29, 2,102, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, + 7, 0, 11, 0, 7, 0, 12, 0, 7, 0, 57, 9, 7, 0, 58, 9, 2, 0, 19, 0, 2, 0, 29, 2,103, 1, 7, 0, 32, 0, 14, 9, + 0, 0,251, 2, 7, 0, 77, 1, 7, 0, 86, 1, 2, 0, 19, 0, 2, 0, 70, 1, 4, 0, 37, 0,104, 1, 5, 0, 32, 0, 51, 3, + 7, 0, 77, 1, 2, 0, 55, 3, 0, 0, 57, 3, 0, 0, 59, 9,105, 1, 10, 0,105, 1, 0, 0,105, 1, 1, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 0, 0, 60, 9, 7, 0, 21, 1, 7, 0, 22, 1, 2, 0,250, 8, 2, 0, 61, 9, 32, 0, 45, 0,106, 1, 22, 0, +106, 1, 0, 0,106, 1, 1, 0, 2, 0, 19, 0, 2, 0, 70, 1, 2, 0, 62, 9, 2, 0, 63, 9, 36, 0, 80, 0,160, 0,102, 8, + 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0, 66, 9, 7, 0, 67, 9, 7, 0,237, 2, + 7, 0, 68, 9, 7, 0,104, 8, 7, 0, 69, 9, 0, 0, 70, 9, 0, 0, 71, 9, 12, 0, 97, 3,107, 1, 8, 0, 7, 0, 44, 2, + 7, 0,128, 8, 7, 0,129, 8, 9, 0, 2, 0, 2, 0, 72, 9, 2, 0, 73, 9, 2, 0, 74, 9, 2, 0, 75, 9,108, 1, 18, 0, +108, 1, 0, 0,108, 1, 1, 0,108, 1, 76, 9, 0, 0, 20, 0,107, 1, 77, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 78, 9, + 2, 0, 79, 9, 2, 0, 80, 9, 2, 0, 81, 9, 4, 0, 43, 0, 7, 0, 82, 9, 7, 0, 83, 9, 4, 0, 84, 9, 4, 0, 85, 9, +108, 1, 86, 9,109, 1, 87, 9,110, 1, 34, 0,110, 1, 0, 0,110, 1, 1, 0,110, 1, 88, 9, 0, 0, 20, 0, 0, 0, 89, 9, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,211, 7, 2, 0,244, 7, 2, 0, 90, 9, 2, 0,133, 0, 2, 0, 79, 9, 2, 0,201, 7, + 12, 0, 97, 8, 12, 0, 91, 9, 27, 0,135, 6, 9, 0, 92, 9, 7, 0, 82, 9, 7, 0, 83, 9, 7, 0, 75, 2, 7, 0, 93, 9, + 2, 0, 94, 9, 2, 0, 95, 9, 7, 0, 96, 9, 7, 0, 97, 9, 2, 0, 98, 9, 2, 0, 99, 9, 9, 0,100, 9, 24, 0,101, 9, + 24, 0,102, 9, 24, 0,103, 9,111, 1,150, 0,112, 1,104, 9,113, 1,105, 9,109, 1, 8, 0,109, 1, 0, 0,109, 1, 1, 0, +110, 1,106, 9,110, 1,107, 9,108, 1,108, 9,108, 1, 86, 9, 4, 0, 19, 0, 4, 0, 37, 0, 61, 0, 20, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 12, 0,109, 9, 12, 0,110, 9,107, 1,111, 9, 12, 0,112, 9, 4, 0, 17, 0, 4, 0,113, 9, 4, 0,114, 9, + 4, 0,115, 9, 12, 0,116, 9,113, 1,117, 9,108, 1,118, 9,108, 1,119, 9, 9, 0,120, 9, 9, 0,121, 9, 4, 0,122, 9, + 9, 0,123, 9, 9, 0,124, 9, 9, 0,125, 9,114, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,201, 7, 0, 0,126, 9, + 0, 0,127, 9, 2, 0, 37, 0,115, 1, 16, 0, 2, 0,155, 7, 2, 0,156, 7, 2, 0,128, 9, 2, 0,152, 8, 2, 0,129, 9, + 2, 0, 68, 0, 7, 0,236, 2, 7, 0,130, 9, 7, 0,131, 9, 2, 0, 92, 1, 0, 0,132, 9, 0, 0,105, 5, 2, 0,133, 9, + 2, 0, 37, 0, 4, 0,134, 9, 4, 0,135, 9,116, 1, 9, 0, 7, 0,136, 9, 7, 0,137, 9, 7, 0,171, 8, 7, 0,109, 0, + 7, 0,138, 9, 7, 0, 62, 6, 2, 0,139, 9, 0, 0,140, 9, 0, 0, 37, 0,117, 1, 4, 0, 7, 0,141, 9, 7, 0,142, 9, + 2, 0,139, 9, 2, 0, 37, 0,118, 1, 3, 0, 7, 0,143, 9, 7, 0,144, 9, 7, 0, 15, 0,119, 1, 7, 0, 0, 0, 6, 2, + 2, 0,233, 4, 2, 0,234, 4, 2, 0,235, 4, 2, 0,181, 4, 4, 0,126, 0, 4, 0, 35, 4,120, 1, 7, 0, 7, 0,145, 9, + 7, 0,146, 9, 7, 0,147, 9, 7, 0, 86, 2, 7, 0,148, 9, 7, 0,149, 9, 7, 0,150, 9,121, 1, 4, 0, 2, 0,151, 9, + 2, 0,152, 9, 2, 0,153, 9, 2, 0,154, 9,122, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,123, 1, 2, 0, 0, 0,166, 0, + 0, 0,155, 9,124, 1, 1, 0, 0, 0, 20, 0,125, 1, 10, 0, 0, 0,156, 9, 0, 0,157, 9, 0, 0, 55, 6, 0, 0,158, 9, + 2, 0,128, 9, 2, 0,159, 9, 7, 0,160, 9, 7, 0,161, 9, 7, 0,162, 9, 7, 0, 68, 9,126, 1, 2, 0, 9, 0,163, 9, + 9, 0,164, 9,127, 1, 11, 0, 0, 0,235, 4, 0, 0, 17, 0, 0, 0,139, 9, 0, 0,109, 0, 0, 0,165, 9, 0, 0,106, 0, + 0, 0, 71, 2, 7, 0,166, 9, 7, 0,167, 9, 7, 0,168, 9, 7, 0,169, 9,128, 1, 8, 0, 7, 0, 62, 8, 7, 0,125, 0, + 7, 0,105, 5, 7, 0,158, 2, 7, 0,170, 9, 7, 0,236, 0, 7, 0,171, 9, 4, 0, 17, 0,129, 1, 4, 0, 2, 0,172, 9, + 2, 0,173, 9, 2, 0,174, 9, 2, 0, 37, 0,130, 1, 1, 0, 0, 0, 20, 0,131, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 2, 0, 19, 0, 2, 0,175, 9,132, 1, 10, 0, 2, 0,223, 3, 2, 0, 19, 0, 7, 0,117, 4, 7, 0,176, 9, 7, 0,177, 9, + 7, 0,178, 9, 7, 0,179, 9,131, 1,180, 9,131, 1,181, 9,131, 1,182, 9, 64, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, + 24, 0,183, 9, 24, 0,184, 9,132, 1,185, 9, 7, 0,186, 9, 7, 0,187, 9, 7, 0,188, 9, 7, 0,189, 9,133, 1, 4, 0, + 47, 0,230, 2, 7, 0,190, 9, 7, 0,171, 1, 7, 0, 37, 0,190, 0, 17, 0, 27, 0, 31, 0,133, 1,191, 9, 64, 0,180, 9, + 51, 0,135, 1, 2, 0, 19, 0, 2, 0,215, 5, 4, 0,106, 0, 7, 0,192, 9, 7, 0, 83, 2, 4, 0,193, 9, 7, 0,194, 9, + 7, 0,195, 9, 7, 0,196, 9, 7, 0,171, 1, 2, 0,105, 1, 0, 0,197, 9, 0, 0,193, 6,134, 1, 10, 0, 4, 0, 17, 0, + 4, 0,125, 0, 4, 0, 19, 0, 4, 0,178, 3, 4, 0,198, 9, 4, 0,199, 9, 4, 0,200, 9, 0, 0, 92, 0, 0, 0, 20, 0, + 9, 0, 2, 0, 92, 0, 6, 0,134, 1,201, 9, 4, 0,202, 9, 4, 0,203, 9, 4, 0,204, 9, 4, 0, 37, 0, 9, 0,205, 9, +135, 1, 5, 0, 7, 0,153, 2, 7, 0,220, 2, 7, 0, 37, 2, 2, 0,129, 2, 2, 0, 37, 0,136, 1, 5, 0, 7, 0,153, 2, + 7, 0,206, 9, 7, 0,207, 9, 7, 0,208, 9, 7, 0,220, 2,137, 1, 5, 0, 32, 0,209, 9,138, 1, 22, 0, 7, 0,188, 5, + 7, 0,210, 9, 7, 0, 57, 0,139, 1, 7, 0, 4, 0,211, 9, 4, 0,212, 9, 4, 0,213, 9, 7, 0,214, 9, 7, 0,215, 9, + 7, 0,216, 9, 7, 0, 57, 0,140, 1, 8, 0,140, 1, 0, 0,140, 1, 1, 0, 32, 0, 45, 0, 4, 0, 38, 3, 2, 0, 19, 0, + 2, 0, 70, 1, 7, 0,220, 2, 7, 0, 70, 8,141, 1, 6, 0,141, 1, 0, 0,141, 1, 1, 0, 32, 0, 45, 0, 2, 0,205, 2, + 2, 0, 19, 0, 2, 0,217, 9,142, 1, 18, 0,136, 1,172, 3,136, 1,218, 9,135, 1,219, 9,136, 1, 54, 8,137, 1,220, 9, + 4, 0, 82, 0, 7, 0,220, 2, 7, 0,247, 2, 7, 0,221, 9, 4, 0,211, 9, 4, 0,222, 9, 7, 0,215, 9, 7, 0,216, 9, + 7, 0,106, 0, 2, 0, 19, 0, 2, 0,223, 9, 2, 0,224, 9, 2, 0,225, 9,143, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0, +144, 1,226, 9,169, 0, 57, 4, 4, 0, 19, 0, 2, 0, 17, 0, 2, 0, 49, 9, 2, 0,227, 9, 2, 0,228, 9, 2, 0,138, 3, + 2, 0,229, 9, 2, 0,230, 9, 2, 0,231, 9, 2, 0,232, 9, 2, 0,233, 9, 2, 0,234, 9, 2, 0,235, 9, 2, 0,223, 4, + 2, 0, 98, 5, 2, 0,236, 9, 2, 0,237, 9, 2, 0,238, 9, 2, 0,239, 9, 2, 0,240, 9, 2, 0, 26, 2, 2, 0, 47, 8, + 2, 0, 23, 8, 2, 0,241, 9, 2, 0,242, 9, 2, 0,188, 3, 2, 0,189, 3, 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9, + 2, 0,246, 9, 7, 0,247, 9, 7, 0,248, 9, 7, 0,249, 9, 2, 0,250, 9, 2, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, + 7, 0,254, 9, 7, 0, 29, 8, 7, 0, 89, 0, 7, 0,247, 2, 7, 0, 35, 8, 7, 0,255, 9, 7, 0, 0, 10, 7, 0, 1, 10, + 4, 0, 30, 8, 4, 0, 28, 8, 4, 0, 2, 10, 7, 0, 31, 8, 7, 0, 32, 8, 7, 0, 33, 8, 7, 0, 3, 10, 7, 0, 4, 10, + 7, 0, 5, 10, 7, 0, 6, 10, 7, 0, 7, 10, 7, 0, 57, 0, 7, 0, 8, 10, 7, 0, 9, 10, 7, 0, 10, 10, 7, 0, 11, 10, + 7, 0,129, 3, 7, 0,106, 0, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, 7, 0, 17, 10, + 7, 0, 18, 10, 4, 0, 19, 10, 4, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, 7, 0, 23, 10, 7, 0, 24, 10, 7, 0, 25, 10, + 7, 0,210, 0, 7, 0, 26, 10, 7, 0,214, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0, 27, 10, 7, 0, 28, 10, 7, 0, 29, 10, + 7, 0, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, + 7, 0, 38, 10, 7, 0, 39, 10, 4, 0, 40, 10, 4, 0, 41, 10, 68, 0,161, 3, 12, 0, 42, 10, 68, 0, 43, 10, 32, 0, 44, 10, + 32, 0, 45, 10, 36, 0, 80, 0,164, 0, 62, 1,164, 0, 46, 10, 59, 0, 44, 0, 59, 0, 0, 0, 59, 0, 1, 0,143, 1, 47, 10, +142, 1, 48, 10,139, 1,215, 8,171, 0,239, 3, 9, 0,240, 3,145, 1, 49, 10,145, 1, 50, 10, 12, 0, 51, 10, 12, 0, 52, 10, +134, 0, 53, 10,142, 0, 54, 10,142, 0, 55, 10, 32, 0, 56, 10, 32, 0, 57, 10, 32, 0, 38, 0, 12, 0, 19, 9, 0, 0, 20, 0, + 7, 0,240, 0, 7, 0, 18, 3, 7, 0, 58, 10, 4, 0,194, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 30, 8, 4, 0, 59, 10, + 4, 0, 60, 10, 4, 0, 61, 10, 2, 0,247, 0, 2, 0, 62, 10, 2, 0, 63, 10, 2, 0, 64, 10, 0, 0, 65, 10, 2, 0, 66, 10, + 2, 0, 67, 10, 2, 0, 68, 10, 9, 0, 69, 10,138, 0, 56, 4, 12, 0, 5, 3, 12, 0, 70, 10,146, 1, 71, 10,147, 1, 72, 10, + 7, 0, 73, 10,136, 0, 35, 0,148, 1,172, 8, 7, 0, 26, 4, 7, 0, 74, 10, 7, 0, 75, 10, 7, 0,120, 4, 7, 0, 76, 10, + 7, 0,139, 3, 7, 0,129, 3, 7, 0, 77, 10, 7, 0, 85, 2, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, 7, 0, 81, 10, + 7, 0, 82, 10, 7, 0, 83, 10, 7, 0, 27, 4, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 28, 4, 7, 0, 24, 4, + 7, 0, 25, 4, 7, 0, 87, 10, 4, 0, 88, 10, 4, 0, 90, 0, 4, 0, 89, 10, 4, 0, 90, 10, 2, 0, 91, 10, 2, 0, 92, 10, + 2, 0, 93, 10, 2, 0, 94, 10, 2, 0, 95, 10, 2, 0, 37, 0,169, 0, 57, 4,137, 0, 8, 0,148, 1, 96, 10, 7, 0, 97, 10, + 7, 0, 98, 10, 7, 0,243, 1, 7, 0, 99, 10, 4, 0, 90, 0, 2, 0,100, 10, 2, 0,101, 10,149, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,102, 10,150, 1, 6, 0,150, 1, 0, 0,150, 1, 1, 0,149, 1,207, 8, 4, 0,253, 0, + 2, 0,103, 10, 2, 0, 19, 0,151, 1, 5, 0,151, 1, 0, 0,151, 1, 1, 0, 12, 0,104, 10, 4, 0,105, 10, 4, 0, 19, 0, +152, 1, 9, 0,152, 1, 0, 0,152, 1, 1, 0, 12, 0,124, 0,151, 1,106, 10, 4, 0, 19, 0, 2, 0,103, 10, 2, 0,107, 10, + 7, 0, 91, 0, 0, 0,108, 10,162, 0, 6, 0, 27, 0, 31, 0, 12, 0,251, 4, 4, 0, 19, 0, 2, 0,109, 10, 2, 0,110, 10, + 9, 0,111, 10,153, 1, 7, 0,153, 1, 0, 0,153, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,112, 10, + 0, 0,113, 10,154, 1, 5, 0, 12, 0,114, 10, 4, 0,115, 10, 4, 0,116, 10, 4, 0, 19, 0, 4, 0, 37, 0,155, 1, 18, 0, + 27, 0, 31, 0,156, 1,117, 10,156, 1,118, 10, 12, 0,119, 10, 4, 0,120, 10, 2, 0,121, 10, 2, 0, 37, 0, 12, 0,122, 10, + 12, 0,123, 10,154, 1,124, 10, 12, 0,125, 10, 12, 0,126, 10, 12, 0,127, 10,157, 1,128, 10, 4, 0,129, 10, 4, 0, 70, 0, + 12, 0,130, 10,210, 0,131, 10,156, 1, 30, 0,156, 1, 0, 0,156, 1, 1, 0, 9, 0,132, 10, 4, 0,134, 7, 4, 0, 37, 0, +215, 0, 45, 6,215, 0,133, 10, 0, 0,134, 10, 2, 0,135, 10, 2, 0,136, 10, 2, 0,155, 7, 2, 0,156, 7, 2, 0,137, 10, + 2, 0,138, 10, 2, 0,178, 3, 2, 0,161, 6, 2, 0,139, 10, 2, 0,140, 10, 4, 0,239, 1,158, 1,141, 10,159, 1,142, 10, +160, 1,143, 10, 4, 0,144, 10, 4, 0,145, 10, 9, 0,146, 10, 12, 0,123, 10, 12, 0,175, 7, 12, 0,147, 10, 12, 0,148, 10, + 12, 0,149, 10,161, 1, 16, 0,161, 1, 0, 0,161, 1, 1, 0, 0, 0,150, 10, 26, 0, 30, 0, 2, 0,151, 10, 2, 0, 17, 0, + 2, 0, 15, 0, 2, 0,152, 10, 2, 0,153, 10, 2, 0,154, 10, 2, 0,155, 10, 2, 0,156, 10, 2, 0, 19, 0, 2, 0,157, 10, + 2, 0, 71, 2,162, 1,158, 10,163, 1, 10, 0,163, 1, 0, 0,163, 1, 1, 0, 12, 0,159, 10, 0, 0,150, 10, 2, 0,160, 10, + 2, 0,161, 10, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0,162, 10, 9, 0,163, 10,157, 1, 7, 0,157, 1, 0, 0,157, 1, 1, 0, + 0, 0,150, 10, 0, 0,164, 10, 12, 0, 92, 7, 4, 0,165, 10, 4, 0, 19, 0,223, 0, 12, 0,223, 0, 0, 0,223, 0, 1, 0, + 0, 0,150, 10, 26, 0, 30, 0,164, 1,149, 7, 9, 0,166, 10,162, 1,158, 10,154, 1,167, 10, 12, 0,168, 10,223, 0,169, 10, + 2, 0, 19, 0, 2, 0,137, 1,158, 1, 23, 0,158, 1, 0, 0,158, 1, 1, 0, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 5, 0, + 2, 0, 6, 0, 2, 0,170, 10, 2, 0,171, 10, 2, 0,172, 10, 2, 0,173, 10, 0, 0,174, 10, 0, 0, 37, 0, 2, 0,152, 10, + 2, 0,153, 10, 2, 0,154, 10, 2, 0,155, 10, 2, 0,156, 10, 2, 0, 43, 0, 0, 0,175, 10, 2, 0,176, 10, 2, 0,177, 10, + 4, 0, 70, 0, 9, 0,166, 10,165, 1, 8, 0,165, 1, 0, 0,165, 1, 1, 0, 9, 0, 2, 0, 9, 0,178, 10, 0, 0,234, 3, + 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,179, 10,166, 1, 5, 0, 7, 0,180, 10, 4, 0,181, 10, 4, 0,182, 10, 4, 0, 70, 1, + 4, 0, 19, 0,167, 1, 6, 0, 7, 0,183, 10, 7, 0,184, 10, 7, 0,185, 10, 7, 0,186, 10, 4, 0, 17, 0, 4, 0, 19, 0, +168, 1, 5, 0, 7, 0,128, 8, 7, 0,129, 8, 7, 0,220, 2, 2, 0, 40, 2, 2, 0, 41, 2,169, 1, 5, 0,168, 1, 2, 0, + 4, 0, 54, 0, 7, 0,187, 10, 7, 0,128, 8, 7, 0,129, 8,170, 1, 4, 0, 2, 0,188, 10, 2, 0,189, 10, 2, 0,190, 10, + 2, 0,191, 10,171, 1, 2, 0, 42, 0,132, 6, 26, 0,177, 8,172, 1, 3, 0, 24, 0,192, 10, 4, 0, 19, 0, 4, 0, 37, 0, +173, 1, 6, 0, 7, 0,106, 0, 7, 0,222, 2, 7, 0,193, 10, 7, 0, 37, 0, 2, 0,246, 0, 2, 0,194, 10,174, 1, 9, 0, +174, 1, 0, 0,174, 1, 1, 0, 27, 0,135, 6, 0, 0,195, 10, 4, 0,196, 10, 4, 0,197, 10, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,234, 3,175, 1, 6, 0, 12, 0, 19, 9, 0, 0,198, 10, 7, 0, 61, 0, 7, 0,179, 10, 4, 0, 17, 0, 4, 0, 19, 0, +176, 1, 3, 0, 7, 0,199, 10, 4, 0, 19, 0, 4, 0, 37, 0,177, 1, 15, 0,177, 1, 0, 0,177, 1, 1, 0, 78, 1, 5, 9, +175, 1, 62, 0, 12, 0, 97, 3, 35, 0, 50, 0,176, 1,200, 10, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 16, 1, + 4, 0,196, 10, 0, 0,195, 10, 4, 0,201, 10, 7, 0,202, 10,178, 1, 2, 0, 0, 0,203, 10, 0, 0,204, 10,179, 1, 4, 0, +179, 1, 0, 0,179, 1, 1, 0,160, 0, 51, 3, 12, 0,205, 10,180, 1, 24, 0,180, 1, 0, 0,180, 1, 1, 0, 12, 0,206, 10, +160, 0,102, 8,179, 1,207, 10, 12, 0,208, 10, 12, 0, 97, 3, 0, 0,234, 3, 7, 0,179, 10, 7, 0,209, 10, 7, 0, 88, 0, + 7, 0, 89, 0, 7, 0, 64, 9, 7, 0, 65, 9, 7, 0,237, 2, 7, 0, 68, 9, 7, 0,104, 8, 7, 0, 69, 9, 2, 0,210, 10, + 2, 0,211, 10, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,181, 1, 6, 0,181, 1, 0, 0,181, 1, 1, 0, + 12, 0,206, 10, 4, 0, 19, 0, 4, 0,157, 2, 0, 0,234, 3,182, 1, 10, 0,182, 1, 0, 0,182, 1, 1, 0, 27, 0,135, 6, + 0, 0,212, 10, 4, 0,197, 10, 4, 0,213, 10, 0, 0,195, 10, 4, 0,196, 10, 2, 0, 19, 0, 2, 0,214, 10,183, 1, 7, 0, +183, 1, 0, 0,183, 1, 1, 0, 12, 0,215, 10, 0, 0,234, 3, 2, 0, 19, 0, 2, 0,216, 10, 4, 0,217, 10,184, 1, 5, 0, +184, 1, 0, 0,184, 1, 1, 0, 0, 0,195, 10, 4, 0,196, 10, 7, 0,210, 2, 39, 0, 12, 0,160, 0, 91, 3,160, 0,218, 10, +179, 1,207, 10, 12, 0,219, 10,180, 1,220, 10, 12, 0,221, 10, 12, 0,222, 10, 4, 0, 19, 0, 4, 0,247, 0, 2, 0,223, 10, + 2, 0,224, 10, 7, 0,225, 10,185, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,186, 1, 5, 0,186, 1, 0, 0,186, 1, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 0, 0, 20, 0,187, 1, 6, 0,186, 1,226, 10, 32, 0, 45, 0, 4, 0,227, 10, 7, 0,228, 10, + 4, 0,229, 10, 4, 0,250, 8,188, 1, 3, 0,186, 1,226, 10, 4, 0,227, 10, 7, 0,230, 10,189, 1, 8, 0,186, 1,226, 10, + 32, 0, 45, 0, 7, 0, 65, 1, 7, 0,231, 10, 7, 0, 18, 3, 7, 0,171, 8, 4, 0,227, 10, 4, 0,232, 10,190, 1, 5, 0, +186, 1,226, 10, 7, 0,233, 10, 7, 0,244, 7, 7, 0,243, 2, 7, 0, 57, 0,191, 1, 3, 0,186, 1,226, 10, 7, 0,171, 8, + 7, 0,234, 10,138, 1, 4, 0, 7, 0,235, 10, 7, 0, 14, 10, 2, 0,236, 10, 2, 0, 70, 1,192, 1, 14, 0,192, 1, 0, 0, +192, 1, 1, 0, 12, 0,237, 10, 12, 0,238, 10, 12, 0,239, 10, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,240, 10, + 7, 0,241, 10, 4, 0,229, 10, 4, 0,250, 8, 7, 0,243, 3, 7, 0,245, 2,144, 1, 23, 0, 4, 0,227, 10, 4, 0,242, 10, + 7, 0,243, 10, 7, 0, 57, 0, 7, 0,244, 10, 7, 0,241, 2, 7, 0,235, 10, 7, 0,245, 10, 7, 0,222, 2, 7, 0,246, 10, + 7, 0,117, 4, 7, 0,247, 10, 7, 0,248, 10, 7, 0,249, 10, 7, 0,250, 10, 7, 0,251, 10, 7, 0,252, 10, 7, 0,253, 10, + 7, 0,254, 10, 7, 0,255, 10, 7, 0, 0, 11, 7, 0, 1, 11, 12, 0, 2, 11,122, 0, 34, 0,121, 0, 3, 11,193, 1, 4, 11, + 68, 0, 5, 11, 68, 0, 43, 10, 68, 0, 6, 11,194, 1, 7, 11, 48, 0,165, 0, 48, 0, 8, 11, 48, 0, 9, 11, 7, 0, 10, 11, + 7, 0, 11, 11, 7, 0, 12, 11, 7, 0, 13, 11, 7, 0, 14, 11, 7, 0, 6, 9, 7, 0, 15, 11, 7, 0,171, 1, 7, 0, 16, 11, + 4, 0, 17, 11, 4, 0, 18, 11, 4, 0, 19, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 20, 11, 2, 0, 21, 11, 2, 0, 22, 11, + 4, 0, 23, 11, 7, 0,222, 2, 4, 0, 24, 11, 7, 0, 25, 11, 4, 0, 26, 11,138, 0, 27, 11, 12, 0, 28, 11,169, 0, 57, 4, +123, 0, 11, 0,121, 0, 3, 11, 59, 0,255, 0, 7, 0,138, 1, 7, 0, 6, 9, 7, 0, 29, 11, 7, 0, 30, 11, 2, 0, 31, 11, + 2, 0, 32, 11, 2, 0, 33, 11, 2, 0, 17, 0, 4, 0, 37, 0,124, 0, 13, 0,121, 0, 3, 11,140, 0, 15, 3,142, 0, 17, 3, + 7, 0,207, 8, 7, 0, 34, 11, 7, 0, 35, 11, 7, 0, 67, 1, 7, 0, 36, 11, 4, 0, 37, 11, 4, 0, 13, 3, 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 8b8c349e851..28d6e2c70c4 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6114 +1,6103 @@ -/* DataToC output of file </Users/William/blender25/blender/release/datafiles/blenderbuttons> */ +/* DataToC output of file <blenderbuttons> */ -int datatoc_blenderbuttons_size= 195438; +int datatoc_blenderbuttons_size= 195097; char datatoc_blenderbuttons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, - 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, 6, 0, 0, 0, 64, 11, 6,158, 0, 0, 0, 4,115, 66, 73, 84, 8, 8, 8, 8,124, - 8,100,136, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 0, 25,116, 69, 88,116, - 83,111,102,116,119, 97,114,101, 0,119,119,119, 46,105,110,107,115, 99, 97,112,101, 46,111,114,103,155,238, 60, 26, 0, 0, 32, - 0, 73, 68, 65, 84,120,156,236,157,119,120, 84,197,254,198,223, 57,101,119,179, 37,155, 70, 18, 82, 40, 9, 16, 90, 0,105,210, - 69,138,160,136,130, 8, 40, 94,189, 42,122, 17, 5, 11, 54, 34,162, 72,141,247,122, 69,192,159,136,122, 85, 64,233, 42,136, 94, - 17,174, 20,233, 2, 22, 64,122, 79, 66,122,207,246,221, 51,191, 63,178,103,221,221,108, 11,108, 20,113, 62,207,115,158,221,211, -222, 51,115,234,123,190, 51,103,134, 80, 74,193, 96, 48, 24, 12, 6,131,193, 8, 31,220, 31,157, 0, 6,131,193, 96, 48, 24,140, -235,141,122, 27, 44, 66, 72,200, 33, 47, 66,200,224, 80, 53,157, 67,255,107, 93, 51,148,229,234,171, 41, 15, 97,212,236,239,212, -156, 17, 70,205,134, 76,103,255,107, 85, 83,206,111,168,186,245,209,244,254, 31,166,116,134,116,222, 95, 11,154,193,150,189,138, -116, 6,212,190,194,227, 62,227, 79,146,206,254,215,154,166,247,249, 19,138,110,125, 53,221,211, 29,198,116, 6, 61,239,175, 21, -205, 64,203, 95,101, 58,253,106,135,122, 46,249, 57,246, 51,130,173,123, 61, 32,212,103,225,250, 24,140,250, 64, 41, 37,110,250, -228, 90,213,148, 33,132, 80, 89, 63, 28,132, 83,203,201,182,112,107,122,237,207,112, 49,131, 82, 74, 8, 33,219, 1,244, 15,147, -230, 54,167,230, 85, 31,119,175,188,134, 69,183,190,230,170,190,154,225, 58,239, 27, 90,211,125,218,213,156,171,222,154,225, 56, -239,125, 29,247,112,106,134,235, 90,242, 90, 63, 44,215, 82, 67,156,243, 62,206,159,171,214,245,214, 12,199,181,228,173, 25,142, -243,254,247,208,148,167, 95,205,181,228, 75, 51, 28,231,189,191, 99,127,181,186,127, 22,234, 21,193,106,200, 29,227, 60, 0, 55, -135, 91, 51,220,105,110, 8,147, 25,202, 91,226,181,162,137,240, 30,163, 25, 78,205, 25, 97,212,188, 57, 92,199,168, 33,206,119, -119,205,112,233,123,235,132,227, 56,249,210,188,218,244,250, 73,231, 85,225, 75,243,106,207,251,223, 75, 19,225, 61, 70, 97,185, -150,188, 52,195,118, 45,121,231, 55, 28, 17, 12,119,205,112, 93, 75, 62,210,121,213,199,201,151,230,213,166,215, 79, 58,175, 10, - 95,154,225,120,134, 52,148,238,159,129,122, 69,176, 26,138,134, 48, 66, 64,237, 69, 23, 78,237,134,136,226, 52, 84,164, 45, 92, - 81, 28, 31,186,219,195, 40, 23,182,104,147,140, 51,125, 97,121,163,253, 51,194,174, 37,118, 45,225, 26,187,150,124,157, 55,148, -210, 25,132,144, 87,195,169,121,181,120,107,134,203, 8,249,200,251, 85, 93, 75,222,235,134,227, 90, 10,162,121, 85, 17,102,127, -249,191, 26,221, 63, 11,215, 76, 37,247, 96,229,189, 87,161, 23,214,168, 88,184,105,160,116,222,252,103,200, 59, 26, 32,157,132, -144, 25, 13,148,247, 63,203, 62,101,215, 18,187,150,194, 66, 56,175, 37,175,115, 50, 44,105, 13,247,121,238, 75, 51, 28,219,112, -215, 8,215, 57,218,208,121, 15,231,181,212, 16,199,254,207, 66,189, 35, 88, 13, 93,108,114, 45,107, 54,132,118, 3,229,125, 59, - 26,224,237,160, 1,234,117,109, 71,248,163, 2, 51, 16,198, 34, 71, 57,207,225, 76,107, 67, 22, 19, 54,196,185,217,144,231,123, - 56,235,121, 52, 80,222,183,227,207,113,220,183, 35,204,233, 12,215,181,228,227,152,111,199, 85,166,213,215,254, 11,119, 17,118, - 56,207,205,134,212, 12,135,118, 67,164,211,143,238,118,252, 5, 34, 87, 50,215, 76, 4,139,193, 96, 48, 24, 12, 6,227,122,129, - 80,214,208, 40,131,193, 96, 48, 24, 12, 70, 88,241, 91, 68,152,146,146,178, 81,163,209,180,244, 55,191,166,166,230,114, 94, 94, -222,128,134, 73, 22,131,193,184,158, 32,132,112,248, 45, 98, 46, 1,160,148,189,221, 49, 24,140,235, 24,191, 6, 75,165, 82,165, - 31, 59,118, 44, 67,146, 36, 56, 28, 14,216,237,118,215,175,197, 98,193, 77, 55,221, 84,239,250, 91,141, 27, 55,222,193,243,124, -243,250,172,227,112, 56, 46,230,231,231,247,245, 55,159, 16,178, 27, 64, 58, 33,196,125, 90,192, 95, 0,121, 86,171,181, 75, 32, - 77, 66, 72,186,183,158, 31, 45,249,127, 64,205,232,232,232, 3,130, 32,164,250,210,242,247, 95,146,164,179,133,133,133,189,253, -105, 50,194, 75,227,198,141,119, 8,130, 80,239,243,243,242,229,203,126,207,207,228,228,228, 31, 57,142, 75,174,135, 36, 47, 73, -210,137,203,151, 47,247,245,103, 64,228,115, 62,144,136,247,249, 68, 8,201,177,219,237,221, 2, 44,239, 87, 51,192, 57, 31, 80, -211,109, 89, 78, 16,132,236,132,132,132,137, 6,131,193, 4,128,242, 60, 79,227,226,226,228,180, 1, 0,236,118,123, 81, 89, 89, - 89,135, 96,122, 12, 6,131,241,103,192,175, 73,146, 36,137, 51,155,205, 56,121,242, 36,252,220,231, 29, 87,176,189,140,131,255, -219,156, 16,153,144, 8,187,213, 10,109,163,120,151,118,193,175, 71, 96,183, 89, 97,183, 88,208,180,123,207,218, 13, 56, 28,104, -223,190, 61, 31, 68, 51,245,245,215, 95, 79,136,140,140,132,201,100,130,201,100,130,217,108,134,201,100,130,197, 98,129,197, 98, -129,213,106,133,213,106,133,221,110,135,217,108,198,150, 45, 91,130,165, 61,117,206,156, 57, 9,122,189,222,165, 39, 15,178,166, -172,107,179,217, 96, 50,153,240,221,119,223, 5,212, 20, 4, 33, 53, 47, 47, 47, 65,161, 80,128, 82, 10, 73,146, 64, 41,245, 24, -188,105,209,162,133, 53, 72, 58, 25,225, 37, 99,206,138,175, 18,162,212, 42,216, 37, 9,195, 59,181,112,205, 56,251,193, 26, 80, -187, 3,146,221,142, 86,147,238, 7, 0, 80, 74,209,174, 93,187,128,231, 39,165,180,217,156, 21, 95, 69,135,170, 89, 92, 92,108, -108,219,182,109, 30,106, 43,130,250,139,240,164, 26,141,198, 4, 57, 13, 50,178, 81,225, 56,206, 99,216,180,105, 19,134, 15, 31, - 30, 44,239,169,207, 60,243, 76,130,205,102,131,197, 98,129,217,108,134,205,102,131,221,110,119, 13, 14,135,195, 53, 88, 44, 22, -236,219,183, 47,152,166, 28,185,122,253,150, 91,110,121,248,171,175,190,210,126,241,197, 23,218,230,205,155, 67,161, 80,128,231, -121,240, 60, 15,142,227, 32, 8, 2,122,244,232,241,151,169,252,202, 96, 48,174,127,252, 26, 44,179,217,124,174,115,231,206,212, -249, 63, 69,165, 82, 41,220,231, 19, 66,146, 51, 50, 50, 78,120,175, 23,172,232, 48, 50, 33, 17, 89, 77, 98, 1, 0,175, 92, 40, -145,181,240,207,222, 55,184,150,153,153, 91, 1, 0, 80,171,213, 32,238,175,205,126,208,106,181,184,229,150, 91,160, 84, 42,209, -173, 91, 55,136,162,232,115, 80, 40, 20, 16, 69, 49,152, 28, 8, 33,208,233,116,120,237,181,215, 0, 0,130, 32, 64, 27,161,194, -228,222,221, 16, 1,138,247,142,156,130, 69,162, 16, 4,193, 53,132,162,169, 80, 40,112,248,240, 97, 8,130, 0,158,231, 93,191, -242,255, 13, 27, 54, 96,244,232,209, 16, 4, 1,106,181, 26,248, 11,125,109,113,173, 16,165, 86,225,239,139, 63, 7, 0, 92,154, - 63, 9, 64,237,177,219,247,248, 43,174,101,154,253, 99, 44, 8, 33, 16, 69, 17, 28, 23,252, 59,145, 80, 53, 75, 75, 75,141,247, -222,123,239,206,200,200,200, 77,149,149,149, 1, 53, 41,165,184,116,233, 18, 4, 65,240,123,190,115, 28,135, 55,223,124, 19,167, - 79,159, 14, 41,239, 38,147, 9,239,191,255, 62, 28, 14,135,135,174,252,223,123, 90, 48,156,230,106,246,144, 33, 67,238,255,234, -171,175, 98, 8, 33,120,251,237,183, 33,138, 34,110,191,253,118,196,197,197,225,219,111,191,133, 66,161,192, 11, 47,188, 16, 82, - 26, 25, 12,198, 95, 22, 17,192, 13, 0,226, 81, 27,224,169, 2, 16,237, 54,191,200,249, 27,239, 54,254,131, 15,157,238,206,101, -228,249,242,184, 5,128,210,199,244, 18, 0,106,231, 96, 6,176, 27, 64,166,219,118,228,245,220,211,241, 3,224, 52, 88,164,182, - 85,213,109, 0,110,150, 27,191,187,124,249,242,109,242,210, 45, 90,180, 56,118,226,196,137, 54,178,215,113, 22, 21, 42,236,118, -123,134, 92,108, 40, 71,135, 6, 15, 30, 28,240,141,222,110,245, 12,202,184, 23, 17,120, 79,119,255,245, 7, 33, 4, 86,171, 21, - 99,199,142, 5, 0,191, 15, 27,247, 33, 4,207, 6,139,197, 2, 65, 16,208,186, 73, 60,166, 15,237,140, 27,169, 13, 53,213, 4, -246,138, 26,140,208,217,112,172, 93, 23, 44,185, 88,132, 11,149,213, 16, 4, 33, 36, 77, 73,146,252,154, 43,158,231,177,120,241, - 98,220,123,239,189,224,121, 62, 36, 61, 70,248,177, 75,146,199,184,191,115, 51,212,243, 51, 84,205,210,210, 82,227,240,225,195, -247,170, 84,170,165,137,137,137,121, 57, 57, 57, 1, 53, 41,165,117, 76,143,247,203,196,191,255,253,111, 44, 92,184, 16, 3, 6, - 12, 8, 41,157,102,179, 25,132, 16, 44, 89,178,164,206,188, 89,179,102,213,217, 94, 32, 77,231,139, 17,151,156,156,252,248, 55, -223,124,163,151,151,109,212,168, 17, 68, 81, 68,135, 14, 29, 16, 25, 25,137,157, 59,119,194,225,112,132,124, 93, 50, 24,140,235, - 23, 95, 94,196,141,155,178,178,178,186,101,103,103,207,237,213,171,215,202,221,187,119,175, 32,132,108,148,103, 82, 74,135, 59, - 53, 54,186,141,119,135,167,201, 18, 1,196, 19, 66, 54,202,203,187,143,187, 77, 31, 12, 64, 41,143,103,101,101,101,102,103,103, -207,157, 58,117,234, 75,243,230,205, 83,100,101,101,117,204,206,206,158, 43,111,199, 87, 58,128,223, 34, 88, 1, 91, 1,150,139, - 11,143, 31, 63,238,175,184,208, 69,176,246, 51,180,141,226, 93,145,171,153,205,226, 92,211, 95,203, 41,119, 61,184, 22,117,109, - 9,173, 86,139,161, 51,255, 21,112, 91, 64,237,195,202, 98,177,160,176,176,208, 21, 85, 8, 54,132,170,169, 81, 71, 96,203, 51, - 29,112,169, 68,137, 25,123, 74,241,213, 79,167, 33,138, 34,110,109,215, 1,183, 41, 34,241,114, 51, 37,158, 57,117, 30,182, 16, -235,234, 82, 74,125, 26, 43,249,191, 92, 84,194, 12,214, 31,199,240, 78, 45, 92, 81,166,125,145,131, 92,211, 71,215, 28,118, 29, -147,103, 23,255, 19, 0, 48,160, 75,143,160,215, 67, 40,154, 37, 37, 37,198,190,131,110,222,238, 48, 90, 62,190,255,254,251,207, -109,221,186, 85, 29, 74, 90,125, 25, 44, 57, 74, 43,155, 43, 65, 16, 96,177, 88, 66,202,187,197, 98,241,123,125, 40, 20,138,122, - 71,176, 0,160,166,166,198,178,126,253,122, 44, 90,180, 8,113,113,113, 24, 50,100, 8,146,146,146,176,102,205, 26, 80, 74, 49, -105,210, 36,168,213,106, 57, 90, 29,146, 38,131,193,184,110, 9,228, 69, 84,217,217,217,115,221, 13, 12,224,105,104,220,141,147, -151,137,146,185, 41, 43, 43, 43, 51, 80, 2,220,205,150, 60, 77,222, 46, 33,100,227,188,121,243,134, 7, 73,135, 28, 73,251,173, -136, 48, 80,171,176,102,179,249, 92,167, 78,157, 66,114, 17, 6,131, 33, 63,208,124,249,129,228,125, 51,117,143, 10,232,116, 58, -104,245, 58,112, 33,222,111,109, 54,155,203,160,108,222,188, 25,106,181, 26,195,134, 13,187,170, 8,150,213,106,133, 82, 33,130, -107,148,136,191,207,223,138,146, 42,163,235,193,178,237,236, 57, 28, 42, 40,196, 51,189, 6, 65,171, 46, 68,181,197, 18, 82,164, - 77,146,164, 58,230, 74, 16, 4,140, 29, 59,214, 21, 61,112,175,151, 2, 86, 68,248,135,225,235,252,244,158, 46,121, 69,166,174, - 68,179,164,164,196, 56,124,248,240,189, 14,163,229,227,220,220,220,189, 0, 34,110,188,241,198,122, 27, 44,217, 88,137,162,136, - 55,223,124, 19, 11, 23, 46,116,205, 15,213, 96,217,237,118, 15,227,116,234,212, 41,143,109,121, 27,186, 64,197,163,180,246, 46, - 41, 1,144,210,211,211, 93,235, 52,110,220, 24,209,209,209,144, 36, 9,146, 36, 33, 34, 34, 2,106,181, 26, 10,133,194,175, 22, -131,193,248,235, 16,192,139, 24,167, 78,157,250, 18, 33,100,163, 51,146,116,196,185,188, 47, 35,229,139,238,240, 52,105, 69,190, - 22,114,143,100,185,155, 44,247,255, 50, 89, 89, 89,153, 62,210,225,138,152,185,238,166,110,174,177, 14,238,197,133,225,192, 87, -177,160,251, 3, 76, 23,173,135, 90,171, 5,207,115, 65,251, 87,146,139, 8,229, 27,254,196,137, 19, 3,214, 75, 9,181,190,148, -213,106, 5, 39,240,184,220, 56, 13, 14,238,123,215,186,242,192, 9, 34, 46, 52,110, 3,254,248,143, 16, 67,124,208,122, 71,176, - 38, 77,154,132,247,223,127, 31, 28,199,185,246,137, 32, 8,104,213,170, 21,206,157, 59, 23,146, 38, 35,252,248, 51,203,222,211, - 29, 14, 41,228,168,139,175,229, 74, 74, 74,140, 99,198,140,217, 94, 81, 81,241,113,251,246,237, 79,161,182, 25,131,144, 26,255, -149,207, 21,119, 99, 37,155,171, 5, 11, 22,120,152, 33,155,205, 22,210, 11,128,205,102,171, 99,116,222,120,227, 13,143, 95, 0, -232,221,187,119, 72,145, 96, 0,148,227, 56,170, 80, 40,112,203, 45,183,160, 99,199,142,248,226,139, 47, 32, 73, 18,158,120,226, - 9,168,213,106,188,245,214, 91,176,219,237,120,253,245,215, 89, 4,139,193, 96, 4,242, 34,230,121,243,230, 29,153, 55,111,158, - 43,146,228, 92, 62,152,185,186, 29,181,102, 42, 94, 54,103,168,173, 75,229,171,126,150,156,134, 58,154,222,134, 11,168,141,108, -249, 72,135,171, 88,242,119,239,236, 57,255,232, 97,252,171, 79,103, 0,158,197,130,139,123,180,129, 86,167,133, 54, 82,135, 49, - 27,190, 7, 0,231,205,126,106, 80, 77,155,205,230, 50, 88, 37, 37, 37, 1,205, 85,125, 34, 88,156, 82,192,218,212, 50, 80,165, - 8,193, 98,243, 48, 88,188, 32,226, 82, 92, 26, 56, 81, 1,193, 97, 15, 73,147, 82, 90,167, 72,240,193, 7, 31, 4, 33,196,245, -197, 87,167, 78,157,220,181,216, 19,231,119, 38,255,192, 7, 56,182,238,113, 0, 64,223,154, 26,215,177,152,211,233,183,239, 54, -230, 31,222,238,138, 54,206,196,115, 87,164, 89, 82, 82, 98,188,177,109,230, 94, 69,108,212,199, 23, 47, 94,220, 11,128,187,231, -158,123,162, 59,117,234, 20,210, 53, 41,127, 52,225,109,174,220, 35, 87,242,175,205,102, 11, 41,239,114, 93,168, 96,200,197,133, -193,206,121, 74, 41,141,141,141, 5,199,113,208,235,245,208,233,116,174, 47,104, 35, 34, 34,160,209,104, 92,245, 55, 67, 52,108, - 12, 6,227,175, 75,140,108,112,156, 38, 9,128,103,157, 43,119, 19,228,175,168,208, 25,113,218, 17,100, 91, 95,161,214,152,249, - 68,142,164,185, 79,243,222, 46,224, 52, 88,222,125,121, 37, 37, 37,253, 87,167,211,165, 5,205,174,147,250, 52, 58,234,176,253, - 86,201, 93, 54, 87,132, 16,232, 34,117, 80,235,180, 80, 71,234, 60,230,133,130, 92, 68,200,243,188,235, 97,179,116,233, 82,232, -116, 58, 60,244,208, 67,245,174,131, 5, 56, 13,150,130,195,183,170,239,192, 43, 5, 15,115, 37, 8, 2,120, 81, 68,190, 46, 9, -156, 40, 66,176,135, 22, 21,171,168,168,128, 32, 8,152, 62,125,186,235,141,221,221, 92,213, 39,207,140,134,129, 58,126, 51, 35, -254, 42,178,215,247, 24,121,107,202,145, 43, 69,108,212,199,109,218,180,113, 69,174, 52, 26,141,252,245,104, 80, 56,142,243,105, -174,188,191,248, 19, 4,161,246, 92, 14,242,181,163,123, 4,107,222,188,121, 46, 93,247,200,149, 76,125,174, 35, 57,173,219,183, -111,199,161, 67,135, 48,113,226, 68,168,213,106, 44, 92,184, 16,118,187, 29,179,102,205,130, 90,173,134, 82,169, 12, 46,196, 96, - 48,174,107,130,244, 43, 90,228, 85,207,137,120, 69,154,138,156,235,122, 24, 43,247,226, 64,183,255,238,111,157,178,174,197,171, -232,208,123,186,252, 91, 50,111,222,188,173,114,228,202,109,186, 71, 58, 0, 63, 17, 44,149, 74,149,118,242,228, 73, 87, 35,163, -129,126, 45, 22, 11, 6, 12, 24, 16,114, 36, 76,254,138, 80, 16,120, 15, 67,161,137,212, 65,163,143,132, 90,167,243, 54, 26, 1, -159,102, 28,199,185,222,128,221, 13,214,171,175,190, 10, 65, 16,240,254,251,239, 3, 0,158,123,238,185,144,235, 96,201,154,112, - 16,228,208, 51,232, 60,127, 52, 44,159,216, 80,176,235,103, 8,130,128,132,158,183, 65,186,113, 52, 12,106, 29, 4,135, 61,228, -175, 8, 75, 75, 75,113,238,220, 57,240, 60,143, 41, 83,166,120,180, 85,228,253,101,218,230,205,155,131,230,157, 17,126,168,100, -247, 24, 15,161,184, 48,232, 49,114,215,148,235, 92, 85, 84, 84,124,124,241,226,197,125, 0,184,251,239,191, 63, 90,163,209,224, - 63,255,249,143, 1,128,114,205,154, 53, 1, 93,150,187, 41, 15,102,174, 68, 81,172, 61,151, 67, 64, 46,194,150,135, 96, 21,222, - 67, 57,231,229,180, 18, 66,224,112, 56,160, 86,171, 61, 34, 87, 17, 17, 17, 80,169, 84, 33,165,143,193, 96,252,165,241, 91,164, -231,131,238,110,102, 41,216,122,254,230,215,103,123, 62,241,105,140, 56,142,131,217,108,198,175,191,254, 26,170, 78,200,141,142, - 54,233,214, 3, 51,115, 43, 64, 8,193,123,189,219, 67,171,215, 65,163,213,226,238, 47,182,187,110,216,135,231, 62, 7,149, 86, -135,228,126, 67,130,234,201,111,222,222, 6,171,188,188, 28,162, 40, 98,246,236,217,224, 56, 14,175,191,254, 58, 82, 82, 82,112, -249,242,101,172, 89,179, 38,168,174,213,106, 5,239,224,145,244, 64, 91,104, 30,140,130,254,129,155, 16,115,203,171,200,181, 8, -216,109,210,224, 38,211, 81, 40,191, 93, 0,139,228, 8,249,139, 42,187,221,142,237,219,183,123, 87,100, 7,165,212,213, 74,190, -205,102,131,213,106,197,235,175,191, 30,210, 23,106,140,240,146,212,115, 18,226,187, 61, 6, 0,216, 48,111,188,107,250,244,195, -191,157,159,111,126, 82,219, 96,127,155,230,193,207, 79,119,205,146,146, 18,227,173, 3,122,239, 48, 73,226, 71, 29, 58,116,240, -136, 92, 69, 68, 68, 16,231,120, 72,166,154,227, 56,240, 60, 95,167, 88,208,159,201, 10,165, 14,150,221,110,119, 53, 0, 26,168, -190,226,149, 68,176,198,143, 31,143,164,164, 36, 87,228,106,230,204,153, 80,171,213,200,202,202,130,205,102,195,130, 5, 11, 66, -214, 99, 48, 24,140, 32, 92,181, 57, 10, 7, 62,239,160, 38,147,233,124,199,142, 29,125,174, 96, 50,153, 82, 34, 34, 34, 60,238, -174,196,217,232,168,119, 81, 33, 33,100, 48,165,116,139,183,134, 28,173,137,212, 71, 34, 66,167,133,198, 43,106, 21, 17,169,135, - 74,167, 3,167,168,123, 19,247,165, 41,215, 29,113, 55, 88,242, 80, 81, 81, 1, 81, 20,177,104,209, 34,232,245,122,152,205,230, -160,154,242,195,134,231,121, 24, 46, 85,225,216,220, 45, 80, 70,236, 70,203, 33,247, 34, 73, 84, 67,177,243, 51, 24, 29,158,117, -178, 66,209,204,200,200,192, 43,175,188, 82,167,121, 6,127,164,164,164, 4,205,251,213,194, 52,125,107, 6,250,202, 85, 70,162, - 14, 95,203,249,212,148, 35, 87, 38, 73,252,232,220,185,115,114,228, 42, 74,163,209,224,221,119,223, 53, 0,224,102,205,154,165, -105,214,172, 89,157,118,228,124,157, 75, 60,207, 99,254,252,249, 62,235, 92,249, 50, 91,161,228, 93,190,142,220,215,237,223,191, -191,207,134, 70,125,153, 54, 95,154,114, 90,227,226,226, 92,145, 43,135,195,225,250,122, 80,110, 45,222,223,203,196,245,112, 46, - 49, 77,166,201, 52,255,154,248,124,186,231,229,229,221,234,111,133,150, 45, 91,158, 60,121,242,100, 43,185,203, 12,231, 13, 83, - 97, 50,153, 50,122,247,238, 29, 52,148, 35, 73, 18, 84, 42, 21, 40,165, 24,248, 74, 54, 8, 7,112,240,124,120, 37,244, 25, 4, -158, 23, 32,213,118,201, 17,244, 43, 66,163,209,232,241, 80,240, 53, 84, 87, 87,195,108, 54, 7,253,188, 92,198,100, 50,121, 52, -165, 64,168,132, 11,255, 91, 93,231,107, 66,121, 8,181, 94, 78, 68, 68,132, 71, 17, 79, 32,130,181, 41,198, 8, 63,242,135, 8, - 0,208,186,247, 48, 72,146, 3,212,225,240,232,206,168,109,218,173,144,168, 3, 86,155, 1,102,179, 57, 88,152,145, 20, 23, 23, - 27,199,140, 25,179, 29,192,135, 35, 70,140, 56,129,218, 47, 88,168, 78,167, 83,137,162, 40, 1, 40, 5, 64,203,202,202,162,114, -115,115, 37,147,201,212, 52, 88, 58,191,250,234, 43,252,250,235,175,232,215,175,159, 71,183, 77,114, 20,212,189, 53,246, 80,206, - 79,185, 88,220, 87, 11,238,254, 12, 92,168,240, 60,143,168,168, 40, 40, 20, 10,204,158, 61, 27, 10,133, 2, 26,141, 6, 0,176, - 96,193, 2, 87,163,169, 12, 6,131,113, 61,113, 37, 95, 17,242, 1,138, 15, 3, 22, 21,218,237,246,156,102,205,154,213,107, 99, - 14,135,163, 32,208,124, 73,146,114,214,172, 89,163, 0,234, 86, 74,246,247, 75, 41, 13,168, 73, 41,205,217,176, 97,131,235,123, -117,247,135,147,175,255,132,144,160,154, 14,135, 35,167,121,243,223,250, 17, 14,197,144,217,108,182,220,160, 11, 49,194,134,195, -225, 8,112,126, 78,243,183, 78,176,243,243, 84,235,214,173,115,163,163,163,191, 78, 76, 76, 44,217,181,107, 87, 92,247,238,221, -227,220,151,233,222,189,123,146,215,106, 22,248,239,135, 16,132,144,156, 17, 35, 70,248, 60,231, 1,184,140,187,215,249, 25,176, -105,120, 74,105,206,254,253,251, 21,238,235,251,211,119,187,142, 2, 55, 55, 95,187,204,133,206,157, 59,115,238, 58,254,206,125, -155,205,230,179, 93, 26, 6,131,193,248, 51, 82,111,131,101, 52, 26, 47,117,236,216,209,103,173, 89,163,209,120, 49,208,186,197, -197,197,221,234,187,189, 96, 88,173,214,222,127, 6,205,162,162,162,176,231,157, 17, 94, 26,226, 24, 21, 20, 20,220, 24,110, 77, -187,221, 30,246,243,211,102,179,133, 93, 19, 0, 74, 74, 74,122, 53,132, 46,131,193, 96, 92,235,212,219, 96,133,218, 28, 3,131, -193, 96, 48, 24, 12,198, 95,149,144, 90,141,102, 48, 24, 12, 6,131,193, 96,132, 14, 65,109,175,209,117,168,207,215, 1,132, 16, -159, 26,129, 8,166,207, 52,153, 38,211,100,154, 76,147,105, 50,205,235, 79, 51,152,246,117,243,117,162,252,117, 84, 67, 12, 0, - 6, 51, 77,166,201, 52,153, 38,211,100,154, 76,147,105,254,213, 6, 86, 68,200, 96, 48, 24, 12, 6,131, 17,102,126,247,206,158, - 25,181, 16, 66,120, 74,105,200, 45,224,135, 64, 12, 0,127, 29,186, 89, 0,148, 93,129, 38, 1,160,112, 14,114, 67, 69, 54, 0, - 86,231, 16, 66, 83,243,175,113,121,121, 49,153,212, 33,118,167,132,136,146,132,159,154, 54,109,242, 35,112,171, 5, 0,116,141, -219,181,211,105,213,131,205, 86, 75,154, 74, 84,254, 90, 94, 83,189,217, 84,112,226,252, 21,164,149,193, 96, 92, 37,132,144, 59, - 0,188,134,218,107,127, 30,165,116,245, 31,156, 36, 6,227, 79,139, 95,131, 21, 25, 25,121,128,227,184,212, 96,237,235,200, 56, -251, 26,203, 41, 45, 45, 13,233, 83,119, 66,136, 0, 96,140, 78,167, 27, 32,138, 98, 31, 0,176,217,108,187,170,171,171,183, 2, - 88, 67, 41, 13,173, 3,181,186,186,122, 0, 99, 1,220,231,156,244, 41,128,213,148,210,202, 43,212,235, 24, 21, 21,181, 78, 20, - 69, 90, 92, 92,220, 19, 0,226,226,226,246,218,108, 54, 82, 89, 89,121, 55,165,244,151,122,234,113, 10,133, 34,187, 95,191,126, -125, 9, 33,203, 40,165,139,175, 36, 93, 62, 80,113, 28,231,211,152, 72,146,212,220,215,244, 32, 40, 0, 68, 45, 90,180, 40,110, -249,242,229,157,115,114,114, 58, 0, 64,106,106,234,225,251,239,191,255,199,201,147, 39,151, 0,168, 64,173,209,242, 75, 94, 94, - 76,102, 97,254,217,137, 5,133,191,142, 5,128,198, 73, 29, 86,243, 60,167, 72, 73, 57,180, 71,211,232,190, 70,173,219,180,120, -108,229,127, 22, 41,154,167, 53,193,119,187, 15,221, 48,249,169,151, 50, 35, 18, 91,255,155,153,172,223, 15,189, 94,127,128,227, -184, 84,192,255, 53,238,235,154,119, 56, 28, 57, 37, 37, 37, 62,175,119,189, 94,127, 64, 16,132, 84,127,235,250,155, 38, 73,210, -217,162,162, 34,159, 77, 70, 68, 69, 69,237, 17, 4, 33, 45, 84, 45,249,215,110,183,231,248,107, 34, 38, 42, 42,234, 0,207,243, -169,129,242,233,107,158, 36, 73,103, 11, 11, 11,253,165,179, 78,222,195,145,206, 43,209, 12,148, 78,231, 50, 28,128, 5,113,113, -113, 61, 74, 74, 74,254, 6,224,165,202,202,202, 78, 60,207, 35, 54, 54,246, 37, 66,200,233,168,168,168, 15, 42, 42, 42,118, 3, -120,138, 82, 42,249,211, 98, 48, 24,158,248, 53, 88, 28,199,165,230,230,230, 38,104,181, 90, 0,191,245,151, 39,119,242, 44, 73, - 18, 40,165,174, 95,187,221,142,182,109,219,134,180, 81, 66, 72, 7,189, 94,191, 54, 43, 43,171,233,152, 49, 99,148,114,151, 48, -121,121,121, 25,235,214,173,251,219,236,217,179, 95, 37,132,140,166,148, 30, 14, 81,143, 3, 48, 8,192,131,157, 59,119, 30, 53, -115,230, 76,197,192,129, 3,225,112, 56,240,245,215, 95,247,155, 53,107,214, 34, 66,200,103, 0, 62, 6,240,191, 80,111, 18,132, -144,190,141, 27, 55, 94,177,115,231,206,164,115,231,206, 57,198,140, 25,179, 10, 0, 14, 28, 56,144,238,112, 56, 72,207,158, 61, -191, 34,132,140,163,148,238, 12, 41,227,181,140,152, 60,121,242,232, 73,147, 38,197, 63,244,208, 67, 15, 0, 88,236,220,150,220, -139,120,125, 59, 32,116, 69,174, 40,165,138, 0,203, 53, 70,232,145, 44,237,185,115,231, 98,122,247,238,253,120, 97, 97,225, 51, -238,186, 5, 5, 5, 56,120,240,160,117,238,220,185,243,119,239,222,253, 78, 90, 90, 90, 25,128, 26,127, 66,212, 33,118, 47, 40, -252,117,236, 77,189, 22, 69, 1,192,154, 13,143,223,187,255,199,162,200,141,223, 44,249,155, 50, 66, 97, 94,254,222,124, 69,171, -150,205,177,237,192, 41,236,251,181,148,116,232, 59, 92,168,216,184,236, 22, 0, 75, 66, 72, 39, 35, 12,240, 60,159,146,147,147, -147,160,209,104,124,118,232,238, 85,239, 66,110,184, 20, 25, 25, 25,126, 53, 5, 65, 72,205,205,205, 77,136,136,136,112,221, 59, -188,239, 25, 0,224,126,186, 83, 74,209,186,117,107,191,134,157,227,184,102, 23, 47, 94, 76,208,104, 52, 46, 29, 95,233,147,145, -141, 70,235,214,173, 3,229,221, 35,157,161,104, 82, 74,209,170, 85, 43,191,209,103, 57,239,114,143, 21,193,242, 45,107,166,165, -165,249,189,246,125,105,134,146,206, 22, 45, 90, 4,124, 1, 2,176,224,196,137, 19,147,154, 52,105,130, 86,173, 90,237,238,209, -163,135, 94,171,213,226,155,111,190, 65,187,118,237, 50,245,122,253,190, 53,107,214,136, 47,188,240,194, 13, 31,125,244, 17, 0, - 76, 14,162,199, 96, 48,156,248, 53, 88,132, 16,104,181, 90,172, 90,181,202,111,183, 25,238,255,155, 54, 13,218,187,135,172,219, - 45, 45, 45,109,251,206,157, 59,213, 73, 73,191, 53, 96,109,177, 88, 16, 19, 19,131, 39,158,120, 66,121,199, 29,119,180, 26, 50, -100,200, 94, 66, 72,127, 74,233,129, 32,122,163,226,227,227,223,158, 62,125,122,226, 61,247,220,131,184, 56,143, 70,178, 49,102, -204, 24,220,125,247,221,138, 19, 39, 78,220,187,116,233,210,123, 23, 47, 94,156, 79, 8,153, 76, 41,253, 44,144,174, 70,163, 25, -209,178,101,203,119,119,238,220,153,144,144,144,128,244,244,116,238,133, 23, 94,104,149,145,145,161, 78, 77, 77,229, 46, 95,190, -140, 47,190,248, 34,101,220,184,113,107,149, 74,229, 99, 22,139,101,125, 8,121, 87,198,198,198, 62, 63, 97,194,132,184,202,202, - 74,251,161, 67,135, 78,201,211, 85, 42,213, 43, 61,123,246,236, 66, 8, 89, 69, 41,253, 56,152,150, 27,174,200,149, 51, 74,231, -221,231,136, 77,158, 31, 98, 36, 75,249,211, 79, 63,197,246,234,213,235, 51,179,217,220,101,226,196,137, 23,231,206,157,171,214, -235,245,122, 0,164,178,178,178,236,181,215, 94,179,188,245,214, 91, 47,182,107,215,110,208,158, 61,123, 70,221,112,195, 13, 54, -212,154,183, 58, 80, 66, 92,233,185,148, 91,132,237,187, 37,229, 43, 89,207,165,254,115, 78,218,133, 31,142, 94,146, 4,181, 30, - 95,238, 56,130,130,146,106,252,119,207, 81, 52,142,139, 36, 10,149,152, 25,157,154,217,191, 34,247,232,142, 43, 48,156,140,122, - 66, 8,129, 70,163,193,151, 95,126, 89,167,139, 41, 95,221, 79, 9,130,128,232,232,232,160,189, 17, 68, 68, 68, 96,243,230,205, - 62,251, 70,244,213,245, 78, 84, 84, 20, 0,255,157, 93, 19, 66, 16, 17, 17,129, 93,187,118,129,227, 56,159, 93,248,120, 79,211, -106,181,224, 2,244, 73, 37,107,238,216,177, 35,168,150,252,171,211,233, 0,160, 78,159,145,238,168, 84, 42,236,220,185,211,111, -158,189,255,235,156,253,177, 6,211,220,181,107,151, 71, 23, 93,222, 93,119,185,143,107,181, 90,215,139,155, 63, 98, 98, 98,122, -166,166,166, 98,255,254,253, 88,179,102, 77,108,102,102, 38, 78,157, 58, 5, 66, 8,230,206,157, 75,218,183,111, 47,230,231,231, -163, 95,191,126,248,252,243,207, 27,164, 49, 90, 6, 35, 68, 68, 0, 55, 0,136, 71,109,175, 49, 85, 0,162, 81,251,236, 81, 2, - 40, 1,160,118, 14,102, 0,213, 0, 26, 57,215, 45, 70,237,189,197,221, 32, 20,193,179, 83,232,238, 78,109,185, 71,137,120,183, -121,242, 54,188,199,189,127, 61,180, 5, 0, 32,132,200, 15,177,155, 41,165,219, 61,114, 20,130,185,146,251, 17,243,190,150,105, -221,142, 95, 85, 90,173,118,221,222,189,123,213,241,241,191,165,221,108, 54,163,170,170, 10,213,213,213,168,170,170, 66,100,100, - 36,214,172, 89,163, 30, 52,104,208, 58, 66, 72, 6,165,212,236, 79, 19,192,252,203,151, 47, 39,218,237,118, 40,149,190,171, 32, -113, 28,135,182,109,219,226,165,151, 94,194,208,161, 67, 27, 15, 24, 48, 96, 62, 0,151,193,242,161, 9,141, 70,243,238,193,131, - 7, 19, 52, 26, 13, 78,158, 60,137,156,156, 28, 60,251,236,179, 77, 36, 73,194,165, 75,151,112,234,212, 41,228,230,230, 98,233, -210,165, 9, 35, 71,142,124, 23,128,135,193,242,165, 9,224,209, 41, 83,166,100,196,198,198,114,255,250,215,191, 42,170,171,171, -223,115, 78,207, 90,176, 96,193,184,155,110,186, 41,254,145, 71, 30, 1, 33,100, 37,165,180,142, 97,241,210,244, 21,185,114, 0, - 56,230,181, 90, 91,175,200, 86, 99,212,158,124,229, 62, 52, 9,128,168, 33, 67,134, 76, 49,155,205, 93,118,238,220,121,186, 79, -159, 62,205, 0, 92,134,243,164,139,138,138,210,206,159, 63, 63,113,248,240,225, 39, 6, 14, 28,216,101,200,144, 33, 83,138,138, -138,230, 58,231, 83,111, 77, 73,194, 79,141,147, 58,172,222,177,103,242,216,109,187, 44,138,231,158,122,245, 98,211, 38,205, 43, -126, 58, 89,234, 56,122,182, 8, 85, 70, 59,238, 26, 88,219,177,120,207, 14, 77,241,246,170,157,120,226,233,105,226,103,171,151, -221,125,154, 66, 11,224,171, 0,251,243,170, 96,154,181, 56,139,146, 32,138, 34,110,187,237, 54, 16, 66,234,244,181, 41,138, 34, -246,236,217,131,129, 3, 7, 66, 20, 69,140, 31, 63, 62, 36, 77, 65, 16, 48,100,200, 16, 87, 63,135,238,122,222,102,193,151, 23, -240,206, 59,165, 20,130, 32,128,227, 56,191, 29, 92,123,107, 6,187, 47,201,233, 12,164,229, 62, 47, 88, 58,229,232, 81,168,230, - 42, 84, 77, 57,157,130, 32,160,119,239,222,248,241,199, 31, 3,154, 45, 95,190,210, 59,239,101,101,101,127,207,200,200,216,177, -104,209,162, 88, 0, 40, 41, 41,113,117, 68,207,243, 60,142, 31, 63, 14,139,197,130, 25, 51,102, 88, 43, 43, 43, 31,169, 35,232, - 67, 51, 28, 48,205,191,166,102, 32, 47, 2,224,166,172,172,172,110,217,217,217,115,123,245,234,181,114,247,238,221, 43, 8, 33, - 27, 41,165,195,229,223,172,172,172,204,236,236,236,185, 83,167, 78,125,105,222,188,121, 71, 8, 33, 27, 1,192,123,220,153,254, -225,110,218, 34,128,120, 89,199,153, 22,143,101,125,141,123,255,122,107, 11,110, 19,136, 51,115,196,109, 90,200, 6, 43,216,219, - 23, 0, 8,130, 48,105,238,220,185,137,129,204, 85,117,117, 53,242,242,242,208,172, 89, 51,140, 31, 63, 62,113,209,162, 69,147, - 0,188, 17, 64, 86,193,243, 60,246,239,223,143,194,194, 66,116,236,216, 17,105,105,105, 30, 11,156, 57,115, 6, 95,127,253, 53, -202,203,203,209,181,107, 87,160,182,126,145, 79,110,184,225,134, 25,109,219,182, 29, 50,100,200, 16,187, 90,173,198, 79, 63,253, -132, 46, 93,186, 96,213,170, 85,104,218,180, 41, 52, 26, 13, 78,156, 56,129,142, 29, 59, 98,251,246,237,136,143,143, 71,231,206, -157,237, 93,187,118,253,190,180,180,116,235,249,243,231,103,248,210, 37,132, 40, 82, 82, 82, 94,154, 48, 97,130, 50, 47, 47, 79, - 90,186,116,233,110, 74,233,110, 66,200, 99,211,166, 77,123, 96,232,208,161,241,135, 14, 29,170,252,225,135, 31,126,240,101,174, -124,224, 43,114,229, 81,111,205, 89, 52, 99, 54, 26,141, 22,179,217,108,227, 56,238, 60, 33,196,226,112, 56,252,149,237, 68, 60, -248,224,131, 45,138,139,139,159,120,250,233,167,207, 57,205,213,113,212, 86,108, 7, 0,216,237,118,115,117,117,117,101,175, 94, -189,154,141, 27, 55,238,244,138, 21, 43,158,120,240,193, 7,215,124,252,241,199,213, 0,140,222,130, 77,155, 54,249,145,231, 57, - 69, 77, 85,236,217,181,107, 62,120,230,235, 13,147,154, 92,186,148,219, 42,174, 81,124,141, 66, 23,159,183,230,211,143, 14, 0, -176,228, 21, 85,226,151, 51,249, 16, 69, 30,191, 94,170,192, 77,183,142, 17, 79,159,156,211, 23, 78,131,197,104, 80,168,220, 57, -244,182,109,219, 2, 70,176,246,236,217, 3, 81, 20,161, 86,171,241,214, 91,111, 5, 20,149, 13,129, 28, 29, 10,102, 98, 56,142, - 11,120, 31,145, 77,134,220, 1,187,247,240,127,255,247,127,120,250,233,167, 61,182,225, 52, 25, 1,163, 98,238,198,197, 59,125, -205,154, 55, 71, 97, 65,129,199,180, 80, 58,139,119, 56, 28, 16, 69, 17,239,191,255, 62,134, 15, 31,142,141, 27, 55, 6,252,189, -237,182,219,192,113, 92,192,104,173,156,206,222,189,123,195,106,181,186,210,124,252,248,113,159,186,139, 23, 7,174,222, 41, 87, -104,239,210,165,139,126,192,128, 1,216,177, 99, 7,238,190,251,110,179,213,106, 61, 9, 0,183,223,126,123,235, 69,139, 22, 41, - 15, 30, 60,136,184,184, 56,241,226,197,139, 31, 18, 66, 88,197,119, 70,131,226,203,139, 56, 81,101,103,103,207,245, 50, 70, 30, -200,243, 9, 33, 27,231,205,155, 55,220,169, 87,103,220,185,184,123,223,167, 55,101,101,101,101,186,141, 23,185,155, 39,183,180, -249,221,182,215,242, 69,128,155,193,114,102,232,102,121,156,227, 56,200, 55,221, 96,230,202,223,155,162, 55, 81, 81, 81,195,238, -186,235, 46,151,185, 49,153, 76, 46, 99, 37,155, 43,121,252,196,137, 19,232,214,173,155, 34, 42, 42,106, 24, 2, 27, 44, 0,128, - 32, 8, 72, 78, 78, 70,113,113, 49, 14, 31, 62,140,102,205,154,193,102,179, 97,211,166, 77,168,168,168,128, 40,138, 80, 40, 20, -176, 90, 3, 87, 73,104,219,182,237,109,203,151, 47,239,182,108,217,178, 50,249, 13,238,211, 79, 63, 5,165, 20,241,241,241, 48, - 24, 12, 40, 40, 40,192,214,173, 91, 97,183,219,161,211,233,144,158,158,174, 28, 49, 98, 68,223,215, 94,123, 77, 4, 48,195,143, -116,143,187,239,190, 91,175,215,235,241,212, 83, 79, 81,171,213,250, 6, 33,164,231,168, 81,163, 94,154, 60,121,114,236,249,243, -231, 45,143, 62,250,232, 1,171,213, 58,223,121, 60, 68, 74,169,205,143, 22,128,192,145, 43,155,205, 38,239,211,115,213,213,213, -104,212,168, 81,179, 32,117,180, 0, 64,177,107,215,174,222, 0,248, 89,179,102, 69, 0, 40,128,155,185,178, 88, 44,168,174,174, - 70, 77, 77,141,173,162,162,162,240,249,231,159,183,175, 88,177,130,119,174,243, 43,124, 24, 44,224, 86, 75,251,246, 90, 37,165, -252,180, 37, 75,150,232,134, 14, 29,202,233,116, 58, 84, 85, 85,233,255,251,205, 55,186, 65, 3,250,166,207,205,254,231,183,250, -212,142, 5,187,126, 58,139,220,252, 10, 88,108, 54,164, 39, 69, 1,144, 88,133,218,223, 1,231, 7, 42,174, 8,150,187,153,216, -177, 99, 7,110,189,245, 86,215,181,174, 80, 40, 60, 34, 93,193, 52, 5, 65,192,173,183,222, 90, 39,162,179,109,219, 54,159,209, -166, 96,184,155, 33,111, 83,228,203,120,113, 28, 87,167,126,146, 47, 77,127, 69,151, 0,234,204, 11,197, 96,201,249,157, 60,121, - 50, 68, 81,196, 11, 47,188, 0, 65, 16,208,185,115,103, 8,130,128, 94,189,122, 65, 20, 69, 12, 28, 56,176,222,121,223,187,119, - 47,186,116,233,226, 74, 83,231,206,157,209,189,123,119, 8,130,128,126,253,250, 65, 20, 69, 12, 25, 50, 36, 20,205,151,170,170, -170, 58,233,116, 58,156, 56,113, 2, 60,207,131, 16,114,138, 82,218, 9, 0, 38, 76,152,112,218, 96, 48,180, 48,153, 76,152, 48, - 97, 2,177, 88, 44, 29, 95,120,225,133,105, 0,152,193, 98, 52, 24,222, 94,196, 13,227,212,169, 83, 95, 34,132,108,148, 35, 82, -206,229, 55,122,173,191,209,199,186, 30,243,157, 38, 72, 46, 30,236, 14, 79,243, 38, 23, 29,222, 30, 96, 93,139,151,161,242, 46, - 34,252, 1, 8, 18,193,146,111,186,161, 26,172, 96,152, 76,166, 27, 18, 18, 18,228,255,117,204,149,251,175,197, 98, 65, 90, 90, - 26, 76, 38,211, 13,250, 58,137,232, 0, 0, 32, 0, 73, 68, 65, 84, 65,133, 61,119, 0,146,146,146, 96,181, 90,241,193, 7, 31, - 64,161, 80, 64,161,248,205, 87, 88, 44,129,131, 67, 71,143, 30, 61,183,119,239,222, 46, 93,187,118,141,249,252,243,207,139,250, -247,239, 31, 63,116,232, 80,168,213,106, 24,141, 70,216,108, 54,244,236,217, 19,109,219,182, 69, 78, 78, 14,254,251,223,255, 22, -103,100,100, 52,218,183,111,159,148,159,159,127, 33,128,244,160, 65,131, 6,129, 16,130,255,254,247,191, 37,148,210,131,106,181, -250,243,185,115,231, 70, 91, 44, 22,233,129, 7, 30,184, 84, 90, 90,250, 60, 0,155, 74,165,122, 99,232,208,161, 61,120,158, 95, -229,112, 56,222,174, 79,254,129,186,251,182,166,166, 6, 17, 17, 17,161, 52, 9, 33,150,150,150,118, 0, 0,173, 86, 27, 11,224, -180, 60,195,104, 52,122,152, 96,139,197, 98,138,141,141,213, 2,128,115, 29,239,186, 95, 0, 0, 66, 72,188, 70,163, 89,123,225, -194,217, 72,247,250,113,209,209,209,184,111,220, 56,174, 79,239,222,202, 78, 55,220, 48,228,229,127, 47, 91,149, 28,167,183,164, - 39,199,193,230,176, 97,203,183,155, 36, 42,217,190,173,111,222, 25,245,199,189,136,208, 59,130, 37,138, 34,182,111,223, 94,103, -154, 66,161,192,123,239,189, 23, 80, 87, 54, 4,178,153,242, 87, 68,230, 85,164, 21,240, 70, 34, 71,213,121,158,199,251,239,191, - 15, 73,146,240,204, 51,207,120, 20, 27,186,235,135,130,187,249,107,251,170, 4,192,130,156, 55, 85,174,245,189,211,235, 92, 39, -164,168,216,162, 69,139, 66,138, 96,221,126,251,237, 65, 13,171,123,137,130,123,186,126,252,241, 71,159,186, 75,150, 44, 9,186, - 63, 29, 14, 7,190,250,234, 43,151, 57,149,153, 62,125,250,132,212,212,212,196,239,191,255, 30,249,249,249,168,169,169, 65,117, -117, 53,122,246,236,153, 62,120,240,224,159,242,243,243,207, 31, 61,122,244,174,144,118, 48,131, 81, 15, 2, 68,176,204,243,230, -205, 59, 50,111,222, 60,159, 17, 42,183,245,135, 7, 50, 89,110, 81,168,238,168, 53, 66,241,178,105, 67,109,245,153, 31, 66, 88, - 87,233, 93, 68,232,107,121,239, 8,214,107,110,227,174,155,110, 40,197,132, 33,134,205, 5, 66, 8, 76, 38,147, 79, 99,229,110, - 10,172, 86, 43, 74, 75, 75,225,112, 56,174,184,173, 46, 95,111,174,193, 12,214,225,195,135, 31,122,248,225,135,243,162,162,162, - 58, 21, 21, 21, 21, 74,146, 52,112,207,158, 61,241,130, 32, 64,175,215, 67,175,215,227,235,175,191,134, 70,163,193,228,201,147, - 11, 29, 14,199,142,200,200,200, 56,163,209,248,115,126,126,254,203,254,116, 69, 81, 28,116,211, 77, 55,225,224,193,131, 40, 47, - 47,255,142, 16,210,233,145, 71, 30,185,165, 73,147, 38,100,206,156, 57,166,211,167, 79,255, 31,128, 34,173, 86,251,193,242,229, -203,251,119,237,218, 85,119,255,253,247,131, 16,242, 31, 74,169, 41,212, 60,215,212,212,120, 24,171,202,202, 74, 84, 85, 85, 65, -171,213,134,212,236, 5,165, 84, 68,109, 93, 42,185, 62,149,235,216, 56,163, 87,242,241,161,130, 32,208,218, 69,168, 79,115, 5, - 0, 90,173,118,214,178,101,203,212,222, 31, 31, 56, 28, 14, 20, 20, 20, 64,175,215, 99,250,203, 47, 43,102, 62,251, 72, 23, 94, -151,184,135,227, 8, 44, 86, 90, 78, 37,203,166,154,130,123,190, 15, 53,223,140,171, 67, 54, 4,119,222,121,103,157, 98, 65,133, - 66,129,205,155, 55, 99,228,200,145,174, 23,150,174, 93,187, 6,125,169,146, 13,193, 29,119,220, 1,160, 54, 18,180,105,211, 38, -159,197,123,114, 4, 42, 16,238,198,133,231,121, 60,249,228,147, 16, 4, 1,111,191,253, 54,166, 76,153, 2,142,227,240,230,155, -111,130,227, 56,188,242,202, 43, 33,229,219,219,184,156,255,103,237,111,234,148, 74,148, 44, 78, 4, 0, 68,234,245,114,134, 66, -210,148,243, 46, 8,130, 43,114,117,195, 13, 55, 64, 20, 69,244,234,213, 11,130, 32,184, 34, 87,195,134, 13,115,223,143, 1, 55, - 32,107, 10,130,128,147, 39, 79,186,210,220,171, 87, 47,143,200,149, 32, 8,184,253,246, 58, 47,223,190,152, 27, 29, 29,253, 90, -219,182,109,219,205,159, 63, 95,228,121, 30,131, 6, 13,106,253,232,163,143, 94,136,139,139,139,155, 53,107,150,198,199, 58,106, - 0,157,218,181,107,167, 13,121,103, 48, 24,245,192,219,139,184, 17,227, 94,167,170, 30,122, 27,221,151,151, 53,188, 77,145, 51, - 34,182, 35,152,150,175,117,253, 33, 56, 23,246,121,167,172,143,193,114,134,151, 3,110, 76,163,209,252, 82, 88, 88,216, 75,173, - 86,123,152, 43, 95, 70,139,231,121,228,231,231, 67,163,209,212,171,157,169, 96, 4, 43, 34,116,154,153,103,229,113, 66,200,224, - 97,195,134,125,188,121,243,230,164, 45, 91,182, 96,223,190,125,136,143,143,199,162, 69,139, 46, 23, 20, 20, 60, 68, 41,221, 28, -202,118, 91,180,104,209, 94,171,213, 98,247,238,221, 0,240, 61,128, 7,159,120,226, 9, 98,183,219,241,206, 59,239, 24, 0,108, -142,138,138,250,108,221,186,117, 55,116,236,216, 81,185,101,203,150,170,125,251,246,109, 11,209, 92, 57, 36, 73,170, 99,172,220, -247,105,100,100,100, 40, 17, 44, 91, 84, 84,212,225,202,202,202, 49, 70,163,177, 82,165, 82, 69, 86, 86, 86,154,221,141,149,172, - 47, 8,130,120,242,228,201, 60, 0,233, 81, 81, 81,135,225, 86,148,232,142, 32, 8,131, 6, 13, 26,228, 97,146,173, 86, 43, 10, - 10, 10,144,159,159, 15,171,213,138,174, 93,187, 18,158,216,248,210,139, 63, 79, 8, 33,141,140, 48, 67, 8,161,242,181, 46,127, -245,231, 61, 8,130,128, 77,155, 54,185,198, 57,142,131,243,179,125,127,154, 46, 51,180,121,243,102,191, 81, 43, 31, 69,132, 65, - 67,225,242,242,239,188,243, 78,109,119, 20,206,200, 21,199,113,152, 58,117, 42, 84, 42, 21,230,204,153,131,169, 83,167, 66, 16, -132,160, 69,132,238,198,165,249, 11, 6,215,116,185,136,208,230,172,239, 68, 8,113, 55, 89, 1, 35, 88,238,166, 45, 80,244, 46, -148,200,191,187,166,188, 94, 68, 68,132,207, 98, 82, 31,154,126, 55, 64, 41,253,146, 16,114, 54, 41, 41,105, 87,175, 94,189,162, - 14, 28, 56,128, 55,223,124, 83, 97, 54,155,155,110,217,178,197,181, 93, 95,251,171,166,166, 70, 29, 82,194, 25,140,122, 16, 40, - 50, 12,103,189, 40,249, 63, 0,226, 94, 92, 23,224,215,123,121,184, 77,115,215, 45,130,231,115,204,125,186,183,169,242,222,134, -251, 50,174,186, 93, 1,155,105,168, 79, 37,247, 80, 34, 88, 6,131,225,127,223,124,243, 77,247,113,227,198, 9,129,138, 7,107, -106,106,144,152,152,136, 35, 71,142,216, 13, 6,195,255,130,233, 58, 28,161, 55,136, 30,204, 96,121, 67, 41,221,210,184,113, 99, -222,102,179,161, 85,171, 86, 72, 73, 73,129,201,100, 66,121,121, 57, 31,170,185, 34,132, 40,186,117,235,198, 3, 64, 89, 89, 25, - 80,251, 57,105, 70, 70, 70, 6, 14, 30, 60,136,178,178,178,245, 0, 6,207,156, 57,179,115,143, 30, 61, 20,171, 86,173, 50, 76, -156, 56,113,189,205,102,155, 19,138,190, 36, 73, 22,187,221,158,198,113,156,181,188,188, 60,215,125,127, 38, 38, 38,198,106,181, - 90, 82, 80, 80, 16,176, 62,151, 19, 91,167, 78,157,246, 95,188,120, 17,179,102,205, 42,154, 59,119,110, 70, 85, 85, 85, 89, 69, - 69,133,221,221,100,153, 76, 38,174, 81,163, 70,170,197,139, 23,171, 1,160, 83,167, 78,251,225,199, 96,213,212,212, 52,209,104, -126,123, 17, 54,155,205,200,207,207, 71,126,126, 62, 10, 10, 10, 80, 85, 85,133,244,244,116, 24, 12,134,102,161,228,149, 17,126, -188,191,122,115,191,190,221, 31,224,245,185,214,129,223,140,203,157,119,222,233,170,187, 37, 71,196,228, 97,237,218,181,238,197, -131, 64,136, 6,235,157,119,222,193,147, 79, 62,137,136,136, 8,204,159, 63,223,163,136,208,219, 20, 72,146, 20,212, 12, 9,130, -128,180, 23,141,200, 95, 24, 11, 81, 20, 17, 55,177,192,163, 40,206,135,209, 8, 41,157,115,231,206, 13, 75, 17,161,187,102,179, -102,205, 0, 0,239,191,255, 62,198,140, 25,131,239,191,255,254,138,139, 8, 51, 51, 51, 63,221,184,113, 99,212,209,163, 71, 81, - 89, 89,137,162,162, 34,152,205,102,228,228,228, 0,240, 93, 10, 0, 0, 6,131, 33, 34,104, 98, 25,140,240,226,183,232,174,129, -116,175,122,123, 1,139,223,220, 43,127, 6, 51, 88,161, 68,176,204,102,243,252,167,158,122,234,137,193,131, 7,199, 70, 70, 70, - 34, 47, 47,175,142,185,170,174,174,134, 78,167,131,209,104,196,134, 13, 27, 42,205,102,243,252, 32,121,176,217,108, 54, 36, 36, - 36,160,184,184, 24,146,159,122,209, 28,199, 65,173, 86,163,186,186, 26,240, 99, 6,252, 65, 41,133,213,106,133,205,102,131,205, -102,131,213,106, 13,250, 86,236,133, 90,110,176,181,166,166, 6, 0,106,146,147,147, 91, 68, 68, 68,224,220,185,115, 0,112, 18, -192,128,161, 67,135,138, 37, 37, 37,244,209, 71, 31,221, 67, 41,157, 76, 3,183,102,111,217,177, 99, 71, 26, 0,168,213,234, 19, - 0,144,147,147, 99, 43, 47, 47,247,136, 12,106, 52, 26, 58,114,228,200, 36, 74, 41,118,236,216,145,166, 80, 40, 40,252,180, 89, - 5,192,180,126,253,250,163, 81, 81, 81, 43,178,179,179,199, 13, 31, 62,252, 72,135, 14, 29,210,106,106,106, 10,141, 70,163,209, -100, 50, 81,158,231, 21, 49, 49, 49, 17,223,126,251,237,233, 61,123,246, 12,214,235,245, 43,214,175, 95,127, 20,128,207, 72,155, - 86,171,205, 49, 24, 12,205,229, 99,234,110,174,242,243,243, 65, 41,197,217,179,103,161,209,104, 46,214,103,135, 50,194,139,252, - 50,229, 29,105,241,158, 22,170,185,146, 17, 4, 1,223,126,251,173,223, 40, 78,125, 12,155,187, 25,154, 50,101, 10, 22, 46, 92, - 88, 39,130, 53,103, 78,237, 59,201,203, 47,191, 28,114, 29, 44,160, 54, 90,149,191, 48, 22,141,159, 44,245, 72, 59, 0, 16, 57, -125,245,108,146, 77, 16, 4,204,154, 53,171, 78,229,115,247, 34,188, 16,139,242, 60,210, 89, 88, 88, 8, 65, 16, 16, 27, 27,139, -251,238,187, 15, 67,134, 12,113, 21, 53,214, 87,247,216,177, 99,187, 94,124,241,197,142,153,153,153,152, 61,123,118,105,116,116, -116,228, 63,254,241, 15,161,188,188,188, 54,156,232, 39,130,197, 12, 22,131, 17,156,128, 17, 44, 0, 33,153, 43,127, 55, 94, 66, -200, 96,247,182, 50, 40,165, 21,132,144,251,110,185,229,150,207, 87,175, 94,173,110,209,162, 5,142, 29, 59,134,210,210, 82, 88, - 44, 22, 40, 20, 10, 36, 37, 37,161,188,188, 28, 31,125,244,145,209, 96, 48,220, 71, 41,173, 8,164, 9, 96, 90,183,110,221,222, -125,227,141, 55, 34, 58,119,238,140,210,210, 82, 84, 87, 87,123,180, 58,173,215,235,161, 86,171,177,127,255,126,108,218,180,201, - 8, 96, 90, 16,205, 58,200,198, 74, 54, 90,193, 12,150,151,166, 86,142,226, 24, 12, 6, 0,176, 55,109,218, 52, 17, 0,206,158, - 61, 11, 0, 23,210,211,211, 95,110,217,178, 37, 89,190,124, 57,165,148,110,241,101,174,188, 52, 75,251,245,235, 87, 6,160,177, -197, 98, 81, 0, 64, 69, 69,133,181, 81,163, 70, 9, 42,149, 74, 82,171,213, 82, 68, 68,132,148,151,151,103,183,219,237, 10, 0, -232,215,175,159, 5, 64, 62,220,234,122,120,105, 74, 0, 42,151, 44, 89,242,218,253,247,223,223,171,119,239,222,153,143, 63,254, -248,225, 71, 31,125,148, 75, 73, 73,137,169,170,170, 50,157, 58,117,170,236,223,255,254,119,213,222,189,123, 7,139,162,120, 97, -201,146, 37,175, 1,168,116,174, 91, 71,211,110,183,255,111,203,150, 45, 15, 13, 31, 62, 92,200,205,205, 69, 65, 65,129,203, 92, - 21, 20, 20,160,109,219,182,216,179,103,143,195,106,181, 6,220,255,161, 28,163,250,194, 52,107, 53,229,230, 1, 2, 25, 43,249, - 37, 42, 84, 77,119, 51, 52,102,204, 24,143,168,149, 66,161,192,186,117,235,124,222, 55,188,175, 43,239,188, 19,183, 54,186, 94, -124,241, 69, 15,179, 54,125,250,116,191, 73, 11,164, 41,231, 93, 20, 69, 84,188,159,226,249, 21,161,159,235, 60, 80, 58,229,123, -167, 40,138,152, 62,125,122,200, 17, 44,120,213,193,242,165, 41,231,189,127,255,254, 48, 24, 12, 46, 3,235, 47,130, 21,108,127, - 58, 28,142, 39, 23, 46, 92, 72,245,122,125,143,202,202,202,191, 93,188,120,113,169,193, 96,184,177,162,162,194,103, 62,101,204, -102,179, 42,208,254,188, 90,152,230, 95, 83,243,122, 35,224, 43,158,221,110, 71,147, 38, 77, 92, 23, 55, 33, 4, 28,199,121, 12, -245,169, 71, 0, 0,148,210,111, 9, 33,163,250,244,233,243,201,147, 79, 62, 25,217,185,115,103,177,121,243,230,168,169,169,193, -185,115,231,112,228,200, 17,251,250,245,235, 43, 13, 6,195,223, 40,165, 65,191, 34,163,148, 46, 35,132,108, 26, 58,116,232, 43, - 61,123,246,124,236,213, 87, 95,229, 91,183,110,141,138,138, 10,196,196,196, 32, 33, 33, 1,199,143, 31,199,134, 13, 27, 28,197, -197,197,239, 2,152, 73, 41, 45, 10,166,235,189, 25,171,213,138,123,239,189, 23,146, 36,225,173,183,222,114,111, 16, 45, 20,172, - 86,171,149, 2, 32,197,197,197, 0, 96,144, 13,215,169, 83,167, 0,224, 98,243,230,205,117, 0,176,101,203, 22, 2, 96,119,168, -233,130, 91, 36,171,109,219,182,231,128,186,221,143,200,243, 81, 27,185, 10,150,110,211,216,177, 99, 11, 13, 6,195,208, 41, 83, -166,188,242,206, 59,239,140,123,231,157,119,234, 44,164,215,235, 87,188,249,230,155, 51,199,142, 29, 91, 8, 63,209, 43, 0,168, -169,169,121,249,239,127,255,251,216, 95,126,249, 37, 50, 34, 34, 2, 53, 53, 53, 40, 41, 41,129,213,106, 69,122,122, 58, 10, 11, - 11,177,108,217,178, 42,163,209, 56, 35,196, 60, 51,194,140,187, 33,240, 23,197, 10,102,174,252, 33, 8, 2,190,252,242,203, 58, - 81,171, 80, 42,181,251, 75,167,175,186, 71,129,162, 96,129, 94,134,228,230,101,188,235,131,137, 98,104,109,251, 5,210, 21, 4, - 1,255,250,215,191, 32, 8,130,223,200, 85,125, 34, 88,178,102,108,108, 44, 0, 64,238,218,232,246,219,111,191, 98, 93, 90,219, -109,152,171,251, 27, 66,200,220,231,159,127,254,181,182,109,219,182, 6,160,114,223, 7,245,140,218, 51, 24,127,121,252, 26, 44, -135,195,145,211,166, 77, 27, 0,240, 48, 88, 50,190,166,217,108,182,156, 80, 54, 74, 41,221, 68, 8, 73,127,243,205, 55,159,210, -106,181,131, 13, 6, 67, 71,160,182, 18,124, 77, 77,205, 22,179,217,188,128,214,163,115,102,167, 97,154, 68, 8,121,107,232,208, -161,115, 6, 14, 28, 56,250,217,103,159, 37,148, 82, 44, 94,188,152,158, 57,115,102, 45,128,105,148,210, 51,161,106,186, 19, 27, - 27,123,244,163,143, 62, 74,252,252,243,207, 97,179,217,176, 96,193, 2, 68, 70, 70, 30,173, 79,250, 4, 65,248,164,119,239,222, -227,246,236,217,179,130, 82,122, 88,165, 82,125,218,175, 95,191,251,118,239,222,189,154, 82,250,171, 32, 8,159,246,234,213,235, -190,253,251,247,127, 70, 41,253,185, 30,201,115, 69,178,236,118,223, 37,138,190, 34, 87, 65,168,124,248,225,135,173, 15, 63,252, -240,179, 99,199,142,253,224,135, 31,126,184,177,188,188,188, 35, 0, 68, 71, 71,255,210,189,123,247,253,171, 87,175, 62,142,218, -200, 85,192, 74,248,148,210, 34, 66,200,200,142, 29, 59,126, 54,123,246,108,109,102,102,166,208,170, 85, 43,156, 63,127, 30,135, - 15, 31,182,127,248,225,135,213, 70,163,241, 78, 74,105, 40,125, 36, 50, 26, 0, 57,218, 20, 29, 29,237,241,242, 36,127,186, 95, -223, 98, 65, 25, 89,211,251,197,140,231,121,191,154, 65, 42,185, 2, 0,116, 58,157,171, 81,210, 80,170, 38, 72,254,234, 13,184, -165, 83,214,148,135, 16,204, 85,208, 47,254,156, 93,213,132,172, 25, 74, 51, 13, 90,173, 22, 54,155,205,165, 27,194,151,156,245, -114,137,148,210, 47, 1,124,217,170, 85,171, 83, 0, 90, 50, 83,197, 96, 92, 57,126, 13, 86,105,105,169,207, 94,221,195,133,211, - 64,205,116, 14,225,210, 60, 3, 96, 44, 33,228,141,239,190,251, 78, 46, 47,152, 69,131,244,103, 24,140, 99,199,142, 13, 23, 69, -241,189, 21, 43, 86,244,164,148, 34, 42, 42,106,239,249,243,231,255, 81, 31, 13,187,221,254, 24, 33,228, 25,249,171, 64,179,217, -252, 24, 33,228, 57, 74,105,141,219,124,215,120, 61,161, 0,204,148,210,100, 63,243,205, 8,221, 92,201,152, 0, 88, 86,175, 94, - 93, 13,224, 39,252,214,206,149,205, 57,152,224, 86, 44, 24, 48,113,148,110, 37,132,180,154, 62,125,250, 92,158,231, 7,213,212, -212,164,104,181,218, 75,118,187,253,127, 6,131, 97, 26,165,180,164,158,105, 99,132, 17,139,197,146,219,166, 77, 27,185,219, 44, -248,250,245, 69,160, 23, 42,135,195,145,147,145,145, 17,244,165,204,135,102,174,191,121,148,210, 11,233,233,233, 92,168, 90, 50, - 86,171,181, 48, 80, 58,211,211,211, 67, 78,159, 91, 58, 3,230, 61, 45, 45,205,103,222, 3, 33, 73,146,223,188,219,237,246, 43, -210, 12,180, 63, 3, 97, 52, 26,203,226,227,227,171, 77, 38,147,104, 54,155, 69,187,221,238, 17,110, 84,171,213,245, 45, 5, 96, - 48,254,114, 92,113, 27, 83,215, 50, 78, 67,117, 71, 24,245,204, 0, 30, 8,131,142,201,107,188, 38,208,120, 61,105,136, 8,144, - 4,192, 16,116,169, 16,160,148, 22, 3,120, 52, 28, 90,140,240, 82, 92, 92,220, 35,220,154, 37, 37, 37, 97,127, 65, 43, 42, 42, -234, 21,110,205,226,226,226,176,167,243,207,162, 25,136,220,220,220,176,159, 19, 12,198, 95,141, 43,139,253, 51, 24, 12, 6,131, -193, 96, 48,252, 66, 0, 12,246, 53,163, 62, 95, 7, 16, 66,124,106, 4, 34,152, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, -175, 63,205, 96,218,215,205,215,137,148,210, 6, 27, 0, 12,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252,171, 13,172, -136,144,193, 96, 48, 24, 12, 6, 35,204, 48,131,197, 96, 48, 24, 12, 6,131, 17,102,152,193, 98, 48, 24, 12, 63, 16, 66, 98,174, -101, 61, 6,131,113,237,194, 12, 22,131,193, 96,248,128, 16,210, 1,192,236, 48,203,206,118,234, 50, 24,215, 61,132,144, 14,132, -144,142,127,116, 58,254, 40,152,193, 98, 48, 24, 12, 47, 8, 33,195, 90,180,104, 49, 11,128, 46,204,210,186, 22, 45, 90,204, 34, -132, 12, 11,179, 46,131,113, 77, 64, 8, 81, 17, 66, 30,224, 56,110,127,135, 14, 29,126,201,204,204,252,153,227,184, 61,132,144, - 49,132,144,235,178,237, 77,127, 16,231,215, 0, 32,132,108, 7, 0, 74,105,255, 63, 48, 61, 12, 6,131,241,135,225,124, 0, 60, - 54,110,220,184, 59,178,179,179,149, 77,154, 52,185, 68, 41,189, 63,140,250,203, 47, 93,186,148,250,224,131, 15, 86,111,221,186, -245, 91, 0,239, 82, 31, 29,187, 51, 24,127, 54, 8, 33,205, 1, 60,166,211,233, 30,185,249,230,155, 99,238,188,243, 78,196,197, -197,193,110,183,227,210,165, 75,216,184,113, 35,118,239,222,157,103,177, 88, 22, 2,120,159, 82, 90,238, 71,103, 59,112,125,120, - 17, 66, 41,149, 59, 46,190, 25, 0, 40,165,219,255,216, 36, 49, 24, 12,198,239, 15, 33, 68, 15, 32,107,254,252,249, 61, 31,123, -236,177, 52,147,201,148, 19, 19, 19,115, 54,220, 6,203,106,181, 14, 46, 42, 42, 58, 48,103,206, 28, 44, 94,188,248, 87, 0,243, -104, 61,250, 94,101, 48,174, 53, 8, 33, 83, 71,141, 26, 53, 39, 49, 49,145,235,208,161, 3,146,146,146, 96, 54,155, 97, 52, 26, - 65, 41,133, 32, 8,160,148,162,162,162, 2, 59,118,236,192,214,173, 91,205,101,101,101, 31, 1, 88, 64, 41, 61,233,166,115, 93, -121, 17,151,193,162,245,236, 20,148,193, 96, 48,174, 23, 8, 33,105,106,181,122,250,134, 13, 27,218,247,237,219, 55,161,170,170, -234,172,205,102,171, 73, 78, 78,166,168,237,212,220, 23, 21,148,210,201, 62,180, 22, 1,136,242,179,142,222,106,181,118, 47, 46, - 46, 62, 0, 0,235,214,173, 67, 86, 86, 86,137,209,104,156, 69, 41, 61, 23,158,220, 48, 24,191, 47,132,144, 19,199,142, 29,203, -112, 56, 28, 40, 46, 46,134,217,108,134,193, 96,112, 25, 44,158,231, 65, 41,133,221, 94, 27,172,149, 36, 9, 7, 15, 30,196,150, - 45, 91,232,217,179,103, 95,165,148,206,114,234, 92, 87, 94,132, 25, 44, 6,131,241,151,134, 16,210,167,113,227,198,207,124,247, -221,119,205,155, 53,107,166,175,174,174, 62,109,183,219,109, 0, 16, 19, 19,147,201,243,188,202,123, 29,135,195, 97,142,136,136, -216,233, 43,186, 69, 8, 89,110, 50,153,250,250, 90,207,185,174,189,172,172,236, 39,121,252,231,159,127,198, 35,143, 60, 98,205, -207,207,159, 79, 41,221, 21,206,188, 49, 24,191, 7,132,144, 19, 63,253,244, 83,198,202,149, 43,209,165, 75, 23,180,107,215, 14, -213,213,213, 46,179,101,177, 88, 96,179,217,234,172, 87, 89, 89,137,103,158,121,230, 36,165,180,181, 83,231,186,242, 34,114,133, -179,215,174,167,114, 79, 6,131,193,168, 47,249,249,249,197,209,209,209,151, 37, 73,162,242,180,178,178,178, 35, 87,162,117,165, -235, 49, 24,127, 82,108, 22,139, 5,221,186,117,195,185,115,231,112,240,224, 65,151,209, 42, 46, 46, 70, 94, 94,158,199,194,251, -247,239,199,161, 67,135,112,211, 77, 55,121,235, 92, 87, 94,196,189,146,123,127,224,250, 40,247,100, 48, 24,140,250, 32, 23, 17, -206,155, 55, 47,238,238,187,239,118, 77,111,136, 34,194,188,188, 60,215, 27, 58, 43, 34,100, 92, 15, 16, 66, 70, 38, 39, 39,127, -248,196, 19, 79, 68,245,236,217, 19, 57, 57, 57,200,205,205, 69, 89, 89, 25, 58,119,238,140,204,204, 76,156, 57,115, 6,155, 54, -109,194,161, 67,135,160, 82,169,144,154,154, 10,221,138,149,120,143,224, 40,165, 52,211, 77,171, 63,112,125,120, 17,151,193, 98, - 48, 24,140,191, 50,114, 37,247,137, 19, 39,182,155, 54,109, 26, 8, 33, 72, 78, 78,174, 8,119, 37,247,188,188,188, 40, 74, 41, - 88, 37,119,198,245, 4, 33, 36, 18,192,243,233,233,233,207, 77,156, 56, 81,213,190,125,123,228,228,228,160,168,168, 8,101,101, -101,216,187,119, 47, 0, 32, 37, 37, 5, 41, 41, 41, 56,126,252, 56,118,237,218, 85, 89, 93, 93,253, 48,165,244,243, 63, 54,245, - 13, 3, 51, 88, 12, 6,131,225, 68,110,166, 97,192,128, 1, 67, 22, 47, 94,140,140,140,140,176, 27,172,147, 39, 79, 70, 77,156, - 56, 17,172,153, 6,198,245, 8, 33, 36, 1,192,203,237,219,183,127,236,145, 71, 30, 17,154, 53,107,134,220,220, 92,124,247,221, -119,104,217,178, 37, 46, 93,186,132,173, 91,183, 90,138,138,138,222, 2,144, 77, 41,173,248,163,211,220, 80, 52,104, 67,163,132, -144,193, 76,147,105, 50, 77,166,249,103,209,164,148,218, 41,165,111,111,221,186,245,221, 97,195,134, 73,225,208,244,102,216,176, - 97,210,214,173, 91,223,165,148,190, 29,200, 92, 93, 15,251,147,105,254,245, 52, 41,165,133,148,210,201, 71,143, 30,109,245,244, -211, 79,127, 50,123,246,108, 73,146, 36, 36, 36, 36, 96,205,154, 53,210,170, 85,171, 62, 44, 42, 42,106, 65, 41,157,122, 61,155, - 43,224,183, 74,238, 12, 6,131,193,112, 66, 41,253,154, 16,146, 3,224,177, 48, 75, 87,159, 57,115,230, 95,148,210,195, 97,214, -101, 48,174, 41, 40,165,231, 1,220, 79, 8,249,231,193,131, 7,167, 1,160, 0,102, 83, 74,127,253,131,147,246,187,193, 12, 22, -131,193, 96,248,128, 82,122,152, 16,242,114,152,101, 95,166,148,150,133, 89,147,193,184,102,161,148, 30, 1,112,207, 31,157,142, - 63, 2,214, 23, 33,131,193, 96,248, 33,220,102,136,153, 43, 6,227,175, 3, 51, 88, 12, 6,131,193, 96, 48, 24, 97,134, 25, 44, - 6,131,193, 96, 48, 24,140, 48, 67, 0,248,251, 18, 96, 75,200, 34, 87,240,133, 66, 48,125,166,201, 52,153, 38,211,100,154, 76, -147,105, 94,127,154,193,180,235,227, 63,174,105, 40,165, 65, 7, 56,219,203,170,239, 0, 96,240,149,172,199, 52,153, 38,211,100, -154, 76,243,207,171,137,218,151,119,130,218, 82, 18, 78, 30,191,214,210,233,157,230,107, 53,239,127, 21,205,235,109, 8,248, 21, - 33, 33,196,181,147, 8, 33, 18, 0,137, 58,247,226,213, 64, 8,145, 15, 64, 88,244, 24,225,199,121,140,228, 46, 61, 40, 59, 78, - 12, 6, 35, 20,220,238, 29, 60,126,123,200, 58, 0, 56, 8, 33,184,214,238, 37,225,124,206, 53, 68,222,255,202,154,127,118,124, - 26, 44,121, 71,241, 60,255,109,163, 70,141, 6, 20, 23, 23, 75,206,233, 80, 42,149,224, 56, 14,162, 40, 26,171,170,170,244,245, -221, 32, 33,228, 63,137,137,137, 15,150,148,148, 72, 28,199, 33, 34, 34, 2,132, 16,151,102,121,121,121,189, 53,195, 77,243,230, -205,203,140, 70,163,206,123,122, 68, 68,132,233,194,133, 11,145,127, 68,154,126, 79, 8, 33, 68,161, 80,140,138,141,141,141, 46, - 42, 42,162, 28,199, 65,161, 80,128,231,121, 56,255,219,203,203,203, 63, 14, 85, 47, 54, 54,118,127,108,108,108,180,188, 62, 33, - 4, 37, 37, 37,229, 5, 5, 5, 55, 2,128, 90,173,222,165,213,106,227, 4, 65, 0,207,243,224,121, 30, 6,131,161,164,184,184, -184, 79,131,101,146,209,160,172, 93,187,150, 31,154, 50,190,165, 64,141,157, 56,142, 70, 73, 18,169,176, 19,245,207,155,114,255, -115, 58,148,245, 71,143, 30,237,104,232, 52, 6,130, 16,210, 7, 0, 40,165,187,194,164,231,222, 63,161, 9, 64, 49,128,211, 0, -214, 80, 74,141,225,216,198,213,160, 82,169,222, 74, 76, 76,124,164,186,186,218, 64, 8,161,132, 16,212, 62, 6, 80,231,215,225, -112,228, 20, 23, 23,119,243,165,227,246,144, 21,149, 74,229,155,141, 27, 55,254,187,193, 96, 48, 56,245, 40, 33, 4, 73, 73, 73, - 30,122, 0, 96,179,217,114,138,138,138,124,106,122,147,144,144,176, 68,173, 86,255,205, 96, 48,212, 56, 13,145, 11,175,135,248, -153,162,162,162,126,254,116,228,180, 42,149,202, 5,137,137,137, 15, 57,243, 14, 66, 8,141,143,143,191,234,188, 39, 38, 38,254, -189,166,166,198, 35,239, 9, 9, 9, 62, 53,253,229,221,151,166,123, 58, 9, 33,136,143,143,191,234,116, 94,139,154,215, 3,254, - 34, 88, 28, 33,100,125,159, 62,125,110,222,190,125, 59,119,236,216, 49,174,109,219,182,112, 56, 28,144,164,218,243, 57, 53, 53, - 85, 83,223,141, 17, 66,150,246,235,215,239,222, 29, 59,118,112,235,215,175,231,186,119,239, 14, 66, 8, 28, 14, 7, 28, 14, 7, - 58,116,232,160,190,154,204, 16, 66,116,130, 32, 60,163, 84, 42,251,219,237,246,118, 0, 32,138,226,175,102,179,121,187,221,110, -159, 79, 41,173, 14, 69,199,106,181,106, 10, 11, 11,235,236,155,244,244,116,229,149,166, 77,175,215,239,230, 56, 46, 93, 30,151, -141,134, 51,221, 62,127, 41,165,103,139,138,138,122,251,211,140,137,137,113,105,250,211,240,158, 38, 73,210,217,194,194, 66,191, -154, 78,115,117,119,191,126,253,162,182,108,217, 66, 46, 93,186, 68,212,106, 53, 36, 73,130,195,225,128,205,102, 67,251,246,237, -235,213,126, 90,116,116,180,126,234,212,169, 45,111,187,237, 54,172, 91,183, 14, 15, 60,240, 0,250,246,237,123, 82,158,175,213, -106,227,142, 30, 61,154, 17, 27, 27, 11,131,193,128,138,138, 10,220,114,203, 45,245,217,196, 53, 73,207, 46, 77,102, 19,142,196, -202,227,212,238, 40,221,251, 83,238, 85,183,171, 20, 29, 29,125, 72,169, 84, 38,202,199,149,227,126,251, 86,197,223,241, 55,153, - 76, 5,197,197,197, 93, 2,233, 18, 66,154, 3,184,131,231,249, 86,130, 32,180, 1,208,220,110,183, 39, 2,128, 66,161, 40,224, -121,254,188,205,102, 59,110,177, 88, 78, 1,248,146,214, 54, 36,232,147,161, 41,227, 91, 18,187, 97,116,149, 89, 26,166,105,145, -221,218,112,102,234, 9,141,202,240,245,208,148,241,107, 67, 53, 89,127, 20,132,144,180,198,141, 27, 63,227,252,127,153,134,167, - 19,230, 40,147,201,212,151,231,121,149,221,110, 71, 65, 65, 65,241,187,239,190,123, 97,209,162, 69, 3, 8, 33,111,208, 32, 13, -143,246,234,214,244, 0,199,113,169,112,218, 7,137, 58,114,246, 28,184, 20,150, 7, 19,207,243, 11,238,186,235,174,135,214,174, - 93,171, 57,120,240,160,166, 93,187,118,174,251,147, 36, 73,240, 14, 60,164,165,165, 5,146, 35, 0, 4,142,227,222, 26, 61,122, -244,184,229,203,151,107, 46, 92,184,160, 73, 78, 78,118,105,186,155, 55,153,228,228,228,144,210, 26, 23, 23,247,159,219,110,187, -237,254,101,203,150,137, 27, 54,108, 80, 55,106,212, 8,113,113,113, 80, 40, 20,117,150,237,211,167, 79,176,150,248, 57,142,227, - 22,140, 24, 49,226,254, 85,171, 86,105,246,237,219,167,233,208,161, 3,120,158,191,234,188,143, 28, 57,114,220,202,149, 43, 53, -191,252,242,139,166, 85,171, 86,224, 56, 14, 28,199,213,209,227, 56, 14, 77,154, 52, 9, 73,243,206, 59,239, 28,183,122,245,106, -205,161, 67,135, 52,109,218,180,113,237, 79,183,226,185,122,167,243, 26,215,252,211, 83,231, 65,233, 12,151, 46,239,211,167,207, -208,237,219,183,243, 0,112,232,208, 33,148,150,150, 34, 37, 37, 5, 58,157, 14, 42,149, 10, 38,147,169, 94,225, 62, 66,200,127, -156,230, 74, 4,128,207,254, 54, 18,103, 69, 96,114,161, 5, 10,133, 2,103,206,156, 1,207,243, 87, 28, 66, 36,132,220,164,215, -235,151,125,254,249,231, 49, 93,186,116,225,138,138,138,144,158,158,142,210,210,210, 27,119,236,216,209,117,252,248,241,227, 9, - 33, 15, 80, 74,119,132,170,249,245,215, 95, 67,171,213, 66,163,209, 64,171,213,194, 98,177,144,224,107,249, 70, 16,132,212,243, -231,207, 39,232,116, 58, 72,146,228, 26,188,202,175, 93, 72,146,132,140,140, 12,107, 32, 77,158,231, 83, 47, 92,184,144,160, 86, -171, 65, 41,245,208,115, 56, 28, 80,169, 84,238,111, 10,112, 56, 28, 72, 79, 79,247,171, 41, 71,174,100,115, 5, 0, 43, 86,172, - 64,227,198,141,145,144,144, 0,173, 86, 11,181, 90,237,241, 64, 15, 5,158,231, 49,116,232, 80,204,152, 49, 3,217,217,217,120, -254,249,231, 61,110,176,162, 40, 34, 54, 54, 22,223,124,243, 13,244,122, 61,154, 53,107, 6, 81, 20,235,181,141,107, 17,194,145, -216, 61, 7, 46,186, 34,178,183, 14,108, 43,244,236,218,236,157,218, 49, 9, 28, 7, 72, 82,237, 35,147, 16, 80,187, 77, 42,251, -225,231,220, 87,130,233,242, 60,159,124,225,194,133, 4,149, 74, 21, 82, 58, 28, 14, 7, 82, 82, 82,248,128,105, 37,100, 88,102, -102,230,103,143, 63,254,184,162, 85,171, 86, 68,161, 80, 64, 16, 4, 8, 66,237, 45, 66,146,164,102,148,210,102,146, 36,221, 92, - 80, 80, 64, 23, 45, 90,244, 79, 66,200, 93,148,210,175,125,233, 9,212,216,169,202, 44, 13,251,254, 71,220, 56,122,240,139,248, -102,205,212, 27,251,117,150, 16,169, 49,158, 70,109,228,230,154,132, 16,162, 87,171,213,211,191,255,254,251,140,170,170,170,202, -190,125,251, 78, 39,132, 60, 77,195,208, 25,115, 89, 89,217, 17,249,191, 82,169,196, 83, 79, 61,133,219,110,187, 45,250,150, 91, -110,153, 66, 8,249, 7,165,212,239,181,201,113,124,234,174,253,231, 18,228,241, 59,135,118, 84,244,238,222,172, 0, 0,234, 22, -188, 80, 72, 14, 41,103,223,143, 57, 65, 13, 24, 33,228,159,163, 70,141,186,111,237,218,181, 58, 0, 88,188,120, 49, 70,141, 26, -133,216,216, 88,104, 52, 26, 40, 20, 10,136,162,232,241, 27, 64, 75, 46, 30,250,231, 61,247,220, 51,122,249,242,229,145, 0,176, -124,249,114,140, 28, 57, 18,113,113,113,136,140,140,132, 82,169, 4,207, 7, 60, 29,125, 18, 23, 23,247,159,190, 55,222,248,240, -178,101,203, 0, 0,211,158,126, 26,183,245,232, 1,157, 70, 13,141,186,246,221,151, 82, 64,201,139,184,117,242,147,193,242,205, - 1,120, 99,212,168, 81, 99, 87,173, 90, 21, 9, 0, 7, 15, 30, 68, 97, 97, 33, 18, 19, 19,161, 86,171,161, 84, 42, 93,121, 38, -132, 64,173,246,255,254,239,158,247, 81,163, 70,141, 94,185,114,101, 36, 0, 44, 93,186, 20, 67,135, 14,117,229, 93,165, 82, 65, -161, 80,120, 12,222,102,211,151,230, 93,119,221, 53,122,245,234,213,145, 0,240,241,199, 31, 99,240,224,193,136,137,137,113,237, - 79, 89,171, 62,199,232, 90,214,188, 94,240, 48, 88,206, 29,197, 37, 38, 38,142,253,254,251,239, 93, 79, 81, 65, 16,160, 82,169, -160, 82,169,160, 84, 42, 93,197,132,161, 66, 8, 33,137,137,137, 15,238,216,177,195,181,146,197,235,166,160, 82,169,234,253,224, -118,211, 31, 60, 96,192,128,149, 27, 55,110,140, 80, 40, 20, 48, 26,141, 56,114,228, 8,162,163,163,161, 84, 42, 49, 98,196, 8, -190, 79,159, 62,113, 55,223,124,243, 58, 66,200, 56, 26,194, 23, 10,148, 82,232,116, 58, 15,131,117,181, 69,200,106,181, 26, 27, - 54,108, 0,207,243, 62,111, 92,238,255, 19, 18, 18,130,234, 17, 66,160, 82,169,176,123,247,110,240, 60, 15, 81, 20, 33, 8, 2, - 68, 81,196, 87, 95,125,133,103,159,125, 22,197,197,197, 32,132, 64, 20, 69, 68, 70, 6, 45,221, 36,177,177,177,209,178,185, 2, -106,205,143, 90,173,134, 40,138, 68, 16, 4, 34, 23,225, 17, 66, 72,168,101,234, 28,199,225,147, 79, 62,193,235,175,191,142, 23, - 94,120, 1, 75,150, 44, 65,167, 78,157, 92,243, 5, 65, 64,101,101, 37, 98, 98, 98, 16, 19, 19,131,136,136,136, 43, 62, 23,174, - 37,188,247,206,155,243, 23,106, 32, 81,212, 86,242,144, 0, 9,160,160,144,168,132,130,220,211,120,117,198,191, 66,126,234,168, - 84, 42,236,218,181,203,101,130, 4, 65, 0, 33, 4,238,198, 72, 30, 26, 55,110, 28, 84, 79,161, 80,188,246,197, 23, 95, 40, 63, -249,228, 19,172, 90,181,202,117,110,105,181, 90, 68, 71, 71, 35, 46, 46,206, 53,164,166,166,146, 15, 63,252, 80,209,169, 83,167, -215, 0,248, 52, 88, 28, 71,163, 52, 45,178, 91,143, 30,252, 34, 0, 96,244,139, 20,101, 39,231,220,192,149,191, 18,229,107,249, -107, 1, 82,219,209,115,214,134, 13, 27,218, 39, 39, 39, 71,104,181,218, 11,243,230,205,139,123,234,169,167,178, 8, 33, 47,211, -171,235,148,185, 66,142,210, 68, 68, 68, 68,244,239,223, 95, 57,119,238, 92,180,108,217, 18,227,199,143,143, 93,188,120,241, 8, - 0,107,252,173,236,125,169, 45,122,251,157,104, 74,107,207, 31, 42, 81,143,223,210,194,243,120,122,202,171, 33, 37,170, 73,147, - 38,143,173, 91,183,206, 85, 29, 34, 57, 57,217,227,225,239,126,143,146, 7,127,134, 0,206,202,205, 77,155, 54,125,248,211, 79, - 63,117,105, 54,106,212,200,117, 95, 18, 4, 1, 28,199,225,251,239,191,199,188,215,178, 16, 19,159,140,133,111, 47, 14,154,206, -132,132,132, 37,195,134, 13,251,219,210,165, 75, 93,211, 58,182,104,129,219,251,244, 64, 66, 35, 61, 26,197,212,222,219,168, 68, -240,243,241,192, 1, 71,249, 57,215,164, 73,147,241,107,214,172,113,165,211,253,190, 12, 0, 6,131,193, 21,181,183, 88, 44,232, -214,173, 91, 72,121,119,215,148,163,107,178, 89,243,190,215,203, 47, 48,129, 52,155, 52,105,242,176,108,128, 1, 32, 54, 54,214, - 67, 67, 20, 69,172,249,102,153,119, 30,175, 90,179,190,199,221, 91,243,220,185,115,152, 59,119,174,199,113,151,163, 89, 41, 41, - 41, 88,180,104, 81, 32, 77, 95,116, 7, 16,239, 54,110, 1,160,116,251, 45, 2,240,131,143,229,228,233, 34,128, 27,156,243, 28, - 0,170, 0, 68,251,208,243,167, 83,140,218,238,126,226,189,150,247,222,142, 11, 1, 0, 8, 33,242,213, 59, 0,192,174,226,226, - 98,233,216,177, 99,220,193,131, 7, 33,138, 34, 18, 18, 18,208,189,123,119, 0,128,213,106,133, 40,138,208,106,181, 36, 58, 58, -186, 64,126,224,202, 59,207,189, 44,221,205,200,112,165,165,165,210,230,205,155,185,229,119, 13,129,133, 2,157,167,207,195,208, -225,195,177, 41, 69, 9, 30,192,141,199,138,161,209,104, 4, 81, 20,109,242, 65,144, 53,221,235,102,121,155, 35, 66, 72,164, 86, -171,253,240,203, 47,191,140,224, 56, 14, 85, 85, 85,144, 36, 9,125,251,246, 5,199,113, 56,124,248, 48,166, 77,155,134,207, 62, -251, 12, 95,124,241,133,186, 75,151, 46, 31, 18, 66,218, 81, 74,171,100, 13, 31,154, 0,128,200,200, 72,104, 52, 26,151,193,146, -243,236, 30,234,150,151,167,148,230, 22, 23, 23,119, 13,164,233,112, 56, 48,114,228, 72, 16, 66,192,243,188,199, 77,199,253, 87, -161, 80,224,240,225,195,117, 78, 62, 95,198, 80,206, 43, 0,104, 52, 26,232,116, 58,108,219,182,205, 53,191,115,231,206,176, 88, - 44,104,212,168, 17,126,253,181,110, 23, 80,222,154, 69, 69, 69, 52, 47, 47,143, 44, 95,190, 28,162, 40, 34, 46, 46, 14, 26,141, -134, 44, 91,182, 44, 75,161, 80,164,154, 76, 38,201, 98,177, 64,169, 84, 46,148,163, 89,130, 32,212, 84, 84, 84,196,249,211,228, -121, 30,143, 63,254, 56,158,123,238, 57, 44, 89,178, 4, 19, 38, 76,128,247,124,147,201,132, 70,141, 26,185, 76, 86, 40,121,191, - 90, 26, 92, 83,162, 56,114,104, 19,142,254,178, 5,146, 67,130, 67, 51,137,208,191, 0, 0, 32, 0, 73, 68, 65, 84,162,160,212, - 1,201, 14, 28,220,188, 55,227,242,217,188, 20, 10, 10, 56, 11, 50, 84, 21,213,246,155, 27,169,218, 0, 88,191,173,216,252,150, -191,116,202,251, 70, 16, 4,216,108, 54,124,249,229,151, 56,125,250, 52,190,253,246, 91, 24,141, 70,215,126,236,213,171, 23, 30, -126,248, 97,159, 6,203, 91,147, 82,186,244,210,165, 75,157,251,246,237, 75,202,203,203, 81, 94, 94, 14,163,209, 8,135,195, 1, -187,221, 14, 65, 16, 16, 17, 17, 1,181, 90,141,196,196, 68,152, 76, 38,106, 54,155,151,250,211,148, 36, 82, 97, 56, 51,245,196, - 55,107,166,222, 56,250, 69,138,181,175, 19,180,108,170, 50,252,239, 64,228,195,235,119, 62,127, 11, 0, 42, 57,239, 58, 28, 64, -109, 14,169,248,185,172,127, 79, 10,150,206,112, 16, 64,243,177,249,243,231,247,236,219,183,111, 66,101,101,229, 49, 73,146,232, -221,119,223,141, 19, 39, 78,180, 91,188,120,241, 99, 0,222,174,175, 38, 33,100,128,115,254,100,183,105,228,155,111,190,185, 11, -192,131, 31,124,240, 1, 70,141, 26,133,197,139, 23,103,194,203, 96,185,107, 82, 74,113,254,228,247, 56,127,106, 39, 36,137,186, - 69,193,125,255,247,247,230,227,157,206,154,154, 26,211,143, 63,254,168,251,224,131, 15,144,144,144,128,180,180, 52,104, 52, 26, - 68, 68, 68,120, 60, 92,221, 31,184,193,174, 77,163,209,104, 58,127,254,188,110,229,202,149,136,139,139, 67,243,230,205,161,209, -104,160, 84, 42, 93, 47, 2,203,151, 47,199,138, 25,247,225,252,241, 95, 48,242,246,186,213, 1,188, 53, 53, 26,205,223,150, 46, - 93,234, 17,242, 72,140,137,129, 32,114,224, 69,130,152, 65,119, 1, 0,202,190,251,220,111,235,142, 94,154,164,170,170,202,180, -111,223, 62,221,129, 3, 7, 32, 73, 18,154, 55,111, 14,131,193, 0,189, 94,239,202,255,230,205,155, 49, 98,196, 8,124,242,201, - 39,232,213,171, 87,208,188, 87, 87, 87,155,126,249,229, 23,221,167,159,126,138,216,216, 88, 52,105,210,196,149,119,121, 16, 69, - 17, 60,207, 35, 61, 61, 29, 21, 21, 21,208,233,116, 1, 53,107,106,106, 76, 7, 15, 30,212,125,250,233,167,136,137,137, 65,106, -106,170, 43,194, 38,155,162,215,223,153,225,161, 17, 65,146,174, 90,179,190,199,221, 91,243,174,187,238, 66,203,150, 45,161,215, -235,161,213,106, 93,218,129, 52,221,188,200,205,148,210,237,240, 36,158, 16,178,209,109,251,195, 9, 33, 27,221,127,253, 45,231, -252,123, 83, 86, 86, 86,183,236,236,236,185,189,122,245, 90,185,123,247,238, 21,254,244,252,233,100,101,101,101,102,103,103,207, -117, 95,222,199,118, 92, 8,110, 51,137, 51,115, 2, 0,180,109,219, 22,165,165,165, 80,169, 84,232,222,189, 59,138,139,139,161, -211,233,160, 80, 40, 64, 41,197,164, 73,147,248,231,159,127, 62,129,227, 56,216,237,181, 47,118,130, 32,248, 43, 75,151, 56,142, - 67,239,222,189,113,196, 89,242, 51,116,248,112,164,166,166, 66,174,196, 17, 17, 17,129, 73,147, 38,145,103,159,125, 86,144,163, - 23,148, 82, 24,141, 70, 36, 37, 37,249,141,205, 10,130,240,244,186,117,235,162,148, 74, 37,170,170,170, 92, 69,100, 60,207,227, -216,177, 99,120,227,141, 55,240,247,191,255, 29, 23, 47, 94, 68,114,114, 50,158,123,238, 57, 93,118,118,246,211, 0,102,250,211, -148,209,233,116, 46,115,165,209,104,240,244,211, 79, 11,125,250,244, 73,208,233,116,136,140,140,132, 92,220,231,112, 56,208,162, - 69,139,160, 86, 92,146, 36,108,218,180, 9,130, 32, 4,141, 96, 57, 79,188,144, 52,247,237,219,231, 50,103,238,111, 69,132, 16, - 28, 57,114,196,101,230, 66,208,164, 28,199, 65,171,213,162,113,227,198, 80,171,213,208,104, 52,100,229,202,149, 47,167,165,165, - 37, 61,251,236,179, 92,101,101, 37,215,187,119,111,140, 26, 53, 74,144, 36, 9, 86,171, 21,153,153,153, 1,211, 72, 8,193,246, -237,219,241,238,187,239, 98,194,132, 9, 62, 35, 88,114, 37, 72,189,254, 15,255,198, 33,108, 72, 0,172,118, 27, 12,213, 70, 87, - 17,174,195,225,192, 47,219,126,202, 56,251,211,201,204,141, 43, 63, 17, 1,192,180,237,115,247,213,146, 70,189,179,186,245,205, -177,138,125,219, 74,173,251, 2,233,115, 28,135, 39,159,124, 18,175,188,242, 10,238,185,231, 30,108,222,188, 25,211,166, 77,195, -248,241,227, 61, 34, 88,161, 96,179,217,222,123,224,129, 7, 38,172, 93,187,182,205,139, 47,190,200,201, 17, 44,141, 70, 35,215, -225,130,217,108,134,209,104,196,241,227,199,165, 71, 31,125,244,132,197, 98,121,207,159,158,157,168,127,214,168, 12, 95,183, 72, -229, 90,214,156,251, 87,100,223, 30,205,141, 68,221,181,226,174,214,131,233,176, 7,155,199,128, 82, 80, 9,144, 40, 96, 54,215, - 96,210,164,167,234, 95,102, 20, 70, 8, 33,195,198,141, 27,119,199, 99,143, 61,150, 86, 85, 85,117,198,110,183,219,228,121,211, -166, 77,195,201,147, 39,135, 16, 66,206,251, 43, 18,245,163,153,218,162, 69,139,167, 28, 14, 7, 37,132,156,166,148,230, 56,103, - 45, 4, 16,181,125,251,118, 0, 64,106,106, 42, 0,100, 18, 66,150, 3,168,112, 55, 99, 46, 40,133,205,102,135,209,104, 14,104, -172,228,113, 74,131, 85, 63,114,165,145,182,105,211, 6,119,220,113, 7, 68, 81,116,189,164,185, 23,143,121, 27,173, 0, 80, 0, - 18, 33, 4,201,201,201, 24, 54,108, 24, 20, 10,133,135,166,252, 64, 29, 54,108, 24,158,156, 57, 29,239, 61, 57, 16,239, 62,144, -129,193,179, 11, 2,166,211, 96, 48, 84,111,221,186, 85,253,220,132, 9,184,161, 85, 43, 52,210,235,209, 52, 49, 30,106,149, 18, - 10,247, 52,145,224, 65,117, 90,251,176,147,120,158, 71,135, 14, 29, 80, 80, 80,128,115,231,206,225,220,185,115,224, 56, 14,125, -251,246,117, 69,130, 79,157, 58,133,153, 51,103,194,108, 54,135,156,247, 86,173, 90, 97,224,192,129, 80, 42,149,208,104, 52, 30, - 69,131,242, 62,173,170,170, 66,203,150, 45,177,126,253,122,180,110,221, 58,168,102,219,182,109,209,191,127,127,143,253,169, 86, -171, 93,207, 13, 0,184,180,175,218,181,141,148,148,148,122,105,126,187,255, 34, 62,216,188, 21,102,139,132, 74,131,205, 99,133, -164, 70,122,236,252,244,197,144,242, 46,107,190,247,222,123,168,168,168,112, 61,123,228, 96,137, 28,156,104,210,164, 9,222,125, -247, 93,223, 98,191,121, 17,159,207, 42, 95, 70, 38,200,114,242,201,165,202,206,206,158,235,189,126, 48, 61,247,249, 94,235, 91, -188, 76, 89,157,147,216,215,221, 87,146, 47,130,148,148, 20,200,245, 60,228, 11, 68,198,110,183,227,179,207, 62, 67, 66, 66,130, -107,136,138,242, 29,253,167,148, 82,185,158,208,147, 69,181,213, 12,190, 73, 86,224, 60,128,219,139,106, 47, 8,185,142,208,186, -117,235,224,110, 96, 34, 35, 35, 3, 22, 23, 41,149,202,155,187,119,239,206,153,205,230, 58,230, 42, 59, 59, 27,227,198,141, 67, -235,214,173, 33, 73, 18,170,171,171, 49, 96,192, 0,113,225,194,133, 55,163, 30, 6, 75,163,169,173,207,111,177, 88,176,109,219, - 54,196,196,196, 32, 46, 46, 14,177,177,177,136,140,140,148,191,132, 12,120,101,203,149,252, 70,142, 28,233,122,240,185, 71,173, -188,205,214,238,221,187,131, 37,207, 85,105,178, 71,143, 30,208,106,181,208,233,116,208,233,116,216,180,105,147,107,153, 27,111, -188, 17,146, 36, 33, 33, 33, 1,123,246,236, 9, 88,204, 73, 41,165, 10,133,194,181,188, 40,138,100,217,178,101, 89,233,233,233, - 73, 83,166, 76,225,120,158,199,161, 67,135,112,244,232, 81, 52,111,222, 60,228, 58, 89,229,229,229,151,179,178,178, 28, 89, 89, - 89, 0,128,204,204, 76,148,151,151, 23,202,243, 43, 43, 43, 75,134, 12, 25,226, 81, 47,163,184,184,184, 36,232, 14,184,198,145, - 36, 9,118,171, 29, 6,147, 9,213, 85, 6, 87, 52,168, 48,175, 32,250,197,103,159, 17,223,152,244, 16, 0,224,217,183,222, 70, -213,146,223,110, 96,159, 63, 55, 46,225,174, 55, 86, 78, 5, 48, 34,144,190,193, 96,128,217,108, 70,179,102,205,176,127,255,126, - 84, 85, 85, 97,240,224,193, 30, 17, 82,121,159, 6, 11,197, 83, 74, 45,132,144, 62,195,135, 15,255, 97,254,252,249, 45,218,181, -107, 71,106,106,106, 96, 48, 24,224,254,251,203, 47,191,208, 21, 43, 86,156, 53, 24, 12,189, 41,165, 22,127,122,155,114,255,115, -122,104,202,248,181,255, 59,196, 15, 79,104,121, 66,159, 91,214,194, 94,146,171,170,169, 52, 30, 55, 57,232, 81, 80, 7,224,128, - 4,106,151,224,112, 22,111,253, 81, 16, 66, 58,180,104,209,226, 31, 11, 23, 46, 76, 52,153, 76,185, 54,155,173,198,107, 62, 22, - 47, 94,140, 97,195,134,253,131, 16,146, 19,172, 66,186,115, 29,101,116,116,244,180,109,219,182,101, 94,190,124, 57,191, 79,159, - 62, 83, 9, 33, 83, 40,165,150, 54,109,218, 68, 29, 56,112,160,175, 40,138,202,242,242,242,195,122,189, 30, 22,139,165,131,205, -102,179,116,235,214,109,167, 47, 61, 42, 1, 54,155, 13, 70,163, 25, 21, 21, 85,176, 88,109,206,123,166, 4,135,195,238,252,149, - 96,119,222, 71,149, 10, 33,178,107,199,164,106, 74, 41, 56, 66,202, 15,252,114,217,103, 77,106,249,188,240, 85,148, 21, 74,244, -202, 7, 14,226,252,106, 44, 46, 46, 14,162, 40,226,147, 79, 62,193,207,187, 54,253, 63,123,231, 29, 30, 69,213,182,241,251,204, -246,221,100,147, 13,105,164, 64,168, 74, 19, 41,130, 32, 69, 90,104, 2,138,210, 69,129, 15,145,142,162,148, 23, 17, 21,129,208, -139, 82, 21, 17, 65,145, 94,149, 34,210, 5, 68,233,189, 8, 4, 66,122,223,108,182,206,204,249,254,200, 78,220,108,182, 37, 4, - 17,156,223,117, 13,100,103,206,220,115,102,203,236,189,207,121,206, 51, 80, 72, 40, 56,214, 6,214,102, 5,103,179, 64, 38,145, -224,215, 51,119, 16, 91,211,251,196,108, 66, 8, 13, 9, 9,193, 43, 77,155,162, 75,211,166, 5,211,213,164, 82,248, 43,149,208, -200, 85, 5,145, 43, 0,148, 99,224, 54,124, 87, 20, 94,232,103,120,120, 56,254,252,243, 79,140, 30, 61, 26,179,102,205,130, 90, -173, 46,156,205,124,245,234, 85,108,216,176, 1,177,177,177, 37, 62,119, 33, 98, 55,113,226, 68, 36, 38, 38, 98,225,194,133,104, -216,176, 33,100, 50, 25,178,179,179,241,210, 75, 47, 33, 37,197,179,177, 20, 52,129,191,135,241, 20, 10, 69,145,104,147, 96,252, - 74,250, 26, 57,106, 14,124, 45, 2, 59,126, 91, 7, 2,130,147, 63,188, 95,228,187,104,217,250,163, 37,214,252,228,147, 79,138, -244,211,151,232,149,175, 56, 69,153,124,105,119,218,190,202, 56,113,226,196, 73,132,144, 93, 19, 39, 78,156, 20, 23, 23,119,201, - 23, 61, 55,219,127,178,255,255,138,195,186,211, 78,109,138, 27, 44, 74, 41, 85, 40, 20,224,121,190,136,169,114, 78,168, 21, 66, -126,142, 33, 69, 79, 48, 12, 3,158,231, 11,223, 12,206, 63, 87, 37, 18, 9, 78,156, 56,129, 19, 39, 78, 20, 89,191,114,229, 74, -143, 95,224, 44,203,214,210,106,181, 69,162, 87,114,185, 28, 19, 39, 78, 68,255,254,253, 11,205,149, 92, 46,199,234,213,171,241, -194, 11, 47,192, 98,177,212,242,212, 87,185, 92,158, 95,190,124,121, 6, 40,184, 0,249,249,249,145,209,163, 71, 75, 88,150, 45, -124, 78,132, 69,200, 77,243,246,102, 33,246, 89, 41,251,246,237,243, 41,130,229,107, 14, 18,165, 20,231,206,157, 43, 98,218,132, - 89, 48, 0,112,238,220,185,194,252, 44, 95, 52, 37, 18, 9, 56,142,131, 90,173, 38,114,185,156,200,229,242,104,193, 92, 73, 36, -146,194,215,219, 49, 39,207,219,185, 63,120,240,160,181,167,237,169,169,169, 79,109, 57, 6,171,205, 6, 99,190, 5,250, 60, 35, - 62,139,251,182, 96,229,103,248, 29,192,239,205,134,142,198,240, 14,177,109, 80,116,156,223, 43,142, 95,138,155, 55,111,134, 76, - 38,195,246,237,219, 17, 16, 16,128,110,221,186, 33, 32, 32, 0, 19, 38, 76, 64,239,222,189,125,142, 96, 1, 0,165, 52,135, 16, -210,236,189,247,222,251, 99,206,156, 57, 21, 43, 84,168, 0,139,197, 2,171,213, 10,139,197,130, 91,183,110, 97,221,186,117,247, -243,243,243,155, 81, 74,115,188,233,237,125,240,205,173, 45, 71, 62, 72,108,215,251,117,227,213,148, 61, 72, 78,206, 0,203, 62, - 0,207,177,176,178, 5, 51,146, 57,150, 5,203,114,144,203, 37, 1,115,166,191,255, 11, 15, 10,134, 33,150, 30, 61,122,116, 42, -201,115, 82, 90, 8, 33, 65, 0,134,254,245,215, 95,250,224,224,224, 11,246,213, 1,137,137,137, 4, 0, 34, 35, 35, 41, 0,199, - 4,247,161,246,124, 44,111, 55,109, 30,186,115,231,206,151,116, 58,157,133, 97,152,172,143, 62,250,168,194,167,159,126, 58, 20, -192,162,107,215,174,125,219,167, 79,159, 64,199, 95,240, 25, 25, 25,167,135, 14, 29,138,107,215,174,125,235, 74,140,194, 30,193, - 50,153,144,150,145,133,193, 67, 39,219,215,219,255,165, 69,219, 14, 27, 5, 21, 0,164,167,220,194,192,193,163, 61,206,134,224, -121,222,229, 23, 96, 9,114,112, 10,142, 91, 16,122, 0, 80,240, 30,245,247,247, 47, 24,102,219,190, 14, 63,205, 27, 10,112, 86, - 80,155, 17,176,230, 3,214, 60,240,150,124, 16,185, 26,176,121,175, 82, 65, 8,161,254,254,254,240, 87,171, 17,166,211, 21, 20, -113,148, 72, 32,147, 73,193,219, 0,194,217,103, 94,243, 0,239, 67,129, 15, 74, 41, 13, 9, 9, 1,207,243, 80,171,213,184,123, -247, 46,134, 15, 31, 14,171,213,138,215, 94,123, 13, 22,139, 5, 38,147, 9, 70,163, 17, 85,170, 84, 65,126,126,190, 79,231, 46, - 92,231,133,209,158,247,223,127, 31, 47,188,240, 2,166, 78,157,138,241,227,199,163, 74,149, 42, 24, 54,108, 24,214,173, 91,135, - 58,117,234,120,212,117,124, 62, 5, 77,225,117,113, 30,202, 3, 80,226,215,200, 89,179, 32,239, 31,197, 94,247, 49,111,181, 45, -177,102, 92, 92, 28,210,210,210,138, 69,174,132,191,163,162,162,176,108,153,247,220, 59, 55,199, 19,162, 69,225, 46, 54,191,226, -212, 14, 40,200,165,250, 3,128, 57, 46, 46,238, 82, 92, 92, 92, 23, 66,200,174,184,184,184, 46, 78,237,188,233, 56,111, 79,243, -214,215,194,171,175,221,125,182, 2,254,142,140, 8, 95,160,246,131, 8,237, 0, 20,228,251,108,217,178, 5,194,140, 14,199, 54, -174, 16, 12,214,207,161,246, 16,177, 61,114,229,248,184,107,215,174,168, 92,185,114,145,232,149, 90,173,246,248,166,225,121, 30, -241,241,241,184,120,241, 34,154, 54,109,138,156,156, 28,200, 24, 6, 31, 92,184,128,218,111,189, 5,139, 61, 34,163, 80, 40,240, -238,187,239,250,148,168,126,231,206,157, 32,199,199, 33, 33, 33, 9, 45, 90,180,136, 58,117,234, 84, 97,226,187,125,248,172,208, -104,248, 98, 94, 40,165,120,227,141, 55,138, 68,173, 28,205,149,227,178,103,207, 30,192,135, 33, 66, 74, 41, 90,180,104, 81, 24, -189,210,106,181,216,182,109, 27,128,130,215,170,101,203,150, 0,128,240,240,112,159, 52,133,243,176, 39,182,195,100, 50,241,122, -189,158, 57,125,250, 52, 20, 10, 69, 97,196, 78,173, 86, 67,165, 82, 65,169, 84,150,106, 70,208,127, 1, 74,121, 88,108, 54, 24, -141, 70,228,229, 21, 84, 8,185,117,113,115,145, 54, 86,115,233, 39,167, 9, 81, 42,189, 94,143, 95,127,253, 21, 91,183,110, 69, -195,134, 13,139, 37,185, 3,222, 35, 88,127,247,153,166, 17, 66,154,143, 27, 55,238,228,180,105,211, 34,203,149, 43, 7,171,213, -138,123,247,238, 97,213,170, 85,137,249,249,249,205, 41,165, 94, 47, 44,127, 11, 2, 54, 27, 11, 83,190, 25, 57,185,122,124, 58, -125,181,187,150, 12, 0,100,166, 94, 67,215,110, 61, 75, 93, 14,165,164,216,141,210,112,199,117,246,161, 58, 33, 28,159, 75, 41, -237, 95, 18, 77, 66, 72,235, 89,179,102,245,110,216,176,161, 54, 39, 39,231, 10, 0,188,243,206, 59, 56,115,230, 76, 91, 66,200, - 37, 74,233, 65, 66, 72,157, 6, 13, 26,180,125,231,157,119, 0, 0, 95,127,253, 53,118,237,218,245, 43,165,244,160,235,126,242, -133, 67,132,121,121, 70, 4,232, 34,240,224,206, 97,175,125,145, 75, 76,160,188,251,225, 66,193, 16,184,138, 90, 57, 94,159, 74, -240,254,161, 66,206,159,240, 69,221,233,141,183,208,105,248, 76,104,100,192,140,129,205, 80, 69, 7, 64, 93, 14,242,150, 19, 64, -116, 49, 5, 59, 14,223,233,147,254,248,229,203,113,230, 70, 65,133,151,232,208, 80,140,235,221, 27,212, 6, 28,191,124, 25,235, - 15, 30, 68,239,214,173,161, 81,169,124,210, 18,206, 93, 46,151,227,214,173, 91, 56,126,252, 56,106,214,172,137,155, 55,111, 22, - 41, 39, 65, 41,245,233,252, 41,165, 84,152,156,164, 84, 42, 33,147,201,144,156,156,140, 46, 93,186, 20,254,192, 63,124,248, 48, -198,141, 27,135, 65,131, 6,161, 85,171, 86, 46,243, 98,157, 53, 67, 67, 67, 11, 3, 7,206, 19, 16, 28,135,109, 75,242, 26,185, -210, 20, 40,237,235,238,168, 57,125,250,116,151, 19, 37,124,209,116,244, 34, 30, 56,141,162,209, 35, 8,249, 80,130, 33,114,126, - 12, 32, 72, 88, 55,113,226,196, 73,190,238,231,248, 88,136,128, 57,233,186, 69,106,111, 88,228,140,133, 47, 89, 33, 92,236, 10, - 63, 63, 63,140, 24, 49, 2, 83,166, 76, 65, 72, 72,136,215,220, 25,193,185,122, 98,231,206,226, 31,178,237,219,183,123, 27, 34, -188, 26, 24, 24,248, 66,155, 54,109,144,147,147,131,251,247,239,195,207,207, 15,181,231,205,195,133,225,195, 81,111,249,114, 48, -109,218,128,144,130, 34,169, 23, 46, 92,128, 90,173,190,234,177, 35, 78, 16, 66,160,213,106, 17, 20, 20, 84, 56,166, 46, 24, 45, -135, 8,150, 87,231, 70, 41,197,207, 63,255,236,242, 87, 98,105,114,176,132, 15,255,201,147, 39,139,228, 95, 57, 26,158,147, 39, - 79, 22, 70,176,132,221,188,245,211,254,171,142, 10,122, 26,141, 6,229,202,149,131, 82,169,132, 90,173, 46, 98,174,124,137,222, -121, 43, 36,170, 86,171, 79,249,249,249,233,132,237, 50,153, 12,122,189, 62, 59, 35, 35,163,177,183,190,254,155,225, 65,193, 90, - 89, 24,141, 38,228,233,203,190,150,164, 48,225,100,203,150, 45,120,241,197, 23,139,153, 43,225,185, 46, 41,148,210, 4, 66, 72, -171, 69,139, 22,253, 62,127,254,252,160,188,188, 60,124,251,237,183, 57,121,121,121,173, 28,242,136,124,211,226, 41,108, 86, 43, -242, 77,102, 24,242, 10,158,131,191, 46,109,246,178,215,147, 77,141, 26, 53, 6, 14, 27, 54, 44, 84,175,215,255,197,243,127,199, - 83,230,207,159,143,191,254,250,107, 32,128,131, 0,150, 79,159, 62,189,122,221,186,117, 43, 0,192,244,233,211,239, 3,112,157, -148,130,130,107,135,213, 62, 68,152,151, 87, 16,245, 48, 25,210,203,164,191,130,201,112,151,115, 85,154,161, 28, 98,159,185, 44, -145, 72, 48,114,228, 72, 92, 56,127, 30,109, 35,115, 81,165,188, 22, 52,247, 1,228,109, 62,193,185, 52, 53,230, 46,240, 57,165, -173,144, 13, 14,147,120,230,110,216,224,114,219, 95,175,122, 28, 93, 47, 68, 56,247,235,215,175, 67,173, 86,131,227,184, 98,223, - 55, 37, 61,127, 71,227,178, 96,193, 2,140, 27, 55, 14,171, 87,175,198,133, 11, 23, 80,175, 94, 61,180,107,215, 14,169,169,169, - 56,127,254, 60,204,102,179,207,253,116,204,139,187,126,251, 50,246, 31,223,141,248,132, 59, 72, 76,190, 95,162,254,185,211, 20, - 16, 94,247, 45,251,207,226,141, 88,143,165,243,220,106,126,242,201, 39, 72, 77, 77, 45, 18,185, 18, 12, 43, 0,183, 17, 44,103, - 47,226, 68,186, 83,174,147,240,216,226,100,118,156, 31, 59,183, 7,128, 84, 0, 18, 47,251, 57, 63, 78,143,139,139, 59, 36, 68, -190,236,186, 18,234, 38,255, 10,112, 83,104, 84,120, 50,132, 47,101,199,168,143,240,183,159,159, 31,180, 90, 45,180, 90, 45, 2, - 2, 2,188, 70,134, 4,131,213,226,182,190, 72, 46,151, 16,201, 2,128, 65,131, 6, 21,139, 96, 57, 22,228,116,133,217,108, 62, -124,248,240,225,250, 93,187,118,149, 92,189,122, 21, 18,137, 4, 60,207,195,210,180, 41,234, 45, 95,142,139,239,191,143,151,239, -222,133,201,106,133, 74,165,194,222,189,123,173,249,249,249,135, 61,118,182, 56,196,209, 96,249,249,249, 33, 48, 48,176,208, 96, -248,226,202,133, 15,173,167,252, 6, 97,113, 76,242,247,134,144,115, 38, 44,194, 23, 43, 33, 4, 70,163,177, 48, 89,211,177,189, - 39,132, 33, 66,199, 15, 30,195, 48,208,233,116,133, 23, 13, 33,130,229,107,244,206, 91, 33, 81,141, 70, 19,112,237,218,181,106, - 66, 25,137,244,244,116,180,105,211,230,134, 59,189, 39, 6, 30,176,178, 28,242,140, 38,228, 25, 61, 15, 49,148, 4,225,189,246, -253,247,223,227,214,173, 91,176, 90,173,136,139,139, 43,102,172, 74,146,228,238, 12,165,244, 86,131, 6, 13,248,142, 29, 59,226, -228,201,147, 80, 42,149, 54, 74,105,137,235, 87,241,148,135,149,101, 97, 50, 26,145,103, 48,120,223,225, 41,224,218,181,107, 57, - 90,173,246, 4, 0,255, 27, 55,110, 72,252,252,252, 80,181,106, 85,152, 76,166, 28, 0, 57, 64, 97,206,219,204,119,223,125,119, - 33, 0,216,108,182,153,158,114,218, 40,165,176,177,118,179, 94,134,207,163,240, 94,114,119, 77, 42, 77,185, 20,199, 47, 84,158, -231, 49,228,157,119,208, 46, 50, 23,221, 27,134,194,144,116, 3,154,192, 80, 16, 93, 37,204, 93,240, 51, 46,221,246, 57,213,146, - 2, 64,135,150,175,226,249,154,197,203,123, 53,111, 91,240, 91,236,216,175,167,144,146,158,232,115, 63,129,130,115, 55, 24, 12, -110, 35, 85,190, 70,176, 4, 77, 98, 47,151, 34,147,201, 80,191,126,125, 60,243,204, 51, 56,116,232, 16, 26, 52,104,128,155, 55, -111,226,230,205,155,184,123,247, 46, 46, 92,184,128,172, 44,111, 35,205,197, 95,163,109,251,214, 35, 75,159, 9,133, 92,129,204, -236,116,196, 63,184,131,240, 96,239,165, 88, 60,105, 58, 6, 82,106,188,242, 41, 0, 32, 50, 52,176, 68, 6,203, 81,115,206,156, - 57,197, 76,123, 25,148,222, 57,229,229,113, 73,247,127,228,184,188,250, 42, 20, 10, 99,185,114,229,212,142,227,167, 12,195, 32, - 48, 48,144,204,154, 53, 75,194, 48, 12,180, 90, 45, 2, 3, 3, 33,132, 5,189,161, 80, 40,140,149, 42, 85, 82, 11,111, 64,225, - 3, 24, 16, 16, 32,153, 53,107, 22, 89,185,114,165,203,253,118,238,220,233, 45, 7,107,126,255,254,253,255, 47, 33, 33, 33, 40, - 44, 44, 12, 73, 73, 73, 80, 40, 20, 5, 31,138,214,173,209,226,246,109, 88, 11,114,138,112,253,250,117,124,245,213, 87, 6,179, -217, 60,223,199,231,167, 16,127,127,127, 4, 7, 7, 23, 14, 13, 10, 17, 28, 7,179,232, 83,106,165,167, 80,188,240,139,175,164, - 56, 26, 44,225,139,117,232,208,161, 69,204,150,175,200,229,114, 86,168,212,206, 48, 12,172, 86, 43, 26, 52,104,128,212,212,212, -194, 15,139, 99,228,206, 23,131, 37,147,121, 46, 36, 42,149, 74, 97,177, 88,208,178,101, 75, 16, 66,176,120,241,226,167, 99,216, -145,231,137,191,127, 48, 34, 35,159, 69,104,152, 9,188, 47,201, 33, 62,194,178, 44,134, 13, 27, 86, 36, 98, 37,204, 84, 20,134, -248, 41,165,176,217,108,222,102, 63,185, 69,248, 92,251,242,249,118,171, 1, 20, 14,109, 25, 12,166, 82,235, 60, 46,162,163,163, - 3,236, 67,134,206,184,158,237,135,191, 75, 50, 16, 66,166, 37, 36, 36,212,173, 81,163, 6, 94,126,249,101,236,217,179,103, 59, -128,173, 14,237, 18, 8, 33, 75,132,191, 61,245,131,218,135, 90,141, 38, 51, 12,134,178,143,134,122,250,161, 87, 26,132,107,206, -148, 41, 31,163, 93, 68, 54, 94,171, 23,136,239,118,253,134,126,245,213,128,197,183, 2,185,142, 8,125, 9,142,170,140,202,207, - 53, 41,182, 93, 21, 88, 48, 52, 87,249,185, 38,144,220,191, 89, 34,109,231, 33, 54,231,235,101,105, 34,120,142,207,231,224,193, -131, 49, 97,194, 4,180,111,223, 30, 55,111,222,196,145, 35, 71,112,243,230, 77,140, 30, 61, 26,117,234,212, 65,189,122,245, 74, -164,185, 99,255, 38,228,230,229,128, 33, 12, 50,115, 50, 96, 50, 27, 49,126,152,215,250,196, 94,251, 41,112,103,127, 28, 0, 96, -243, 47,103, 74,173, 57,105,210, 36, 36, 39, 39, 23,137, 92, 61, 76,222,213,147,138, 75,131,149,145,145,225,114,188, 47, 52, 52, - 52, 37, 54, 54, 54, 44, 41, 41, 9,254,254,254, 94,205, 21, 33,164, 29,181,215,202, 72, 78, 78,118,169,169,213,106,173,177,177, -177,178,136,136,136, 34,179, 7,253,252,252, 10,219, 56,221, 10,164, 80, 19, 0, 40,165,122, 66,200,144,102,205,154,125,183,103, -207, 30,205, 51,207, 60,131,220,220, 92, 80, 74,177,122,245,106,140, 28, 57, 18, 42,149, 10,215,175, 95, 71,183,110,221,242,243, -243,243,135, 80,135, 26, 88,174, 52, 93,156, 7, 24,134, 41,172, 98,239,194, 92,121, 60,119, 65, 3, 0, 22, 45, 90,132, 25, 51, -102, 96,210,164, 73,110,247, 5,128, 21, 43, 86, 0, 78,195,121,174, 52, 41,165,152, 59,119,110,153,105,102,100,100,172,118,220, -238,231,231,183,184,123,247,238,210,251,247,239, 23, 49, 85,142,139,139, 11, 82, 17, 77,111,133, 68, 37, 18, 9,194,195,195, 49, -109,218, 52, 4, 7, 7,163,124,249,242,197, 34, 47,222, 94,163,210,240,168, 53, 57,202,159,158, 51,243,227,230,223,174,221, 33, - 83, 42,128, 19, 71, 54, 35, 55, 43,185, 72,123,179,245,239, 41,209,138, 6,109, 97, 57,243,171, 79,253, 52,155,205,152, 61,123, - 54, 62,253,244, 83,124,250,233,167, 30,251,100,127,221,189,106,122,194, 23,147,229, 82,147,167, 68,227, 23, 4,149, 95, 36,106, -215, 9, 2, 95,194, 90,157,143,233,117,231, 19, 19, 19, 17, 25, 25,137,155, 55,111, 62, 39,145, 72,138, 56, 2,142,227,204, 42, -149,170,200,108, 63, 55,154, 23,183,108,217, 82,119,242,228,201,152, 49, 99, 6, 0, 12, 56,124,248,112, 31, 66,136,224, 52,221, -154, 52,103, 77,158, 82,162,214,232,160,242,139, 64,237,231,116,224,249,210,213, 60,117,117, 13, 17, 70, 43, 28,163, 87, 37, 44, - 36,237,242, 90, 7, 0,127,252,186, 29, 83,222,127, 14,171,127,250, 29, 95,156, 2,158,215,165,162,118,104, 26,248,180,171,248, -176,223, 11,152,251,195,159, 0,128, 35,135, 61,107,162, 32,205,199,109, 31, 76, 70,143, 55,189,112,219, 79,231,145, 26,225,154, -234,216,198, 83, 4,203,149,166,240,227, 80,175,215, 35, 59, 59, 27,223,125,247, 29, 6, 14, 28,136,212,212, 84,220,189,123, 23, - 55,110,220,192,143, 63,254, 88, 56, 59,189, 36,253,148,201,100,248,224,157,143, 48,121,238, 88, 80, 80,212,168, 86, 27, 19,135, -127,138, 70,207, 55, 45,245,185, 59, 71,176, 4,188, 69,175, 60,105, 46, 90,180,168, 84,239,165,167,141, 18,141, 31, 8,145,172, -144,144,144,194, 55,135,227, 27,175, 52,191,116, 37, 18, 9, 88,150, 45,204,237, 17, 22, 0,232,218,181, 43,118,238,220,233,203, -204,136, 61,132,144, 55,107,213,170,181,234,179,207, 62,243,127,249,229,151,165,145,145,145,104,212,168, 17,174, 95,191,142,159, -126,250,201,182,116,233, 82, 67,126,126,254, 32, 74,233, 47, 37,238, 36, 64,132, 91,207, 56, 46, 69, 26,120,233,163,213,106,189, -127,243,230,205,136,185,115,231, 74, 24,134,193,194,133, 11, 11, 63,140, 66,161, 86, 71,142, 28, 57,194,242, 60,239,113, 72,198, -102,179,221,191,121,243,102,196,188,121,243, 36,132,144, 66, 77,134, 97, 10, 53, 29,251,229,139,102,177, 19,183, 95, 96,220,153, - 43, 87,125,119,198, 91, 33, 81,169, 84,138,235,215,175, 99,202,148, 41, 32,132, 96,243,230,167, 35, 71,231,194,213,244,149,245, -106,135, 5,117,237,212,188, 46, 8,129,213, 82,124, 4,200, 63,171, 32,249, 93,209,160, 45,186,207, 91,143,173, 31,244,246,170, - 75, 41,189,117,236,216,177,114,179,103,207,150, 74, 36, 18, 44, 88,176,160, 72,177, 95,231,215,253,232,209,163,108,105,134,247, -132,207,179,213,106,133,209, 88,186,168, 9,165,244,120,220,244,201,177,107,190,255, 89, 70,136, 5, 39, 14,111, 70, 78,182,235, -169,233, 10,153, 20, 43,191,219,194,202,101,146,210, 37,149,148, 29, 95,244,232,209, 99,242,166, 77,155,164, 0, 46,121,109,237, -158,237,223,124,243, 77,167,158, 61,123,150,171, 94,189, 58,190,253,246, 91,185, 78,167,107, 72, 8, 33,174, 76,154, 39, 40,165, -219,103, 78,159,252,246,119, 63,252,172, 96,136, 21, 39,142,108, 70,142,147, 89,119, 70, 46,151,225,155,213, 91,172,114,185,236, -154,167,118,194,205,220,203, 34,114,229, 76,183,254,195,209,125,209, 23,168,218,168, 3,102,206,106,135,111,166,247,196,252,142, -114, 88, 55,246,195,243, 61,214, 96,221,212,206, 0,128,200,111,124,211,147, 73,229,184,231, 34, 66,149,157, 83,144,216,174,215, -151, 44, 74, 42,156, 59,224,254, 26, 94,210, 8, 22,195, 48,168, 92,185, 50,170, 86,173,138,102,205,154,161, 65,131, 6,104,221, -186, 53,206,159, 63,143,243,231,207, 99,244,232,209,110,205,149,183,126,202,100, 50,180,122, 41, 22,191,183,240,248,146,150, 88, -179,180, 81,110,111,154,174,222, 75,195,134, 13, 3,128,255, 68, 52,171,196, 6,203,113,198,193,195, 12, 29, 56,106, 90, 44,150, -194,161, 55,199,186, 74, 66,210,187,143, 51,244,126, 33,132,212,249,248,227,143,223, 87,169, 84,173,243,243,243,159, 5, 0, 63, - 63,191,235,102,179,249,160,209,104, 92, 64, 41,205,126,152,190, 58,150,101,112,213, 5, 79,251,102,101,101,117,232,208,161,195, - 47, 82,169,180,178,227, 7,214, 49,241,207, 17,158,231,239,166,164,164,120,156,170,158,145,145,209,161,125,251,246, 46, 53, 29, -255, 47,137,166, 51,194,236, 79,119,230,202,213,113,156,241, 86, 72, 84, 42,149,194,207,207, 15,219,182,109, 67, 72, 72, 72, 73, -186,247,175,231,220,229,212,217,158,182,183, 10, 81, 30, 6, 16,218,125,222,250,123,135,210, 45, 49,173, 66, 20,241, 91, 63,236, - 83,209,211, 62,233,233,233,237, 7, 14, 28,184, 91, 42,149, 86, 6,138, 62,255,174, 94, 11,150,101,239, 36, 39, 39,151,184,236, - 1,165, 20,215,174, 93,227, 7, 15, 30,156,158,150,150,214,179,164,251, 3,192,196, 41, 95,204,159,241,217,200,224,142,177, 77, - 26,129, 1, 44,238,147,122, 41, 1,168, 84, 38,185, 63,110,210,194,119, 74,115,172,178,130, 82,122,134, 16, 50,173, 81,163, 70, -163,225,182, 46, 56,188,150,169,160,148, 90, 9, 33,243, 59,117,234,244,225,168, 81,163,116,237,219,183,183, 70, 69, 69,157,118, -140,206,251,202,185,203, 41,239,214,171, 21, 26,221,177,221,139, 29, 64, 8,181, 88, 60, 39, 71, 19, 2, 10, 74,169, 92, 46,187, -118,234, 92,226,243,238,219, 21,185, 99, 70,153, 15,205,143, 24, 49, 2, 35, 70,140, 0, 80,240,126, 90,188,184, 5, 54, 93, 60, -134, 30,207, 39,192,252, 85,115,144, 0,143,111,245, 34,253, 4,128,143, 62, 30, 92,102,125,115, 60,119,161,127,101,145,131, 37, -145, 72,144,158,158,142,235,215,175, 35, 37, 37, 5,249,249,249,184,114,229, 10,172, 86, 43,178,178,178,240,220,115,207,149,186, -159,101,245, 26, 61, 78,205,255,130,177, 18, 40,145,193, 98, 89, 54,193,219, 93,207,109, 54, 91,137,102, 25,201,100, 50,211, 51, -207, 60, 67, 92,205, 54, 16,254,246,243,243,243,233,231,179,221, 64, 77, 1, 48,133,216, 63, 17,153,153,153, 15,237, 2, 57,142, - 75,140,137,137,145,184, 51, 46, 0,192,178,172,199,138,113,148, 82, 3, 0,207,113,220, 18,242, 40, 52,157,145,201,100,134,154, - 53,107, 22,230,114, 57,215, 52, 33,132, 64,173, 86,123,204,186,245, 86, 72,212, 96, 48, 36,117,232,208,129,115,220,238, 88,136, -244,169,134,208,248,206,125,254, 47,230, 80,186, 37, 6, 0, 4,147, 5, 74,227,221,237, 66, 41, 53, 2,120,249, 81,119,237,246, -237,219,150, 23, 95,124,241,123,189, 94, 63,156, 82, 90,234, 44,253, 73,159, 44,246, 60,118,253, 47,132, 82,122, 6,192,219,101, -160,115,145, 16, 50,116,246,236,217, 61,103,207,158, 93, 13, 64, 8, 0,161,142,128, 87,147,230,200,185, 43,105,101, 94, 27,140, -101,217,132,170, 85,171, 2,240, 61, 82,227,237, 26,111,179,217, 60,126, 79, 92, 66, 32, 38,157, 4, 10,110,227,150,225,147,166, -201,100,202,108,218,180,105,137,194, 44, 44,203,122,188,134, 56,158,123, 68, 68, 4, 34, 35, 35, 11,255, 23,112, 94,239,173,159, - 44,203, 38, 68, 71, 71, 35, 36, 36,196,109,133,118,231,156, 43, 95, 52,203,250, 53,242,164, 25, 25,185,198,213, 46,143,165,159, - 79, 58, 37, 50, 88,194, 61, 6,203,146,148,148,148, 71,114,111, 20,143, 3,246, 37, 36, 35, 35,163, 81, 89,105, 61,105,100,100, -100, 4,123,111,229, 25,111,133, 68, 83, 82, 82, 60, 22, 34,125,154, 57,148,102, 25, 80,108,157,221,108, 61,110, 12, 6, 67, 69, - 74,105,169, 50,243,123,244,232, 81,118, 25,253, 79, 56,118, 67,188,250,113,247,195, 21,233,233,233,101,126, 77,127, 20,223, 19, -153,153,153,117,203, 90,243, 73, 57,247, 71,209,207, 39, 69,243, 73,231,191,155,125, 38, 34, 34,226,145,210,154, 43, 17, 17, 17, - 17,145,130, 25,101,237, 92,109, 40,201,204, 29, 66,136, 75, 13, 79,120,211, 23, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243, -233,211,244,166, 93,214, 51,135, 31, 27, 66,189,156, 71,177, 0,104, 39,106,138,154,162,166,168, 41,106,138,154,162,166,168,249, - 95, 91,196, 33, 66, 17, 17, 17, 17, 17, 17, 17,145, 50, 70, 52, 88, 34, 34, 34, 34, 34, 34, 34, 34,101,140,104,176, 68, 68, 68, - 68, 68, 68, 68, 68,202, 24,209, 96,137,136,136,136,136,136,136,136,148, 49,162,193, 18, 17, 17, 17, 17, 17, 17, 17, 41, 99,136, -125, 54,128,136,136,136,136,136,136,136,136, 72, 25, 33, 5, 0, 66, 72,161,203,162,148,150,236,206,150, 34, 34, 34, 34, 34, 34, - 34, 34, 15,201,211,230, 69, 10,111,149,243, 52,156,140,136,136,136,136,136,136,200,147,203,211,228, 69, 10,115,176, 28,157,163, -136,136,136,136,136,136,136,200, 63,205,211,228, 69, 10, 13,214,211,228, 26, 69, 68, 68, 68, 68, 68, 68,158, 60,158, 38, 47, 82, - 36,130,245, 52, 57, 71, 17, 17, 17, 17, 17, 17,145, 39,139,167,201,139,136,179, 8, 69, 68, 68, 68, 68, 68, 68, 68,202, 24,177, - 14,150,136,136,136,136,136,136,136, 72, 25,243, 72, 13, 22, 33,164,157,168, 41,106,138,154,162,166,168, 41,106,138,154,162,230, -127, 13, 49,130, 37, 34, 34, 34, 34, 34, 34, 34, 82,198,136, 6, 75, 68, 68, 68, 68, 68, 68, 68,164,140, 17, 13,150,136,136,136, -136,136,136,136, 72, 25, 35, 26, 44, 17, 17, 17, 17, 17, 17, 17,145, 50, 70, 52, 88, 34, 34, 34, 34, 34, 34, 34, 34,101, 12, 1, -224,114, 38, 0,165,116,191,207, 34,165,152, 77,224, 77, 95,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69,205,167, 79,211,155,118, - 73,252,199,191, 26, 74,233, 35, 91, 0,180, 19, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212,252,175, 45,226, 16,161,136, - 71, 8, 33, 82, 66,136,180,180,219,255, 41, 77, 17, 17, 17, 17, 17,145,127, 19, 46,191,196, 8, 33,213, 1, 76, 2, 16,232,176, -250, 20,165, 52,206,169,221, 15, 0, 52, 14,171, 12, 0,166, 82, 74,111,250,112,108,185, 93, 95,105, 95,120, 0, 38, 0,102, 0, -122, 0, 54, 31,207, 65,228, 17, 65, 8,105, 10,160,139,253,239, 93,148,210, 19, 37,217,254, 79,105,254, 83, 68, 70, 70,170,131, -130,130,218,159, 57,115, 70,113,229,202, 21, 28, 61,122,148,174, 92,185,210,154,149,149,181, 47, 49, 49,209,248,184,251, 39,242, -240, 16, 66, 58, 0,152,104,127, 56,147, 82,186,247, 33,245,136, 70,163, 25,237,231,231,215, 89,169, 84, 70,178, 44, 75,242,243, -243, 19, 13, 6,195, 47, 44,203,206,163,148,242,165,208,108, 20, 18, 18, 50,180, 78,157, 58,207,220,190,125,251,254,189,123,247, -214, 2,216, 11,160, 67,197,138, 21,251, 87,169, 82,165,194,165, 75,151,110,164,167,167, 47,167,148,254,241,184,250, 41, 34,242, - 95,199, 93,148, 96, 10,165,180,159,227, 10, 66,138,223,224,186, 77,155, 54,221,246,237,219,167,225,121, 30,194,162, 86,171, 89, - 0, 3,188, 28, 55,248,248,241,227, 49,195,135, 15,239,158,152,152,248,130, 94,175,111, 12, 0, 26,141,230,247,176,176,176, 63, - 22, 45, 90,244, 99,251,246,237, 19, 80, 96,180,124,134, 16, 34,149,201,100, 3,131,130,130, 58,179, 44,219,128, 82, 10,153, 76, -118, 38, 43, 43,107,175,205,102,251,134, 82, 90, 98,211, 70, 8, 81, 72,165,210, 17, 74,165,178, 3,203,178,117, 1, 64, 42,149, - 94, 48,155,205,123, 89,150, 93, 66, 41,181,148, 66, 83,165, 80, 40, 70, 4, 4, 4,196, 90, 44,150,186, 0,160, 80, 40, 46,228, -230,230,254, 98,177, 88,150, 80, 74, 77, 37,213, 44,107,236, 17,164, 46,148, 82, 25, 0, 72, 36,146, 87,155, 54,109, 26, 67, 8, -225, 9, 33,148, 82, 74, 24,134,169,207,113, 28, 99,111,223,133, 16,242, 7,165,148, 45,137,230,139, 47,190, 88, 65,179,144, 17, - 60, 0, 0, 32, 0, 73, 68, 65, 84, 42,149, 82, 74, 41,161,148, 50, 12,195, 60, 95, 18,205,178, 34, 52, 52,116, 6,207,243,145, -158,218, 4, 6, 6,190,112,230,204,153, 26, 27, 54,108,224,190,250,234,171,236, 65,131, 6,249, 15, 31, 62, 92,186,120,241,226, - 37, 0,198, 56,183, 15, 9, 9,153,207, 48, 76,136, 47,199,231,121, 62, 61, 61, 61,125,108, 41,187, 47, 82,118, 76, 92,186, 95, -223,146, 82, 96, 68,172,150, 65,129,113, 41, 53, 81, 81, 81,223,189,253,246,219,125,234,214,173, 43,165,148,194,102,179,193,108, - 54,215, 56,113,226, 68,171,205,155, 55,191, 0,160,103, 73,244, 8, 33, 93, 38, 78,156,248,245,212,169, 83, 67,101, 50, 25,177, -217,108, 77, 54,108,216,208,113,232,208,161,231,150, 47, 95, 94,175, 87,175, 94, 90, 97,253, 39,159,124,210,137, 16,242, 62,165, -244,199,127,186,159, 34, 34, 34,238, 13,150, 31, 0, 16, 66, 82, 0,156,178,175, 59,229,220,232,192,129, 3, 59,164, 82,169, 16, -193,106,108, 48, 24,194, 81, 52,234,229,138, 74,253,251,247,111,186,105,211,166, 25,189,122,245, 74,214,104, 52,207,188,254,250, -235,122, 66,136,100,195,134, 13,245,171, 86,173,170,238,218,181,107,255, 54,109,218,124,176,123,247,238,163, 0,210,124, 57, 17, - 66, 72,237,114,229,202,109,153, 61,123,118, 76,135, 14, 29,228, 33, 33, 33,160,148, 34, 49, 49, 49,234,167,159,126,234,248,217, -103,159,125, 64, 8,121,141, 82,122,217, 23, 61,187,102, 35,181, 90,189,233,179,207, 62,139,232,216,177,163,180,124,249,242, 48, -153, 76,184,114,229, 74,187,189,123,247,182, 92,177, 98,197, 24, 66, 72, 15, 95,127, 37,218, 53, 27, 7, 6, 6,110,254,118,194, -132,240, 38, 3, 7, 74,203,149, 43, 7, 74, 41,210,210,210,218, 29, 91,179,166,213,176,217,179,199, 16, 66,222,160,148, 22,123, -190, 31, 39, 10,133,130, 89,187,118,109, 61,133, 66, 1, 0,176, 88, 44,168, 83,167, 78,113,215, 93, 2,100, 50, 25, 51,111,222, -188, 6, 82,169, 20, 86,171,149,215,235,245,244,245,215, 95,127, 44,195,214,132,144,232,196,196,196, 64,185, 92,238,114, 59,199, -113,104,217,178,101,101,185, 92,142,121,243,230,217,210,211,211,235,127,249,229,151,103,214,173, 91, 23,178,100,201,146, 30,112, - 97,176, 24,134, 9, 73, 72, 72,112,169,201,113, 28,172, 86, 43, 88,150,133,197, 98, 65,173, 90,181,202,252,156, 68, 74, 69, 12, - 0,252,124,222, 4, 0,229, 30, 86,204,207,207,175,102,223,190,125,165,105,105,105,144,201,100,176, 90,173, 72, 78, 78, 70,157, - 58,117, 36,223,127,255,253,179, 37,213,171, 81,163,198,208,184,184,184,176,159,127,254,217,250,253,247,223,155,219,181,107, 39, - 31, 52,104, 80, 64,203,150, 45, 91, 68, 71, 71, 51,171, 86,173, 50,239,223,191,223,250,230,155,111, 42,103,204,152, 17,182,123, -247,238, 62, 0,188, 26,172,178,238,167,136,136,136,123,131, 37,112,138, 82,250, 42, 0,200,229,242,250, 21, 42, 84,248,142,101, -217,242, 0, 32,149, 74,147,101, 50,217, 60,171,213,122, 22, 0, 8, 33,219,121,158,239,230, 69, 47,184,127,255,254, 77,119,239, -222, 61,247,196,137, 19, 57, 25, 25, 25,229,119,236,216, 97,250,224,131, 15,238, 2,192,237,219,183,171,116,237,218, 53,106,228, -200,145, 9,237,219,183, 95,212,186,117,235, 81, 7, 15, 30,252, 5, 5, 67,143,110, 33,132,212,174, 83,167,206,241, 35, 71,142, -104,117, 58, 93,145,109,149, 42, 85,194,168, 81,163,228,221,186,117,171,218,182,109,219,223, 8, 33, 45, 40,165, 23,189,244, 19, -132,144,198,213,171, 87,223,127,224,192, 1,255,160,160, 32,100,103,103, 35, 57, 57, 25,249,249,249, 8, 8, 8, 64,175, 94,189, -228, 47, 55,111, 86, 97,228,232, 49,251, 9, 33,237,124, 49, 89,132,144,198,205,106,215,222,191, 46, 46,206,223,118,239, 30,212, -106, 53,242,242,242, 0, 0, 90,173, 22, 47, 84,174, 44,253,115,205,154,168,126,227,199, 11,154,255,184,201, 34,132, 40, 1,128, - 82,106, 38,132,236,146, 72, 36,175, 42, 20, 10,230,213, 87, 95,197,254,253,251,137,201,100,146, 2,128, 74,165, 98, 95,125,245, - 85,168,213,106, 88, 44, 22, 30,192, 46,119,145, 38, 87,154, 50,153,140,105,221,186,117,254,169, 83,167, 50, 5, 77,141, 70, 99, -107,221,186,117,176, 66,161, 80,179, 44, 75, 61,105, 62, 10, 20, 10, 5,110,221,186, 85,100,157, 94,175, 71, 90, 90, 26, 50, 50, - 50, 96, 54,155,145,157,157, 13,158,231,137, 90,173, 78,227,121, 30, 12, 83, 16,108,115,167, 41,151,203,113,253,250,245, 34,235, - 88,150,133,193, 96,128,217,108,134,213,106,133, 94,175, 87,107,181,218,234,181,107,215, 78, 0,176, 61, 51, 51,115, 94,114,114, -114,124, 89,159,159,136, 79,220,219,117,214, 84, 17,128, 5,192,157, 50,208,227, 1,224,232,209,163, 72, 73, 73, 65,122,122, 58, -210,210,210, 16, 29, 29,141,210, 12,187, 93,187,118,109, 81,253,250,245,201,185,115,231,118, 2,248,122,253,250,245,221, 51, 51, - 51,151,141, 27, 55,174,220,156, 57,115, 50,199,143, 31, 63, 12,192,214,245,235,215, 15,172, 91,183,110,215, 11, 23, 46, 44,124, - 28,253, 20, 17,121, 4, 52, 2, 16,106,255, 59, 29, 5,215,221, 96,135,199,231, 81,240,185, 21,218, 89, 0, 40, 92,252, 47, 32, - 60, 78, 3,240,135,195,126,194,227,135, 70, 24,138,161,194,226,170, 81,120,120,248,232, 54,109,218,204, 61,125,250,116,173,164, -164,164,160,164,164,164,160,211,167, 79,215,106,211,166,205,220,240,240,240,209, 66, 59,251,204, 2, 56, 60,118,156,106, 41, 63, -126,252,120,204,150, 45, 91,102,238,223,191, 63,167,126,253,250,150, 3, 7, 14,176,237,219,183, 79, 5,192, 2, 96,219,183,111, -159,122,240,224, 65,174, 73,147, 38,234,221,187,119,223,255,237,183,223,230,111,218,180, 41, 28,128,196,141, 38, 8, 33, 50,157, - 78,183,237,240,225,195,197,204,149, 35, 21, 42, 84,192,174, 93,187, 2,116, 58,221,118, 66, 72,145,144,130, 11, 77,149, 74,165, -218,124,240,224, 65,127,173, 86,139,212,212, 84,200,100, 50,132,133,133, 33, 39, 39, 7,201, 73, 73,136,191,113, 3,140,197,130, - 5,211, 63,215,170,213,234, 77,132, 16,133, 55,205,192,192,192,205,235,102,204,240,207,216,191, 31,231,166, 77,131,213,106, 45, - 28, 90,181, 90,173,248,109,248,112,164,253,250, 43, 86, 77,153,226, 31, 24, 24,184,153, 16,162,242,164, 89, 22, 56,106, 18, 66, -134, 3,200, 4,144, 73, 8, 25, 78, 41, 61, 81,167, 78,157,211, 87,174, 92, 65,139, 22, 45,176,113,227,198,231,199,141, 27, 55, -124,220,184,113,195, 55,110,220,248,124,139, 22, 45,112,229,202, 21,212,169, 83,231,180, 99,174,148, 47,154,135, 15, 31, 70,155, - 54,109,178, 54,110,220, 88,101,202,148, 41, 51,166, 76,153, 50, 99,253,250,245, 85,219,180,105,147,181,112,225, 66,179, 39,205, - 71,113,238, 2, 28,199, 21, 89,120,254,239,239,150,200,200,200,212, 45, 91,182,160, 87,175, 94,140, 66,161, 72,234,221,187,183, -242,216,177, 99, 20,192,174,146,244,211,100, 50,193,104, 52,194, 96, 48,224,246,237,219,234,217,179,103, 55,255,244,211, 79,171, -237,223,191, 63,106,210,164, 73,195, 66, 67, 67,207,148, 47, 95, 62,166, 36,154, 37, 69,212,116, 75, 50, 0, 43, 10,126,212,197, - 63,140,102,219,182,109,159,171, 86,173, 90,248,134, 75, 65,200,146,215, 0, 47,215,129,151,235,192, 5, 55,194, 45, 69, 39, 84, -172, 88, 49, 92,171,213, 54, 45,137, 38,165,244,151,179,103,207,118,162,148, 46,167,148,114,148,210, 77,227,199,143, 31, 76, 8, -217, 60,126,252,248,119, 41,165,155,236,235, 87,158, 63,127,190, 43,165,244,224,227,232,231,195, 34,106,254, 55, 53,189,120,145, - 80, 66,200, 46, 66,200,174,255,253,239,127,173, 1, 4, 59, 61,126,201,177, 29, 0,133,171,255,133,197, 97,125, 40,128, 87, 28, -246, 11,117,113,236, 82, 81, 56, 28, 99,207,129, 17,126,137,159, 34,132,236, 0,112, 74, 46,151,215,175, 87,175,222,171,123,246, -236,209,134,134,254,125,220,208,208, 80,108,218,180, 73, 91,187,118,237, 87,229,114,121,125, 0,167, 2, 2, 2,118,192,197, 80, -162, 29,221,240,225,195,187,191,245,214, 91,185,245,235,215, 7,128,236,203,151, 47,107,154, 52,105, 98, 96, 89,150,176, 44, 75, -154, 52,105, 98,184,124,249,178,198,102,179,233, 27, 53,106,228,215,182,109,219,187, 99,199,142,237, 15, 64,229, 70, 19, 0,250, -206,154, 53, 43, 58, 40, 40,200,109, 3, 74, 41,244,122, 61,194,195,195, 49,124,248,240,242, 50,153,236,255, 60, 61, 41, 82,169, -116,196,172, 89,179,194,116, 58, 29,178,178,178, 16, 29, 29, 13,139,197,130,235,215,175,195,100,200,131, 77,159, 11, 91,110, 54, -210,254,186, 9,157, 76,138,254,221,186,132, 75,165,210, 17,158, 52, 21, 10,197,136,111,198,143, 15,183,220,189,139,219, 27, 55, -130, 99,139, 7,102, 88,171, 21, 23,190,254, 26,166,132, 4,204, 28, 60, 56, 92,161, 80,120,212, 44, 75,236, 81,166, 57,148, 82, - 53,165, 84, 77, 8, 89,244,210, 75, 47,125,175, 86,171,135,199,197,197,117,216,183,111, 95,199, 35, 71,142,180, 98, 89, 86,198, -178,172,236,232,209,163, 45, 76, 38,147, 84,169, 84, 66, 42,149,186, 52,230,174, 52,155, 54,109,250,157, 90,173, 30,182,108,217, -178, 14, 7, 15, 30,236,255,231,159,127,142,224, 56, 78,193,113,156,226,207, 63,255,124,215,104, 52,202, 40,165,156, 59,205,127, - 26,153, 76, 6,185, 92, 14,181, 90,141,230,205,155,255,181,114,229, 74, 91,116,116,180,108,243,230,205, 65,145,145,145,126,139, - 23, 47,206,214,235,245,179,124,213,179, 90,173, 48,155,205, 48, 26,141, 48,153, 76, 56,112,224, 64,229,145, 35, 71, 74, 77, 38, - 19,215,181,107,215, 76,155,205,102, 30, 63,126,124, 64,185,114,229, 62,120,148,231, 37,226, 22, 22, 64, 30, 10, 12,150, 89, 88, - 73, 8, 81, 18, 66,234, 10,209, 88, 95,200,206,206, 94,241,205, 55,223, 68, 51, 74, 29,142, 89, 58,227, 71,254, 51,236, 11, 92, -140,212,152, 15, 17, 22, 93, 13,125,250,244, 9,163,148, 46,126,216, 14, 83, 74,183, 83, 74,123, 80, 74,183,148,102,255, 71,221, - 79, 66, 72,140,191,191,255,198,128,128,128, 99,254,254,254, 27, 9, 33, 49,165,213, 18,104, 95,157,180,123,181,150, 36,161,125, - 53, 66, 95,173, 37, 73,104, 95,189,228,181,154, 68,254,157, 56,121, 17, 71,210, 40,165, 93, 40,165, 93,102,206,156, 57,195,161, -189,240, 88,237,163,126, 23, 74,105, 23,199,117,118, 99, 85,230, 20, 14, 17, 10,137,203,246, 14, 20,206, 22,172, 80,161,194,119, -223,125,247,157,214,121,199,164,164, 36,228,230,230, 98,242,228,201,218,183,222,122,107,204,253,251,247,223,246,114, 44, 69,114, -114,114,131,126,253,250,169,172, 86,107, 22,207,243, 76,110,110,174, 52, 48, 48,144, 19, 26, 4, 6, 6,114, 57, 57, 57, 50,131, -193, 32,225, 56,206,252,214, 91,111, 41, 6, 15, 30,252, 2, 28, 34, 88,206,132,134,134,198,118,238,220, 89,225,110,187,205,102, -131,193, 96,128,193, 96,128,213,106, 69,243,230,205,149, 43, 87,174,108, 15, 96,153,187,125,148, 74,101,108,108,108,172, 44, 51, - 51, 19,129,129,129,136,143,143,199,157, 59,119, 96,206,203,131, 53, 47, 23,214, 60, 61, 88,125, 46,104,110, 14, 50,110, 94, 67, -147,154, 53,228, 63, 40,149, 29, 0,204,119,167, 25, 16, 16, 16,219,100,192, 0,169,159,159, 31, 90,245, 43,152, 63,176,187,102, - 77, 80,142, 3,207,113,224, 88, 22, 29,174, 95,135,205,102, 3,195, 48,104,148,153, 41, 13, 88,179, 38, 22,192, 92,143,207,234, - 35, 66,169, 84, 74,215,174, 93,219, 87,161, 80,128, 82, 74, 44, 22, 11,246,237,219,247,208,154,107,214,172,233, 47,104, 90,173, - 86,250,220,115,207, 21,251, 32,153,205,230,127,133,185, 2, 10,134, 13, 85, 42, 21,172, 86, 43, 42, 85,170,100,236,215,175,223, -241,233,211,167, 87,100, 24,198, 79, 46,151,239,201,200,200,152,145,152,152,120,219, 87, 61,155,205, 6,139,197, 2,139,197, 2, -163,209,136,191,254,250,171,124,229,202,149,201,240,225,195,185,252,252,252, 42, 95,124,241,197,173,125,251,246,105,102,205,154, -245, 58,128, 81,143,240,212, 68,156,176, 71,161, 3, 43, 6, 75, 13, 50, 9,242, 0,104,237,102,224,117, 66, 72,147, 90,181,106, - 5, 93,185,114, 37,139, 16,114, 18,192,143,148,210, 36, 79,122, 60,207, 19,158,231,241,110,227,108, 12,111, 42,129,205,150,131, -156,156, 28,196,199,199,227,242,229,203,248,253,119,159,211, 65,139,160, 82,169,254,207,223,223,191,189, 74,165,170,196,178, 44, -147,151,151, 23,159,159,159,191,159,231,249, 21,212,121, 24,193, 7, 30, 85, 63, 5,252,252,252,102, 79,154, 52,169, 89, 96, 96, - 32,206,158, 61, 91,101,253,250,245,179,241,144, 73,243, 42, 25,179,106,254,194,197, 81, 81, 97, 58,156, 63,178, 51,106,198,242, - 13,171, 0, 68, 63, 84, 71, 69,254, 21, 56,122, 17, 39,254, 0,240,138,125,118,121, 23, 23,219,125,213,127,168,253, 75, 66,161, -193,114,115, 66, 96, 89,182,188, 99,228,138, 82,138,164,164, 36, 60,120,240, 0,105,105,105, 8, 10, 10,130,213,106, 45,239,195, -177,148,122,189,190,113,112,112,112,190, 76, 38, 51, 27,141, 70,104, 52, 26, 94, 38,147, 81,251,113,136,125, 22, 34,103, 54,155, -137, 84, 42,181,105,181, 90,127,179,217, 92, 3, 30,114,197, 40,165,141,131,131,131, 93,110, 51,155,205,200,203,203,131,193, 96, - 64, 94, 94, 30,204,102, 51,194,195,195,193,178,108, 3, 79, 29,101, 89,182,110,104,104, 40, 18, 19, 19,161, 86,171,145,144,144, - 0, 75,158, 30, 86,189, 30,172, 33, 23, 92, 78, 14,248,220, 92,240,134, 92,216, 44,249,136,122,166, 38,132, 25,134,238,176, 88, - 44,117,131,131,131, 97, 48,252,157, 78, 70,237,198,138,101, 89,176,246,164,103, 97,216, 48, 36, 36, 4,194, 12,195,127, 2,123, -126,212, 56,134, 97, 22, 41,149, 74,233,176, 97,195,144,148,148, 84,228, 61, 49,108,216,176,194,156,171,150, 45, 91, 30, 85,169, - 84,108, 90, 90, 26,204,102,179,204, 23,205, 74,149, 42,197, 79,158, 60,249,148,197, 98,137,142,140,140,212,153,205,102,227,179, -207, 62, 27,169, 86,171,195, 45, 22, 11,247,194, 11, 47,172, 80,171,213,182,188,188, 60,202,178,236, 67, 37,208,151, 21,132, 16, - 16, 66, 10, 94, 35,150, 69, 72, 72,136, 33, 61, 61,253,247,172,172,172,190,165,209,179,217,108,194, 12, 45, 24,141, 70, 80, 74, -113,246,236, 89,168, 84, 42, 25,199,113,151, 88,150,213,200,100, 50, 48,246,228, 46,145,127, 6, 66, 72,171, 26, 58,197,252,184, - 38, 97,186,122, 93,253, 12, 26,133,196,192,199,215,171,244,237,156,203,235,223,234,255,127,218,169, 83,167,198,132,132,132,168, -110,221,186,101,250,252,243,207, 43,175, 93,187,150,192,203,143,159,251,247,239,111,158, 52,105, 82,185,206,157, 59, 87, 81, 42, -149, 36, 39, 39, 7,105,105,105, 72, 73, 73,193,157, 59,119,232,249,243,231,255, 50,155,205, 27, 75,210,207,200,200,200,149, 35, - 71,142,124,171, 97,195,134, 50,160, 32, 34,106, 48, 24,234, 31, 62,124,184,219,238,221,187, 91, 0, 40,241,251,242,254,253,251, - 27, 63,250,232, 35,191, 78,157, 58,213, 80, 42,149, 76, 89,244,211, 17,134, 97,194,253,253,253,177,127,255,126,232,116, 58, 48, - 12, 19, 94, 90, 45, 1,147,149,143,138, 44, 31, 12,211,111,243, 81, 35, 52, 6, 38, 43, 31,245,176,154, 34,255, 14,220,121, 17, - 20,228, 72,129, 82,218,197,139, 73, 50, 78,156, 56,113, 18, 33,100,215,196,137, 19, 39,185,208, 23,246,227, 28,219, 57,180, 55, - 59,239, 83, 90, 74, 84,204,145,231,121, 60,120,240, 0,137,137,137,120,240,224, 1, 50, 50, 50,192, 48,140,167, 39,196, 17, 74, - 8,225,127,249,229,151,160,227,199,143, 27, 26, 53,106,148, 45,228,183,176, 44, 75,108, 54, 27,177,231,189,144,248,248,120,249, -177, 99,199,116, 87,175, 94, 13, 71, 65, 34,154,199, 36, 75, 87, 63,218, 4, 99,229,184,152, 76, 38,168, 84,158, 70, 27,255, 70, -248, 2, 60,123,250,116,129,185,202,211,219,135, 6,115,192,229,230,128, 26,244, 80,112, 54, 40, 64, 65, 76,249, 62,105, 58,230, -243, 0, 40, 52, 87, 86,187,193,178, 88, 44,176,217,108,224,121, 30,172,139, 33,196, 71, 13,165,116,105,253,250,245, 27,108,221, -186,117,208,131, 7, 15,138,109,127,237,181,215, 48,106,212, 40,140, 28, 57,242,234, 43,175,188,114,126,231,206,157, 24, 49, 98, - 4,120,158,175, 71, 8,201,161,148,238,246,164, 57,113,226,196, 63,239,223,191,127,232,198,141, 27,195,194,194,194,148,117,235, -214,189, 89,183,110, 93,201,214,173, 91,195,223,121,231,157,211, 29, 59,118,188,251,235,175,191,150,219,191,127,191,138,231,249, -134,132,144, 7,143,187, 14,150,217,108, 46,140, 56,153, 76, 38, 88,173, 86,192, 67, 82,187, 51,206,239, 77,225,181,101, 89, 86, -208, 38, 91,183,110,193,209,163, 71,153,203,151, 47, 69, 15, 27, 54, 92, 72,164, 47,227, 51, 17,113, 5, 33,164,147,130, 33, 95, -141,171, 23,172,250,224,249, 96,131, 66, 74,242,174,127, 53, 41,239, 78,197, 0, 67,120, 5,141, 37,186,178, 46,114,198,140,233, - 17, 87,175, 94, 51, 79,158, 60,249, 74,239,222,189,195, 62,248,224,131, 90,155, 55,111,110, 65, 8,249,134, 82,154,237, 70, 87, - 62,104,208,160,223,195,194,194,170, 46, 95,190, 60,245,254,253,251, 65, 54,155, 77, 99,179,217,172, 6,131,225, 86,126,126,254, - 49,171,213,186,159, 82,122,186, 36,253,213,106,181,207, 15, 24, 48, 64,150,157,157, 13,251,236, 91,164,166,166,162, 89,179,102, -146, 29, 59,118,212, 46,205,115,144,153,153, 57,159, 16,114,104,221,186,117,237, 3, 2, 2, 26, 42,149,202,242, 0, 56,189, 94, -159, 98, 48, 24,206,149,166,159,142,112, 28,151,114,250,244,233,170, 1, 1, 1,184,119,239, 30, 56,142, 75, 41,173,150,128, 74, -206,220,191,112,100, 71,133,154, 33,149,113,236,248, 73,168,228,204,253,135,213, 20,249,215, 35,228, 72,193,209, 56,185, 48, 70, -199,227,226,226,212, 51,103,206, 68, 92, 92,220, 37,103, 17, 65,131, 82,218, 37, 46, 46,238,146,208,206,161,253,145,178,234,176, -212,126, 32,183, 95, 24, 82,169, 52, 57, 45, 45, 45, 72,167,211, 21, 26,171,196,196, 68, 36, 38, 38, 66,161, 80, 32, 62, 62, 30, - 10,133,194, 99,168,220,142, 73,173, 86,255, 89,191,126,253,103,111,223,190, 45,255,252,243,207, 43,156, 62,125, 58,160, 89,179, -102,207,169,213,106,142, 82, 10,147,201,196, 92,185,114,197,127,238,220,185, 81,141, 27, 55,182, 52,110,220,248,204,134, 13, 27, -140,240, 80,116,148, 16,114, 42, 41, 41,169, 74,165, 74,149, 0,252, 61, 67, 75, 88, 28,141, 22, 80, 48,180, 41,149, 74,207,120, -124, 82,164,210, 11,215,175, 95,111,167, 81, 41, 97,209,231,194,154,151, 11, 86,175, 7,167,207, 1,151,147, 3, 24,114,161, 96, - 89,200, 56, 27,212, 42, 21, 30, 36, 36, 64, 42,149, 94,240,164,169, 80, 40, 46,164,164,164,180,211,233,116,133, 95,158, 54,150, - 45, 88, 56, 14, 22,150, 45,140, 96,201,100, 50,220,191,127, 31, 10,133,194,163,230,163,128, 97, 24, 78, 40,197,224, 10,133, 66, -129,240,240,112,190, 73,147, 38, 24, 49, 98, 4, 56,142, 3, 10,234, 20,182, 34,132, 28,163,148,230,185,211,228,121,158,185,114, -229, 74,247, 91,183,110, 73,100, 50, 25,243,226,139, 47,214,105,222,188,185, 69,161, 80, 64, 46,151, 75,243,242,242,180,251,247, -239, 87,217,108, 54, 98,215,252,199,234, 96, 1,112,105,106,133,100,116,163,209,136,188,188, 60,100,101,101, 73,213,106,245,179, -207, 61,247,220, 73,139,197,178,145,101,217, 85,183,111,223,206,117,167,105, 55,100, 0, 10,204, 22,207,243,160,148,130,227, 56, -216,108, 54,200,229,114,254,240,225, 35,152,187, 96, 54,190, 91,181,150,118,235,214,141,236,216,177, 3, 60,207, 39, 60,154,179, - 20,113, 98, 94,246,143,211, 85, 96, 57,131,249,240,186,188,239,111,228, 26,166,126,191,240, 79,139, 66,146,251,194,203,225,117, -171, 84,126, 86,162,211, 5, 49,203, 86, 44,202,248, 97,237,166, 91,247,238,221,203, 93,178,100, 73,211,103,159,125, 54,240,220, -185,115, 81, 0, 92, 26, 44,127,127,255, 74, 3, 7, 14, 28,152,149,149, 37, 95,187,118,237,234, 7, 15, 30, 28,166,148,254,229, -216,134, 16,210,128, 16, 50, 7,128, 12, 64, 56, 10,242,191,126,161,148,174,241,208, 95,158, 16,130,131, 7, 15, 22,155,237,199, - 63,156, 43,207,170, 91,183,238,243, 55,110,220,216,158,156,156,252,189,243, 70,141, 70,211,173, 78,157, 58,125, 78,157, 58,245, - 49,165,244,150, 43, 1,119,228,231,231,143,223,180,105,211, 28,137, 68, 18,201,113, 92,162,209,104, 28,255, 16,253, 4, 0,152, -108,252,224,184,101,235,191, 54, 90,184,138,106,133,228,158,201,198,191,243,176,154, 34,143, 31, 47,193,154, 52,135,232, 83, 26, - 0,226,244,248,156,253,111,139, 67,219, 52,187,110, 23, 0, 22,167,168,151,171,109,105, 40,195, 34,231,238, 42,185,255, 15, 64, - 99, 0,167,100, 50,217,162,183,222,122,107,238, 15, 63,252,160,205,205,205, 69, 74, 74, 10, 82, 83, 83, 33,149, 74, 17, 16, 16, -128,165, 75,151, 26, 83, 82, 82, 22, 57,238, 67,157, 42,190,219, 49,133,132,132,252,185,118,237,218,242, 95,125,245,149,244,237, -183,223,142,127,229,149, 87,106, 44, 93,186,244,182, 92, 46,167, 28,199, 17,179,217, 76,222,125,247,221,170, 11, 22, 44,184, 43, -145, 72, 52,189,122,245, 34,126,126,126,167, 80,112,225,113, 73, 90, 90,218, 47,219,182,109,235, 62,118,236, 88,165,197, 98,113, - 25,185, 18,214,233,116, 58,252,246,219,111,150,172,172, 44,143,201, 68,102,179,249,151, 61, 63,255,212,242,205,222,189,229, 54, -125, 46,108,250, 92,176,185,185,224,244,217, 32,121,185,144,113, 44,212,114, 30,229,163, 85, 96,141,254,248,233,143,115, 54,179, -217,236,177, 32, 97,110,110,238, 47,199,190,251,174, 85,227,152, 24,233,111,163, 71,195,106,179,161,211,245,235,133,166,202,106, -181, 98,123,221,186,224, 8, 65,189, 33, 67,112,147,101,217,220,220,220, 95, 60,105, 62, 46,206,159, 63,159,218,175, 95,191,211, - 60,207, 55, 64, 9,162, 57, 2,254,254,254,250,188,188, 60,164,167,167,115, 25, 25, 25, 38, 0, 72, 77, 77,205,218,177, 99,199, - 21,158,231, 27,151, 70,179, 44,176,217,138,126,174, 4, 35,196,218,205,111,106,106,170,226,167,159,126,106,121,229,202, 21,249, -197,139, 23,113,244,232,209,122, 63,252,240,195,255, 98, 98, 98,234,198,199,199, 39,187,210,116, 52,109,174,138,245,194,158, 95, -184, 97,221, 70, 12, 29, 58,148, 36, 39, 39,227,199, 31,127,132,183,162,167, 34,101,134, 1, 44,167,182, 28, 94,151,247,202,207, -247,244, 39,146,140,159, 3,216, 75,141, 44,173, 80,161,194,249,134, 13,131, 66, 0,192,108,226,202, 87,175, 94,253,101,169, 84, -170, 0, 0,127,127,255,134,193,193,193, 75, 1, 52,119, 37,250,218,107,175,189, 20, 22, 22, 86,127,247,238,221,231, 30, 60,120, -112,196,217, 92, 1,192,179,207, 62,251,217,197,139, 23, 59,201,100,178,194, 55,134,125,246,148, 75,131,213,170, 85,171,103, 99, - 98, 98,130,127,190, 17,136, 92,121, 53, 80, 73, 14, 32, 85,129,211, 61,143,120,121, 45, 68, 71,159, 12,214,233,116,245,178,179, -179,207,185,218,223, 29,132,144,138,189,122,245,250,105,229,202,149, 53, 59,118,236,168, 0, 80,204, 96,213,172, 89,243,245, 95, -127,253,181,199,176, 97,195,158, 39,132,116,165,190,221,173, 3, 0, 64, 41,141, 7,208,163, 36,125,242,198,190,155,116, 63,236, - 53,203, 68,254, 51,148,164,116, 66,153,148, 89,120, 88,220, 13, 17, 54,230,121,190, 27,195, 48,176, 90,173,113,225,225,225,219, -123,245,234,245,218,255,254,247, 63,255,224,224,224,194,200,213,210,165, 75,141,119,238,220,217,108,181, 90,207, 18, 66,166, 36, - 38, 38,118,139,140,116,251,189,160,255,226,139, 47,214,119,237,218,245,237, 33, 67,134, 24,235,214,173, 27, 80,163, 70,141,252, -227,199,143,251,199,198,198,230, 74, 36, 18,250,219,111,191,105,171, 86,173,106, 34,132, 40,127,253,245,215,140,147, 39, 79, 86, -141,139,139,251, 6, 5,211,166,221,177,110,218,180,105,147,187,117,235, 86, 53, 56, 56, 24,185,185,185, 69, 76,150,240,183, 74, -165, 66,114,114, 50,182,108,217,146,100,179,217,190,241,244,164,176, 44,187,100,241,210,101, 99, 90, 55,121, 49, 42, 64,163, 70, -114, 66, 60,184,156, 44,192,144, 7, 5,107,131, 90, 65, 17, 85, 77, 3,169,196, 15,183,146,243,240,221,241, 63,146, 89,150, 93, -226, 73,211, 98,177, 44, 25,181, 96,193,152, 19,203,150, 69,197,244,236,137,203,107,214, 20, 14, 9, 10, 6,139, 35, 4, 21,219, -182, 5, 19, 24,136, 25,203,151,167, 88, 44, 22,143,154,143, 2,158,231, 37, 22,139,251,226,244, 22,139, 5, 60,207, 39, 92,190, -124,121, 61, 33, 68, 79, 8,105,101,223,116,200, 85,244,202, 81,147, 97, 24,190, 86,173, 90, 91,195,195,195,187, 3, 48,212,170, - 85,107,171, 82,169,108, 99,177, 88, 94,228,121, 62,225,236,217,179, 91, 8, 33,201,132, 16,225, 87,198, 63, 90, 7,203,102,179, - 97,202,148, 41,152, 57,115, 38, 38, 78, 44,184, 91,138,197, 98, 41, 28, 38,204,206,206,174,124,236,216, 49,249,225,195,135,233, -242,229,203, 51,222,126,251,109,221,144, 33, 67,116, 95,125,245,213,251, 0, 92,254, 42,183,217,108, 24, 63,126, 60,150, 47, 95, -142,161, 67,135, 22,219, 46,145, 72,248,132,132,251, 48,153, 76,244,139, 47,190, 72,148,201,100, 65,223,124,243,141,250,157,119, -222,249, 87,228,160,253, 7,248, 72,221,239,227,247, 80,112,141, 89, 68, 41, 61, 36,108, 8, 8, 8, 80,111,221,186, 77, 10, 0, -155, 55,109,145, 81, 74, 3,133,194,176,223,127,255,189,170, 89,179,102, 97,238, 68, 55,109,218,148,253,249,231,159, 7, 15, 30, - 60,184,227,161, 67,135, 52,132,144,159, 81,112,209, 79, 7,192, 1, 8, 1,240, 91,104,104,104,196,250,245,235,171,181,111,223, -222,207, 91, 71,245,122,253, 55,235,215,175,175,180,224, 88, 32,126, 54,116,199,125,190, 39,168,142,162, 92,152, 30,181,252,239, -161,111,223,190,145,139, 22, 45,250, 26, 64, 67, 95, 79,158, 16, 82,251,141, 55,222,216,182,114,229,202,202, 67,134, 12, 73,248, -237,183,223,238, 19, 66, 62,115,209, 52, 99,192,128, 1,241,171, 87,175,174,198,243,252, 94, 66, 72, 71, 74,233, 13, 95,143, 35, - 34,242, 95,132,184,202, 95, 34,132,108,103, 89,182,155, 84, 42,221, 65, 29, 10,141,134,135,135,143,177, 88, 44, 17,132, 16, 42, -151,203,147, 83, 82, 82, 22, 57, 22, 26, 77, 72, 72,232, 22, 29, 29, 93,184,143,189, 88,166, 99,173,140,128, 78,157, 58,181, 59, -113,226,196,151,187,118,237, 74,213,235,245,254,155, 54,109, 82,207,156, 57, 51,158,231,121, 58, 97,194,132,152, 14, 29, 58,228, -115, 28,151, 52,100,200,144,170,149, 43, 87, 30,114,245,234,213,253,112, 48, 88, 46, 52, 65, 8,169, 93,173, 90,181,223, 54,111, -222, 28,160,211,233,144,154,154,138,204,204, 76, 24, 12, 6,112, 28, 7,153, 76,134,180,180, 52,124,254,249,231,185,137,137,137, -197, 10,141,186,209,108, 92, 41, 42,234,151, 69,159, 77,209,234,164, 12, 50,174, 93, 1,155,149, 1, 25,107, 67,133,218,129,144, - 43,212,184,121, 93,143,247,215,109,209,223,203,204, 46, 86,104,212,157,230, 11,213,171,239, 95, 62,110,156,191,233,254,125, 68, - 12, 28,136,252,252,124, 88,173, 86, 48, 12,131,191, 22, 45,130, 60, 52, 20,147, 55,108, 48, 92,186,119,175, 45,117, 42, 52,234, - 74,243, 97,113,212, 36,132, 12, 39,132, 20, 38,185,191,246,218,107, 69,218,110,219,182, 13,203,150, 45,131,217,108,102, 41,165, - 99, 40,165, 75, 9, 33,254, 0,224,104,174,220,105, 86,170, 84,233, 94,157, 58,117,254,224, 56, 78, 10, 0, 18,137,132, 94,190, -124,185,225,157, 59,119, 42, 56,105, 10, 67,215,172, 43,205, 71,113,238,193,193,193,139,118,239,222, 93, 41, 44, 44,140, 56, 86, - 88, 7,254,206,157, 27, 49, 98, 68,219,147, 39, 79, 42,235,215,175,111, 78, 79, 79,111, 20, 26, 26,122, 96,237,218,181, 33,189, -122,245, 74,188,116,233, 82,148,179,102, 72, 72,200,220,205,155, 55, 87,171, 86,173, 26, 35, 68,193,156,135, 33, 7, 13, 26,212, -110,237,218,181,138,238,221,187,155, 13, 6, 67,184, 86,171,189,181,121,243,230,144, 87, 95,125, 53,249,210,165, 75, 17,255,196, -185,139,154,174,169, 83,167,206,205, 75,151, 46, 85, 19, 30, 27,141, 70,164,165,165, 33, 61, 61, 29, 58,157, 14,177,177,177,127, -221,185,115,167,154, 43, 77,123, 84,104,225,138, 21, 43, 58,250,249,249,201,143, 28, 57, 98,216,191,127,191, 41, 62, 62,158,181, -217,108, 52, 34, 34, 66,218,188,121,115, 85,231,206,157,253,148, 74, 37,243,241,199, 31,167, 79,159, 62, 61,132, 16,178,144, 82, -250,190, 43,205, 6, 13, 26,252,190,103,207,158,198,132, 16, 72, 36, 18, 88, 44, 86,100,103,103,227,193,131, 4, 92,190,124, 25, - 39, 78,156,192,190,125,251,206,229,229,229,213,247,245,220, 9, 33, 7,204,102,115, 43,133, 66,225,179,161,231, 56, 14, 82,169, -244, 32,128,118,148, 82,254,105,123,221, 69,205,199,167,249,180,225,105,118, 30, 0, 52, 38,132,108,183,175, 58,229, 92,138,129, - 16,242, 63, 66,200, 20,251,195,198, 62,164, 0,228,238,222,189,251,104,187,118,237, 70,180,109,219,118, 65,251,246,237,147,146, -146,146,170,204,159, 63, 63,154,101, 89,235,229,203,151,153, 91,183,110,197,255,249,231,159,213,158,121,230,153, 33, 87,175, 94, - 61, 12,207,209, 43,161,175,151, 9, 33,205, 90,183,110,189,101,200,144, 33, 21,155, 52,105,162,208,233,116,144, 74,165,184,125, -251, 54,206,157, 59,103,217,176, 97, 67, 66,118,118,182,207,183,202,161,148,158, 34,132,196,246, 26, 57,102,243,144,215,186,134, -188, 88,227, 89, 69, 68, 68, 4, 96, 52,226,218,189,100,156,188,118,206,186,242,232,201, 52,179,217,252,134,179,185,242,162,217, -174,205,184,113,155,167,190,249,102, 56,146,146,164, 17, 17, 17, 80, 40, 20,184,115,231, 14,110,241, 60, 59,107,197,138,148,220, -220,220,127,252, 86, 57, 66,205, 42,158,231,165, 0,160, 86,171, 49,106,212, 40, 56,222, 26,103,217,178,101, 48, 26,141, 0, 32, - 37,132,204, 33,132,172,114, 23,181,114,163, 89,241,231,159,127,174,232,168, 89,179,102, 77, 87,154,101, 54,139,195, 87, 50, 51, - 51, 39,119,234,212, 41, 78, 42,149,186,173, 86, 27, 20, 20, 4,189, 94, 15,150,101,185, 7, 15, 30, 92, 11, 10, 10,130, 76, 38, - 3,165,212,229,231, 40, 35, 35, 99,242, 27,111,188, 49,141, 97, 24,183,145,142,128,128,128,248, 3, 7, 14, 84,127,231,157,119, -152,111,191,253,246,246,224,193,131,149, 7, 14, 28,224, 74, 91,211, 72,228,209,225,248, 99,212,254,227,205,109, 73, 4, 74,233, - 61, 66,200,248,211,167, 79,171,134, 14, 29,218,240,205, 55,223, 12,104,221,186,181,191, 99, 27,163,209,200,239,220,185,211,176, -124,249,242,140, 35, 71,142,252, 49,104,208,160,238, 40,200, 31,113,201,189,123,247,126,154, 49, 99, 70, 96,231,206,157,159, 1, - 80,152,127,149,150,150,134,248,248,120, 92,188,120, 49,222,106,181,238, 40,225,105,141,232,215,175,223,207,171, 87,175,142, 25, - 50,100, 72,194,143, 63,254,184, 3, 64,142,139,118,254,175,191,254,122,183,213,171, 87,199,188,251,238,187,247, 0,140,166, 98, -133,119, 17, 17,143,184, 51, 88, 57, 60,207,195,100, 50,133,243, 60,223,141,231,121,248,251,251,187,106,215, 56, 49, 49,177,155, -227,205,158,225,229,182, 54, 0,210,246,239,223,255,203,186,117,235,218, 78,152, 48,225,205,236,236,236,198,231,207,159,111, 2, - 0, 50,153,236,132,159,159,223,239,113,113,113, 3,199,143, 31,159, 6, 31,204,149,128,221,100,213,154, 59,119,110,153,221,236, -217,110,136,170, 47,217,184,101,196, 55, 74,101,172,211,205,158,127,177,223,236,185, 68, 55,102, 22, 52,199,125,253,245,136,128, -141, 27,255,181, 55,123, 54,155,205,108,247,238,221,191, 97, 24,134, 7, 0,142,227,164,102,179,121, 32, 74, 56,243,212, 89,243, -181,215, 94,251, 86, 34,145,176, 0,192,243, 60, 99, 54,155,255,239, 97, 52,203, 10,187, 81, 28,233,169,205,115,207, 61,183,118, -199,142, 29,253,186,117,235,198, 89,173,214,212,174, 93,187, 74,127,255,253,119,202, 48,140,203, 95,113,118,163,248,161, 39,205, -242,229,203,199, 44, 94,188,248,204,232,209,163, 3,214,173, 91, 87,238,216,177, 99,220, 23, 95,124,145,155,153,153, 57,175,244, -103, 35,242, 40,144,201,100,208,104, 52,176, 88, 44, 72, 75, 75,115, 57,123,217, 17, 74,233, 45, 66,200, 43,227,198,141,107, 49, -110,220,184, 87,162,163,163,107, 87,172, 88,177, 34,195, 48, 76, 82, 82, 82,218,253,251,247,239, 90,173,214, 95, 1,252, 4, 64, - 94,181,106,213,179, 0,214,186,211,203,200,200,152, 70, 8, 57,184,102,205,154, 87,252,252,252,106,169, 84,170,114, 54,155,141, -209,235,245,153, 70,163,241,138,201,100,218, 69, 41, 61, 94,146,115,162,148, 94, 39,132,180,150, 74,165, 63,173, 92,185,178,102, - 82, 82, 82,165,195,135, 15,119,117,110,215,176, 97,195,213,171, 87,175,142, 25, 54,108,216,173,117,235,214,149, 40, 7, 75, 68, -228,191,138,187, 47,182, 25, 10,133, 66, 10,251, 77,159,237,184,138,168,156,114,202,185,202, 1, 48,195, 69, 59,103, 12,125,251, -246,189,211,183,111,223, 57,246, 62, 72, 80, 80,138,129, 69, 65, 6,191, 21, 94, 74, 51,184,194, 62,164,244,181,125, 41, 19,236, -102,103, 46,202,176,224,231,163,208,124, 88,132,154, 85,246, 89, 77, 0, 48,238,236,217,179, 75, 29,219, 16, 66,206, 59,110,247, - 22,105,114,165,121,238,220, 57,103,205,139, 37,209,124,156,100,103,103,143, 89,188,120,241,169,137, 19, 39, 42, 7, 12, 24,128, -139, 23, 47, 98,230,204,153,230,236,236,236,117,165,213, 76, 78, 78,142, 47, 95,190,124,131,133, 11, 23,126,176, 96,193,130, 87, - 9, 33,226,189, 8,255, 37, 24,141,198,191,158,127,254,121,144,130,217, 9,148,101,217,194,217,159,246,138,252,197, 18,215,157, -177, 95,147, 14,218, 23,111,204,241,214,192, 94,182,164, 76, 75,151,216,163,109,175,220,189,123,119,198,245,235,215,247,184,106, -115,233,210,165,109,237,219,183,215,156, 56,113, 98, 82, 73,103, 17,138,136,252, 87,113,105,176,236,191, 78,222,244,182,179,155, -217,130,190,194,193,123,180, 75,228, 31,196,158,255,180,202,254,119, 49,163,227,109,251, 63,165,249,184, 72, 72, 72,200, 2, 80, -120,203,144, 42, 85,170, 20,203, 83, 43, 13,118, 51, 53, 10, 98,229,246,127, 21,183,111,223,238,244,184,251,240, 79, 65, 41,189, - 7,160,159,187,237, 22,139,101, 7,128,146, 14, 63,138,136,252,167,121,236, 67, 51, 34,255, 46,124,137, 74,253, 27, 52, 69, 68, - 68, 68, 68, 68,254,205, 16, 0, 46,111,146, 89,146,217, 1,132,148,252, 70,155,222,244, 69, 77, 81, 83,212, 20, 53, 69, 77, 81, - 83,212,124,250, 52, 29,180, 23,184,217,116,205, 73,239,171,146,246,225, 95, 1,165,244,145, 45, 40,152,198, 43,106,138,154,162, -166,168, 41,106,138,154,162,166,168, 89,154,227, 12,249, 39,142,243, 40, 22,241,134,178, 34, 34, 34, 34, 34, 34, 34, 34,101,140, -203, 28,172, 77,155, 54, 73,132,191,251,244,233, 51,136,227,184,194,233,235, 18,137,100,241,143, 63,254,184,202,147,104,143, 30, - 61, 56, 79,154,174,240,118, 28, 87,154,117,158, 13, 28, 22, 28,168, 25,147,157,147,191,240,118, 34,119,212,100, 50,213, 18,182, -169, 84,170, 43,171, 86,173,242, 88,105,184, 52,253, 28, 52,104,208, 51,206,199,169, 20, 45,107, 85, 78,171, 26,149,153,157, 55, -255,226, 13,253,147, 25,202,124,130,232,217,179,167,199,215,200,153, 59,119,116,204, 25, 68,204, 11,240,147,119,205, 51,216,230, -113,167,167,124,249,168,250,246, 79, 18, 17, 17, 81, 35, 32, 32,160, 63,128,218,249,249,249, 97, 26,141, 38, 21,192,229,220,220, -220,181, 73, 73, 73,215,188,237, 47,208,170, 50,137, 7, 80,209,254,240,222,161, 59, 52,198,151,109,222,232, 80,141,152, 40,160, - 36, 4,214,189, 55,105,225, 13, 46, 59, 86, 39, 38,158, 22, 95,223,161, 58,177, 80, 10, 57, 1,204,123,111, 81,223,238,202,254, - 4, 64, 8, 9, 0, 16, 11,160, 14,128,243, 0,246, 81, 74,125,187, 67,188,136,136,200, 19,139, 75,131, 53,104,208,160,150, 10, - 41,253, 18, 60,213,129,210, 96,179,217, 44, 83, 40, 20,176, 88, 44,208,168,213, 75,134,254,223,128,207, 64,144,109,229,153, 81, -171, 86,173, 42,245,157,167, 75,114, 39,169, 54,227, 0, 0, 32, 0, 73, 68, 65, 84,156, 30, 61,122, 20,155,230, 28, 20,160,158, -118,104,231,132,160,150,175,196,205,180,220,201, 28,175,215,235, 25,165, 82, 9,179,217,140,192,192,192,102, 35,135, 12,110, 72, - 25, 98,145,171,252,142, 47, 88,176,192,229,189,226,124,225,253,247,223, 47,207, 90, 13, 47, 81, 27, 85, 88, 44, 22,165,243,113, -116, 26,191, 89,135,118, 78,208,188,220,101,230,103, 0, 68,131,245, 47,162,192, 92,149,255,234,189,190, 47, 14,152, 61,186, 29, -116,173,102,141, 7,240, 68, 27, 44, 66,136,164, 74,149, 42, 35, 98, 98, 98,122,175, 88,177, 66, 94,165, 74, 21,168, 84, 42, 24, -141,198,136,191,254,250, 43, 98,216,176, 97, 47, 87,173, 90,117,253,237,219,183,151, 80, 74,139,253,136,112, 65,197, 67,171, 63, - 6, 0, 52,235,255,121, 69, 66,200,135, 0,242, 1,224,229, 74,127,111,107, 53,224,243,138,132,144,113, 40, 58,251, 55,137, 82, -234,114,118, 25, 5, 20,187,214,204, 69,183,183, 62,148, 18, 66,134, 9,235, 59, 63, 3,236,249,126, 17, 58,246, 25, 83,100,125, -135,170,144,238, 92, 51, 23, 93,222,250,208,237,221,198, 59, 62,195,216,120,222,117, 97, 87, 0, 96, 24,194,238,189, 73, 93,221, -248, 55,133, 82, 90,236,126,161,132,144, 14, 40,184,209,178,203,246, 93,106, 74, 83,172, 54,206,101,161, 88,185, 76,146,186,235, - 42, 91,108,223, 1, 13,136,205,198, 21, 92, 91,229, 82,112,129,129,129,135, 62,250,232, 35,105,151, 46, 93,176,114,229,202,230, - 95,125,245,213, 16, 66,200,175, 0,118, 80,177,228,129,136,200, 83,139,203, 11,149,130,161,203,247,174, 91, 86, 45, 57, 45, 19, -189,135,253, 15,235,214,173, 67, 86, 86, 22,130,130,130,160, 80,200,101, 75,103,140, 47,175,211,106,202,247, 26, 57,101, 57,128, - 26,165, 61,120, 9,143, 83,221,121,127, 98, 47, 68, 42,149, 72,101, 10,133,140, 89,191,126, 61,178,179,179,161,211,233,160, 80, -200,152, 69,159,143, 85,235, 2,252,212,111,142,153,218, 28,192,198,210,246,147, 53,230, 53,223,249,253,226,128,148,180, 12,244, - 27, 53, 25,206,199,145,201,229, 28, 80,240,133, 82,218, 99,136, 60, 60,233,233,233, 4, 0, 66, 66, 66, 40,224,104,174,154, 12, - 88, 48,182, 61,222,159,191, 15,249, 38, 75,177, 27,217, 62,105, 84,169, 82,101, 68,207,158, 61,123, 79,155, 54, 77,206, 48, 5, -163,252, 6,131, 1, 70,163, 17, 81, 81, 81, 56,116,232,144,124,242,228,201,189,183,109,219, 6, 0, 95,148, 84,255,210,165, 75, -149, 42, 86,172,104, 2,128,174,117,181,206,219, 98,132,109, 0,160,213,106,225,141, 96,157,159,249,210,165,147,181,133,253, 70, -180,141,226,220,172, 55, 1,208,120,210,226,121, 42,221,247,229, 48,183,219,223,153,246, 3,123,126,227,209, 26, 85,170, 84, 49, - 58,174,119, 83, 40, 25, 0,194,243,242,242, 42, 58,175, 20,218, 91,109, 92,152,187,227,181, 31,181,204,165,241,178,113,144,254, -240,195, 15, 0,128,121, 31,246,147,124,253,123,186, 84, 42, 45,184,212,206,153, 51, 7, 83,167, 78, 85,236,221,187,183,243,154, - 53,107, 58,219,111,141, 35,150, 63, 16, 17,121, 10,113,105,176, 8,129, 54, 64,235,135,110,111,143,194,238, 61,123,209,178,101, -203,194,109,149, 43, 87, 70,159,215,187, 98,219,138, 56, 48, 32,222,175,174, 30,120,216,227,100,229, 24, 62,233,212,251,139,207, -239, 37,231,157,216,181,235,103,180,104,209,162,200,254,111,246,234,142,205, 75,167,131, 80, 42,127,152,126,242, 12,149, 7, 4, -248,225,141,193, 99,224,234, 56, 67, 7,116,219,213,177,199,162,118, 41, 25, 6,119, 51, 34, 68, 30, 17, 87,175, 94,149,152,205, -230, 62, 1, 1, 1, 77,100, 50, 89,184, 82, 87,145, 79,148, 54,206, 72, 35, 85,110,167,134,229,183, 28,219, 46,188,227,188,247, - 90,227,253,249,251,176,112,221,201,213, 13,144, 60,197,187,234,191,151,136,136,136, 26, 49, 49, 49, 69,204,149, 94,175, 71, 94, - 94, 30,114,115,115,161,215,235,193, 48, 12,198,143, 31, 47, 63,124,248,112,239,136,136,136,253, 62, 12, 23,222,107,214,255,243, - 2,147, 33,145,229, 77,153, 50,197, 28, 22, 22,102,214,104, 52, 84, 42, 87,234, 91, 13,248, 92, 11, 0,140, 84,174, 95,184,112, -161, 37, 42, 42,202, 36,149, 74, 21, 99,198,140,241, 41,135,211,108, 54, 83, 71, 77,139,197, 92,184,126,214,172, 89,150,240,240, -112,179, 70,163,161, 86,171,251,155,140, 59,115,225, 78, 38,148,114, 9,148,114, 9, 84, 10, 25,180,149, 26, 65,153,117, 17, 44, -203, 98,246,236,217,214,242,229,203, 91, 52, 26, 13, 85, 40, 20,242,209,163, 71,123,237,231,160, 65,131,168, 78,167,179,106, 52, - 26,249,212,169, 83,139,221,151,239,192,249, 7, 80, 43,100,208, 40,165,168, 94, 57, 26, 74,106,116, 37,227, 18,137,164,232,136, -182, 82,169, 68,243,230,205, 81,187,118,109,108,223,190,189, 21,196,250, 82, 34, 34, 79, 37, 82, 0, 32,132,188, 12,224, 16, 0, - 80, 74, 9, 0, 48,160,248,116,112, 71, 12,121,171, 39, 56,142, 47,200,138, 7, 32, 33, 4, 31,246,110, 9,158, 99,193,195,235, -173, 34,188, 78,213, 44,233,113, 28, 53, 41, 97, 36, 0, 80,163, 98, 48, 29, 58,176, 47,120,174, 96, 52,132, 3, 32, 3,240, 65, -207,230,224, 56, 27,120, 47, 69,225,125,235, 39,143,143, 7,181,135,171,227,212,168, 26,206,152, 57, 22,196,225,102,140,190,104, -150, 20, 81,179, 40,199,143, 31,143,208,104, 52,243,251,245,235, 23, 57,122,244,104, 5, 39,213, 73, 55,157,200, 8,156,176,244, - 68,100,190,217, 42,233,219,186, 18,198,190, 89, 23, 99, 23, 30, 16,204,213,144,202,149,179,159,232,215, 40, 32, 32,160,255,138, - 21, 43,138,153,171,148,148, 20, 38, 47, 47, 15, 86,171,149,215,235,245,224, 56, 14, 19, 39, 78,148, 77,158, 60,185, 63, 33,100, -170, 93,199,236, 74,243,208, 29, 26, 67, 8, 25,119,233,210,165,152,143, 62,250,200,218,166, 77,155,123,149, 43, 87, 54, 72, 36, - 18, 68, 68, 68, 44,138,141,141, 45, 55,109,218, 52,107,231,206,157,239, 74, 36, 18, 84,175, 94,221,112,241,226,197, 24, 0,106, - 95,207,221, 81,115,213,129,197, 20, 0, 8, 33,136,141,141,141,175, 94,189,186, 65, 34,145,224,198,206, 89,197, 46, 40,238, 52, -101, 82, 6,207, 68, 5, 22, 60, 32, 4, 80,251, 3, 89, 5, 15, 99, 99, 99, 19,106,212,168,145,199, 48, 12, 46, 92,184, 16, 13, -160, 72, 62,151, 43, 77,181, 90,109,235,219,183,239,189,107,215,174, 21,107, 15, 0, 82, 9,131, 38, 53,236, 1,171,168, 6, 64, -194, 49,183,253,148, 73,192, 78, 30,209, 79,170, 83, 1, 74,109,136, 57, 55, 55, 23, 1, 1, 1, 0, 0,171,213,138,179,103,207, -162,105,211,166, 47,111,220,184,241,176,155,167,203,227,185, 63, 12,162,166,168,249,111,214,116,229, 69,158,100,132, 8,214, 33, -231,147,225, 57, 22,213,162,130,177,244,195, 55,192,178, 28, 56,142,183, 47, 28, 88,150,135,205,106,129, 23,127,229, 19, 15,115, -156,160, 0,245,180,221,235, 71, 7,181,125,117, 78,219, 47, 63,120,253, 23,222,102, 3,199, 3, 44,199,131,179,113,224,121, 30, - 54, 75,217,212,176,228,109, 28,170, 69, 6,227,203, 15, 94,135,243,113, 22,255,180,175,235,129, 29,227, 53, 45,187,204,252, 0, -192,236, 50, 57,160,136, 71,174, 94,189, 42,209,104, 52,243,215,174, 93, 27,211,168, 81, 35, 6, 0,142, 94,103,149, 19,150,158, -136,220, 27,215,140, 52,171, 29,140,212,108, 51,198, 44, 57,135,221, 39, 82,247, 56,155,171, 39,152,218, 85,170, 84, 1,240,183, -185,154, 59,119,110,200,210,165, 75,163, 0,224,141, 55,222,120,208,182,109,219,244,235,215,175, 35, 34, 34,130,164,167,167,191, - 2, 96, 12, 0, 16, 66,198, 81, 74,151,186,209, 53, 84,172, 88,209, 20, 26, 26,106, 22,140, 16,195, 48,144, 74,165,168, 88,177, -162, 41, 44, 44,204, 92,189,122,117,131, 92, 46, 7,195, 48, 16, 12,158, 47, 16, 66, 32,145, 72, 32,104, 58, 34,145, 72, 32,104, -150, 4,153,212,161,189,211,245, 65, 56,142,171,227,185, 67,165, 82, 81, 0,110,219, 75, 24,135,203,163,212,115, 38,192,234, 51, - 84, 70, 8, 57, 68, 41,197,153, 51,103,112,251,246,109,200,229,114,148, 47, 95, 30, 83,167, 78,133,217, 92,112, 77,234,217,179, -231,203, 0, 46,248,212, 65, 17,145,255, 6,197,188,200,147, 76,145, 33, 66, 66,200,203,148,210,195, 0,192,177, 54,112, 28,239, -210,244, 88,109, 44,108, 86,159,239,195,236, 17, 79,199,225, 56,206,227,113,132, 28, 44,158, 82,169, 75,115,197, 23,220, 55,172, - 76,250,201,219, 96,227, 80,204, 92,241, 60, 15, 66,152,130,144, 22,197, 67, 13, 69,138,248,142,217,108,238,219,175, 95,191, 72, -193, 92, 1, 64,186,222, 38,205, 55,219, 36,205,106, 7,163, 97,235,158, 56,125,112, 35, 54, 28,121,128,170,161,154, 35,149,253, -158, 10,115,133,252,252,252, 48,149, 74, 5,131,193, 80, 24,185, 90,186,116,105,148,197, 98, 97, 0, 64, 42,149, 69,167,241, 81, - 42,142, 7, 2, 3,146,144,149,149, 19, 44, 92,176, 8, 33,115, 8, 33,171,168,135,202,249,114,185,188,208,152, 56, 26, 31,165, - 82, 89, 42,227, 34, 32,152, 50,185, 92,238,114,189,243, 48,154, 55,228,142, 6, 11,180, 32,138,229,128, 96,232,132,220, 39,111, - 40, 20,138,194,115,119,133, 84,226,112, 60, 73,201, 83, 45,173, 86, 43,242,242,242,144,157,157, 13,149,170, 32, 64, 70, 41, 5, - 33,100, 12,128,247, 74, 44, 40, 34,242, 20,227,232, 69,158,100,156,175, 62,135, 80, 80,221, 29,172,205,234,210,244,172,217,119, - 26,183, 50,108,136, 10,186, 12,161,173,175,244,238,221,123,117, 68, 68, 68, 19,225,177, 92,163, 13,238,255,225, 44,112, 86, 11, -116, 74,138,247,122,180, 40, 98,174, 56,142,135,213,234, 62, 2,149,149, 99,248,164, 99,207, 69,159, 7,251,105, 79, 56,155,158, -201,155,174,245,200,200,177, 68, 19,233, 85,100,147, 40,174,231,187,159, 14, 18,246, 99, 24,230,252,250,101, 83,198,250,218,111, - 74, 24, 89,215,209, 95, 13,225,228,218, 90, 1, 52,235,200,212, 62,181,182, 58,154,184, 48,127,255, 93, 29,222, 88,208, 46, 37, - 83,204,193,250,167, 80, 40, 20,237, 70,143, 30, 93,228,155, 46, 68, 43, 99, 53, 74, 25,247,219,229,116,114,250,224, 70,230,232, -165,116, 94, 37,151,208, 80,122,187,202,227,234,103, 89,163,209,104, 82,243,243,243, 35,140, 70, 35,114,115,115,145,155,155, 91, -100,187, 84, 38, 35, 67,134,142, 12,145,201, 21,176, 89, 45,216,189,118,186, 87,205, 86,149, 73,252,203,149, 80,177,107, 93, 45, - 36, 50,133,254,114,149, 42,139,164, 82, 41, 24,134,193,206, 37, 19,198,108,153, 63, 74, 11, 0,231,119, 45,201,237, 51,126,241, - 23, 12,195,192,108, 54, 43, 75,210,239,251,247,239, 71,155,205,102,147,221,152, 9,134, 15,119,238,220,169, 96, 54,155,141,142, -235,125, 65,173,209, 2,186,202,128,166,104,158, 57, 33, 4,119,239,222,141,180,217,108,249, 82,169, 20, 22,139,197, 39, 55,196, - 48,140,252,194,133, 11,209, 60,207,187,108, 95,187,106, 36, 80,190, 46,160, 8,244,181,139, 66,145, 68,175,109, 8, 33,244,105, -250,213, 46, 34, 82, 6, 20,122,145, 39, 25,193, 96,181, 34,132, 20, 94, 13, 40, 5, 88,171,181,208, 88, 21, 68,152, 10,254,190, -147,195,227,218,141,155, 88,184,112, 33, 14,255,249, 65,224,180,105,211,148,147, 39, 79, 54,247,238,221,123, 62,207,243,207, 51, - 12,115,190, 71,143, 30, 99, 92, 29,140,231,249, 10,167, 79,159, 46,252,178,179,217,108,208,106,181,208,106,181,168, 83,165,124, - 49,115,197,218, 35, 88,238, 46, 83,148, 48, 18, 80, 0, 20,148,229,108,224,108, 40, 52, 61, 25, 57,150,232,109, 7,207, 85,115, -104,254,172,240, 71,243, 70,181,138,139,217,233, 61,108,106,225,121,172, 95, 54,101,236,180,149, 43,149, 89, 92,248,232, 62,189, - 6,215,233,217,167, 63,250,189,222,241,101,147,201,182, 93,202,128,183,241, 28, 56, 27, 15,158, 82,134, 2, 69,114,176, 68, 30, - 29,233,233,233,196,104, 52, 86,210,233,116,133,235, 40,165,136,240, 51,152,199,247,122, 38, 49,118,194,177, 72,147,149,131, 82, -198,208, 49,175,198, 36,254,190,109, 67,112,186, 57,157, 8,179, 11,159,112, 46,223,186,117, 43,162, 66,133, 10,200,205,205, 5, -203,178,252, 27,111,188,241, 64, 42,149, 69, 75,101, 50,210,165,207, 72, 62, 57, 57,209,198, 48, 18, 80,202,161, 83,207,225, 68, -169, 82,203,173, 22, 11, 11, 96,156,155,232,149, 99, 41, 6,109,108,108,108, 57, 97,102,223,150,249,163,180, 14,219, 2, 26, 54, -108, 88,206,113, 22,161, 47, 40, 20, 10,210,187,119,111,117,197,138, 21, 9, 0,252,177,246, 35, 0,128, 92, 46, 39, 93,187,118, - 85, 85,172, 88,144, 95,255,235, 18,223,239,117, 29,162,161, 64,206, 29, 32,231,110,145,245, 18,137, 4, 93,187,118, 85, 86,169, - 82,165, 68,159, 69,123, 98,187,219,218, 91,126, 82, 22, 72, 62,227,147,214,128, 6,196,246, 81, 75, 72,231,119, 98,160,240, 15, - 54, 55,153,176,247,119, 79,237, 69,147, 37, 34, 82, 72, 17, 47,242,164, 35, 5, 0,123, 40,174,200,135,155,181, 89,139,153, 43, -142,227,161,226, 12, 88,184,112, 33,222,123,239, 61, 0,144,143, 29, 59,118,235,180,105,211,186,243, 60,255, 60,165,180, 5, 33, -238,175, 17, 12,195, 28,138,136,136, 72,161,148,202, 24,134,105,177,100,201,146,114,157, 58,117,130, 86,171, 5,229,105, 49,115, -197,113, 60,108,102, 75,129,227,115, 65, 80,128,122,218,158, 77, 99,130,218,188, 58,187, 45,103,195, 47,130,185,226,108,127,167, -197,103,164, 36, 96,223,158,237, 88,190,108, 69, 22, 8,189, 10, 10,158, 97,152,243,238,250,200,243,252,243,199,254,184,210,162, -121,163, 90,152,182,114,165,242,210,233,164,173, 35,223,255,168, 78,207, 62,253,177,241,199,181,144, 88,179,206, 72,153,240,191, -205, 21,199, 33, 77,159,219,245,192,206, 9, 98, 14,214, 99,194,102,179, 33, 43, 43, 11,182,188, 44,246,133, 8, 67,206,167, 61, -195,204, 41, 89, 38,169,140,207,103,107, 6,164,154, 15,102,222,149,104, 52, 30,103,255, 63, 49,228,230,230,174, 29, 54,108,216, -203, 71,142, 28,145, 51, 12,131,220,220, 92,180,110,221, 58, 61,141,143, 82, 13, 25, 58, 50, 36, 49,241, 1, 27,160,150,154,229, -114, 25, 82, 83, 83,249,151, 59,247, 53,246, 25, 52, 38,242,189, 73, 51,190, 74, 60,190,204, 93,254, 85, 17, 28,103,246, 57,111, -251,250,235,175, 45, 81, 81, 81, 38,165, 82,169, 24, 48, 96,128, 79,227,132, 22,139,133,206,154, 53,203,236, 60, 91,208, 98,177, -208,133, 11, 23, 90,162,163,163,205,106,181,154,218,108,222,211, 14, 24,134,176,239, 76,251,129,101, 89,182,112,157,112,205,145, - 72, 36,176,241, 36,239,203, 47,191,180, 70, 71, 71, 91, 52, 26, 13, 85, 42,149,114, 95,250, 57,114,228, 72, 26, 20, 20,100,245, -243,243,147,143, 31, 63,254,161,102, 17,218, 56, 72,167, 45, 41, 44,211,160,212,106,181,208,235,245,133,125,141,136,136, 40,182, -143,104,178, 68, 68, 92,123,145, 39, 25,151, 9, 10, 60,229,243, 82, 82,211,195,116,145,213, 96,179,177,224, 88, 27, 88, 27, 11, - 27,107,195,184,129,175, 33,110, 89,193, 72,152,221,100,197,142, 29, 59,118, 43,224,253,182, 59,235,215,175,255,124,236,216,177, - 1, 41, 41, 41,123, 87,175, 94, 93,174, 95,191,126, 24, 55,110, 28,230,204,153, 3,169, 66,133,192,242, 49,133,199, 97,109, 44, - 56, 27,139,212,140, 44, 80, 74,243, 92,233, 9, 57, 88,148, 66, 26, 80,190, 50, 56, 78,216,215, 6, 70, 82, 48, 51,125,223,158, -237,232, 55,112, 20,100,202,192,160,197, 11,103, 27,235,188, 16,209,125,242,224,193,222, 51,223, 9,152, 75,167,147,182,142,124, -111,124,172, 96,174,182,172, 89,114,117,201,152,216,117, 26,133,180,240, 56,156,205, 6,134,145,136, 57, 88,255, 32, 33, 33, 33, - 52, 45, 45,237,110,118,118,246,179,126,126,126,200,200,200, 64,102,102, 38,178,179,179, 97,206,205, 98,131,185,108, 3, 97, 51, -241,255,236,157,119, 92, 83,215,251,199, 63,207,205, 14,123, 41, 67, 4, 7, 14, 20,172,171,110, 28,173, 90,107, 29,109,197,189, -103,181,213, 86, 91,235,172, 3,247,104,221, 86,171,214, 90, 90, 7,126, 29,173,213,186,234,172,171,162, 56,192,133, 3,217,130, -140, 64, 8,153,247,252,254,128,208,128, 1, 18,196,174, 95,222,175, 87, 94, 33,247,158,251, 57,231, 50,146, 15,207, 57,207,115, -132, 66, 33,158,197,235, 97, 48, 24, 82,254, 35,209, 43, 36, 39, 39,223,173, 93,187,246,238,153, 51,103, 14,152, 62,125,186,136, -231,121,220,187,119, 15, 12, 96, 34,177, 4, 28,199, 65, 36, 18, 34, 59, 91,193,219, 57,184, 36,107,153,192, 78, 36,150,128, 19, -136,203, 42, 56,250,180,227,240,130, 50, 13,156, 80,156, 99,204,236, 19,139,197,184, 20,177, 82,209,113,248, 2, 39, 0, 16, 75, -229,153, 93,187,118,141,107,208,160,129,242,234,213,171,254, 40,145, 69, 88, 18, 2,244,239, 14,255, 92, 96, 39,151, 41,187,116, -233,242,212,168,249,228,248,122,197,144, 9,179,136, 4, 18,101,143, 30, 61,226,130,130,130,148, 2,129, 0, 49, 7,151, 43,222, - 29,254,185,140, 10, 18,116,205,114,244, 1, 27,115, 35,226, 92,253, 69,139, 22,233,186,119,239, 30,111, 92, 15,246,228,201, 19, -159,119,222,121, 71,186,106,213, 42,221, 59,239,188,147, 16, 28, 28,156,203,113, 28, 34, 35, 35,205,102, 5,150, 68, 46,151,235, - 70,141, 26,245,244,214,173, 91, 21,202, 34, 44,143,234,213,171,131,231,121,116,234,212, 9,249,249,230, 3,128, 54,147,101,195, -198,127, 11,179, 6, 75,203,243, 31, 13,157,182,114, 61,129, 28,120,176, 98, 89, 58, 12, 0, 24,163,207, 62,251,212, 30,128,220, -104,178, 38, 79,158,156, 89, 94,103, 38,230,170,249,160, 65,131, 48, 99,198, 12,124,249,229,151,134, 21, 43, 86, 8, 98, 30,198, -107, 67,167,172,200, 42,209, 15, 24, 99,185, 6, 3, 62, 50,167,151,153,173,156, 27,242,206,210,249,137,169,121,231,251,126,186, -164,216,187, 86, 22, 21, 20, 51,220,244,245, 38,165, 72,234,108,223,119,192, 16, 0,232,178,126,245,242,253, 11,177,181,124,147, -197, 40,240,163,201,159,187, 26,205,213,134, 85,139,110,185, 82,234,186,209, 95, 68,191,176,106,222,217, 1,251, 67,222, 89,250, -214,179, 12,229,154,242,190, 7, 54, 42, 7,141, 70,115, 98,237,218,181, 53,102,207,158, 45,201,200,200, 64,122,122, 58, 50, 51, - 51,139, 30,185,185,185,240,242,242,194,175,191,254,170, 85, 40, 20,151,254,238,241, 86, 38,143, 30, 61,218,240,211, 79, 63,225, -204,153, 51,253,167, 79,159, 46,242,242,242, 34,103,231, 20,210,105, 53, 0, 24, 75, 75, 75,227,237, 28, 92,146, 61, 60,125,159, - 38,165, 60, 11,212,105, 53,224, 13,218, 82, 87,145, 23,150,105,248,236,246,237,219, 53, 86,174, 92,169, 49,205,236, 27,240,249, -250,181,205,154, 53,115, 91,183,110,157,166, 71,143, 30,113,198, 69,233,150, 44,114, 63,246, 16, 31,223,190,125,179, 97, 73,205, -142, 99, 87,110, 51,106,154,102, 23,246,252,116,243,182, 58,117,234,184, 5, 5, 5,197,149,165, 91,171, 86, 45,149,183,183,183, -166,126,253,250,185, 34,145,168, 32,114,165,211,229,213,170, 85,139,247,244,244,212, 52,104,208, 32,215,218,197,248,114,185,156, - 1, 47,214,172, 50, 98, 77, 22,161, 72, 0,253,160, 65,131,138, 42,185,127, 86,167, 78,242,144, 33, 67,188,167, 76,153,130,109, -219,182,225,247,223,127,207, 40,121, 77,135, 14, 29,112,246,236,217,249, 0,230, 90, 52, 96, 27, 54,108,252,227, 49,107,176,182, -111, 15, 63, 9,147, 53, 75,230, 88,184,112,161,180, 48,114,213,229,147, 79, 62,129, 74,165,114, 45,217,134,136, 58, 27,107,101, -152, 51, 87,203,151, 47,223,201, 24,243, 5,208, 78,111,224, 47,127,243,237,142, 78,229, 13,216, 84,147, 17, 39,224, 56,202,149, -136,216,245,175,191,217, 94,172, 66,119,225,162,246,122, 32,220, 88,191,122,185, 10, 64,151,146, 38, 43, 52, 52, 52,175,164,166, -145, 15,198,143, 43, 50, 87,235, 87, 47, 63, 30,212,220,239,189,217,163, 23,152, 53,101, 11,230,142,179,231, 56,106, 99,186, 6, -203,156,230,203, 98,211,252, 83, 83, 42,149,238,220,181,107, 87,247,144,144, 16,255,215, 94,123,141,203,200,200, 64,110,110, 46, -114,115, 11,130,157, 30, 30, 30,136,137,137,225,227,226,226, 18,165, 82,233,174,191,107,156,175, 66,179,112,251,155,181,222,222, -222, 39,230,204,153, 51, 36, 61, 61,253,157,204,204, 44,247, 95,190, 91,136,110,125,199, 83,135,238, 3,149, 26, 38,148, 37, 36, -167,214, 63,125,248, 71,183, 35,187, 55, 64,171,209,140, 37,218, 20, 99, 44,211, 96,102,156,121,198,114, 12,245,235,215, 87,154, - 26, 20, 63, 63,191,124, 31, 31, 31,117, 80, 80, 80,209,113,115,217,121,230,238,221, 90,205,194,245, 93,202,178, 52, 1, 20,153, -181,146,229, 31,236,236,236, 96, 52, 93,214,140,211, 52,123,210, 28,229,101, 17,154,106,126,119,141,137, 76,207,125, 71, 36, 8, - 15, 15,239, 28, 30, 30,222, 28,192,117, 0,199, 0,232, 10,175, 43, 90, 12,207, 24,155, 7, 96, 94,121,247,254, 50,216, 52,109, -154,255,100,205,255, 26,150,229, 48,151,192,184,160, 29, 0, 55,121,242,228, 76,149, 74,229, 58,100,200,144, 50,175, 73, 73, 73, -217,182, 99,199,142, 98,230,234,253,247,223, 31,177,119,239,222, 19,207,158, 61,171,200, 48,224,234, 36, 95,120,230,231,105,174, - 29,122, 44,253, 4,192, 10,179,141, 24,248,160,230,222,239,173, 95,189,124, 63,138,155,172,239, 1,188,111,230, 10, 2,128,174, -221,122,227,199,237,235,140,107,183,228,183,174, 38, 30,233,127, 45,204,108,246,161,139,131, 52,172,112, 28, 83, 96, 91,131,245, -151, 16, 24, 24,104,184,112,225,194,148,241,227,199,127,245,230,155,111, 86,235,221,187,183,184,122,245,234,144, 74,165,120,248, -240, 33,206,157, 59,167,125,244,232, 81, 98, 94, 94,222,148,215, 94,123,205,146,253,248,254,117, 36, 39, 39,223, 45, 44, 34,250, -177,113, 90, 73, 42,147,139, 7,142,252,196,183, 40,139,112,247, 6,168,243, 85, 0, 32,180,164, 76,131, 80, 40, 20, 71, 69, 69, -249, 27,163, 84, 90,173, 86,106, 60,126,245,234, 85,127, 99,109,172,252,252,124,139,179, 8, 95,149,230,205,155, 55,125,141,217, -142,198,108, 65,161, 80, 40,142,140,140,244, 53,106,170,213,106,139,178, 8, 37, 18,137, 56, 42, 42,202,215, 96, 48, 84, 90, 22, -161,145, 66, 67,124,180,240, 1,160,192, 88, 21,154, 43, 42,156, 22,180, 77, 15,218,176,241, 31,163, 66, 6,203,184,160,221,210, -246, 68, 36,172, 81,163, 70,215, 1, 3, 6, 20, 51, 87,161,161,161,134,125,251,246,157,246,246,246, 78,229, 56,174,188,237, 60, - 94,212, 53,174,193, 42, 40,168, 94, 12,142,227,110,180,123,189, 1, 56,142,187, 49,123,244,104,245, 66,108, 45,102,178, 14,238, -223,243, 86, 41,178, 12, 0,220, 61,125, 49,104,196, 68, 12, 26, 49,209, 21, 64, 91,160,244,236,195,178,198, 97,227,213,209,166, - 77,155,228, 59,119,238, 12, 58,126,252,248,192,179,103,207,118,206,203,203,171, 65, 68,144,203,229, 79, 52, 26,205, 9,169, 84, -186,243,191,106,174, 74, 67,171,213,234,167,207, 95,185, 67, 32, 16, 25,120, 94, 75, 90,173,118, 4,172,248, 59,159, 62,125, 58, - 7, 51,107,171, 38, 78,156,104,246,248,223,165, 57,115,230, 76,179, 89,127, 19, 39, 78, 44, 51, 27,176, 52, 62,253,244,211, 74, -203, 34,180, 4,155,145,178, 97,227,191, 79,133, 12, 22,199,113, 55,204,100, 11, 18, 0,102, 46, 67,143, 49,166, 23, 8, 4,243, - 93, 92, 92,198, 41,149,202, 95,223,127,255,253,201,161,161,161, 6,160, 96,225,123, 69,198, 0, 20,172,193,234,216,115,217,148, -172, 92,245,186,146,231, 74, 70,154,140, 38,107,195,154,229, 27,247,239,221, 21,154,146,148, 96, 54,163,202,104,204, 74, 59,103, -238,120,182, 66, 53,191, 99,207,101,159,100, 42, 84,182, 53, 88,127, 49,129,129,129, 6, 0,225, 0,194, 75,110,246,252,255, 1, -198,152,154,136,166, 18,145, 49,130, 59,245,209,169, 53, 69,191,219, 68,235,110,152,158, 43, 35,122,149,108,201,198,205,230,174, - 43,235,220, 43,208, 76, 45, 99,227,230,178, 72,181, 82, 47, 21, 0,196, 34,193,179,210, 54,117, 22,139, 4, 21, 11,189,151,192, - 24,197, 2, 48,191, 50,244,108,216,176,241,207,192,172,193, 50,154,159,210, 40,173,206, 85, 89, 24, 12,134,101, 0,150, 89,123, - 93, 89,220,186,159,243, 13,128,111, 44,109, 95,184,230,106, 88,225,195, 44,134,231,183,173,190,183,208,208,208, 77, 0, 54, 89, -123,157,141,138, 17, 17, 17,241,255, 42, 42, 85, 30,140,177,141, 68,244,109,225,215,106, 75,207,149,104, 87,233, 27, 14,191, 34, -205,163,229,183,170, 60,189, 67,119,244,158,149,217, 95, 25,227,176, 69,180,108,216,248,143, 81,161, 8,150, 13, 27, 54,254, 89, -148, 99,158, 42,103, 67, 78, 27, 54,108,216,176, 97, 49, 4,160,179,185, 19,214,100, 7, 16,145, 89,141,178, 40, 79,223,166,105, -211,180,105,218, 52,109,154, 54, 77,155,230,127, 79,179, 60,109,211,235,137,104, 44, 99,204,226,153,170,127, 20,172,160,214,212, - 43,121, 0,232,108,211,180,105,218, 52,109,154, 54, 77,155,166, 77,211,166, 89,193,126,198,254, 21,253,188,138,135,101, 85,248, -108,216,176, 97,195,134, 13, 27, 54,108, 88,140,109, 13,150,133, 80,245,119,191, 0,216,140,130, 23,180,156, 61, 61, 48,239,239, - 29,209,191, 23, 34,242, 0,208,195, 81, 38,238,213,208, 69,220,250,214,243,252, 11, 74,173,225,103, 0, 7, 25, 99,229,238, 8, - 96,195,134,141,151,135, 92, 27, 86, 7,209, 72,128,253,153, 70,201,179,104,150, 21,179,189, 88, 59,151, 6, 35,192, 81, 67,147, - 67, 42, 48,108, 97,153,209,241,102,117,255, 76, 49,119,137,141,141,245, 15, 8, 8,136, 3,144, 85,162,217, 11,231, 88, 97,184, -162, 52, 77,143, 90, 77,135,218,201,236, 38,104, 52,154,154, 14,142,142,207, 50,158,167,109,202,120,122,115,131, 73, 51,167,203, -151, 47,123,183,108,217, 50, 9, 64, 78,121,154, 54,108,188,106, 94,218, 96, 81,221, 62, 53,161,231,134,129, 97, 48, 8, 81,236, - 81, 68,159, 10,233, 4,188, 95, 13,188,176, 5,128,166, 0,107,106, 47,151, 53, 81,105,180,207,120,198,134,178,216,221,215,173, -214,171,213,247, 23, 0,221, 75, 57, 59,159, 61,218, 51,207, 58, 69, 54,243,143,179,251,164, 46,118,132,128,102,239,125, 14,147, -138,203,255, 36,136, 72, 14, 96, 56, 17,189,105,103,103, 87, 55, 47, 47,239, 9, 99,236, 38,128,141,140,177,164, 10,106,114, 0, - 70, 57,216,219,119,243,119,148, 52,125,154,158,157,152,163, 51,156, 3,176,194, 90, 67, 68, 68, 18,127, 87,251, 51,171, 7,116, - 12,108,221,176, 14,248,232,179,200,215,104,123,157, 78,200,237, 53,247, 98,210, 20, 34,106,202, 24,211, 88,168,229, 13, 64,200, - 24,139, 47,124,109, 15, 32, 8, 64, 45, 0,143, 0,220,102,140, 41,203,144,176,164,143,127,133,166,175,175,175, 15,207,243,163, - 61, 61, 61,223, 73, 77, 77,253,133,227,184,173, 9, 9, 9, 21,250,121, 87, 34,155,141,235, 39, 44,125, 6, 48,206,154, 14,228, -114,121,106,126,126,126, 85, 0,144,201,100,207, 84, 42,213, 43,203,250,251, 43,251,250, 75, 32,140, 57,118,254,118, 55,211, 67, - 93,219, 53,124,177, 29, 71, 13,143,157,143,110, 95,188, 93,144, 1,102,222, 3, 11,171,166, 98,254,252,249, 20, 22, 22, 54,162, -118,237,218,117, 56,142,187, 55,103,206,156, 98, 37,108, 74,158,155, 59,119,238,159, 21, 87,205,104,250,214,107,115,176,255,128, -190, 29, 63, 28, 59,220,161, 90, 21, 7, 36,167, 43,221,191,222, 22,190, 50, 60,252,199, 30,163,251,119,233, 6, 0, 11, 22, 44, -120,183,122,245,234, 53, 4, 2,193,227, 47,190,248,226,251,178, 52,109,216,248, 43,168,144,193,162,134,125,237,145,207, 66, 1, - 26,222,161,117,179,118,227,134,246, 36, 38,144, 97,224,152,105,250,242,175, 46,161, 85, 99,132, 20, 2,213,194, 70, 65, 13, 39, -247,237,217,153,107, 30, 84, 3,222, 85,156, 1, 78,132,205,135,159,184,175, 91,254,197, 70, 0, 45, 43, 48,204,238, 15, 47,238, - 68,114,150, 1, 68, 0, 17,192, 17,144,155,207,163,235,187,195,230,194,106,131, 68,156,139, 29, 97,242,206,124, 0, 84,234,190, -110,127, 39, 68,212,180, 74,149, 42, 27, 38, 77,154,228,218,168, 81, 35,111,153, 76,102,167, 82,169,234,196,198,198,214,156, 61, -123,118, 23, 34, 90,202, 24,219,103,165,166, 95,128,175,207,158,117,147, 71,181,120,173,150, 63, 68,154, 92,240,106,101,245,251, -177, 15, 90,127,176, 49, 98, 12, 17, 13, 96,214,109,151, 48,107,243,196,161,129,193,142,128,246,246,239, 16, 9, 4,176,115,118, - 69, 23,161, 0, 2, 66,131, 97, 71,159,204,132, 5,251,177, 21, 86, 48,159, 89,240, 37,253, 40, 16, 8,142,119,238,220,185,230, -232,209,163,169, 89,179,102,136,140,140,172,181,115,231,206,206, 66,161,240,177,193, 96,184, 9,224, 30, 99,236,133,125, 36, 75, -209, 22, 1,168, 39, 16, 8, 26,253,147, 53,125,124,124,228, 26,141,102,152,175,175,239,216, 94,189,122, 53,234,217,179, 39,213, -171, 87, 15,119,239,222,109,118,228,200,145,185,141, 27, 55,190,153,144,144,240,141, 68, 34,217,145,148,148,164,178, 68,179,127, - 48,221,221,125,139,213,175,232,249, 18,247, 60, 22,128, 79, 97, 64, 99,190, 5,207, 73, 0,230, 51,198,202,170,131, 85,140,252, -252,252,170,198,207, 79, 34, 50, 91,175,170,178,176,166, 47, 34,138, 33, 34,183,194,175, 81,214, 51,199,113,208,235,245, 74,189, - 94, 95,187, 28,205,122,128, 85,203, 58, 24, 99,172,172, 2,206,114, 0,232,218,182, 97, 6, 8,209, 0, 0,158, 69,191,208,138, -103,209, 69,198,139,161,225,177,223,163,221,138, 69,189, 74, 48,127,254,124,154, 59,119, 46,230,205,155,215, 19, 64, 8,207,243, -231, 2, 3, 3,215, 22,147,228,249,162,115,115,231,206, 93, 51,127,254,124, 66,177, 93,111,255,196,173, 70,227, 33,239,189,215, -187,227,162, 89, 19, 29, 18,159,107, 17,245, 88, 5, 55, 7, 49,230, 78, 29, 47, 81,171,117,173, 55,126, 31, 62,118,253,210,105, - 91, 12, 6,195, 27, 0,154, 27, 12,134,171, 0,190, 47, 75,211,134,141,191, 2,139, 13, 22, 17, 17,106,247,105, 15, 3,134,251, - 87,247, 12,157, 52,186,159, 60, 40, 48, 0,249,112,192,147,116, 3, 14, 31, 58, 2, 0,187,173,233,156,106,245,111, 46, 20, 99, -199,242,121, 83,235,135,180, 8,194,173, 68, 29,174, 38, 26,144,247, 88, 7, 1,167,131,129,103, 0,131,249,173,231, 45, 32, 33, - 83,143,243,247, 52,224, 8, 16,112, 0,199, 17, 4, 21, 93,117,102,208,220, 95,176, 61, 50, 40, 61,149, 7, 12,154,251, 21, 29, -211,171,130,136,222,168, 91,183,238,234,176,176, 48,175,212,212, 84,183,171, 87,175, 66, 42,149,194,213,213, 85,232,227,227, 83, -127,245,234,213,217, 19, 39, 78,156, 74, 68,215, 25, 99, 79, 44,212, 12,236,222,188,209,133,111,150, 47,112,214, 93, 62,130,172, - 93,255,131,128, 99, 16,219, 59,160,166, 92,142, 35,239, 5,184,133, 30,122,188,143,136, 2, 25, 99,137,150,104, 6,120,185,119, -109, 20, 24,136,204,253,235, 17,149,153,143, 35, 73, 42,140,236,210, 10,193,110,114,132,232, 13,240,178, 23,189,129,114, 12, 22, - 17,185, 2,152,166,209,104, 56,177, 88, 76, 50,153,108,200,162, 69,139,180, 3, 7, 14, 76, 48,182, 9, 9, 9, 65, 72, 72, 8, -229,228,228,212, 58,117,234, 84,173,240,240,112, 61, 17,197, 48,198, 14,150,166, 43,151,219, 61,205,207, 87, 85,151,201,229,121, - 95,111,220,248,101,251,246,237,121,169,244,207,221, 91, 42,162, 9, 0, 46, 46, 46, 91,234,214,173, 75, 51,102,204, 72,170, 44, -205,154, 53,107, 30, 11, 9, 9,233,212,181,107, 87, 97,219,182,109,225,227,227, 83,116,206,195,195, 3, 33, 33, 33, 20, 31, 31, -255,218,185,115,231, 54, 30, 59,118,108,109,205,154, 53, 79, 61,126,252,184,107, 89,154, 0,192,202,217,131,180,188,243,197,218, - 22, 68,166, 96,133, 97,250,198, 76, 1,227,127, 37, 68,228,176,121,243,230,170,198, 61, 19,117, 58, 29, 12, 6, 67,209,179,241, -193,243, 60, 12, 6, 3, 22, 45, 90,100, 81,109,183,194, 72,167,209, 56, 24, 31,188,185,103,137, 68,226, 97,217, 96, 17,237, 45, -205,106, 96,111,111,239, 15,160,123,221,186,117,167,153,158,174, 83,165,224, 89,169, 84,198, 37,171, 93,162, 1,180,127, 65,227, - 79, 92,194,194,194,134,205,155, 55,175, 55,254,220, 83,178, 81,223,190,125, 79,149,104,215,168,240, 89, 73, 68,167, 57,142,251, - 25,192,118, 0, 47, 68,196,237,236, 28,198, 77,154, 48,218, 33, 33, 93,139,133,251,210,177,253,172, 2,195, 66, 28, 49,249,109, -103, 12, 26,216,223, 62,226,127,123,199, 1,216, 98,114,201,221,192,192, 64,186,115,231,142,205, 92,253,183,120, 29, 64, 21,147, -215, 26, 0,198,173,173,210, 81,240,119,225, 94,226,184,105, 59,227,115, 90,225,241, 42,133,215, 49, 19,221, 52, 0,127, 84,214, -128,133, 0,138,246,192, 42,115, 47,172,154,161,135, 71, 13,236,213,237,157, 55,219,128,147,185,226,254, 51,224,226, 83, 6, 33, -167, 3, 7,134,203,191,159, 98, 16,242, 59, 76, 47, 41, 43,178, 65, 53, 67, 63,109, 20, 28,180,108,235,242,143, 5, 49,207,132, -216,126, 46, 15,218,252, 92,164,165, 60,197,179,164, 56, 36, 39, 60, 66,226,211, 71, 55, 1,154,107,169,102, 73, 24, 3, 12, 60, - 10,254,231,227,129,130,239,227,139,183,103,145,166, 78,121,167,118,253,224,160, 76,137, 1,208, 41,239,148,223,119,229,111,130, - 89,154, 38, 17,117, 9, 8, 8, 88, 49,107,214, 44,223,219,183,111, 59, 41,149, 74,229,145, 35, 71,206,196,197,197,121,122,121, -121,197,143, 31, 63,190, 77,181,106,213,170,190,251,238,187,118,123,246,236,153, 5, 96,180, 5,154, 65,189, 90, 53,185,184,109, -237, 42,251,231, 17,235,160,137,189,129,195,201, 74,252,158,154,199,106, 57, 75,233,163,215,170,192, 65, 42,196,130,182, 62, 14, -221,247,199, 46, 3, 48,200,146,123,111, 88,221,187,182, 78,149,135,124,149, 14, 59,238,102,168,142, 39, 42,171,146,203,147,180, -181,161,173,100,130,180, 36,248, 59, 74,234, 88,115,239, 70,100, 50,243,187,156,184,186,186,162, 67,135, 14, 8, 12, 12, 20,182, -111,223,190, 17,128, 34,227, 82, 82, 83,171,213,120,243, 60,131,163,163,163,220,221,221,221,213,209,209,241,185, 86,171,125, 41, - 77, 0,112,115,115,235,211,161, 67, 7,225,206,157, 59,211, 31, 63,126,124,121,224,192,129,143,156,156,156,138, 69,123,237,237, -237, 81,167, 78, 29,124,241,197, 23,194,110,221,186,149,171,233,233,233,217, 37, 60, 60, 28, 68, 84,244, 97, 93, 18,127,127,127, -120,121,121,161,123,247,238,194, 62,125,250,116, 49, 61, 87, 82,179,127, 48,221, 53,154,167,126,193, 84,230, 7, 83,191, 96, 98, - 4,220, 43, 25,201, 42,169, 89, 24,193, 42, 86,157,188,172,105, 54,115,237, 45,248,185, 63, 51, 70,147,100, 50,153, 69,149,213, -203,209, 44,117, 90, 83, 42,149, 22, 69,157, 74,246,101, 78,147,227, 56,204,158, 61, 27, 68, 4,145, 72, 4,177, 88,108,246,185, - 99,199,142,214,142, 51,158,136, 56,177, 88, 60, 77, 40, 20,142, 86,171,213,190, 50,153, 44,201, 96, 48,124,167, 86,171, 23, 21, - 70, 64, 93,204,253,238,150,166,105,111,111,239,127,255,254,253,186,165,125, 83,212,106, 53, 26, 53,106, 4,168, 17, 83,150,102, -108,108,172,127,237,218,181,235, 1, 48,110,165,118,150, 49,214,222,228,181, 41,103, 25, 99,111, 23,126,125,239,225,195,135,254, - 40, 52, 88,166,154, 58,173,182,166,111, 85, 39, 68, 61, 81, 97,251, 89, 5, 78,206,242,193,155,139,146,240,126, 83, 33, 2,253, - 28,160,215,234,234,245,237,219,119, 7, 10,126,127,255, 0,240,110,223,190,125,235, 11, 4,130,223, 0, 28, 0,144, 93,214,189, -191, 12, 54,205,202,165, 28, 47, 82,133,136, 14,153,244,223,195,248,122,250,244,233, 51,151, 44, 89,114,155,136, 14,153, 30, 55, -109,103,250, 92,216,215, 33,198, 88,143, 25, 51,102, 4, 45, 93,186,116,177,177,109,101,222,143, 53, 83,132, 78,105,249,246, 56, -247,212, 9, 66,129, 1, 66,142, 32, 20, 0, 96,132,184, 39,177,200, 81,100,157,103,143,254,247,216, 18, 33,170,213,183,109,227, - 38,141,150,255,184,250,115,238,219,115,121,200, 82,230,227,206,245,211,248,227,244,129, 20,131,222,112, 0,196,174, 2, 92, 36, - 30,241,119, 25,171,120,213,238, 2,131, 85,104,170,138,153,172,255, 14, 68,244,118,253,250,245,151,204,158, 61,219,255,250,245, -235,142, 10,133, 34,237,135, 31,126,184,171, 86,171,175, 3, 88,243,244,233,211, 14,247,162,136,169, 0, 0, 32, 0, 73, 68, 65, - 84,107,214,172,177, 91,185,114,101,215, 70,141, 26,213,139,136,136,200,179, 64,243,181,169,195, 7, 93, 28, 61,233, 19, 89,204, -158, 13,144,196, 68, 98,246,141,116,195,201,228,188, 89, 0, 86, 35, 62,183,109, 90,190,254,248,170, 14,213,185, 26,142, 98, 4, -184, 72,204,127, 66,152, 65, 38,145, 10,153, 80, 6,141, 70,143, 28, 13,175, 97,140, 41, 67, 91, 4,106,153,189,135, 12, 0,132, - 28,149,251, 59,201, 24,203, 36,162,101, 18,137,100, 54, 17,177,215, 95,127, 61, 42, 56, 56, 56,215,213,213, 21, 42,149, 10,106, -181, 26, 98,177, 24, 42,149, 10,113,113,113,184,124,249, 50, 92, 93, 93, 45, 29, 34, 0, 32, 55, 55, 23,142,142,142,224,121,254, -165, 53, 13, 6, 3,109,218,180,201,254,246,237,219,246,123,247,238,245,156, 60,121,242,243, 6, 13, 26, 92,237,223,191,255,131, -170, 85,171,170,111,220,184,129, 11, 23, 46, 32, 51, 51, 19,173, 90,181,178, 72, 83,163,209, 64, 40, 20, 66,165, 82, 65, 42,149, - 66, 40, 20, 66,175,215,131,231,249, 34,211,149,155,155,139,140,140, 12,136,197, 98,104, 52,101, 47,107, 51,154,165,126,193,196, -246,252,122,225, 25, 12, 60,160, 85,232,160,206, 46,120,104,178,117,200,207,210,245,155,242,229,107,123,110, 89, 86,117,220, 24, -193, 50,165,172,105, 54,115,237,203,163,178,215, 65,149, 53,173,153,149,149, 37,119,113,113,153,102, 73, 68,142,136, 32, 16, 8, - 32, 22,139, 65, 68,104,223,190, 61, 70,141, 26,133,166, 77,155, 34, 54, 54, 22,187,118,237,194, 31,127,252, 1,145, 72, 84,212, -222, 82, 58,118,236, 40,144,201,100, 23,122,245,234, 21, 52,107,214, 44, 89,141, 26, 53, 16, 19, 19,227,183,116,233,210,105, 39, - 78,156,232, 77, 68,205, 25, 99,124,185, 66,198,169,191,130,105,193,238,106,181, 26, 49, 49, 47,248,167,178,174,121,129,128,128, -128, 56,142,227, 30,240, 60,127, 14, 64, 35,198, 88,123, 34, 58, 2,192,190, 68, 83, 37, 99,236,109, 34, 82, 0,184,201,113,220, - 61,158,231,227,204, 45,151,114,116,116, 76, 75,120,166,240,116,119,144, 97,104, 59, 7,188,185, 40, 9,161,205,165,144,138, 9, -119, 31,167, 32,160,118, 13,138, 58,127,176, 57, 10,204,213,235,201,201,201, 0,208, 28,192,227,248,248,120,111, 20, 26, 44, 27, -255, 13, 74,154, 32,163,113, 90,178,100, 73,143,146,199,204, 25,166,146,199,151, 46, 93,186,216,228,117,165, 38, 89, 21,125,152, - 17,149,253, 95, 43,120,188,127,104,223,206, 75,111,106,201, 63,168, 89, 59,252, 25, 13, 98,136,188,124, 1, 0,251,206,146, 14, -201,167,167,156,179,179,255,110,211,226,137,220,230,211,121,136, 79,122,134, 11,135,191, 67, 90,242,147,237, 0,155,204, 30, 69, - 40, 42,126, 59,133,125,212,234, 27, 84,213,195, 29,249, 90, 6,158, 1,120,193,100,253, 55, 32,162,158,245,234,213, 11,187,120, -241,162,127,126,126,190,227,239,191,255,158, 21, 30, 30,254, 64,163,209,108,101,140,253, 80,216,230,167,244,244,244, 5,140, 49, - 56, 58, 58, 10, 69, 34,145,188,172,133,159, 68,212,116,234,232, 97,231,151,109,218, 38,123,112, 43, 10,107,246, 30, 70, 86, 94, -158,225,244, 51,213,187,140, 49,227,127, 5,191, 5,184, 72, 19, 25, 88,117, 17, 71,240,182, 23,121, 17,145,140, 49, 86,238,116, -174,119,117,127, 78,231, 87, 19,231,244,249,168,230, 46,149, 0, 64,173,122, 13, 5,215, 85, 58,252,126, 35, 6, 30, 14, 78, 98, - 75,238,157, 49, 54,135,136, 60,119,236,216,193,233,116,186,220,216,216, 88,120,121,121,193,211,211, 19,206,206,206,184,115,231, - 14, 78,158, 60,137,187,119,239,130,231,121, 52,110,220,216,194,239,106, 1,207,159, 63,199,141, 27, 55,208,189,251, 59,147,211, -210,158, 57,185,186,185, 43,207,159, 59,187,178, 34,154, 60,207, 19, 0, 4, 5, 5, 33, 40, 40, 72,150,152,152,232,123,232,208, -161,170, 11, 23, 46,124,234,239,239,255,163, 74,245,231,242, 40,181,218,178,162,235, 70,195,148,159,159, 95,100,254,100, 50, 25, -196, 98, 49, 20, 10, 5, 82, 83, 83,145,147,147, 3, 0,112,113,113, 41,215, 96, 21,195,192, 3,225,237,174,190,112, 60,120,184, - 85,107,156,204, 69,164, 42,179,253,171,160,172,105, 77, 34, 26, 12, 96,154,153,203, 94,128,136,160,215,235, 33, 22,139,209,178, -101, 75,172, 91,183, 14,127,252,241, 7, 14, 28, 56, 0, 63, 63, 63, 12, 31, 62, 28, 28,199,225,246,237,219,214, 14,145,191,120, -241,226,180,119,223,125, 55,104,199,142, 29,178,184,184, 56,220,189,123, 23, 46, 46, 46, 88,183,110,157,116,236,216,177, 1,167, - 78,157,154, 3, 96, 69,121, 66,166,217,130, 62, 62, 62,253, 26, 53,106,244, 66, 27, 47, 47, 47,231,163, 71,143, 86, 53, 26,175, -146, 25,134,102,200,154, 51,103,206,170,192,192,192,213,133,211,130, 33, 0,236, 25, 99, 29,247,238,221, 75, 0, 16, 26, 26,202, -136,232,116, 97,251,155, 17, 17, 17,157,238,220,185,195,230,205,155,103,246, 61, 41,237, 89,242,166, 85,235, 54,175, 90, 54,127, -170,100, 74,119,103,132, 54, 23, 65, 38, 38, 56,217,137,176,104,237, 22,221,181,203,103,111,120,123,123, 31, 2,240,110,114,114, - 50,188,189,189,115, 1,220, 19, 8, 4,143, 13, 6, 67,146,109,141,251,191, 11,115, 94,164, 48,138,156, 92,248,181, 89,227,100, - 41, 37, 35, 92, 70,102,204,152, 17,180,100,201,146, 43, 21,213, 53, 71,209,138,164, 82,167, 6,141, 8, 57,111, 47, 79, 15,183, -233,195,219,130,231, 1,189, 1,208, 27, 24,148,121, 42,196,220,250, 35, 15, 50,218,107, 81,143, 82,201,242,133,179, 62,169, 21, -149,192, 33, 41, 83,139, 51, 7, 55,179,180,228, 39,125,216,163, 61, 35, 43,203, 92,121, 85,245, 56,189,115,243, 2,252,241, 72, - 3, 3, 95,224,175,120,158, 21,125,253, 95,128,136,234,120,120,120,172,188,116,233, 82, 13,169, 84,234,120,255,254,125, 67, 68, - 68, 68,146, 70,163,217,104, 52, 87,133, 12,110,214,172,153,206,222,222, 30,185,185,185,106,173, 86,155, 91,134,185,242,237,216, -244,181,179,203, 54,109,147,229,107, 52,200, 86,169, 33,112,175, 90,210, 92,129,136,218,116,170, 91,173, 26,201, 28,193, 0, 60, - 81,104,147, 44, 49, 87, 0,224,224,236,194,249, 54,239,136,230, 31,175,131,130, 28, 25, 0,184,123, 87,227, 58, 77, 88,132,110, -107,206, 64,201, 57, 90, 99,129,147, 6, 13, 26,148,208,176, 97,195,236,192,192,192,236,231,207,159, 35, 58, 58, 26,153,153,153, - 88,179,102, 13, 98, 98, 98,192,243, 5,114,230,166, 75,202,131,231,121,100,102,102, 56, 48,198,144,153,241,220,126,214,172, 89, -206, 21,209, 52, 24, 12,197,254,182,170, 85,171,134,241,227,199,139,243,242,242, 92,158, 62,125,234,100,122,206, 82, 77,141, 70, - 99, 44,194, 7,198, 24, 52, 26, 13,178,179,179,161,209,104,240,224,193,131, 34,115, 85,216,191,117, 6, 75,171, 48,191,200, 94, -245,220,162,197,247, 70,152, 73,245,101,185, 92,158,106,124,227,148,201,100, 32, 34,115,211,108,149, 82,173,217,216, 23, 17, 49, -185, 92, 94,218, 38,207,102, 41, 52,121,102,177,118,124, 6,131, 1, 98,177, 24,163, 70,141,194,149, 43, 87, 16, 27, 27, 11,129, - 64, 0,165, 82,137,188,188, 60,116,233,210, 5, 18,137,196,216,175,165,178, 76, 44, 22, 15,158, 57,115,166,236,241,227,199, 72, - 79, 79, 55, 46,146,135,193, 96,192,228,201,147,229, 82,169,116, 48,172, 12,213, 39, 37, 37,189,117,255,254,253,122, 37, 31, 41, - 41, 41,217,166,107, 6, 43,202,222,189,123, 41, 52, 52,148,133,134,134, 50,163,209,178,148,172,132,232, 77, 7,126, 58,116,252, -211, 47,150,231,230, 41,115, 80,219, 71,142,220,156,108, 44, 90,178, 76,119,241,226,185,211,211, 38,127,208, 58, 34, 34, 98, 41, -128,123,133,151,220,139,136,136, 24,246,197, 23, 95,124,143,194,114, 13, 54,254, 61,152,243, 34,166,127,123,149, 49,141,103, 78, -163,112,154, 80,254,178,218,166, 88, 52, 69, 72, 1,253,155,120,122,184,159,218,177,126,190,195,161, 91, 64, 66,252, 19,164, 37, -199,161,121,235,142,136,185, 21, 5, 94,103,216,199,238, 71,148,155,102, 78, 53,251,214, 13,108,208,112, 66,135,214,193, 88,126, - 40, 23,247, 35,143, 34, 43, 45,121, 61,123,188,199,170,204,182, 82,245,107,245, 13,242,172,226,113,250,251, 13, 97,110, 71,162, - 57,196,199, 63,193,193,239, 87, 67,167,125,225,179,255,176,181,218,114, 94, 35,201,205, 74,133, 38,199, 0, 25,151,103,126,193, -207, 95, 8, 99,236, 65,149, 42, 85,118,172, 90,181,234,131,214,173, 91,219, 13, 28, 56,240,126,102,102,230, 66,198,216, 30, 99, - 27, 34,122,163, 94,189,122,159,173, 95,191, 62, 32, 62, 62, 30, 39, 79,158,188, 15,224,197,200,196,159,154, 9, 2,129, 96,227, -201,239,183, 76,149,215,170,143, 53, 51, 63,213,239,253, 35,186, 23, 99,236,136,137,102, 96,231, 70,117, 15, 45,252,236, 67,142, -191,246, 43,110,196,165,226, 81,182,250,164,165,227,142,205, 82,234, 68, 82, 57, 28,188,106,224,126,174, 65, 44, 20, 10,175,140, - 30, 61, 74,204, 9,132,224,132, 98, 68,103,230, 91,243, 33,238,112,229,202, 21, 78, 32, 16, 20, 51,230,166, 17, 33, 35,150, 70, -134,172,193, 82,205,146, 6,203,136, 94,175,127,225,184,165,154,106,181, 26,230,124,178,185,181, 88, 60,207, 91,119,255,154,108, -243, 46, 47,223, 58,131,101, 26,145, 50,157, 26, 52,174,151,203,207,207,175, 42,151,203, 83,141,211,124,149, 21,193,122,153,204, -194,178,166, 41,173, 25, 31,199,113,224,121, 30, 98,177, 24,141, 27, 55,198,161, 67,135,224,230,230, 6, 39, 39, 39, 56, 57, 57, - 65, 46,151,195,221,221,189,200, 96,113,156,197,217, 55, 76,173, 86,251,249,249,249,225,193,131, 7,144,201,100, 69, 15,169, 84, -138,160,160, 32, 40,149,202,106,248, 79,197,234,129, 49,253, 59,247,222, 16,190,127,232,161, 67,191, 76,208,170,243,131,235,215, -175,199,174, 94, 60,117, 99,218,228, 15,186,149,127,181,141,255, 18,198,232,147,233, 90,170,233,211,167,207,172,168,222,244,233, -211,103,154,139,104, 85, 6, 66,224, 79,199,104,206, 57, 26,205,213,246,117,243,156,246, 95, 7, 18, 18, 30,227,248,158,181, 57, - 58,173, 38,147,231,117,254,143,238, 70, 1, 28,190,179,168, 55,142,181,232,221,189, 19, 29,191,173,129, 34, 43, 13,247,174, 30, -125, 2,149,100, 70,101,220,136,209, 92,237,216, 48,223,237,231, 91,132,248,248, 39, 56,178,107,117,182, 78,175,125,131, 61,138, -176,186,142,150, 41, 67, 36,146,222,253, 27,184,244, 24,213, 46, 9,134, 16, 3, 6,199,220,121,219, 39,132,122, 39,157, 43, 59, -211,235, 85,147,150,150,182,200,193,193,129, 91,177, 98,197,200,252,252,252,121,140,177,162, 40, 34, 17,117,169, 93,187,246,242, - 77,155, 54,249, 62,125,250, 84,114,254,252,249,140,211,167, 79, 51, 0, 75,202,210, 52, 24, 12,159, 19,145,160,105,141,106, 19, -175, 61, 73,236,197, 24,251,213, 68, 51,168, 71,179,134,191,111, 91, 50,199, 81,247,251, 94,228, 38,199, 99,198,239, 9, 10, 0, - 22,253, 12,137,200,205,195,195,131,134, 12, 25,194,231,228,228, 64, 44,145,240, 58,157, 78,208,166, 77, 27,195, 39,159,124,194, -165,164,164, 64,145,147, 43, 36, 34, 55,198, 88, 70, 57, 90, 97, 0, 38,183,105,211,134, 90,182,108,121,121,245,234,213,199,140, -231,204,153,137,138, 68,176,202,195, 82, 77,158,231,205,126,122,234,116,186, 23,254,222, 42, 18,193, 50,197,156,193,178, 58,130, -165, 46, 45,130,149,102,117, 4,203,156, 89, 49, 53,135,166, 6,168, 34,107,176, 42,155,178, 76,148, 53,227, 51,174,131, 19,139, -197,136,138,138, 66,245,234,213,161,213,106,225,232,232, 8, 71, 71, 71, 56, 56, 56, 32, 39, 39, 7, 34,145,200,170,245, 87, 0, -120,153, 76,246, 52, 58, 58,186, 94,149, 42, 85, 96, 48, 24,138,153,172,251,247,239,195,222,222, 62, 17, 86, 70,176,124,124,124, -142, 22,102, 17, 22,195,203,203,203,217, 26,157,210, 48,141, 92,133,134,134, 86,104, 30, 97,195,146,169,225, 0,194,251,246,237, -187,227,230,197, 95,154,123,123,123,255, 18, 24, 24, 72, 0, 96,203, 24,252,111, 80,150, 23, 1,144, 86, 34,242,164, 49,121,157, - 6,128, 10, 95,167, 21,106,148,252, 90, 99,230,216,243, 37, 75,150,156, 50, 89,191,149,134, 74,164,204, 8, 22, 5,244,111, 82, -213,221,237,212,214, 53,243,156,246, 68, 2,137,241,143,113,102,223,186,108,189, 65,251, 6,120,150,124,241,196,190,189, 32,228, -225,209,222, 51,192,158,178,164, 10,224,209,180,105, 3,127, 28,184,173, 67, 90,194,125, 48,198,111,103,169,223,151,187,232,186, - 60,140,230,106,251,186,121,110,251,163, 8, 9,241,143,113,124,207,218,108,189, 65,251, 70, 69,138,148, 26, 25, 77,228,202, 57, -218,125, 61,244,173, 22,125,253,107, 85, 3,207,116,224,197, 12,239,127,238, 33,188,119, 45,239,128, 95, 87,193, 30, 62,151,159, -144,112,241,239,171, 62,158,155,155,187,128,136,246, 51,198,138, 86,167, 18,209,219, 1, 1, 1,139,191,254,250,235, 26,137,137, -137,142,215,174, 93, 83,124,243,205, 55,143,121,158, 15, 99,140,149,155,105,197, 24,251,148,136,182, 50,147, 26, 58, 68,244,218, -212,145,131, 46, 14, 26, 49, 90,246,248, 68, 56, 92, 31,199,224,179,223,147, 12,247, 50, 53, 3, 25, 99, 41,229,105, 18,145,155, - 84, 42,221,123,248,240,225, 7, 77,155, 54, 37,165, 82, 9,157, 78,135,244,244,116,236,223,191, 63,154, 49, 6, 87, 87, 87, 28, - 62,124,152, 31, 52,104,208, 94, 34, 10, 45,205,100,153,148,105,160,194, 50, 13,173,126,253,245,215, 59,221,186,117, 75, 0, 94, - 52, 41, 82,169, 20,249,249,214, 85,251, 40, 45, 43,177, 34,154,165, 69,176, 74, 30,183, 70,211, 56, 77,105, 92,220, 94,242,184, - 17,129, 64, 0,158,231, 95, 56, 94, 38,234, 44,243, 70, 74,249,172,194, 17, 44,211,108, 63, 75,218,151, 69,121, 5, 63, 43,146, - 89,104,164,178, 34, 88, 0,138, 34, 88, 63,253,244, 19, 70,140, 24, 1,131,193, 0, 59, 59, 59, 56, 56, 56,192,222,222, 30,251, -246,237,131,177,140,131, 53, 67,212,233,116, 63, 44, 89,178,100,230,166, 77,155,228,140, 49, 72, 36,146, 34,131, 53,111,222, 60, -149, 86,171,253, 1, 22, 24,172,162, 10,237, 60,139,174, 83,165,236, 44, 66,115,215,148,178, 30,203, 37, 44, 44,108, 24,207,243, -189, 81,162, 20, 67,137,118,197, 74, 56,148, 85,166, 1,128,107, 88, 88,216, 24,158,231,141, 85, 80,139,101, 11,154,180, 51,126, -150,212,235,219,183,239,142,146, 89,132, 54,254,245, 84, 90,249,132,191,138, 82, 13, 22, 5,244, 13,172,234,238,113,106,203,234, -121, 78, 63, 94, 1,146,226, 31,225,194, 79,235,179, 13,188,206,212,180,180,179,170, 55,162,166, 62, 85, 93,144,113, 73, 5, 69, -250, 83,128,225,218,203, 12, 30, 0,168, 86,255, 58, 85, 61,220, 79,111, 91, 59,207, 45,226, 58,135,196,167,143,113,186,208, 4, -190,140,185, 26, 34,145,244, 14,170,235,187,109,192,219,237, 92,157, 73, 7,125,220, 29,108, 29,222, 15,145, 61,181,104,219,223, - 25, 45,186, 59, 34,160,137,172,223,225, 45, 25,111,250,132,208,232,191, 51,154, 85,194, 92,245,172, 81,163,198,252,203,151, 47, -251,243, 60,239,120,230,204,153,156, 77,155, 54, 61,202,207,207, 95,203, 24,251,197, 10, 77, 83,115,213,116,250,216,225,231, 23, -127,189, 85, 22, 29,249, 7,150,255,240, 51, 84, 58,141,225,104, 66,110, 95,211,233,195,178,144, 72, 36, 11,126,251,237, 55,251, - 70,141, 26,209,243,231,207,139, 34, 45, 90,173, 22,217,217,217,200,201,201,129, 90,173, 70,179,102,205,184,181,107,215,218, 79, -156, 56,113, 1,128, 9,150,142,215,209,209, 17, 98,177, 24, 90,173,182, 40,130, 37,149, 74,225,236,236,140,231,207,159, 99,247, -238,221, 0, 80,102, 84, 76, 44,150, 36,115, 28, 85,151,219,217,169,101, 50, 25,239,237,237,253, 66, 27,107, 53, 11, 73,120,251, -237,183,125,195,194,194,100,205,154, 53, 43, 58,104,140, 96, 85, 68,147, 49,150,215,181,107, 87,187,181,107,215,194,223,223, 31, - 26,141,166,152,145,226, 56, 14, 98,177, 24,241,241,241, 88,184,112, 33, 24, 99,150,255, 35,147,159,169, 67,163, 97, 85,160,122, -174, 43,120,164,235,144,247, 76, 7,109,158, 85, 25,189,166,102,197,212, 4, 21,174,145,122,193, 0, 89, 26, 33, 42,111, 10,208, -218,204, 66, 83,195, 38,149, 74,145,149,149, 37, 39,162,193,230, 74, 53, 88, 19,193, 50, 26,172,152,152, 24,236,216,177, 3,221, -187,119,135,171,171, 43, 50, 51, 51,177,103,207, 30,220,185,115, 7, 18,137, 4, 68,100, 77, 20,139,111,217,178,229,178,115,231, -206,245, 28, 56,112, 96,195,207, 62,251, 76, 30, 28, 28,140,123,247,238, 33, 44, 44, 44, 63, 50, 50, 50, 86,165, 82,133,193,146, -130,164,133, 21,218,141, 69, 68, 45,202, 34, 44,113, 77, 73, 74, 41,211,240,182,217,198,197, 75, 56, 20, 43,211, 96,202,133, 11, - 23,106,214,168, 81, 35, 16, 5,153,129,192,139,217,130,166,252,145,156,156,252, 58,108, 89,132, 54,254, 1,148, 30,193, 98, 52, -121,224,240,177, 78, 63, 92, 33,196,199,197,226,234,225,141, 37,205, 85,185, 16, 81,103,211, 90, 25, 50,185,125, 48, 79, 5,105, -201,138,244,120,128, 9,172, 54, 88, 37, 53,193,248, 79, 7, 14, 27,235,182,243, 42, 33, 41,254, 33,126, 63,184,193,106,115,101, -170, 57, 84, 34,153, 35, 18,114,179,222,105,223, 84, 28,210,164, 30,236,158, 61, 70, 74, 66, 18,118,199,164,101,196,102,170, 71, -255, 78, 90,196, 61, 84,111,237, 62,198,205,205,213, 75,132, 30, 31,184,187, 93,250, 89,113,160,218, 27,156,150,105,217,146,164, -243,108,158,217,113, 86, 2,229,105, 18, 81, 29, 39, 39,167, 21,145,145,145, 85,100, 50,153,211,213,171, 87, 13,155, 55,111,142, -207,207,207, 95,201, 24,219, 85, 65, 77,223,215,235,214, 62,179,120,195, 22, 89,174, 50, 15, 74,141, 22, 82, 79,111,195,254,139, -183,250,176, 82,138, 97,150,212, 36,162, 78, 35, 71,142,124,173,101,203,150,156,169,185,210,104, 52, 80, 40, 20,200,201,201,129, - 66,161,128, 66,161, 64, 98, 98, 34, 58,116,232,192,189,246,218,107,193, 68,212,137, 49,118,170,164,166, 73,153,134,153, 0, 56, - 34,250, 35, 42, 42, 42,183, 91,183,110,144,203,229, 80, 42,149,240,243,243,131, 94,175,199,225,195,135, 17, 25, 25,169,228,121, -254, 12,128,168,178,198,169, 82,229,249, 17, 17,167,202,203,107, 60,108,216,176, 14, 83,166, 76, 41,150, 90, 94,181,106, 85,184, -185,185, 89,165, 9, 0, 25, 25, 25, 13,126,253,245,215, 79,162,162,162, 62,237,222,189,187,243,204,153, 51,165, 53,107,214,132, -193, 96,224, 42,170,153,153,153,233,124,237,218,181,149,237,218,181,251,176, 91,183,110,194,197,139, 23,195,217,217, 25, 6,131, - 1,114,185, 28, 10,133, 2, 97, 97, 97, 56,127,254,188,158, 49,182, 33, 59, 59,251,179,178, 52,139,213,193,154,242, 85,153,233, -145,165,213,193, 50,243,115, 55, 27,241, 41,205, 0,153,107,255, 87,252, 29,149, 48,108,112,113,113,153, 6, 96,154,185, 82, 13, -150,106, 2,127, 70,176, 4, 2, 1,158, 60,121,130,205,155, 55,191, 80, 7,203, 88,198,193,156,118, 41,247,206, 78,159, 62,109, - 32,162,214, 87,175, 94,157, 54,116,232,208,209, 74,165,210,215,222,222, 62, 73,167,211,125,167, 82,169,140,117,176,204,102,227, -150,246,253, 84, 42,149,113,230,178, 8, 75,182, 1, 92,202,212, 44, 81,166,161, 88, 41,134, 18,151, 21, 43,225, 80,178, 76,131, -169,102,155, 54,109, 30,115, 28,119,183,112,170,253, 46, 74,100, 11,154,104,214, 75, 78, 78,126,221,219,219,251, 12, 0,187,146, - 89,132,127,199,123,178, 77,243,255, 55,101, 24, 44,200, 78, 92,126, 2,137, 60, 3, 55, 78,110,183,218, 92,153, 67,157,159, 23, - 59,103,231,211, 38, 26,117, 62,148,217,169,247,216,227, 93, 86,133,239,205, 66,176, 63,241, 71, 28,100,246, 89,184,126,226,219, - 44,131, 33,255, 13, 22,251,191,168,242, 47, 44, 77, 14,211, 55, 30,142, 16,147,179, 27,110,124, 50, 2, 73, 89, 74, 28,121,148, -185,135,229,169, 39,132, 23,238,187,231,219,154,206,109,155,149,178, 49,228,125,231,126, 30,213, 68,248,106,234,119,144, 77,119, - 23,183,120,179,253,223,186, 71,161,113,225,251,154, 53,107,198,135,132,132, 56,244,235,215,239,126, 70, 70, 70,177,133,239, 21, -208, 76, 32,162,175,127,217,244,229, 84,247, 70,173,176,254,139,207, 13, 59, 47,222, 42,150, 85, 88, 30, 98,177,184,227,244,233, -211,197, 74,165,242, 5,115, 85,210, 96, 41, 20, 10,220,184,113, 3,195,135, 15,151, 70, 69, 69,117, 4, 80,178, 2,180,113, 92, -115,136,104, 19, 10,246, 34, 76, 9, 15, 15,111,125,240,224,193,214,147, 39, 79, 22,119,239,222, 29,151, 46, 93,194,241,227,199, -181, 90,173,246, 34,128,139,204,194,237,103, 88, 65,253,160,107, 68,116,107,249,242,229,173, 5, 2,193, 28,227,185,232,232,104, -108,223,190,189, 34,154,122, 0, 43,137,232,235,240,240,240, 57, 39, 78,156, 24, 57,108,216, 48, 39,157, 78,135,152,152, 24,124, -251,237,183, 21,213,252,164, 74,149, 42,179, 15, 31, 62,252,221,177, 99,199,222, 29, 50,100, 8, 55,105,210, 36,172, 91,183, 14, -255,251,223,255,120,131,193,112, 80, 36, 18, 13, 75, 75, 75, 43, 55, 1,165, 88, 29,172, 50,234, 92,149,119,190,196, 24,191,161, -130,237,111, 44,222,139,208,146, 72,206,203, 76, 1, 90, 56,110,139,183,234, 41, 13,227,125,116,236,216,177, 40,170,200, 24, 43, -182,110,206,104,172,172,157, 34, 4,224, 82,248,123,186, 1,192, 58, 20,175,226, 46,192,159,149,222, 45, 85,108,152,172,118,137, -134, 26, 49,101,111,246,236, 2, 48,152, 15, 93,253, 73,214,156, 57,115, 86,205,157, 59,119, 85,201, 82, 12,166,141, 74,150,112, -152, 63,127, 62, 74, 43,211, 0, 32,115,206,156, 57,203, 0, 32, 48, 48,144, 10,167, 5,155,163, 48, 91,208, 68,115, 71,225,113, -187,121,243,230, 13, 5, 80,150,166, 13, 27,175,156, 50,214, 96,177,153,209,231,118,234, 0,184,131,184, 25,236,225,110,179,133, -229,172,129,241,108,250,111, 63,206, 91, 7,134, 76,102,208, 91, 84, 79,166, 92,120,193,172,232,115, 63,242, 0,185,128,184,233, -236,225,255, 94,122,156,228,236,134,156,176,241,248,223,237, 36,150,162,212,189, 23,174,209, 20,139,212, 20,174,185,234,239, 19, - 66,187, 93,125, 68,251, 63,121,195,157,126,201, 24,250,178,221, 86, 10,105,105,105,139, 29, 28, 28, 4, 43, 87,174, 28,169, 82, -169,138, 45,124,175, 40,140,177,207,137, 72,208,162,142,255,196, 43, 15,226,122, 91, 58, 45,104,132,136, 36, 62, 62, 62,183,242, -243,243, 65, 68, 80,171,213, 69,198, 42, 39, 39, 7,217,217,217, 69,175,181, 90, 45,210,210,210,224,231,231, 7, 34, 42,179, 38, - 86,137, 15,194,179, 68, 20, 25, 22, 22,214, 62, 44, 44,172, 49, 10,162, 64,103,173,154, 26, 43,174,173, 3,112, 86, 46,183, 75, - 34, 34, 95,177, 68,170,188,112,225,194,137,151,212,204, 67, 65,100,228,171,175,190,250,106,145,189,189,253,235,209,209,209, 39, - 95, 70,179,208, 60,245,113,119,119,247,217,177, 99, 71,196,182,109,219, 90, 9,133,194, 75, 68,212, 55, 43, 43,203,234,205,158, -169,120, 68,192,234,243, 37, 24, 7,203,246, 32, 52,125, 46,151,202, 46, 46,250, 42, 12,155,193, 96,200,157, 61,123,118,145,150, -241,222, 74, 70,171,140,175,181,218, 23, 83,157,205, 81,222, 58,182, 18,148, 99, 46, 40, 23, 0, 10,246, 22, 44,216,254,198,210, -205,158, 1,148,186,183,229,220,185,115,217,252,249,243,137,227,184,131, 0,238,113, 28,247,160,228, 34,116,211,115,243,231,207, -199,220,185,115,217,188,121,243, 74, 29,169, 81,243,206,157, 59, 76, 32, 16,156, 4,240, 88, 32, 16, 60, 49,213, 53, 61,110,188, -166, 44, 77, 27, 54, 94, 53,165, 26, 44,246, 40, 34, 30,192,136,202,236,140, 61,142, 56, 1, 43,246, 50,179, 72,243,201,174, 56, - 0, 67, 42, 77, 15, 88, 49,166, 69,199,169, 40,248, 47,240,171,146,230,202,148,164,115,236,160,119, 91, 90,210,226,205,246,147, - 81,112,193,226,202, 26,199,203, 96,110,225,251,203, 98,110,225,187,165, 24, 12,134, 99,114,185,156,148, 74, 37, 84, 42, 85,177, -104,149, 66,161, 64, 94, 94, 30,114,115,115,139, 22,167,231,230,230, 26,167,187,172,250,239,179,208,164, 28, 33,162, 99,140,177, - 10,239, 0, 96,138, 74,149, 87, 29, 0,136, 72, 80, 89,154,133,137, 6,163, 43, 83,243,249,243,231, 73, 0,218, 4, 4, 4, 72, - 98, 99, 99,173, 72, 25, 44, 78,121, 27, 57, 91,186,209,179,145,202,136, 6,189,106, 42,219,176, 1,128, 86,171,109, 80,217,154, -140, 49,107,204,173, 37,130,223,118,109,215, 80, 0,211,218, 63,229,109,246, 12, 0,160, 92, 48,124, 91,202, 24, 25, 21, 56, 72, - 6, 96,199,195,135, 15,253,121,158,143, 51, 19, 73, 42,118,110,222,188,121, 96,230,210, 98, 95,212, 4,128, 3,241,241,241, 62, - 6,131, 33,185,132,110,177,227,101,105,218,176,241, 87, 96,205, 86, 57,255, 47,248, 94,163,153,139,114, 54, 27, 54, 37,249,119, - 54, 11,192,172, 87, 55,162,138, 81,153,230,202, 68,211,106,115, 5, 0, 58,157,238, 55, 0,168, 82,165, 10,170, 84,169, 82, 94, -115,211,235, 42,210, 29, 42,203,180,252, 27, 53, 95,198, 92,217,248,255, 5,203,140,142, 7,240, 69,185,237,202,175,222, 94,188, -253,159,166, 38, 19, 64,102, 41, 30,167,172,115,101,105, 2,128, 2,128,194,204,181,165, 29,183, 97,227,111,193,170,201,127, 27, - 54,108,216,176, 97,195,134, 13, 27,229, 67, 0, 58,155, 59, 97, 77,118, 0, 17,153,213, 40,139,242,244,109,154, 54, 77,155,166, - 77,211,166,105,211,180,105,254,247, 52,203,211, 46,153,141,204, 42,105, 27,173,191, 28, 99,102,203,171,120, 0,232,108,211,180, -105,218, 52,109,154, 54, 77,155,166, 77,211,166, 89,193,126,198,254, 21,253,188,138,135,109,138,208,134, 13, 27, 54,108,216,176, - 97,163,146,177, 45,114,255,151, 66, 68,117, 0,204, 4, 96,186, 87,216, 21,198,216,146, 18,237,126, 4, 96,103,114, 72, 9, 32, -140, 49,246,192,154,254, 4, 2,193,146,246,237,219, 79, 56,127,254,252,151, 58,157, 46,172, 2,227,245,247,246,246, 94, 70, 68, -205, 0,136,136,232, 97,106,106,234, 18,157, 78, 87,225, 66,117, 68, 84,203,203,203,107, 41,128, 38, 28,199,137,136, 40, 54, 53, - 53,117,161, 78,167, 43,185, 45,135, 53,154,142,158,158,158,109, 25, 99, 94, 0, 4, 34,145,232,121, 98, 98,226,101, 86,193,108, -184,190,243,239,136, 21, 74,189, 8, 0,156,236,133,186,136,185,129, 90, 75,143, 85,244, 30,108,216,176, 97,195,198,223, 79,153, - 6,107, 64, 61,242, 54, 8, 33,140,136,102,241, 64,193,135, 15,128,198, 0,234, 0,120, 0, 32,138, 49,150,243, 50, 3,248,183, -104,254, 3,153,195, 24, 27,100,122,192, 92, 29,161, 55,222,120,163,215,177, 99,199,236,140,219,168,240, 60, 15,185, 92,174, 7, - 48,220,210,142,136,168,234,192,129, 3,167,111,221,186, 21,253,250,245,155, 77, 68,171, 24, 99,185,150, 94,239,230,230, 22, 90, -171, 86,173,117, 91,182,108,169,210,170, 85,107,146, 72, 36,120,248, 48,214,119,220,184,113,193,158,158,158, 7, 83, 83, 83, 71, - 91,170,101,196,221,221,125,112,237,218,181,191,218,188,121,179, 71,187,118,237, 64, 68,136,140,140,244,253,228,147, 79, 26,123, -121,121,237, 74, 73, 73,249,208, 90, 77, 15, 15,143,186,181,107,215,238,180,126,253,122,121,219,182,109, 33,147,201, 16, 21, 21, -229,240,193, 7, 31,120,121,121,121,197,164,164,164,156,177, 70,175,239,252, 59,226,155,145, 63,191,171,215,170,151, 3,128, 80, - 44,253,188,245, 42,197,207, 25,145,103,123,150,119,172,239,124, 28,176,153, 44, 27, 54,108,216,248,247, 82,170,193, 10,109, 72, - 97, 16, 98, 38, 0,122,187, 14,237, 58,254, 88,112,174, 75,151, 46, 1,163, 70,141,162,166, 77,155, 34, 50, 50,178,238,174, 93, -187,222, 17, 10,133,177, 6,131, 33, 18,192,109,102, 97, 21,106, 34, 18, 1, 8, 18, 8, 4,205,254,201,154,255,112,236, 1,128, -136, 82, 1, 92, 41, 60,118,165,100,163,223,126,251,237, 39,161, 80,104,140, 96,181, 80, 42,149,158, 40, 30,245,178,132, 26, 58, -157, 14,119,239,222, 5,199,113, 34, 0, 53,241,226,214, 23,102, 33, 34, 95, 95, 95,223,141, 23,175, 68,186,147, 80,142,204,124, - 0,249, 90, 72, 28, 60,177,117,123,184,219,148,143, 63,236,227,228,228,116, 78,161, 80,124,111,233, 96,136,168,166,159,159,223, -170, 27, 55,110,184,219,217,217,129,231,121,228,228,228,192,203,203, 11, 91,182,108,113,153, 50,101,202, 32,185, 92,126, 90,165, - 82,253,207, 10, 77,199,218,181,107,119,186,117,235,150,220,184,209,179, 70,163,129,175,175, 47,126,252,241, 71,233,164, 73,147, - 26, 72,165,210, 4,181, 90,253,200, 82, 77,133, 82, 47,210,107,213,203,119,108,152, 87, 29, 0,134,125, 56,111,185, 36,199,233, -176, 37,199, 20, 74,253, 47, 0,108, 6,203,198, 95, 10, 17, 53,243,240,240,216,155,158,158,126, 6,192,104, 86, 9,165, 68,136, -200, 71, 40, 20,214,100,140,185, 20,190,206,210,235,245,143, 25, 99, 86, 23,194, 53,226, 17,208,169, 39,164,118, 35,192,248,198, - 28, 0,226,184, 40,131, 54,111,123,250,189, 83, 63,191,148,166, 68, 62, 18, 96,141, 57,128, 39,142,187,193,235,243,182,164,221, - 57,101, 85, 97,101, 27, 54,140,152, 53, 88,125, 27,146, 43,128,105,187,214,205,228,132, 2, 1, 13,252,120,201,160,109, 27, 86, -114, 93,122,246, 45,154, 38, 9, 9, 9, 65, 72, 72, 8, 45, 95,190,188,206,201,147, 39,235,252,248,227,143,122, 34,186,193, 24, -219, 93, 90,103,221, 2, 72,197, 3,178,119,234, 11,149, 3,191,248,126,115,203,150, 45, 33,149, 74,241, 50,154, 0,208,181,142, -224, 81,247,150, 1, 55, 6, 78,156, 19,215,170, 85, 27, 86, 25,154,255, 34,174, 48,198,122, 3, 0, 17,185,250,249,249,181,213, -235,245, 50, 0, 16, 10,133,249, 0, 38,178,194, 45,126,136,232, 32,207,243,189, 44, 21, 38, 34, 14,192,220, 94,189,122,205,254, -232,163,143,224,231,231,135, 73,147, 38, 65,167,211, 69, 18,209, 28, 0, 75, 89,225, 42,196,210,168, 90,181,234,156,141, 27, 55, -186, 9, 37,246,104, 58,237, 49,146,179,244, 0, 0, 7, 41,240,211,120,134, 73,147, 38, 57, 93,189,122,117, 33, 0,139, 13, 86, -213,170, 85,195,182,108,217,226,102,103,103, 7,198, 24,114,115,115,145,147,147,131,220,220, 92,228,230,230,226,195, 15, 63,116, -138,137,137, 89, 6,192, 98,131,229,233,233,217,118,253,250,245,114,153, 76,134,220,220, 92,177, 86,171,165,156,156, 28,228,229, -229, 49,141, 70,163,157, 56,113,162,244,246,237,219, 29, 1, 88,108,176,108,188, 90,136, 72, 0,224, 61,145, 72,244,126, 64, 64, - 64,243, 7, 15, 30, 92,215,235,245,251, 0,236,123,217,127,162,136,232, 77, 31, 31,159, 69, 73, 73, 73,235, 25, 99,225,149, 51, -226,127, 62,158,158,158,251, 46, 92,184, 80,125,227,198,141,195,191,252,242,203,195,176,226,111,168, 36,133,255,244,182,110,209, -162,133,199,251,239,191, 47,242,242,242, 66, 94, 94, 30, 98, 99, 99,237, 78,156, 56, 81, 69, 38,147, 61, 87,171,213, 22,111, 15, - 5, 0, 30,245,218, 58, 64,232,180,171,117,167,206,237,250,245,121,207,209,211,221, 25, 42,141, 1, 15,226,146,253,126, 61,252, - 83, 7,159,224,119, 46,104,181,217, 3,210,239,253,110,113,132,221,168,217,169, 91,143,118,157,223,124,211,209,217,197, 25,217, - 74, 45, 30, 62, 73,244, 63,117,252,231, 16,239,224,119,206,242,164, 27,146,122,243, 88,133,118, 91,176,241,255, 23,139, 23,185, -219,217,217,153, 61,238,236,236,140, 78,157, 58, 97,201,146, 37, 66, 0,205, 76,207,177,146,155,159, 2,210, 67,155,102,192,217, - 94,202,249,249,249, 57, 58, 57, 57,189,180,102,193, 65,190,102, 27, 63,246,246, 31,223,207, 28,126,226,199,175,130,148, 57, 89, -162,146, 77, 28, 28, 28, 80,175, 94, 61,204,158, 61,219, 50,205,151,228,175,214,244,246,246,174, 31, 18, 18,210,236,183, 51,103, - 92,146,146,146,164, 73, 73, 73,210, 99,191,253,230,210,186,117,235,102,222,222,222,245, 77, 52,172, 25,231,130, 13, 27, 54,204, - 57,120,240, 32, 23, 18, 18, 2, 87, 87, 87,116,234,212, 9,135, 15, 31, 22,126,249,229,151,139, 1,204, 46,111,156, 28,199,181, - 11, 9, 9, 33, 48,134,148,108, 61, 46, 47,169,143,168,149,129,200,201,103,200,200, 86, 64,165,202,135,157,157,157,172,112, 90, -215,210,123,111,211,186,117,107, 2, 80,100,170,114,114, 10, 30,185,185, 74,104, 52, 90, 72,165, 82, 71, 34,146, 89,170,201, 24, -243,106,219,182, 45, 0, 64,171,213, 22,205,181,102,101,101, 81,118,118, 54, 52, 26, 13, 68, 34,145,152,136,202,156, 86, 55,213, -116,178, 23,234,132, 98,233,231,195, 62,156, 23, 63,236,195,121,241, 66,177,244,115,141,163,194, 96,201, 49, 39,123,161,206,156, -102,101, 81,158, 38, 17, 85, 17, 8, 4,223, 6, 4, 4,196, 8, 4,130, 29, 68,228,245, 50,154, 68,244, 58, 17, 45,182,179,179, - 59,209,160, 65,131,120,123,123,251,223,136,104, 41, 17,181,174,136, 38, 17, 73,236,236,236,126, 91,188,120,113,196,245,235,215, -251,157, 60,121,178,230,205,155, 55,251, 44, 95,190,124,151,131,131,195, 57, 34, 50,255,134, 85,206, 56,141,212,172, 89,115,219, -229,203,151, 95,111,211,166,205, 86, 34,146,150,215,222, 18, 77, 34, 18, 16, 81, 19,178,112, 79,160,191,250,231, 78, 68, 62, 77, -155, 54,173, 46,147,201,208,185,115,103, 0,232,248,146,154,173, 63,248,224, 3,175, 41, 83,166,136,162,162,162,176,117,235, 86, - 28, 60,120, 16,207,158, 61, 67,143, 30, 61,196,111,188,241,134,151, 84, 42, 53,251,243, 47, 85, 83,232,180,235,227, 79, 38,119, -155, 58,105,140,227,141,167, 90,108, 63,241, 20, 7, 46, 38,227, 89,158, 4, 61,251, 12,115,126,171,119,255,183, 36, 82,103,179, - 27,219,151,165, 57,125,218,180,110, 99, 71, 14,114,140, 78,230,241,211,165, 20, 92,186,155, 13,189,200, 5,221,251,140,118,109, -220,182,219, 59, 66,136,190,179,242,222, 43,204,255,103,205,255, 26, 69, 31, 22, 68,196, 24, 43,216,196, 53, 34,154,101,134, 54, -164,101,253, 63, 90, 60,155, 56, 98, 53,130,218, 68, 87,171,221, 80,233,238,238,142,188,188, 60,168,213,106,136,197, 98,228,231, -231,227,233,211,167,184,116,233, 18, 92, 93, 93,173,234, 88,161, 80,192,193,193, 1, 14, 14, 14,149,162, 57, 99,120,103,233,195, -248, 52,233,209, 75,167, 59,172,153,240,191, 86,181,155,116,188,249,102,255, 73,183,156,170,248,228,223,188,121, 19, 23, 46, 92, - 64,102,102, 38, 90,182,108,105,213, 56,255,193, 92, 41,124,159,190, 66, 68,174, 33, 33, 33,190, 71, 79,156,117,205,205,231,157, -158,164,234, 68, 60,207,195,206,206, 91,191,123,239, 79,217,253,250,244, 36, 34,122, 6,224, 74,161,169,125, 97, 42,209,148, 66, - 99, 82, 63, 52, 52,116,250,132, 9, 19, 16, 27, 27,139, 49, 99,198,168,174, 92,185,242,188, 77,155, 54,238, 91,182,108,145, 79, -153, 50, 5,103,206,156,153, 75, 68,251, 1, 60,102,140,153,221, 75,141, 49, 38, 22,139,197,208, 23,218, 5,173,129,135,209,215, - 43, 20, 10, 48, 85, 38,196, 98,177, 0, 64, 21, 0, 22,173,147,227,121, 94, 44, 18,137,138,204,213,211, 84, 5,158, 62,203,131, - 34, 87, 3,149, 74, 15,141,138, 65, 96,231, 46, 4,158,120, 2,120, 98,137, 38, 0,129, 76, 38,131, 94,175, 71, 78, 78,193, 48, -140,145, 49,141, 70,131,236,236,108, 8, 4, 2, 7, 0, 78, 0, 50, 44, 17, 44, 88,188,142, 3,133,211,125,248,227,135, 94, 30, - 15,126,153,161, 13,157, 23, 83,116,204,201, 94,168,219, 59,165,129,192,221,183,241,249, 38,253,190, 11, 52, 30,251, 59,215, 95, - 17,145,180, 74,149, 42,167, 34, 34, 34, 26,212,169, 83, 7,143, 31, 63, 14,236,219,183,111, 75, 34,106,194,172,220, 51,145,136, -236, 56,142, 91, 54, 98,196,136, 9, 3, 7, 14,164,186,117,235, 66, 40, 20, 66,175,215,251,198,198,198,118,218,179,103,207, 52, -161, 80,184,197, 96, 48,124,106,233,186, 62, 34,226, 36, 18,201,238,205,155, 55,183,111,217,178, 37,118,236,216,129, 43, 87,174, -240,175,191,254, 58, 55,116,232, 80,248,251,251,183, 28, 58,116,232, 1, 34,234, 94,145, 72, 22, 17,249, 15, 30, 60,184,186, 64, - 32, 64,155, 54,109,196, 23, 46, 92,104, 10,224,130,181, 58, 37, 52, 29,124,125,125,207,116,236,216,177,201,137, 19, 39,174, 17, - 81, 71,107,214, 49, 18, 81,111, 31, 31,159,229,206,206,206, 22,191, 41, 42, 20,138,188,196,196,196,207,152,229,251,145,182,106, -214,200, 78, 9,201, 0, 0, 32, 0, 73, 68, 65, 84,172, 25,226,226,226, 80,191,126,125,136,197,226,214, 68, 52, 14, 64, 55, 0, -179,152, 21,187, 67, 16,145, 79,235,214,173, 61, 58,118,236, 72, 75,151, 46, 5, 0,136, 68, 34, 24, 12, 6,112, 28, 7,145, 72, -132,192,192, 64,122,244,232,145, 27, 17,249, 88, 50, 93,232, 17,208,169,103,155, 55,187,181,107,223,242, 53,238,203,189, 15, 96, -224, 13, 16,144, 30, 66,226,193,235,164,144,138, 5,168, 27,212, 92,112,247,246,141,150, 30,245,186,244, 76,191,119,188,220,233, - 66,143,128, 78, 61,187,245,236, 21,210,160,126, 93,110,205,129,135,200, 74,140, 49, 36,222, 57,155,206, 9, 56, 52,104,246,134, - 71,221,134, 77, 4, 77, 90,118, 20, 37, 61,190,221,201,173, 78,135,206, 25, 15,206,216, 76,197, 43,198,212,139,252,219, 41,245, -191,241,189,209,108,142,147,132,106,238,217,179,147, 75,203,209, 42, 99, 99, 99,225,225,225, 1,111,111,111, 56, 59, 59, 35, 58, - 58, 26,191,253,246, 27,238,221,187, 7,158,231,209,184,113, 99,171, 58, 78, 79, 79,199,141, 27, 55,224,234,234, 90,105,154,181, -171, 87,193, 71,213,171,136, 83,159, 43,196, 39,174,220,107,249,205,140, 62, 13,185,192, 62,219,242,243,255,252,236,215,104,254, - 27, 59,137,152,102, 11,250,249,249,181,221,190,125,187, 88,173,135, 99,221,113, 23, 87, 40,243, 13,246, 0, 96, 47, 19, 40, 35, -151,215,251,116,193,130, 5,202,145, 35, 71, 6, 62,125,250,116, 73,233,138, 5, 72, 36,146, 69,111,191,253,246, 84,198,152,232, -227,143, 63, 6, 0, 12, 27, 54, 76,113,233,210,165,186,140,177,103, 68,228, 51,106,212,168,251,167, 78,157,178,155, 60,121,178, - 64,175,215, 71, 11,133, 66, 70, 68, 97,140,177,121, 37,245, 56,142,187,122,237,218,181, 26, 62,254,245,224,239,206, 33,100,118, -193,118,106,238,118, 60, 18,158, 60,196,157,155, 87,224,229,229,229,236,237,237, 29, 83,191,126,125,109, 98, 98,226,180,220,220, -220,141,101,141, 81, 44, 22, 71, 69, 70, 70,122,251,251,251, 35, 55, 55, 23, 9,105,121,152,180,207, 14, 10, 85, 65,208, 66, 4, - 21,154, 84,175,231, 40,231, 52, 87, 60, 61, 61,181, 26,141,230,139,172,172,172, 50,183,251, 16,137, 68,207,111,222,188,233,224, -231,231,135,252,252,124,150,145,145, 65, 74,165, 18, 57, 57, 57,244,203, 47,191,188,155,156,156,252,122,205,154, 53,201,215,215, - 55,172, 78,157, 58,170,196,196,196, 49,150,172,241,138,152, 27,168, 37, 34,131, 80, 40,252,114,236,216,177,253,246,239,223,127, -117,239,188, 6,189, 25, 99, 90, 0, 32, 34,231,160,160,160,163,175,189,214,208, 39,124,101,163,181,140,177, 21,229,105,254, 5, -140,152, 57,115,102, 3, 55, 55, 55,124,240,193, 7,152, 63,127, 62,230,204,153, 83,231,131, 15, 62, 24, 11, 96,149,165, 34, 68, - 36,247,242,242,250, 99,205,154, 53,129,109,219,182,197,225,195,135,177,115,231, 78, 60,122,244, 72, 95,179,102, 77, 97,203,150, - 45, 49,119,238, 92,188,245,214, 91, 99, 38, 78,156,216,129,136,154, 90,104, 58, 70,206,157, 59,183,119,187,118,237, 48,124,248, -112,245,233,211,167,251, 1, 56,118,252,248,241, 55,206,156, 57,179,247,135, 31,126,144, 47, 94,188,184,243,148, 41, 83, 62, 0, -176,174, 2,247,255,110,251,246, 5,123, 27,183,107,215, 14,203,151, 47,127, 11, 47, 97,176,136, 72,226,238,238,254,203,142, 29, - 59,154,212,171, 87, 15, 67,134, 12,105,218,175, 95,191, 95,136,168, 11, 99,204,162, 55,164,106,213,170, 45, 59,120,240, 96, 64, -105, 51, 9,230, 80,171,213,110,239,189,247,222, 82, 0, 86, 25,172, 31,127,252, 17,159,125,246, 25, 26, 55,110,252, 90,171, 86, -173, 54,141, 27, 55, 14,161,161,161,111, 18,145, 39, 99, 76,105,137,144, 80, 40,172,217,163, 71, 15,209,190,125,251, 0, 0,237, -219,183, 71,231,206,157,113,235,214, 45,156, 63,127, 30, 2,129, 0,246,246,246,104,219,182,173, 36, 41, 41,169, 38,128,114, 13, - 22, 39,181, 27,209,187, 71,119,199,159, 46, 37,195,192,235,209, 60,192, 9, 45, 3,171,226,110,130, 2,145, 49, 9, 48,104,196, -112,114,115, 71,235, 14, 93,221, 82, 18, 31,141, 0, 80,254,122, 44,169,221,136,247,123,191,227,240,211,197, 36,100, 37,221, 97, - 15,174,236,255, 77,151,175, 28, 3, 0, 87, 79,238,218,228,229, 46,239, 82,183, 89,115, 65,199, 46,189, 92,247,237, 76, 25, 1, -192,102,176,108, 88, 76,153,211, 29, 57, 90,164,190,249, 78, 31, 92,187,118, 13, 0,240,252,249,115, 60,127,254, 28, 1, 1, 1, - 88,183,174,248,251, 86, 69,140, 11,207,243,149,174, 9, 0,158,238, 78, 24,210,189,133,240,252,141,157, 50,101, 90,154,204,193, -193,161,200, 97,253, 87, 12,150, 41,122,189, 94, 86,179,102, 77, 40, 84,160,236, 60,157, 67,250,174,130,200,190,199,128,211, 14, - 26,141,134,115,112,112,128, 90,173, 46,115,186, 12, 40, 88, 51,209,187,119,239,169,187,119,239, 22,221,185,115, 7,181,107,215, -134, 86,171,197,165, 75,151, 18, 88,193, 6,197, 96,140, 37, 9, 4,130, 36,158,231,235, 52,110,220, 24, 75,150, 44, 65, 96, 96, - 32,117,239,222,125, 90,161,201,226, 77, 53,147,147,147,151,141, 27, 55,238,141, 61,123,247,187,109,238,175,130, 34, 91,129,220, -220, 92, 68, 93,191,138,140,212,124,124,243,205, 55,144,201,228, 4, 64,252,236, 89,170,120,242,228,201,107,125,125,125,187, 37, - 36, 36,244, 40,109,156, 73, 73, 73,139, 62,252,240,195,214,187,118,237,114,201,201,201,129, 74,149,143, 12,165, 29, 98, 86, 23, -236,175,219,224,147, 24,108, 88,191,145,107, 84,195,222, 35, 47, 47, 15, 19, 38, 76,248,202,199,199,167,109, 82, 82,210,168,210, - 52, 19, 19, 19, 47,127,244,209, 71,158, 63,252,240,131, 76,163,209,104, 13, 6, 3, 84, 42, 21,183,107,215,174,105, 53,106,212, -112,221,178,101, 11,201,100,242,194,182, 9,226,241,227,199,239,246,242,242,250, 33, 37, 37,101,120, 57,223, 83,129, 64, 32, 88, - 29, 30, 30, 62,180,127,255,254,142,201,201,201, 13, 15, 30, 60, 40, 5,160, 42,108,226,221,165, 75,151, 26, 43, 87,174,172, 18, - 20, 20, 52,141,136, 68,140,177,191,117,211,112, 15, 15,143,137,189,123,247,198,210,165, 75,241,243,207, 63, 79,113,115,115,251, -106,254,252,249,240,241,241,249,136,136, 86,151,183,238,206,132, 21,171, 86,173, 10, 12, 12, 12,196,176, 97,195, 52, 39, 78,156, -152, 9,224, 0,128,184,115,231,206,249,125,247,221,119, 61,119,239,222,189,116,205,154, 53,178,117,235,214, 5,244,233,211,103, - 53,128, 82,127, 70, 70, 60, 61, 61, 39, 15, 28, 56, 16, 43, 87,174,196,233,211,167,251, 48,198, 14, 23,158, 58, 66, 68, 61, 23, - 47, 94,124,114,246,236,217, 88,181,106,213,199,176,210, 96, 17,145, 67,131, 6, 13,190,232,214,173, 27,206,157, 59,135,144,144, - 16,180,110,221,122, 10, 17,173,101,140,165, 91,163, 85,168,199, 57, 56, 56,236,222,190,125,123, 72,141, 26, 53,176,112,225, 66, - 76,157, 58, 21,219,182,109, 11, 25, 50,100,200,110, 34,122,191,228,223,140, 57,156,157,157, 29,236,236,236, 48,109,218, 52,246, -232,209,163,204,242,218, 87,175, 94,221,245,171,175,190, 34, 87, 87, 87,139, 18, 90,136, 72, 46,147,201,218, 4, 7, 7, 99,238, -220,185, 56,126,252, 56,102,207,158,141,224,224, 96,196,197,197, 97,192,128, 1,118,179,102,205, 10, 5, 96,209,190,132,140, 49, -103,119,119,119, 60,123,246, 12, 34,145, 8,109,219,182,197,129, 3, 7,160, 86,171, 81,181,106, 85,100,101,101,161, 69,139, 22, - 0, 0,161, 80,104, 97,210, 13, 11,246,112,115,198,179,219,137, 16, 66,143,102,117, 61,112,234,214,115,104,117, 60,170,186,187, - 32,229, 89, 42, 90, 5,251, 66,163,241, 3, 99,124,176, 37,138, 18, 1,215, 76, 42,147, 35, 35, 39, 29,137, 49,167,159,107, 13, -234,113, 89,143,206,199, 3,128, 91,237,246,227,174,158, 63,126,181,239, 59,237,171,230, 42,171,131, 24,223,194,178,113,218,176, - 81, 64,185,107,176,204,189,151,230,229,189, 56, 75,240,178,198,229, 85,104,154,227,191,104,176,140, 24, 55, 71,214,232,120,104, -116, 5,239,217,106,181, 26, 42,149,170,172,203,138, 96,140,233,142, 30, 61,186, 99,210,164, 73,248,234,171,175,112,255,254,125, -136,197, 98, 4, 7, 7,123, 19,145, 3, 80, 16,113,105,214,172, 89, 85,142,227,112,247,238, 93,124,249,229,151, 24, 57,114, 36, -187,112,225,194, 54,115, 31, 20,140,177,235, 25, 25, 25,235,199,141, 25,153,149,153,250, 20, 58, 85, 38,158, 37, 62,132, 90,153, -133,133, 75,150, 33, 79, 39, 68, 74,182, 22, 41,217, 90,112, 82, 55,108,218,178, 93,208,160, 65,131,110, 66,161,176, 84,131,197, - 24,187,148,154,154,186,101,252,248,241, 89, 41, 41, 41, 69,247,167,209, 49,104,116,197,127, 95,237,236,236,176,122,245,106,231, -186,117,235,246, 22,137, 68,157,202,208, 76,142,143,143,191, 51,126,252,120, 77,106,106, 42,178,179,179,241,211, 79, 63,245,172, - 81,163,134,235,210, 21, 95,145, 82, 43, 68, 74,150, 22, 41, 89, 90, 72, 28,170, 98,247,222,253,130,122,245,234, 13, 18,137, 68, -165,174, 33, 50,154,171, 31,126,248, 97,104,255,254,253, 29, 87,172, 88,145,113,240,224,193, 13,140, 49,211, 31,200,221,213,171, - 87,239,217,189,123,119,206,212,169, 83,221,150, 47, 95, 62,133,136,102,150,250, 67,122,197, 16, 81,167,254,253,251,215,231,121, - 30, 17, 17, 17, 55, 25, 99,171,246,239,223,255,135, 90,173,198,128, 1, 3,106,162, 96,186,200, 18,157,215, 7, 13, 26, 52, 33, - 36, 36, 4,159,124,242,137,246,196,137, 19,205, 24, 99, 95, 49,198,158,176, 2,226, 24, 99,107,207,156, 57,211,120,226,196,137, -234, 22, 45, 90, 96,248,240,225, 35,137, 40,164, 28,221, 54, 3, 7, 14, 12,228,121, 30,187,118,237,186, 97, 98,174, 0, 0,140, -177,223,246,238,221,123, 73,163,209, 96,240,224,193,181,136,232, 13, 43,238, 93, 44,149, 74, 35, 22, 44, 88,224,146,152,152,136, -161, 67,135,170,239,222,189,139,121,243,230,201,157,157,157, 15, 27,255, 6,172, 65, 42,149,126,243,245,215, 95,247,110,212,168, - 17,198,143, 31,175,217,184,113,227,164, 9, 19, 38,104,154, 53,107,134, 13, 27, 54,244,150, 72, 36, 86,109, 1,146,148,148,148, - 21, 29, 29,237, 94,222, 35, 33, 33, 33,213,194,123,182,115,116,116,188, 24, 20, 20,164, 8, 14, 14,110,174,215,235, 17, 29, 29, -253,112,199,142, 29,124,112,112, 48,214,175, 95,143,229,203,151,163, 71,143, 30, 16, 8, 4,161,214,140, 85,169, 84, 66, 38,147, - 65, 44, 22, 35, 50, 50, 18,106,181, 26,118,118,118,144,201,100, 16, 8, 4,112,113,113,129,163,163, 35, 0, 88,100,216,137,192, - 20,121, 58,136, 68, 28,132, 28,143, 59,113,217,208,234,120,200,196, 2,136,132, 4, 48, 30, 46,246, 34,200, 36, 2,112, 68,229, -154,214, 66, 77,100, 43,181,144,136, 57,136,196, 18,226,244, 6,185,241, 28, 39, 52,200,229,114, 9,121, 56, 73, 33, 19,219,106, -114,219,176,158,114, 11,141,242,252,139,191,167,230, 76,138, 90,173,126,169,129,188, 10, 77,115,230,240,101, 53,255,137, 8,133, -194,252,123,247,238, 73,156,220,125,120,119, 71, 81,102,141,145,231,157, 1,192,205, 65,152,173, 53,232,248,164,164, 36, 72,165, - 82,179,107,164, 74,146,159,159, 63,134,136, 22, 2,104, 40, 20, 10, 15,109,223,190,157,194,195,195, 93, 7, 14, 28, 24, 75, 68, -137, 65, 65, 65,254,219,183,111,119, 2,128,181,107,215,178,221,187,119,191,133,130,210, 23, 41,165,105,166,164,164,204, 19,137, - 68, 23, 62,252,240,195,117, 18,137,196,213,222,222,222,253,220,185,115,148,175,101,120,125,102, 92, 81,102,161,147,156,195,217, - 25, 78, 24, 59,118,172, 32, 38, 38,102, 9,128, 67,101,104, 78,147, 74,165,231,238,223,191,255,149,179,111,147, 42,246,254, 51, -157, 91,206,184, 11, 0,240,247, 16,129, 43,124, 63,204,202,202, 66, 90, 90, 26, 38, 76,152,224, 26, 27, 27, 59, 13,192,169,210, - 52, 19, 18, 18,206, 72,165,210,132,219,183,111,119, 20,137, 68, 18,123,123,251,215, 47, 94,188, 72,249, 26, 30,175, 77,139, 67, - 70,110,193, 56,221, 28,132,184,186,192, 19, 31,125,244,145,240,193,131, 7,203, 0,180, 51,167,199,113,220,114, 83,115,245,249, -231,159, 71, 1,168, 69, 68,197,166, 64, 13, 6, 3, 13, 30, 60,248, 22,128,224,169, 83,167,186, 49,198,166, 16, 81, 6, 99,108, -115,105, 99,125, 85, 56, 57, 57, 45, 29, 55,110, 28,118,239,222,141,204,204,204,213, 0,160, 80, 40, 86,253,248,227,143,187,198, -140, 25,131,239,191,255,126, 41, 17,253,106, 65, 20,235,237, 1, 3, 6,224,200,145, 35, 56,121,242,228, 23,140,177,104,115,141, - 24, 99,247,137,104,218,193,131, 7,215, 12, 28, 56, 16,223,126,251,109, 55, 0,231,202,208,237,242,214, 91,111,225,240,225,195, -120,254,252,249, 6,115, 13,178,178,178, 54,254,244,211, 79,173,222,122,235, 45, 44, 89,178,164, 11,128,223,202,187,111, 34, 10, -116,118,118,222,190,102,205,154,215, 27, 53,106,132, 65,131, 6,229,107,181,218,110, 83,167, 78,253,121,231,206,157,142, 59,118, -236,104, 62,118,236,216,203, 68, 52,154, 49,118,169, 60, 61, 0, 16, 8, 4,139,215,173, 91, 55,170, 99,199,142,152, 50,101,138, -254,232,209,163,189, 24, 99,199,136, 40,246,243,207, 63,255,229,203, 47,191, 20,172, 92,185,114,148, 64, 32, 72, 51, 24, 12,127, -151,169, 94,176,118,237,218, 86, 93,187,118,197,195,135, 15,113,233,210, 37,104,181,218,239, 47, 94,188,120,182, 78,157, 58, 11, - 52, 26,205,207,246,246,246,195, 28, 29, 29,131,154, 52,105,242, 6, 17,217, 89,178, 14,143,136,178, 98, 99, 99,237,171, 86,173, - 10,145, 72,132, 27, 55,110,160,106,213,170, 0,128,103,207,158, 33, 56, 56, 24, 2,129, 0, 89, 89, 89, 0,144,109,201, 64,137, -184,155,177, 79,146,106,185, 57,218, 3, 6, 25,174,223, 77, 64, 21, 15, 87, 24,136, 67, 74, 74, 50,154,212,247, 5, 17, 33,235, -121, 10,136,232,150, 37,154, 6,198, 71, 62, 77,122, 86,205,221, 81,138, 70,173,186,186, 95,252, 53, 45,220,185,118,187,177, 66, - 1, 9,164, 50,167,205,163,134, 15,247,224,121,134,172,231,169, 16,114, 92,153,107, 87,109,216, 40, 73,145, 45, 47,109, 81, 89, -193, 98,233,226,243,254, 37, 77,138, 76, 38, 43,138,158, 88,138,105, 41,133,202,210, 44,143, 87,161,249,119, 65, 68, 51,136,232, - 32, 17,205,136,143,143,191, 51,106,212, 40,173, 94,171,206,185,176,176,214,244,107, 75,106,140,191, 56,207,123,252,129, 73,206, -211,243,178, 51,114,214,174, 93,171,139,143,143,191, 99,122, 77, 89,218,140,177,167,140,177,195,223,125,247,221,198,136,136, 8, - 4, 7, 7, 35, 58, 58,186,170, 82,169,108,122,235,214, 45,183,192,192, 64,132,135,135, 99,247,238,221, 95, 49,198,142,151,101, -174,140,232,116,186, 19,201,201,201,245,226,226,226, 2, 92, 92, 92,116, 46, 46, 46, 40,153, 89,168, 80,241,120,158,149, 13, 55, - 55,119, 56, 57, 57,213, 44, 79, 83,173, 86, 31, 78, 78, 78,174,203,187,214,111, 95, 55,125,117,118,228,226,234,136, 92, 92, 29, -135,167,249,192,219, 69,130,204,204, 76,164,165,165, 33, 45, 45, 13, 68, 4,157, 78,215,192, 2,205, 71, 73, 73, 73, 91,159, 62, -125,122,208,211,211, 19,142,142,142, 96, 0, 82,178,116,136, 90, 25,136,168,149,129, 72,201,210, 65,145,147,131, 26, 53,106,192, -209,209,209,236, 84, 4, 17,113,213,170, 85,235,222,191,127,127, 71, 0, 40, 52, 78,111, 50,198,198,155,121,124,160,215,235,219, - 26,219,126,246,217,103,110, 0,222, 42,111,172,149, 73, 97,134,219,135, 99,198,140,105, 46,147,201,176,126,253,250, 71, 0,126, - 40, 60, 29,177,113,227,198,187, 0, 48,105,210,164, 32, 0, 83, 10, 75, 36,148,138, 88, 44,110,214,160, 65, 3, 92,188,120, 17, - 0,246,151,211,253,222, 11, 23, 46,160, 78,157, 58,144,201,100,175,151,211,182,102,245,234,213,113,247,238, 93, 0,184, 94, 74, -155,235,119,239,222, 69,245,234,213, 65, 68,229,254, 30, 17, 81,239,174, 93,187,222, 60,117,234,212,235,109,218,180,193,168, 81, -163, 52,151, 47, 95,238,206, 24, 59,123,253,250,245, 78,131, 7, 15, 86,214,173, 91, 23,103,206,156, 9, 28, 60,120,240, 5,129, - 64,176,208, 2,205,145, 97, 97, 97, 51,222,125,247, 93,132,133,133,177, 61,123,246, 12, 98,140, 29, 3, 0,198,216,209, 93,187, -118, 13, 93,180,104, 17,123,255,253,247, 49,127,254,252, 25, 68, 52,190, 44, 61,165, 82,153,109, 48, 24,160, 84, 42, 45, 10,193, - 91,218,222,195,195,227,237,174, 93,187, 98,246,236,217,168, 86,173, 26,126,254,249,103, 6,224, 16, 99,236,156, 90,173,110,207, - 24,251, 82,169, 84, 30,184,120,241, 34,186,116,233, 34, 6,240,142, 37,253,235,245,250, 39,167, 78,157,210,186,187,187,195,215, -215, 23,126,126,126, 80, 42,149,200,202,202, 66,112,112, 48, 90,181,106, 5,165, 82,137, 67,135, 14,105,179,178,178, 44, 74, 68, -209,107,148, 59,142,255,178, 47,219,221, 81, 10,223,170,206,168, 81,205, 13,185, 89,233, 72, 75, 73, 66,179, 6,126,232,208,172, - 6,210,179, 53, 56,122,104, 95,102, 78, 78,222, 14, 75, 52,117,234,188,237, 39,126,253, 57,219,213, 81,140,122,245,131, 48,120, -212,164, 38, 77,154,182, 60,222,162, 69,219,163, 43,150, 46,126,237,205,214, 13, 40, 33, 61, 31, 71, 14,237,207,204, 86, 40, 44, -154, 30,181,241,114,252, 87, 22,184, 3,229, 79, 17,166, 79,153, 50, 5, 82,169, 20,222,222,222, 69,166,200,104, 82, 36, 18, 9, -188,189,189,161,215,235,177,107,215, 46, 0, 40,115,141, 2, 7,168,123,141, 95,194,171,117, 44, 79, 36, 18, 85,138, 38, 0,112, - 28,167,238,243,249,183,252,175, 23,204, 39,185, 84, 68,243, 95, 64,139,194,154, 86, 45, 24, 99,153, 79,158, 60, 73,232,215,167, - 87,118, 92,236,237, 20,101, 86, 82,178,226,121,124,114,252,163, 91, 41, 51,167, 77,201, 78, 72, 72,136, 47,172,133,213, 34, 41, - 41,169, 23, 0, 75,215, 18, 76,233,215,175,223,215, 99,198,140, 97, 81, 81, 81, 0,128,200,200, 72, 12, 31, 62,156, 13, 29, 58, -116, 53,128,233, 21, 24,183, 82,165, 82, 21,139,126,104, 13,124,209,212,158, 66,161, 64, 82, 82, 18, 52, 26,141,197, 78,248,254, -209,149,247, 50,158, 92,213, 5,249,219, 35,200,223, 30,129,213,237, 64,250,220, 34,115,149,150,150,134,212,212, 84, 0,176, 40, -138, 87,136, 66,173, 86, 23, 27,167,233, 20,164, 66,161, 64, 74, 74, 10, 12, 6,131,217, 15, 48,198, 24,159,152,152,120,116,247, -238,221, 57, 0,176, 98,197,138, 12, 34, 58, 73, 68, 95,155,121,108, 18, 10,133,191, 27,219,174, 92,185, 50, 3,192, 97,115,186, -175, 2, 34,122,183, 81,163, 70,153, 51,102,204, 88,255,241,199, 31, 99,211,166, 77, 72, 78, 78,158,206, 24,211, 27,239, 37, 61, - 61,253,243, 13, 27, 54, 96,196,136, 17,152, 51,103,206,202,166, 77,155, 42,136,104,112,105,154, 85,170, 84,241, 21, 10,133,184, -118,237,154,130, 49,246,176,172,254, 25, 99, 41,215,174, 93, 75, 37, 34,120,123,123,215, 46,171,173,155,155, 91,128,163,163, 35, - 18, 19, 19, 1,224,113, 41,205,158, 36, 37, 37, 49,137, 68, 2, 31, 31,159, 58,229,220, 62, 92, 93, 93, 63,223,186,117,171,240, -246,237,219,120,243,205, 55, 19,206,156, 57,211,133, 49,118,186,112,108,215, 34, 35, 35, 67, 58,117,234,116,239,248,241,227, 88, -182,108, 25, 53,110,220,184, 76, 51, 4, 0,254,254,254, 31,140, 28, 57, 18,235,214,173,195,230,205,155,199, 51,198, 34, 74,220, -243,206, 13, 27, 54, 76,218,188,121, 51, 70,141, 26,133,154, 53,107,150,250,189, 4,128,184,184,184,105, 29, 59,118,140,188,127, -255,190, 69, 59, 20, 88,210,158,136, 58,181,108,217, 50, 64,165, 82, 97,251,246,237, 15, 3, 2, 2,254,136,136,136,152,194, 24, -187, 81,162,233,129,125,251,246, 97,200,144, 33,104,220,184,241,118, 34, 26, 88, 94,255,140,177,164,184,184,184,244, 27, 55,110, -240, 2,129, 0,190,190,190,232,222,189, 59, 6, 12, 24,128,198,141, 27,227,217,179,103, 56,123,246, 44, 31, 27, 27,155,110, 73, - 6, 33, 0,164,223, 59,245,243,227,199,247,126,191,118,249,172, 78, 40,224,224,231,237,134,247, 58, 55,193,232,208,182,104, 22, - 88, 13,113,207, 84,248,237,183,227,186,199,143, 31, 94,180, 36,131,208,168,121, 39,250,198,133,219,215,206,235, 69, 66, 66, 96, -253,186,152, 61,243,115,215, 69,115,167,185,212,173,237,135, 27,143,178,113,252,216, 17, 93, 82, 66,252, 41, 91, 6,161, 13,107, - 41,111,138,112,197,166, 77,155, 90,108,221,186,181,203,148, 41, 83, 28,134, 13, 27, 6,153, 76,134,188,188, 60,248,250,250,194, - 96,248, 63,246,206, 59, 60,138,226,225,227,223,185,222, 47,245,238,210, 8,132,146, 78,239,189, 24,122, 19, 4, 4,193,242,162, - 20, 5, 81, 65, 4, 69, 84, 4, 65,154, 20, 17, 65, 81,148,166, 96, 9, 29, 84, 4, 4,169,161, 37, 49, 4,210,123,114,233,229, -146, 92,219,121,255, 72,194, 47,196,148, 75, 65, 16,231,243, 60,243,220,221,236,238,103,103,246, 46,119,223,108,153,181,226,248, -241,227,184,122,245,106, 33,199,113,191,160,202,229,255,132,144,160,202, 99,101, 28,143,162,178,178,193, 43, 13,221,130, 39, 78, -108, 18, 39, 0, 40,239,114,234,172, 22,198, 93,155,246,159, 27,191,231,196, 53,242,218,148,254,188,206,190,205, 0, 0, 58,157, - 14,106,181,186,222,206,198,242, 79, 56, 43, 31,190, 77, 77, 77,189, 77, 8,201,120,233,165,151,252, 42, 78,104,151, 72, 36, 37, -137,137,137, 17,229,225,234,111,203,212,213,206,242, 43,221, 94, 38,132, 28,204,203,203, 59,241,230,155,111, 98,197,138, 21, 56, -116,232, 80, 95, 74,233,121, 91,219, 89,197,105,245,242,242,202,189,124,249,178,174,141,127, 39,180,212, 10,209,239,221, 59,160, -148,194, 73, 78, 81,144,155,141,235,215,175,161,160,160,224, 82,125,218,233,230,230,150,155,145,145,225,172,213,106,145,157,157, -141,204,204,204,123,225, 42, 39, 39, 7,217,217,217,148, 16,242, 71, 61,156, 69,173, 91,183, 54, 68, 68, 68,136,117,205,218,160, -149, 86,132,238,111,223, 6, 40,133,167, 35, 15, 5,249,185,184,112,225, 2,242,242,242, 78,215,228,228, 56,110,254,212,169, 83, -249, 0,158,125,243,205, 55, 29, 1,116, 88,184,112,225, 47, 85,175, 20, 20, 10,133,159,236,218,181,171,109,197,161,196,183,222, -122,107, 61,165,244, 75, 91,218,217, 80, 42, 59,157,156,156,230, 31, 57,114, 68,101, 50,153,176,105,211, 38,172, 95,191,126, 7, -165,244,190, 43, 36, 41,165, 71,248,124,254, 22, 30,143,247,202,156, 57,115, 48,115,230, 76,121,151, 46, 93,222,192,255,246,114, -221,231, 76, 78, 78, 94,210,185,115,231,165, 25, 25, 25, 54,157,176,127,231,206,157, 25,157, 59,119, 94,146,145,145,177,186,166, -118, 2,128, 66,161, 80, 88,173, 86,196,198,198,230, 80, 74,171, 61,180, 68, 41, 45,241,246,246, 78,182, 90,173, 30,114,185,220, -177,182,190, 3, 64, 78, 78,206, 71, 93,186,116,121, 63, 61, 61,253, 36,128,229, 85,135, 28,161,148,222, 32,132, 4,206,155, 55, -111,238,170, 85,171,198,167,165,165,253,109,156,165,170,206,248,248,248,143, 6, 14, 28,248,110,100,100,228,206,154, 14,245, 82, - 74, 63, 37,132,152,118,237,218, 53, 59, 54, 54,246,111, 87,248, 86,118, 82, 74, 15,163,150, 67,230,213,184,171,157,191,178,147, -207,231, 47, 92,181,106, 21,239,243,207, 63, 7,165,116,173,197, 98,169,169,157, 55,249,124,254, 55,189,123,247,126,110,255,254, -253,210,192,192,192,153, 0,246,214,212,247, 10, 74, 75, 75, 47,254,249,231,159, 61,226,226,226,156, 7, 14, 28, 40, 2,202,254, - 49,201,205,205,197,225,195,135, 77, 81, 81, 81,153, 69, 69, 69,213, 30,110,173,201,105, 49,230, 79,249,243, 84,240,222,184, 59, -161, 61, 7, 12, 27,235, 96, 52,121, 64,146,197, 71,110, 86, 26,142, 31,254, 49, 39, 54, 54,250,130,193,144, 91,109, 0,172,201, -105, 42,205,155,124,225,247,131,251,146, 98, 35,122,244, 27, 56,194,161,196,216, 28, 18, 17, 15, 89,233,201, 56,126, 36, 56, 59, - 54, 54,230,143, 18,115,233,243,245,113, 54,134,255,178,243,177,131, 82, 90,103, 1, 32, 2, 16,164, 84, 42, 87, 44, 93,186,116, -237,165, 75,151,214,142, 26, 53,106,173, 68, 34, 89, 1, 32, 8,128,168,134,229,130,254, 73,103, 87, 55, 56, 14,108, 69,206, 14, -105, 77,184, 89,125, 29,172,207,119, 87, 24, 7, 13, 26,180,165, 49,206,134,150, 7,237, 4, 16,108, 54,155, 41,128, 52, 0,193, -229,101,113, 53,203, 44,174, 52, 61, 45, 33, 33,129, 2, 8,174, 79, 59, 1, 56, 63,253,244,211, 92, 65, 65, 1,157, 52,105, 18, - 5, 96,215,152,190, 75, 36,146,129,253,250,245, 51,167,235,179,233,237,152,100,122, 49, 36,156,158, 56,245, 39,221,247,227, 17, -186,121,203, 54,218,190,125,123, 35,128,230,245,113, 10, 4,130, 65, 3, 7, 14,204, 74, 79, 79,167, 17, 17, 17,244,236,217,179, -244,192,129, 3,116,219,182,109,116,235,214,173,180, 89,179,102,233, 0,116,245,113,202,100,178,177,195,135, 15, 55,231,230, 27, -104,108,114, 22,189, 21, 17, 75,207, 95,190, 69,143,159, 58, 79,119,239,221, 79, 3, 2, 2, 74,234,114, 2,224,243,249,252,205, -251,246,237,203,167,148,210,177, 99,199, 38, 1,144, 86,154,222,114,254,252,249, 25,148, 82,186,122,245,234, 44, 0,111, 63,132, -207,210, 48,119,119,247,219, 34,145,232, 8,128,103,235, 88,110,178, 64, 32, 56,228,226,226,114, 5,192,184,127,178,157,229,175, - 71,105,181,218,139, 0,198,212,177, 92,197,124, 79,254,211,219,243,223,226, 4, 48, 72, 32, 16,156, 69,217, 24, 87,117, 45, 39, - 2,240, 33,159,207, 63, 10,224,137,250,180, 19,128,155, 82,169,236,163, 84, 42, 71, 43,149,202,209,246,246,246,125, 0,184, 53, -166,239, 78,222, 65,163, 61, 59,141,249,185, 89,135,145,241,158, 29, 71,197,123,117, 30,251,179,147,119,208,232,198, 58,155,119, - 30, 27,236,217,113, 84,130,103,199,209,113, 45,187,142,253,217,217, 55,104,248,227,246,190, 63,202,206, 26,214, 51,227,159, 88, -207, 3,105,123, 61, 59,170, 0, 48, 14,192,202,242, 71, 69, 99,223,128, 7,225,236,225, 10,159,160,214, 36, 98,132,175, 32, 27, -192,132,166,112, 54,224, 67,241,160,191, 28,119, 26,141, 70, 90, 82, 82, 66, 13, 6, 3, 45, 44, 44,188, 47, 56, 85,154, 47, 56, - 37, 37,133, 38, 37, 37,209,132,132, 4, 26, 23, 23, 71, 1,236,174,111, 59,213,106,245,151, 19, 39, 78,180, 10,133,194,205, 77, -209,119, 71, 71,199,149,221,187,119, 55,109,220,184,145,254,252,243,207,244,139, 47,190,160,115,230,204,161,109,219,182, 45,181, -183,183,159,210, 16,167,139,139,203, 18, 95, 95,223,172, 29, 59,118,208,221,187,119,211, 13, 27, 54,208,119,222,121,199,234,225, -225,145,166, 82,169,134, 54,196,169,213,106,183,247,233,211,199,180,125,251,118,250,203, 47,191,208, 61,123,246,208,249,243,231, - 83, 63, 63,191, 82,133, 66,241,148, 45, 78, 0,124,129, 64,176,110,214,172, 89,105,110,110,110, 71,170, 76,147, 7, 4, 4, 92, -153, 58,117,106, 10,128,183, 30,151,207, 39,115, 50, 39,115, 50,103, 19,173,231, 95, 27,176,234,188,138,176, 50,180,108,144,185, -159, 8, 33,135,104,249,249, 25,141,229, 65, 56, 47,164,208, 72, 0,126,132, 16, 65, 83, 57, 31, 65, 62, 18,139,197, 2,148,223, -244,185,156,234,174,114,185,236,230,230, 86,249,117, 30,128,122,143,179,148,151,151,247, 34, 33,228, 85,122,255, 16, 3, 13, 38, - 43, 43,107, 49, 33,228,187,152,152,152,149,246,246,246,157,205,102,179, 57, 63, 63,255,108, 78, 78,206, 91,148,210,164,134, 56, - 83, 83, 83,151, 19, 66, 14, 46, 89,178,228, 77, 74,105, 55, 30,143, 87, 98, 54,155, 79,103,102,102,174,164,148,234, 27,226, 76, - 79, 79,159, 33, 18,137,190,138,138,138, 90, 41,147,201,218,115, 28,103, 52, 24, 12,167, 51, 51, 51, 95,167,148,218,116, 41, 60, - 45,187, 97,238,124, 66,200, 58, 0, 25, 85,166, 25, 8, 33,189,195,195,195,157, 40,165,169,213, 27, 24, 12, 6,131,241,111,163, - 94, 1,171,130, 7, 17, 90,254, 45,206, 71, 5, 74,233, 93, 0,181,158, 24, 91, 62, 95,157,163,183,215, 99,157, 77, 18,174, 42, -249,110, 1, 24,222,196,206, 48, 0,207, 54,165,211,100, 50, 93,130,141,247,101,171,141,154, 2, 20, 45, 59,215,141,133, 43, 6, -131,193,120,140, 96,163,167, 49, 24, 12, 6,131,193, 96, 52, 49, 4,101, 39,127,255, 13, 90,143,171, 3, 8, 33,213, 58,106,163, - 46, 63,115, 50, 39,115, 50, 39,115, 50, 39,115, 62,126,206, 74,238,154,238,109,122,187,138,175, 94,119, 60,120,100,120,192, 39, -167,253, 43, 78,172, 99, 78,230,100, 78,230,100, 78,230,100,206,135,235,124,220, 10, 59, 68,200, 96, 48, 24, 12, 6,131,209,196, -176,128,197, 96, 48, 24, 12, 6,131,209,196,176,128,197, 96, 48, 24, 12, 6,131,209,196,176,128,197, 96, 48, 24, 12, 6,131,209, -196,176,128,197, 96, 48, 24, 12, 6,131,209,196,144,242,171, 1,202, 94, 16, 66, 41,165,228, 33,182,135,193, 96, 48, 24, 12,198, -127,152,199, 37,139,176, 61, 88, 12, 6,131,193, 96, 48, 24, 77, 12, 11, 88, 12, 6,131,193, 96, 48, 24, 77, 12, 15, 40,219, 29, -247,176, 27,194, 96, 48, 24, 12, 6,227,191,203,227,150, 69, 42,246, 96, 13, 40,239, 88,163,111,104,203, 96, 48, 24, 12, 6,131, -209, 0, 30,171, 44,114,223, 73,238, 12, 6,131,193, 96, 48, 24,140,198,195,206,193, 98, 48, 24, 12, 6,131,193,104, 98, 88,192, - 98, 48, 24, 12, 6,131,193,104, 98, 30,104,192, 34,132, 4, 49, 39,115, 50, 39,115, 50, 39,115, 50, 39,115,254,215, 96,123,176, - 24, 12, 6,131,193, 96, 48,154, 24, 22,176, 24, 12, 6,131,193, 96, 48,154, 24, 22,176, 24, 12, 6,131,193, 96, 48,154, 24, 22, -176, 24, 12, 6,131,193, 96, 48,154, 24, 22,176, 24, 12, 6,131,193, 96, 48,154, 24, 2,160,218, 43, 1, 40,165,191,218, 44,105, -192,213, 4,117,249,153,147, 57,153,147, 57,153,147, 57,153,243,241,115,214,229,174, 79,254,120,164,161,148, 62,176, 2, 32,136, - 57,153,147, 57,153,147, 57,153,147, 57,153,243,191, 86, 4, 77, 29,216, 24, 12,198, 63,204, 1,194, 71,142,175, 23, 40,117, 3, - 95,156,138,212, 91,209,120,143,114,141,118,166, 7, 52,135,204,172,131, 69,170, 71,250,205,152, 70, 59, 25, 12, 6,227, 63, 4, - 11, 88, 12,198,191, 29,189,159, 15, 4, 88, 9, 30, 92, 65, 77, 81,208, 4,172, 4, 16,218,104,167,136, 91, 14, 43,207, 3,212, - 20, 9,173,239, 42, 0,225, 77,210, 94, 6,131,193,248, 15,240, 80, 78,114,151, 74,165, 33, 98,177,248, 67, 66,136,228, 97,172, -159,241,223,128, 16, 34, 17,139,197, 31,202,100,178,144,135,221,150, 7,198,174,118,114,240,172,195,141,102,206,253,248,173, 92, -173,161,212,234, 3,158,101, 4,190,242, 81, 54,202, 41, 32, 67, 74, 76,156,231,238,203, 6, 93,145,209,226, 15,138,198, 57,203, - 33,132,216,139,197,226,227,132, 16,231,198,186, 24,143, 38, 1,132,116,233, 42, 20, 46,240, 39,100, 16, 33,132, 60,236,246, 48, - 24, 15,139,135, 18,176, 74, 75, 75, 59,117,234,212,233, 13,177, 88, 28, 79, 8, 25,243, 48,218,240,176, 80,169, 84,127,218,217, -217,165,219,219,219,167,219,217,217, 93,171,171,254,113,132, 16,226,163,213,106,227,157,156,156, 34, 43,215,107, 59,140,239,229, -221,231,185,247,156, 3,159,236,223, 4,235, 24, 35,145, 72,226,187,119,239,254,122, 73, 73, 73,167,198,250, 30, 89, 74, 56, 29, -120,252,129, 97,169, 6,121,106,190, 89, 23, 18,103, 80, 1,252, 1, 48,194,181,193,206, 60, 78, 7,208, 65, 55,146,138, 21,127, -102,107,116,127, 68,151,170,193,227, 13, 68, 9,113,105,108,115,121, 60,222,108,142,227, 6,139, 68,162,215, 26,235, 98, 60,154, -136,121,188,222,127,142, 25,179,252,173,246,237,231,250, 1,163,171, 11, 89,164,140, 87,253,253,253,143, 17, 66, 38, 55,213,186, - 9, 33, 31,251,249,249, 37, 19, 66,230, 53,149,147,193,104, 40, 54, 7,172,137, 45, 73,239,103, 90,145, 51, 79,183, 36, 5,147, - 91,145,194,103, 91,145,115, 19, 90,146, 65, 13, 93,241,217,179,103,101, 17, 17, 17,218,254,253,251,239,147,201,100,231, 8, 33, -222, 13,241, 72,165,210,227, 2,129, 96, 98,229, 58,185, 92,126, 92, 32, 16, 60, 93,165, 46, 76, 46,151,231,201,100,178,104, 27, -189,119,197, 98,113,145, 84, 42,189, 91,185, 94, 32, 16, 60,173, 80, 40,142, 87,169,155, 88,181,174, 38,132, 66,161, 71, 98, 98, -162, 54, 41, 41, 73, 43, 22,139,117,149,235, 19, 18, 18,180,137,137,137,247,213,215, 23,161, 80, 56, 72,169, 84, 30,168, 90,167, - 82,169, 14,212,180, 76, 85,148, 74,229, 15, 66,161,240,190,247, 86,165, 82,253,173,174, 33, 16, 66,124,134, 12, 25,114, 46, 53, - 53,213,211,222,222,222,190,242, 52, 71, 59,251,161,223,238,216,242,198,216, 17, 67,102,107, 3,198,181,107,160,223, 91, 46,151, -159,235,214,173,219,190, 83,167, 78,105,119,239,222, 45,111,108,155, 31, 89, 14, 4,136, 64,184,126, 28,165,154,191,146, 75, 52, - 35,199, 76, 20, 92, 79, 44,214,152,173, 86, 71,128, 63, 0, 59, 91,212,127, 15,241,129, 0, 17, 4,230,190, 28,165,186,223,226, -132,154,129,147,230,242, 79,197, 9, 52,102,171,213, 9, 60,244,111,144,179, 28, 66,136,144,207,231,191,177,110,221, 58, 30,128, - 57,132, 16,113, 67, 93,255, 70,186,187, 19,247, 39,218, 8, 46,119,118, 35,189,155,202, 73, 8, 9, 84, 40, 20, 87, 9, 33, 62, - 77,229,108, 44, 70,142,187,189, 47, 38,230,196,180,214,173, 71,189,213,190,253, 11, 85, 67, 86,249,243,183, 86,173, 90,245,108, - 88, 88,152,166,101,203,150, 51, 9, 33,141,254,103,159, 16,178, 97,213,170, 85, 11,195,194,194,220,188,188,188, 62,104, 10, 39, -227,145, 66, 12, 96, 32,128,145, 0,158, 0,208,173,252,121,215,242, 50, 18,101,163, 34, 84,126,236, 90,190,108,197,244,238, 53, - 56, 70, 86,179, 92,215, 74,245,149, 95, 87,125, 94, 51,229, 87, 3,208,202,143, 85,203,211, 94,120,127,110, 47,119,195, 95,135, -246,208,194,196, 24,154, 19,113,157, 94,223,254, 17,157,219, 85, 99,120,166, 37, 62,110,192,213, 7,148, 82, 74, 67, 66, 66,104, -113,113, 49, 61,122,244, 40,167,211,233, 74,196, 98,241, 6, 0,138,250,184,196, 98,113,161, 70,163, 41,144,201,100, 95, 3, 16, - 83, 74, 33,145, 72, 10, 93, 92, 92, 10,164, 82,233, 46, 0, 18, 74, 41,134, 14, 29, 90, 76, 41,165, 18,137,164,200, 22,239,240, -225,195,139, 40,165, 84, 44, 22, 23,149,183, 89, 34,149, 74,191,237,210,165, 75,190, 68, 34, 41, 44,175, 19,203,229,242,175,187, -118,237,154, 47,149, 74, 11,109,241, 58, 58, 58, 38, 90,173, 86,122,232,208, 33,170,213,106, 83, 42,234, 29, 28, 28, 18,173, 86, - 43, 13, 14, 14,166, 26,141, 38,197, 22, 87,149,109,202, 83, 42,149,107,186,117,235,150,171, 84, 42,179, 42,213,173,237,209,163, - 71, 94, 69,157, 45, 69,161, 80,100,121,122,122,230, 40,149,202,181, 0,120,148, 82, 40,149,202,172, 22, 45, 90,100,171,213,234, - 53, 21,117,182, 20, 55, 55,183,153, 90,173, 54, 69,171,213,166,216,219,219,175,112,117,117, 77,211,235,245,148, 82, 74, 91,181, -106,149, 65, 41,133,166,253,184, 94,109,122, 63,251,158, 54,112,204,235,159,239,191,112,233,108,104,150,190,253,224,217,107,236, -218,143,181,171, 71,255, 21, 98,177,120,131,139,139, 75, 73,112,112,176, 53, 61, 61,157,222,188,121,147,166,166,166,210,154, 62, -215,255,250,178, 37,192,131,110,243,221, 23,190,212, 51,226,236,170, 97,102, 26,119,138,238,121, 65, 99, 62,243,186,123, 20,221, -234,247, 3,221,230,223,172, 65,206,173,254,123,110,190,227,121,123,243, 7,175,154,227,227,227,233,130,231,134, 89, 78,206,117, -143,166,159,251,237,111,144,243,127,239,209,148,113,227,198, 21, 38, 36, 36,208,128,128,128, 34, 62,159, 63,253,161,111,195,127, -168,116,115,131,123,144,143, 56,249,230,238, 5,220,232, 64,121, 86, 39, 87,244,110,172, 19, 64,160, 86,171,205,220,185,115, 39, - 85,169, 84, 25, 0,124, 30,118, 63,203,219, 69,252,128, 49,223,180,111, 31,204, 77,152, 96,253,166,125,251, 96, 63, 96, 12,202, -134, 5, 34, 0, 22,173, 94,189, 58,196,108, 54,135,124,253,245,215, 33, 99,198,140, 9, 1,176,160,145,235,220,248,241,199, 31, - 83,179,217, 76,191,254,250,107, 58,102,204, 24, 10, 96,147,173,203, 43,149,202, 54,237,218,181,219, 21, 16, 16,144,208,161, 67, - 7,163,191,191,127,137,143,143, 79, 92, 96, 96,224,209,123,187,187, 0, 0, 32, 0, 73, 68, 65, 84, 78,137, 68,226,245,176,183, -233,127,165,212,145, 69,186, 45, 90,180,104, 49, 0,186,104,209,162,197,148,210,145,229,243,141,172,252,188,234, 35,165, 52,168, -242,235,234, 28, 21,165, 58,103,117,235,168,242,188,230,254, 84,116, 6, 64,127, 0,103,170,206, 48,177, 37,122,205,237,229, 94, - 92,172, 79,165,161, 31,189, 70,127, 31,232, 65,207, 15,112,161,145,111,140,163,169,187, 55,208,151, 59, 58, 24, 38,180,196,192, - 6,108, 68, 26, 28, 28, 76, 79,158, 60, 73,163,163,163,105,122,122, 58,125,247,221,119,141, 10,133, 34,135,207,231, 79,181,213, - 37,147,201,242,146,147,147,233,187,239,190, 91, 90,190,183,169,165, 92, 46,207, 75, 75, 75,163, 31,125,244,145, 81, 38,147,197, - 0,240,150, 72, 36,133,209,209,209, 84, 42,149,218, 20,176,228,114,121, 94,104,104, 40,149, 72, 36, 69, 0,188, 53, 26, 77,204, -111,191,253,102,230, 56,142,122,120,120,228, 3,104,169,209,104,238,158, 58,117,234, 94,157, 45, 94, 71, 71,199,196,226,226, 98, -122,242,228, 73,170,211,233, 82,170,214, 31, 59,118,236,190,224,101,227,246,212,185,186,186, 94,175,104,159,151,151,151, 30,128, -206,205,205,237,198,153, 51,103,204,148, 82,218,170, 85, 43,189,173, 62, 23, 23,151,140,140,140, 12,186,105,211,166, 82,149, 74, -117, 13,128,206,197,197, 37, 67,175,215,211, 79, 63,253,180, 84,173, 86,135, 0,208,217,226,114,118,118, 78, 49, 26,141, 52, 55, - 55,151,118,239,222,189,240,252,249,243, 52, 63, 63,159, 82, 74,105,139, 22, 45, 50, 40,165,240,237, 63,253,195, 75,119, 10,243, -255,111,225,150,239,189,186, 61,243,209,137,203,201, 73, 95,254,124, 53,196, 57,112,236, 48, 91,214,193,231,243,167, 42, 20,138, -156, 79, 62,249,196,148,147,147, 67, 99, 98, 98,232,197,139, 23,233,197,139, 23,105,122,122,250,227, 25,176,246,131, 79,183,249, -142,165,219,124, 67,118, 78,115,206, 44,184,182,151,210, 95,230,209,232, 15, 91,210,165,195, 84, 5,220, 54,223, 16,186,205,111, - 2,125,191,191,160, 94,206,237,254,163,233, 54,223,144,143, 39, 54,207,186, 30,114,133,158, 57,115,134,126,182, 97, 53,157, 27, -228, 94,196,109,243, 13,161, 91,253,199,215,203, 89,169, 72, 36,146, 59,231,206,157,163,103,207,158,165, 31,124,240, 1,149,203, -229, 9,141,223, 14,254, 34,186,213,167, 57,221,226, 61,128,238,240,118,165,167, 27,214,182, 7, 89,186,185,193,125,176,143, 56, - 41,243,250,207,148,102,223,165,105,107, 3,232, 48, 95, 97,163, 66, 86,121,184,210,199,197,197,209,180,180, 52,186,126,253,122, -170, 86,171, 31,233,144,229, 11,140, 5,176,120,205,154, 53,247,194,213,150, 45, 91, 66,110,221,186, 21,226,233,233,121,180, 17, -235,218,180,102,205,154,123,225,106,203,150, 45,244,214,173, 91,180,121,243,230,137,117, 45, 59,109,218, 52,121,175, 94,189, 66, -166, 78,157,106,216,185,115, 39,141,139,139,163,183,110,221,162,107,214,172,161,239,189,247, 30,253,234,171,175,232,248,241,227, -139,186,119,239,126,105,194,132, 9,210,122,182, 77, 64, 41, 21,151, 23, 33,165,180, 34, 96, 10, 0, 8, 1,240, 31,246,251,244, -168,149,218,178, 8,173, 33, 68,213, 20,172,170, 78,171, 37,128,213, 26,212,234, 90, 95,109,253,169,188, 11,245, 52,165,180, 63, -170, 32,160, 88, 54, 99,254,135,210,216,157,235,145,254,221,167,224,231,166, 67, 88,144,133,210,115, 71, 96, 62,119, 16,207,246, -236, 41,147, 17,178,188,234,114,182, 32,147,201, 32, 16, 8,144,146,146,130,148,148, 20,204,156, 57, 83,116,238,220, 57,251,190, -125,251,110, 87, 42,149, 55, 8, 33,237,235,114, 16, 66,224,230,230,134,185,115,231,138,191,249,230,155, 86, 42,149,234,154,213, -106, 21,234,116, 58,204,158, 61, 91,180,127,255,254, 22,246,246,246, 87,172, 86,171, 72, 44, 22,195,214,115, 46, 9, 33, 16,137, - 68,176, 88, 44,194,110,221,186, 93, 13, 15, 15,247,234,223,191,191, 32, 34, 34, 2,153,153,153,130,174, 93,187,222, 8, 15, 15, -111,221,175, 95, 63, 65, 76, 76, 12,242,242,242,168,173, 94,163,209, 8,137, 68, 2, 30,143,119, 95,125,105,105, 41,234,211, 70, -160,236,240, 95,239,222,189,195,110,222,188,217,161,127,255,254,130,208,208, 80,100,102,102, 10,187,119,239, 30,118,227,198,141, -246,125,250,244, 17, 68, 70, 70, 34, 47, 47,207,230, 75,236,165, 82, 41, 52, 26, 13,158,125,246, 89,241,254,253,251, 59,104, 52, -154,155, 2,129, 64,236,236,236,140,169, 83,167,138,247,239,223,223, 81,167,211,221,176,241,144, 33, 31, 0,204,102, 51,102,206, -156,169, 80,171,213, 72, 76, 76, 4,199,113,176, 90,173, 0,128,172,156,172, 91, 55,110,133, 70, 60, 59,101, 98,255, 98, 83,105, -233,133,203, 87,255,106,213,162,185, 7, 33,180, 69,109, 98, 66, 72,123,185, 92,126, 99,242,228,201, 95, 36, 36, 36,216, 79,157, - 58, 85, 24, 23, 23,135,172,172, 44, 8,133, 66, 72,165,210,251,182,241, 99, 69,126,128, 19, 56, 12,142,215, 27, 37, 18,123, 15, -149,210,213, 7, 72, 56,139,150, 26, 9,248, 60,190,244, 74,140, 65, 1,208,193,240,204,116,170,159,147, 27, 28,147, 97,148,152, - 29,219, 42,221, 60, 60,145,149,149,133,102,173,252, 80, 34,214,136,255,188, 91,164, 4,169,167,179, 28, 66, 72, 95,111,111,111, -151, 54,109,218, 32, 51, 51, 19,157, 58,117,130,131,131,131, 3, 33,100,112,125, 93,247,216,217, 66,130,124,244, 6, 33,235,192, -231,125, 0,179, 96, 37,238,234, 59, 97,123,103, 97,131,157, 77, 76,119,119,226,174, 86,138, 47,238,221,247,157,187,147,167, 63, -112,228,255,160,179,151, 96,199,236, 78,142, 26, 59, 73,112, 67, 14, 23, 18, 66, 2,117, 58,221,169, 75,151, 46, 57, 75,165, 82, - 92,187,118, 13, 1, 1, 1, 88,191,126,189,198,193,193,225,236,163,112,184,144, 82, 74, 35,128, 67, 31,223,188,249,245,174,168, -168,195,211, 90,183, 30, 53,213,199,103,197,172,201,147,167,191,250,234,171, 88,189,122, 53,130,131,131,209,187,119,111,204,152, - 49,195,156,144,144,240, 77, 67,214, 67, 8,249,116,237,218,181,115,231,205,155, 87,213,105,138,143,143,255,184,182,101, 3, 3, - 3, 61,238,220,185,147,252,198, 27,111,116,218,181,107,151, 76, 46,151, 35, 55, 55, 23,219,183,111,199,226,197,139, 65, 8, 1, -165, 20, 95,125,245,149,252,133, 23, 94,232, 22, 21, 21,149,220,162, 69, 11, 91, 78,223, 32, 0,164, 0,228,229, 69, 1, 64,190, -119,239, 94,187,177, 99,199,170,203,235,100, 0,100,236, 66,175,106,169, 54,139, 84, 64, 8, 57, 92,249, 53,165,116, 84,213,186, -170,211, 40,165,163,106,115,212,135,218,214, 87,149,202,191, 62, 3, 8, 33,103,254, 38, 3,218,187,120,249, 34,239,151,253,144, - 9, 8,100,252,242, 34, 32,224, 69,223, 66, 51,169, 16,102, 74, 3, 27,210, 80,169, 84, 10,153, 76, 6,153, 76, 6, 66, 8,114, -114,114,160, 86,171,241,221,119,223, 73, 55,109,218,212, 78, 46,151, 95,176,179,179, 91, 89,155,163, 34,140, 68, 70, 70,162, 99, -199,142,228,240,225,195,234, 89,179,102, 9, 0, 32, 62, 62, 30,237,218,181, 35,191,255,254,187,234,205, 55,223, 36, 18, 73,253, - 62,203, 34,145, 8, 11, 23, 46, 36,231,207,159, 87,202,229,114,132,134,134,162,176,176, 16,111,190,249,166,224,207, 63,255, 84, - 42, 20, 10, 68, 69, 69,161,164,164,164, 94,193,205,104, 52, 66, 36, 18,221,183, 12, 33, 4, 38,147, 9, 98,177,216,230, 80,224, -236,236,252, 94,151, 46, 93, 14,156, 62,125,218, 73, 38,147,225,214,173, 91, 48, 24, 12, 88,190,124,185,252,220,185,115, 78, 42, -149, 10,183,111,223,134,193, 96,168, 87,104,171, 88,255,221,187,119,225,237,237, 77,142, 28, 57,162,157, 49, 99,134, 20, 40,219, -166, 62, 62, 62,228,232,209,163, 58, 63, 63,191,253, 90,173,118,105,109, 46,142,227,144,154,154,138,176,176, 48, 68, 71, 71, 67, -175,215, 35, 51, 51, 19, 5, 5, 5,176, 88, 44, 0, 0,121, 65,254,145,189,223, 31,186, 33,147,201,228, 1, 62,222,158,183, 66, -195, 51,100, 50,153,188,185,167,167, 15, 33, 31, 84,187, 49, 84, 42,213, 74,153, 76,118,225,224,193,131,237,191,248,226, 11, 73, -102,102, 38,226,227,227, 65, 8,129, 84, 42,189, 87,248,124,190,205,253,254,215, 64, 8, 1, 49,122,131,144, 78, 23,163,139, 28, -251,142,154, 34, 66,204,113,128, 51, 3, 60, 1, 6,180,247, 16, 4,223, 42,210,129,162, 61, 74,225, 7,216,240,230, 19, 66, 0, - 83, 27,128,116, 57,121,199,226,212,123,220,108, 81,114,114, 50, 68, 34, 17, 36, 18, 9, 58, 13,122, 74,176,247,134,217, 5, 4, - 29, 96,130,175, 77,206, 74,200,100,178,119,223,123,239, 61, 69,101,231,244,233,211, 21,118,118,118,239, 53,104, 27,236,108, 33, - 65,145,188, 39,172,244,181,176,228,226,230, 43,142,164,249, 69,103, 20,251,129, 98, 62, 96,238,216,216,144, 69, 8, 25, 32,149, - 74, 99, 8, 33,125, 26,234,232,238, 78,220,213, 42,241,133,125,251,190,115,119,108, 86, 22,174, 96, 41, 1,132, 50,184,104,236, -177,227,245,129,142, 26,123, 89,189, 66, 86,121,184,250,237,226,197,139,206, 82,169, 20, 33, 33, 33, 16,137, 68,144, 74,165,104, -215,174, 29,182,109,219,166,113,116,116,124,164, 66,214,170,155, 55,119,174, 12, 11,139, 92, 20, 24,232,247,164, 66,225,248,202, -212,169,118,239,188,243,206,225,131, 7, 15,126, 61,114,228,200,204,203,151, 47,127, 66, 41,221, 95, 31,119,249, 73,242, 91,214, -173, 91,247, 74, 69, 96,123,231,157,119,190, 58,120,240,224,202,145, 35, 71,166, 94,190,124,249, 13, 74,233,150,218, 28,133,133, -133, 7,151, 44, 89, 98, 55,110,220,184,138,215, 56,119,238, 28,190,249,230, 27, 40, 20,138,251,230, 29, 51,102, 12, 94,122,233, - 37, 7,163,209,248, 67,109, 78,173, 86, 27,116,241,226,197, 0, 0, 34, 0, 18,148, 7,172,208,208, 80,251,252,252,124,123,165, - 82,105,239,234,234,170, 42,175,151,141, 27, 55,206, 94, 40, 20,246,173, 79,223,255, 3, 84,155, 69, 42,168, 26,150,106,170,107, -232,252,182, 96,235,242,247,126,188, 40,165,103, 0,244,171,110, 38, 83,118, 58, 36,176, 66,198, 39,144,243, 43,133, 44,112, 16, -228,101,212,243,171,246,127, 84,254, 33,148,201,100,144, 74,165,247,246,228,228,229,229,129, 16, 82,103,216,168, 8, 14, 74,165, - 18,197,197,197, 48,153, 76,144, 74,165,247,234, 44, 22, 11, 44, 22, 11,100, 50, 25, 36, 18, 73,189,247, 96,153,205,102,132,133, -133, 33, 42, 42, 10, 60, 30, 15, 10,133, 2,102,179, 25,127,253,245, 23,146,147,147, 33, 16, 8, 32,151,203,235, 21, 96,172, 86, - 43,196,226,191,159,223,107, 54,155,235,181, 7,139,199,227,193, 96, 48,208, 59,119,238, 32, 46, 46, 14, 34,145, 8,106,181, 26, - 98,177, 24,122,189, 30, 73, 73, 73,247,234,234,211,190,138,121,101, 50, 25,138,138,138, 64, 41,189,215, 94,153, 76,134,210,210, - 82, 16, 66,192,231,243,235,124,127,172, 86, 43, 82, 82, 82,160,215,235,145,152,152,136,204,204,204,123, 33,139,227, 26, 63,110, -229,213,171, 87,105,120,120, 56, 74, 75, 75, 33,145, 72, 32,149, 74,239,123, 20, 8, 30,195,161,222, 62, 11,180,131, 89, 56, 36, -179,208, 44,209,155, 68,118,186,192, 32, 32,230, 24,192, 19, 0, 82, 7,244,104,219, 18,241, 57, 86,197,237,116,163, 20, 4, 67, -177,197,199,193, 38,167, 85, 56, 88, 95, 96,150,196,153, 52,106,255,246,157,145,158,158, 14,137, 68, 2,137, 68,130, 46,189,131, - 16,147,101,149,135, 39, 23,203, 65, 49,196, 38,103, 57,132,144, 86, 74,165,178,103,159, 62,125, 72,101,231,136, 17, 35, 64, 8, -105, 71, 8,241,171, 87,255, 55,183, 22,195, 36,239, 1, 33,125, 45, 60,213,224, 22, 28, 90,226, 51,250,201,167, 28, 55,252,154, -225, 23,145, 90,226, 5,206,178, 0,212,212,185,161, 33,139, 16,210, 95,165, 82, 29,222,188,121,179,151, 84, 42, 61, 70, 8,105, -208, 15,160, 82,198,255,252,221, 87,166,184, 59, 84,132, 43,179, 1, 16,200, 0,161, 12, 16,200,224,162,117,198,242,151, 6, 59, -202,165,194, 31,109,117,202,100,178,189, 91,182,108,209, 84, 13, 87, 21,165, 83,167, 78, 88,186,116,169,198,209,209,113, 79, 67, -218,220, 84, 16, 66,134,216,219,219,239, 10, 10, 10,186,152,162, 82,189,148,218,185,179,248, 55, 59,187,188, 39,242,242,236,154, -135,134,154,124,129, 91, 0, 62, 75, 76, 76, 28,102,107,184, 34,132, 76,182,179,179, 11, 9, 10, 10, 50,169, 84,170,132,245,235, -215,191, 60,103,206, 28,172, 94,189, 26, 75,150, 44,249, 2,192,139,148,210,183, 19, 19, 19,221,234, 10, 87, 0,144,150,150,246, -204, 91,111,189,149,153,153,153, 9, 0,104,215,174, 29,114,115,115,177, 96,193, 2,188,246, 90,217, 69,174, 29, 59,118, 4,165, - 20,233,233,233, 88,187,118,109,122, 90, 90,218,243,181, 57, 57,142, 75,220,191,127,127, 55,147,201,228,129,178,195,128,146,220, -220, 92,117,118,118,182,202,100, 50, 41, 56,142, 83,216,219,219, 43, 1,200,159,125,246, 89, 65, 88, 88, 88,128,197, 98, 73,182, -165,255,255, 21,106,203, 34, 13,228, 72, 3,219, 49,138, 16,114,184,186, 61, 96,182,194, 43, 23,145,202,143,149,225, 19,220, 76, -184,122, 22,142,129,157,239,219,123, 37,231, 19,200,212,118,136, 73,140,135, 8, 36,172, 33, 43,175,252,197, 80, 17,178,194,195, -195,241,196, 19, 79, 24,222,127,255,253, 91, 69, 69, 69, 61,115,114,114, 22,215,230,168, 8, 3,118,118,118, 56,127,254, 60, 29, - 63,126,124,254,198,141, 27, 45, 21,117, 23, 47, 94,164,131, 7, 15, 46, 88,182,108, 25,173,122, 88,174, 46,175, 72, 36,194,198, -141, 27,233,192,129, 3,243, 46, 93,186, 68, 21, 10, 5,228,114, 57, 54,110,220,104,233,215,175, 95,222,239,191,255, 78, 21, 10, -197,223,254,219,169, 13, 30,143,119, 47, 96, 85, 14, 61, 60, 30, 15, 28,199,213, 43, 96,101,100,100,124, 16, 17, 17, 49,113,208, -160, 65,233, 97, 97, 97, 84,173, 86,195,206,206, 14,139, 22, 45, 50,116,236,216, 49,227,230,205,155,247,234,234,115,168,172, 98, -253, 42,149, 10, 97, 97, 97,116,212,168, 81, 25,159,125,246, 89, 73, 69, 93,104,104, 40, 29, 62,124,120,122, 88, 88,216,196,180, -180,180,101,181,185, 56,142, 67,116,116,244,189, 61, 86, 37, 37, 37,200,204,204, 68, 98, 98,226,189, 67,132,197, 10,245,176, 41, -147, 70,119, 40, 46, 46, 54,132, 71,222, 73,104,215, 54, 64, 91, 92, 92,108,136, 79, 72,136,164,244,189,106, 83, 88, 65, 65,193, -226,226,226,226,158, 43, 86,172,184, 53,113,226, 68,195,237,219,183,255, 22,174,164, 82,233,227, 25,176,120,156, 11, 8,237,243, -199,157, 66,251,193,163,159, 22,147,180,203,128,169, 16,144, 56, 0, 18, 7, 8, 20, 78, 24,222,183, 35,127,231,197,124, 23, 80, -174, 23, 68, 18,143, 58,157, 66,170, 3,184,190,191, 68,150, 56,244,153, 48, 87,156,157,157, 13, 62,159,127, 47, 12,201, 21, 10, - 60,241,228,179,188,175, 46,151,186, 0,180, 55, 8,191,110,103, 57, 98,177,120,225,187,239,190, 43,202,201,201, 1,143,199,251, -159, 83, 46,199,172, 89,179, 36,106,181,122,137,205,125, 63, 16, 32,130, 80,210, 3, 28,125,237,118, 90,177,219,193,155,197, 62, -243, 87,238,144, 5,118,236,134,153, 3,180,178,149, 71, 51, 2,110, 36, 27,188, 0,235, 27,176, 24,187,212, 55,100, 17, 66,250, -170, 84,170, 35, 87,175, 94,149,143, 24, 49, 2,107,215,174, 85,200,100,178, 99,132,144,122,127,225, 23, 21, 90,231, 44,219,244, -109,250,205, 79,134, 2,166,162,178, 96, 85,169,100, 20,114, 88,186,227, 84,158,217, 76,167,216,234, 44, 46, 46,126,238,197, 23, - 95,204,250,241,199, 31,255, 22,174,164, 82, 41, 98, 99, 99,177, 98,197,138,236,236,236,236,231,235,219,222,166,130, 16, 50,100, -206,156, 57, 43,146,146,146,124,127,249,229, 23,129, 94,175,215,174,251,242,203,188, 3,121,121,217, 43, 67, 67,111,191,221,182, -173,247,162,246,237,159,175,105, 8,135, 26,156,147, 95,121,229,149,189, 73, 73, 73,157,126,253,245, 87,161, 94,175,247,120,229, -149, 87,176,102,205, 26, 44, 89,178,100, 27,128,153,180,252, 36, 30, 91, 49, 26,141,183,115,114,114, 70, 13, 29, 58, 52, 55, 39, - 39, 7,237,219,183,199,232,209,163,225,226,226, 2, 55, 55, 55,140, 29, 59, 22, 62, 62, 62,200,202,202,194,148, 41, 83,178,245, -122,253, 80, 74,105,173, 87,161,103,101,101,221,221,179,103,207,157, 57,115,230,116, 78, 74, 74,242, 7,224, 84, 80, 80,160, 40, - 40, 40,144, 24,141, 70,153,131,131,131, 67,199,142, 29,157,103,204,152,161,188,118,237, 90, 64,114,114,114, 1,128,184,250,180, -251,113,166,182, 44, 2, 64, 95, 30,116,140, 85, 30,245,117, 76,179,117,217,106,159,219, 48, 95,141,212,249,171,107, 2,150,126, -179,127,103,137,216,179, 13,236,124, 59, 64, 46,149, 66, 38, 22, 67,230,224,132, 82,142,195,151,177,105,134, 34, 74,109,255,130, - 44,135, 82,122,239,240,160, 84, 42, 69, 97, 97, 33,230,206,157, 91, 50,105,210,164,220,216,216,216, 89,249,249,249, 29, 40,165, - 55,235,242, 16, 66, 80, 84, 84,132,247,223,127,191,120,209,162, 69,209, 5, 5, 5,157, 68, 34,145,217,100, 50,225,221,119,223, - 45,153, 61,123,118, 92,110,110,110, 87,145, 72,100,170,239,143,173, 80, 40,132, 64, 32, 48,231,229,229,117,122,235,173,183,162, - 86,172, 88, 81, 44, 18,137, 32, 18,137,204,249,249,249,237, 22, 47, 94,124,123,241,226,197,197, 66,161,176, 94,123,198, 42,246, - 8, 85, 61, 68, 88,121, 79,145,173,152,205,230, 83, 25, 25, 25, 29,230,205,155,119,125,227,198,141, 6,165, 82, 9,137, 68, 98, -204,200,200,104,255,242,203, 47,223, 88,187,118,173, 65,169, 84,214,107, 15,150,201,100, 2,199,113,216,188,121,179, 97,222,188, -121, 55,244,122,125,123,148,125, 32,177,113,227, 70,195,203, 47,191,124, 61, 61, 61,189,131,217,108, 62, 85,151,203,106,181, 90, -243,243,243, 33, 16, 8, 16, 26, 26, 90, 42, 18,137,192,227,241,112,247,238,221,123, 1,203,209,209, 49,160, 67,187,182,126,223, -238,221,127, 70, 38,146, 72,122,118,235,226, 31, 29, 23,159, 68, 41,169,245,139,135, 82,122,179,168,168,168, 67, 98, 98,226,172, -233,211,167,231,206,159, 63,191,164,176,176,240,190, 31, 28,161,240,145, 57, 29,167,233,224, 65, 14, 2,217,157,140, 82,149,148, -103, 33,136,252,185, 44, 92, 73,237, 1,169, 3, 32,117,128,187,187, 7, 46,199, 26, 84,224, 65, 12,171, 89, 91,167,147, 82, 5, - 8,228,161,233, 80, 9,197, 50,146,150,150,118, 47, 8, 85, 20,175, 54,254,184, 22, 95,168, 4,161, 18,240, 81,159,161, 68, 70, - 57, 57, 57, 9, 82, 83, 83,255,230, 12, 8, 8,224,155,205,230,161, 54,155, 82,172,174, 0, 55, 39, 50,163,196,237,167, 27, 6, -159,215, 87,126, 37,147, 89,115,129,171,155, 16,216,202, 13,175, 79,232, 40,126, 39, 88, 31,120, 37,206,208, 10, 2, 58, 11, 92, -161,198, 86, 53, 33,164,143, 74,165, 58,118,229,202, 21,185, 74,165, 66,116,116, 52,186,117,235,134,237,219,183,203,229,114,249, - 81, 66,200,128,122,244, 25, 23,211,104,124, 97,129,181,231,194,253, 9,105, 55, 83, 45,247,133, 43,125, 17,197,139, 31, 31,204, -205,201, 47,121,234, 66, 66,221,127, 71, 21, 80, 74,175,231,230,230, 14, 89,178,100, 73,150, 94,175,191,239,179, 30, 31, 31, 95, - 17, 4, 6, 80, 74, 27,244, 79,111, 83, 96,103,103, 55,117,229,202,149,184,114,229, 10, 70,140, 24,129,179,103,207, 34, 59, 59, - 27,251,142, 29,187,179,231,206,157,183, 43,206,201,170,110, 8,135,154, 80,171,213,243, 87,174, 92,137,171, 87,175,222,115,102, -101,101, 97,229,202,149, 73, 0,102,215, 55, 92, 85,144,158,158,126,249,246,237,219, 67,219,183,111,255,215,230,205,155,147, 92, - 93, 93,185, 25, 51,102,224,197, 23, 95,132, 70,163,177,110,216,176, 33,161,111,223,190,161, 81, 81, 81, 65, 69, 69, 69,183,234, -242, 81, 74,105,102,102,230,249, 47,190,248,226,194,160, 65,131, 20,211,166, 77,211, 6, 7, 7, 59, 25, 12, 6, 55,145, 72,164, - 51, 26,141,226,240,240,112,193,129, 3, 7, 92,255,250,235,175,216,226,226,226,203, 13,109,251,127,144, 43, 40,219, 27,245,107, -149,199, 43,117, 76,179,117,217,154,158,215, 53, 95,205,216,114,102,255,212, 86,120,127, 86, 91,149,225,207,105, 61,104,218,140, - 62, 52,253,105,127,122,174,191, 35,157,222,154, 20, 61,215,192, 97, 26,172, 86, 43, 77, 79, 79,167,233,233,233,116,249,242,229, - 22,153, 76, 86, 44,151,203,235, 61, 76,131, 82,169, 44,244,246,246, 46,176,179,179,187, 55, 76,131, 74,165, 42,244,245,245, 45, -176,183,183,191, 55, 76,131, 66,161, 40,164,148, 82,165, 82,105,211, 85,132,106,181, 58,175,176,176,144,202,229,242,138, 97, 26, - 68,118,118,118, 95,120,123,123, 23, 40,149,202,138, 97, 26,132, 14, 14, 14,159,251,248,248, 20,168, 84, 42,155,134,105,112,113, -113, 73, 76, 74, 74,162, 73, 73, 73,180, 89,179,102, 41,149,235,227,227,227,105,124,124, 60,245,240,240,104,208, 48, 13, 26,141, -102, 77,215,174, 93,179, 53, 26, 77, 86,165,186,181, 93,187,118,205,169,168,179,165, 56, 59, 59,103,117,233,210, 37, 71,163,209, -220, 27,166, 65,163,209,100,149,187,235, 53, 76,131, 76, 38,155, 41,149, 74, 83,164, 82,105,138, 68, 34, 89,209,162, 69,139,140, -239,191,255,158,110,216,176,129,170, 84,170,178, 97, 26, 2,198,244,108,211,235,249,183, 53, 1, 99,231, 55,102,152, 6,185, 92, -190, 65, 38,147, 21,127,244,209, 71,150,162,162, 34,106, 54,155,105,249,151, 23,173,239,246,124,164,203,118,159, 54,116,171,223, -193,168,101, 94,225,243,250,201, 75,110, 45,239, 64,233, 15,227, 40, 61,250, 34,165,167, 22,210,203,219,102,208, 94, 94, 18,235, -249, 5,205, 34,233,231,190, 63,217, 52,180,194,246,118,109,232, 86,191,163,119, 62,240, 10,127,174,175, 91,201,151,159,109,160, -151, 46, 93,162,161,161,161, 52, 58, 58,154, 30,253,249,123,218,171,149,188,204,185,213,239, 96,125,134,107, 0,208, 91, 34,145, - 20,174, 95,191,158, 94,188,120,241,158,243,224,193,131, 84, 46,151, 27, 0, 27,175, 66, 6, 8,221, 18, 48,206,242,153,239,185, - 37,131,149,133, 89,135, 23, 82,122,107, 39,165,219, 3, 41,253,186, 59,165,223,143,164,244,208,243,244,226,134, 9,180,183,151, -200, 76, 63,247,253,131,238, 8, 24,108,107, 59,133, 66, 97,254,143, 63,254, 72, 83, 82, 82,232,217,179,103,233,213,171, 87,105, - 68, 68, 4, 77, 72, 72,160, 71,142, 28,161, 66,161,176, 4, 64,189,175, 82,236,174, 67,243, 32,111, 81,234,141, 85,189, 41, 13, -158, 66,245,123,166,210, 81,109, 85,217, 61,154, 9, 6, 53,244, 51, 0,160,163,147,147, 83,230,145, 35, 71,104,108,108, 44, 61, -115,230, 12,213,106,181,153, 0, 2, 31,246,231, 51, 40, 40,232, 18,165, 52,100,196,136, 17, 33, 0,142, 7, 5, 5,133,196,196, -196,132,116,235,214,237, 34,106, 25,194,161, 54,231, 19, 79, 60, 97,162,148,210, 17, 35, 70, 80, 0, 41, 65, 65, 65, 52, 38, 38, -134,118,235,214,205,216, 20,109, 70,217,197, 56,207, 11,133,194, 47, 29, 29, 29,127,119,112,112, 56,197,231,243,183, 3,152, 86, -159,239,187,106,156,238, 0, 2, 80, 54, 94, 82,151,242,231,110, 96, 87, 16,254, 39,138,205, 51, 78,240, 66,239, 23, 90,145, 51, -207,180, 68,193,148,150, 40,252,191,214,228,220, 83, 94,168,245, 11, 2, 53,220,109,187, 34, 96, 29, 58,116,136, 54,107,214,172, - 72,165, 82,157, 3,224,109, 83,131,171, 56, 29, 28, 28,142,243,249,252,137,213,212, 61, 93,185,206,206,206, 46,204,222,222, 62, - 79,173, 86, 71,219,210, 78,181, 90, 29, 33,151,203,139,212,106,117, 68,229,122, 62,159, 63,214,201,201,233, 72,149,186, 49, 85, -235,106,234,187,139,139, 75, 98, 74, 74, 10,213,235,245,212,211,211,243,190,128,149,148,148, 68,211,210,210,238, 11, 94,182, 56, - 43, 23,129, 64, 48, 72,163,209, 28,168,171,174, 54,167, 78,167,251, 65, 32,184,255,203,191,186,186,250,190,239,229,211,124,220, -221,221, 51,214,173, 91, 71,149, 74,101, 70,229,105,190,253,254,239,221, 75,119, 10,243, 95,124,107,235,247, 26,255, 39,219,213, -183,239,229,243,121,171, 84,170,115,205,155, 55, 47,250,237,183,223, 40, 45,171,164, 13,221,158,245, 45,255,136,115,191,191,136, -110,243,239, 77, 63,247, 63, 18,241, 94,243,191,158,239,174, 40, 13, 89, 55,130,210, 83, 11,233,197,173, 47,210,158, 94,226,178, - 32,180,205,239, 24,253,202,167, 31,221,212, 74,108,147,243,203,214,125,233, 54,191, 99,225, 75,155,255, 53,174,179,198,184,119, -231, 54,122,247,238, 93,122,240,192, 30,218,163,101,121,184,250,220,255, 36,221,234, 63,208, 38,231,253,211,122, 75, 36,146,194, - 29, 59,118,208,187,119,239,210,159,126,250,201,166,112,117,159, 19, 32,116,107,192,147,150,207,124,207, 45, 14, 82,230,190,216, - 93, 90, 58,165,163,216, 56, 54, 80,100, 26,210, 70,100,233,213, 92, 96,237,224,202,227,252, 53,160, 67,124,101,165,244,115,223, - 63,232,231,254, 67,109,109,167, 88, 44, 78, 64,165, 49,113,170, 22,137, 68,162,175, 41, 96,213,245,190,119,215,161,121,144,143, - 36,245,183,101,131,232,232,246,170, 44, 91,194, 85, 93, 78, 0, 29,157,157,157, 51,191,254,250,107,170,211,233,244,182,132,171, -127,226,243,105,103,103,183,171,176,176, 48,228,196,137, 19, 33, 65, 65, 65, 33,187,118,237, 10, 57,119,238, 92,136, 92, 46,223, - 85, 62,255,223, 66,150, 63, 48,180, 54,167, 90,173, 14, 41, 40, 40,160, 39, 78,156,160, 65, 65, 65,116,215,174, 93,244,220,185, -115, 84, 46,151,135, 52,248,239,232, 1,244,157, 57, 89,185,111, 27, 61, 80,121, 45, 1,107,218,180,105, 6,185, 92,158, 14, 96, -204,195,126, 83,255, 73,167,179,179,243,159, 58,157, 46, 93,167,211,165,107, 52,154,107,213,213, 59, 59, 59, 95,123,216,237,124, -144, 78, 0, 62, 34,145, 40, 94, 40, 20, 70, 86,174,215, 4,140,233,217,186,247,115, 75,116,129, 99,134, 55,182,157, 0,198,200, -229,242,244,241,227,199, 23, 61,118, 1,139, 82,208, 77,173,196, 21, 33,235,214,146,230, 17,163,219,202, 77,219,223, 24, 66,123, -182,168, 18,174,190,110, 46,169,151,179, 60,100, 93,127,199, 51, 98,160,143,210,178,114,201,235,180, 71, 75,217,253,225,170, 62, -206,251,167,247,150,203,229, 5,239,189,247,158,205,123,174,254,230,252,210,215,147,110,245,219, 93, 22,158,234, 42,254, 95,210, - 79,125, 61, 31,149,247,189,187, 14,205,159,240,145,132,217,186,231,202, 22, 39,128,142, 14, 14, 14,127,217, 18,174,254,169,190, - 3, 24, 50,107,214,172,144,152,152,152,144,232,232,232,144,115,231,206,133, 60,249,228,147, 33, 0,134, 84,154,231, 94,200, 50, -141, 31, 95,218,145,199,123,189, 14,231,228, 89,179,102,209,152,152, 24, 26, 29, 29, 77,207,157, 59, 71,159,124,242, 73, 10, 96, -114, 83,190, 71, 15,226,125,103,206,255,110,121, 40,103, 0,171, 84,170,107, 63,254,248,227,241,226,226,226, 21,148,210,210,135, -209,134,135,133, 94,175,239, 85,159,250,199, 17, 74,105, 36,128,230, 85,235, 51,194,130, 47, 0,184,208, 68,235, 56, 72, 8, 57, -121,252,248,241,119, 84, 42,213,176,166,112, 62, 82,204,141, 50, 98,115,235,171, 16,139, 87,181,117,151, 47,122,119, 4, 37, 43, - 79,252,217,124,245,120,109, 66,175,214,138, 88, 8,185,143, 65, 74, 47,227,249, 56,219,255,190,202,156,151, 33, 51,175,234,208, - 76,190,232,163,177, 32, 31, 31,219,217,124,205,147, 78, 9,189, 90, 41, 19, 64,241, 49, 36,134, 11,245,114, 86,130, 82,122,158, - 16, 50,124,221,186,117,223, 24, 12,134,151, 40,165,191,215, 91,162,226,165,161,200,188, 20,102,126, 91, 80,212,124,194, 34,165, - 6,240, 16,138, 44, 94,122, 67,218,250, 32,184,152, 70,227, 1, 52,104, 72,155,154,160,148, 94, 7,224,223,148,206,198, 66, 41, - 61, 73, 8,193,158, 61,123,166,250,249,249,181, 10, 15, 15,143, 54, 24, 12,187, 41,165, 39, 43,205, 67, 9, 33,135, 62,190,121, -179,232,211,240,240,243, 70,142, 59, 95,135,115, 95,185,115,190,159,159, 95, 96,120,120,120,152,193, 96, 88, 71, 41,221,247,224, -123,196, 96, 52,140,135, 18,176,242,243,243, 59, 63,140,245, 50,254, 91,148,135,247,119,203,203,227, 71,165,144,213,217, 83, 54, -247,199, 89, 50, 3, 40, 73,130,144,219, 80,239,112,117,191,243, 50,100,230, 85,221,154,203, 94,251,105,166,204, 0,138, 52, 80, -124,210,152,112, 85, 1,165,244, 60,128,150, 13, 22, 76, 8, 55, 1,136, 5, 33,113,120, 31, 53,159, 28,253, 62,238,253,155,205, -248,231, 41, 15, 83, 39,235,152,135, 2, 56, 85, 94,108,113,238, 3,192, 2, 21,227, 95,195, 99,120, 13, 59,131,241, 31, 98,110, -148, 17, 7, 2,174, 32,147,191, 0, 60,180, 4, 44,241, 40,178,164, 97,110,156,177,145,206, 75,200, 36,243,192,135, 15,196,150, - 40, 20, 26,211, 48,171, 17,206,166,166,236,199,185,230, 0,213,176,225, 75, 25, 12, 6,163,201, 96, 1,139,193,248,183, 83,182, - 87, 39,169,188, 60,186, 78, 6,131,193,248, 15, 65, 0, 4, 85, 55,129, 82,250,171,205, 18, 66,170,117,212, 70, 93,126,230,100, - 78,230,100, 78,230,100, 78,230,124,252,156,117,185,235,147, 63, 30,105, 30,228, 25,244,248,151, 92,185,192,156,204,201,156,204, -201,156,204,201,156, 15,215,249,184, 21,219,239,159,194, 96, 48, 24, 12, 6,131,193,176,137,135,122, 14,150,220,217,199, 21, 2, - 94,123,194, 81, 63, 0,160, 60, 18, 1, 11,119,211,144, 25,153,218, 88,183,202,221,215,145, 66,188,159,192, 56,177, 32,249,118, -118, 99,125,237,124,237,198,235,156, 85, 83,211,178,242,190, 9,141, 40, 8,174,207,178,246,246, 45,236,164,142, 14, 19, 74, 77, -230,182, 98,145, 40,193,148,155,191, 61, 59, 59,170,160,177,109, 98, 48, 24, 12, 6,131,241,104, 82, 99,192,106, 17,216,247,138, - 84, 42,243, 2, 0,142, 82,112, 20, 40,202,207, 13, 73,141,186, 50, 20, 0, 52, 94,157, 79, 8,165,234,206, 28, 45,155,110,229, - 0,139,169, 36, 54, 47,238, 98, 87, 91, 86,172,212,250,142, 11, 26, 18, 52,126,212,168,145,190,237,218,182,107, 13, 0,183, 66, -111, 69, 29, 62,124,228,182, 82,235,251, 99, 97,198,237,159, 26,211, 49, 10,233,135, 93,186,116,236,115,245,234,181,101, 0, 94, -105,140, 11, 0,156,156,148,115, 79,254,176,160,223, 19,227,215, 42, 0,212, 43, 96, 73, 29, 29, 38,140, 29, 61,172,227,155,175, -206,226,189,184,224, 35,175, 43,231, 79,175, 86,185,181,205,165,156,249,100, 81,250,211,127,212,116, 67, 99, 6,131,193, 96, 48, - 24,255, 78,106, 12, 88, 82,169,204,235,226,233,195,142, 63,157, 75, 4, 0, 4,117,114,193,219,203, 55, 15, 33,132,220, 6,128, - 49, 47,190,239,179,108,241,171,248, 51, 44, 3,148, 82,116,108,227,132,225, 99, 39,218,180, 82,153, 75, 64,215,167, 39, 77,122, -102,193,130,249, 99,238,222,189, 27,183,119,239,222, 63, 0,160,111,191,126,109, 62,250,232,163, 73,107, 29, 28, 37, 50,151,128, -228,226,180,240,218,111,164, 88,147,223,189,181,123,128,119,251,169,223,125,181,153, 55, 96,232, 83, 83,100,238,173, 87, 22, 39, - 71, 37,219,178,172, 70,163,153, 39, 20, 10,237, 0,128,227,254,151,123, 90, 53,227,187, 0,128,197,202,169, 28,221,253, 10,248, - 34,169, 85, 34, 17,133, 23, 20, 22,126,147,151, 20,254,101,109,206, 82,179, 57,240,181,217, 47,240,174, 71,103,193, 43,176, 47, -127,195,202,119,192, 89,205, 14,175, 47, 94, 62,225,234,165,239, 0,188,119,166, 33,253,100, 48, 24, 12, 6,131,241,104, 82,235, - 33, 66,165, 76,128,219, 49,105, 0, 0,123, 25, 48,119,230,115,200,202,212,251, 24, 45, 28,254,239,185,105,184, 22,145,138,219, -177,122, 80, 74,225,227, 33,183,121,165,124,112, 93,254,111,250,255,245, 63,113,242,228,229,119,151,188,251, 45, 33,101,163,119, -111,219,254, 69,207,165,239, 45,125,105,218,115,211, 6, 31, 56,112, 32, 12,117,221,169,186,166, 78, 17,213,230, 53,171, 86,136, -147, 50, 75, 74,230, 45, 88,196,205,127, 99,222, 6, 0, 79,217,178,172, 80, 40,180, 75, 74, 74, 82,242,120,247,159,158,246,241, -138, 69,103, 7,143, 95,123, 39, 46, 33,247,250,137,131, 7,187, 6, 4, 4, 32, 41, 57,173,247,234,141,159,119,112,109,221,245, -133,130,252,226,241, 69,250,240,106, 71,141,150, 8,133, 97, 31,172,222,218,145,179,111,195,123,251,165, 17, 8,108,237,134,228, -140, 92,244, 27, 58, 70, 16,114,229,202, 16, 0,103, 26,210, 79, 6,131,193, 96, 48, 24,143, 38, 60, 0, 32,132, 84, 59, 96,159, -213, 74,113, 59, 54, 21,183, 99, 83,113, 57, 66, 15, 19, 21, 98,195,234, 15,176,110,229,123,200, 46,230,225,167, 63, 19, 17, 25, -155,134,200,216, 52,100,230, 20,254,109,121, 90,229, 82,203,117,171,228,157, 54,108,176, 91, 51,164,159, 98,128,163,131,131,195, -157,176,111,139,150,190,145,238,255,193,107,137, 34,161, 81,146,164, 80, 42,122,237,223,255,125,128, 78,163, 85, 40,149,170,133, - 10,143,142, 59,236,237, 59,216,213,230,172,138, 92,231, 63,102,204,200, 97,131, 92, 92,116,220,172, 13, 33, 17,109,253,253,204, -222,109,188,123,203,117, 62, 99,106, 90,166,178,147,227, 56,240,120, 60,164,167,167, 35, 37, 37, 5, 49, 49, 49,136,140,140, 68, - 98, 98, 92, 58, 71,169,208, 10,142,231,234,234, 1,129, 64, 12,175, 22,205,177,117,195, 74,249,242,247,223,238, 38, 85,136,131, - 9, 33,164, 58,103, 73,118,206,129,163,199, 79, 38, 31,219,187,213, 10, 0, 25, 57,133, 56,117,229, 46,174,133, 39,214,214,149, - 90,219,217, 84, 48, 39,115, 50, 39,115, 50, 39,115, 62, 10,206,154,178,200,191,149, 90,175, 34,140, 74,204,198,237,152, 52,116, -246,115, 71,235, 22,174,184, 28,153,131,221,167, 18,177,227, 68, 60, 78,221,208,131, 19,168,144,150, 15,220,137, 75,199,157,248, -204,218,198, 85, 6, 0,240, 37,194,167, 95,123, 45,111, 65,187,128,252, 30,167,143,205,133,187,230, 78,192, 91,111,229,206,229, - 75,132, 79, 59, 52, 83,237, 93,180,224,245,169, 42,185, 92,108, 44, 53,162, 85,203,230,210, 87,231,204,125,129, 56, 72,246,218, -218, 25,181, 71,128,131, 68, 38,251,114,249,251, 11, 37,159,252,116, 39,161,200,136,162, 31, 47,164, 71,207, 95,180, 52, 91, 32, -148,110, 85,123, 4, 56,216,234, 50,155,205, 40, 45, 45,133,209,104,132,201,100, 66,114,226, 95, 99,126,251,233,205,161, 45,155, - 57, 14,149, 72,165,160, 0,242,139, 45,136, 73, 53, 96,224, 19,131,249,157, 59,117, 10, 84,186,250, 79,175,206,149,155, 27,151, -199, 81,190,234,240,207,123,248,223,255,114, 29,223, 30,190,130,224,223,175,227,242,153, 99, 22,202,153,239,221, 78, 66,229,230, -237,163,114,107, 31,175,114,239,144,126,175,120,180,187,106,107,155, 25, 12, 6,131,193, 96, 60, 26,212,120,136,176,164,164, 56, -246,169,167,167,193, 85,235,162, 28, 59,224,121, 81, 72, 84, 46,244,169,241,184, 27, 25, 10, 67,137, 25, 34,135,150,128,212, 5, - 45,188,154,227,230,237, 96,211,166, 53, 71, 10, 57, 75,105,108, 77,190,177, 99,221, 60, 92, 53, 10,222,154,213,158, 23, 35,111, -231,116,222,179,228,107, 60,243,140,210,121,205,106,207,139,113,209, 10,158, 92, 74,123,189,240,220, 20,194, 35, 20,111,189,181, - 0, 99, 71, 13,195,255,189,240, 44,249,230,155,157, 61,108,237, 12, 7,225,167,139,223,249, 64,156,158,107, 49, 94,142, 44, 44, -149, 43,100,178,243,119, 10,139, 2,189, 60,101, 35,198, 63,159,114,100,255,151,159, 0,120,206, 22, 87, 69,176, 50,155,205, 48, -153, 76, 0, 96, 5, 0, 30,175,236, 49,171,192,136,140,220, 82,164,231,150,194, 98,229, 48,254,233,231,100, 87,174,222,120, 14, - 64, 13,231, 99,113,156,217, 98,198,143,191, 92, 67,242,149, 3, 28,225,241,243, 42, 78,114, 7,202,194,149,139,139,231,217, 81, -227,159,213,136,165,101,135, 91, 11,138, 74,241,205,231,171,109,237, 62,131,193, 96, 48, 24,140, 71,132, 26, 3, 86, 92,216, 31, - 93, 1,192,183,235,208, 44,165, 84,224, 40,224, 17,164, 39, 69,225,155,181,243,192,113, 20, 35, 94, 90, 3,149,151, 11,100, 34, - 62, 74, 11,179, 10,179,238,158,118,170,109, 69,132,152, 7,111,217,150,236,245,242,236, 86,234, 61,123, 10,133, 0,176,103, 79, -161,112,246,172,102,234,207,182,197,122,117,239,211, 25,212,106,197,168,177, 79,225,233,201, 79, 35, 46,205,128, 31,206, 38,160, -168,216,104,211,253,207,228, 26,255, 14, 90, 55,247, 97,175, 61, 63, 76, 33,224, 19,226,221,220,142, 41,233,120, 44, 0, 0, 32, - 0, 73, 68, 65, 84,159,168, 55, 91,248,124,161,245,208,149,188,148,241,227, 39, 59,159, 58,250,253, 32,185,198,191,131, 65,255, -215,141,186,124,165,165,165,176, 90,173, 40, 45, 45,133,217,108,134,163,115,203,163,131,159, 90,155,148,154, 86,112, 36, 45,167, -164,123,145,217,130,244,220, 82,100,228,150, 34,183,200, 4, 23,149, 3, 44,102, 99,187,154,124,148,210,111,159,124,106,218,179, - 0,120,132,103,249,186, 32,229,175,200,138,105, 21,225,106,216,216,103, 52,103, 67,162,112,247,234,177, 28,202, 89,204,101, 27, -142, 99,183, 42, 97, 48, 24, 12, 6,227, 95,198,189, 67,132,132, 16, 90,211,241,207,228,244,108, 56, 41, 5,208,184,121, 97,234, -188,117, 0, 0,171,213, 12, 74, 1,139,213,182, 17, 6, 40, 21,254,242,202,108,175,216, 22, 94, 36,111,234, 51,242, 98, 0,152, -250,140,188,184,133, 23,201,123,101,182, 87,108, 65,137,210,100,177, 90,113, 62, 44, 3,107,190,251, 11, 75,119,222,194,241,171, -182, 15,135,197, 23,139,102,175, 94,181, 82, 36,224, 19, 18, 22, 95, 88,152,148,101, 41,228, 11,133, 38,185, 92, 76,141, 84, 80, - 26,151, 73,179,158,120,242,133,187, 60, 62,169,246, 48, 94, 5, 21, 87, 14, 86, 28, 34,172,216,131, 69, 41,165, 4,224, 56, 98, -181, 38,101,150, 32, 81, 95,140,196,140,255,149,244,156,210, 26,143,144,170,220,188,125,236,212,202,227, 14,246,234, 23,236,237, -212,207, 41,100, 14, 39, 84,110,222, 62, 21,211, 42,194,213,197,176, 20, 68, 93,255, 53,221,106, 50, 76, 42, 72,190,161, 43, 72, -190,161, 43, 72,186,213,197,230,141,192, 96, 48, 24, 12,198,191,152,218,178,200,191, 13, 30, 0, 80, 74, 73, 69,169, 58, 3,165, -192,157,248, 76,136, 5, 28, 60, 90,180, 6,173, 20, 35, 40, 0,139,213,182,237, 16, 28,156,146,212,170, 77, 17,183,112, 97, 66, -207,182,237,156,110,206,158,213, 44,162,109, 59,167,155, 11, 23, 38,244,108,213,166,136, 51, 91,132, 86, 90, 62,222, 86,197,216, - 90,229,195,241,219,218,149,110, 29, 2, 90,242, 63,216,115, 39,225,229,207, 34,111,139, 68, 34,179,135,179,156, 52,215,201,249, -158, 26,153,184,212,204, 43,245, 9,236,100, 4,143,116,170,205, 82, 17,176,140, 70,227,125, 37, 75, 31, 53,230,228, 15, 11,198, -186,235, 28,158, 79,214, 23, 35, 33,195,128, 68,189, 1, 9,122, 3, 12,165, 22,220,250, 43, 26,224,139, 66,171,115,170, 85,142, - 39,246,238,254,214,179,131,127, 43,109,128, 79, 11,237,151, 59,191,245,148, 74,237, 79,168,220,188,125, 60,189,124, 67, 46,253, -250,189,230, 98, 88, 10,226,111, 95, 77,179,148,230,239, 45, 74,143,248,173, 30, 29,103, 48, 24, 12, 6,227, 95, 79,109, 89,228, -223,136, 77, 35,185, 55,247,208,225, 82,104, 44,218,249,181,132,157, 90,133,136,168, 36,240,121, 66,240, 8, 96,182,216, 30,130, -168,201,252,221,250,245,118,136,143, 85,240, 62,219, 26,235,245,202,108,175,216,245,235,237, 46, 80,147,249, 59, 0,211, 40, 45, -187, 55, 98,197,192,166, 54,238, 28, 43,115,115,230,102, 58, 71, 57,255,106,116, 81, 22,143,199, 47,117,178,147,114, 78,118, 18, -158,147, 74, 44, 20, 9,249,156,133,242, 76, 30, 90,175, 18,202,113, 29,108,241, 85, 62, 68,104,181, 90, 65, 8,207, 10, 0, 28, -199, 41, 18,179,138,145, 87,194, 71,122,110, 41,114, 10, 76,240,118, 87,224,215, 83, 7, 12, 86,115,241,158,234, 92,124,161,200, -174,181,151, 7,222,254,112, 61,138, 75,173,184,147, 92, 8,145, 68,226,162,115, 9,188, 49,237,229, 69,146, 87,183, 71, 97,250, - 32, 39,188,241, 71, 84,178, 33, 93,186,200,246, 94, 51, 24, 12, 6,131,193,120, 20,177, 41, 96, 41,229, 82, 80,190, 20,127,132, - 68,193, 55,160, 61,118, 30,188,140, 54,237,122, 32,181,192, 2, 10, 94,157, 87, 15, 86, 48,127,145,225, 26,128,107, 99,199,186, -121,140, 27,231, 62,152, 82,225, 47,159,125,158,151, 4, 0, 91,247,245, 7, 5,192,113, 20,148, 2,148, 43, 11, 90, 54, 67, 4, -241,177,169,249, 45,188, 92, 20, 8, 79, 50,149, 42, 36, 34,158,131, 66,204,215,216,137, 69, 34,129, 0, 86, 74, 74, 83, 83,163, - 74, 9, 16,103,139,174,226,208, 96,197,163, 92,233,122,244,137, 39,215,232,227, 18,242,174,122,103, 27, 58,228,153,196,160, 20, -240,118, 87, 32,244,226, 17,107,122,242,221, 59,197,233,183, 63,175,206,197,113,224,155, 44, 28,110, 68,231, 33,183,200,140,220, - 66, 19,122, 15, 28, 45,234, 29, 52, 6,127,132,102,130,179,152,177,250,139, 35, 5, 86,106,126,154,210,112,179,237,157,102, 48, - 24, 12, 6,131,241, 40, 98,211,205,158,173, 28,133,179,147, 35,164, 10, 53, 98,211, 77, 40, 32, 90,228, 24, 40,172,214,178, 61, - 88, 53,237,104, 34,132, 4, 85, 87, 31, 28,156,146,244,243,207,250, 29,193,193, 41,149, 78,224,254,223,158,171,123,143,220,223, - 3, 86, 77, 78, 66,173,191, 30, 60,118, 58,111, 76,119,141, 3,143,207, 47, 22, 9,121,165, 2, 17,223, 36, 18,240,204, 34, 1, -207,168, 83, 11,249,167, 15,237, 19, 83,130,211,117, 57, 75, 74, 74, 16, 20, 20,132, 17, 35, 70, 96,236,216,177,152, 56,113, 34, -124,124,252,181, 60, 62, 49, 82,194,113, 26,113, 1, 90,107, 8, 4, 37,137,248,109,223,199,134,208,243, 63,223,176,150,150,140, -166,149,142,105,222,231,164,148,203,206, 43, 69,137,201,138,156, 66, 19,114,138, 76,176,104,122,226,231, 63, 83, 80,108,180, 34, - 62,228, 64,177, 62, 45,105, 94, 73,250,157, 26,175,194,172,173,239,141,129, 57,153,147, 57,153,147, 57,153,243, 81,112, 62,110, -216,176, 7,139,162,149,171, 2,109,220, 21, 40, 49,105, 81, 98,180,162,168,196,138,124,131, 9,249, 6, 51, 98,211, 12, 8, 61, -216,248,134,148,237,181, 2, 72,249,115,144,178, 96,103,235, 62, 44,177,201,248,225,186,213, 31, 77,218,215,169,163,241,213,145, -174,205,110,198, 26, 83, 8,225, 21,243,248, 2,179,163, 74, 32,140,136,184,169,191,112,246,104, 63,169,197,250,108,109, 30,139, -197,146,231,238,238, 14,224,254, 91,229,248,183,150,141, 61,127,228,173,150,253,199,172,214,124,178, 98,129,129,199, 23,113, 68, - 32, 10,181,154,139,247, 22,167,223,222, 74,107, 57, 97,140, 39,146,254,117,233,122,120, 15,123,199,102,184,155, 92,132,162, 18, - 11, 76, 22, 14, 14, 74, 17,146,110,157, 48,197, 70, 92,253,190, 32,249,198, 78, 27,187,202, 96, 48, 24, 12, 6,227, 17,167,206, -128, 85, 82, 82, 18,219, 39,104, 52, 56,142,194, 74, 1,206, 90,190,167,137,251,223,222, 38,171,185,164,214, 61, 47,182,192,113, -214,203,159,110,223, 49,162, 83,183,254,252, 0, 79, 37,242,179,210,112,241,252,239, 22,112,244,130, 45,203,103,102, 70, 22,202, - 93,188,159,154, 52, 97,220,254,231,254,111, 86,110,191,129, 3, 21, 90,173, 75,105, 82,114,146,225,171, 93,187,205, 39,142, 6, -247,227, 96,153,156,153,121,231,239, 67,206, 87, 34, 55, 55,119, 99,117,245, 79,244,105,214, 27, 64, 75,190,128, 24, 13, 25,145, -138,250,244, 45, 51, 57,113,252, 71, 31,190, 31,247,204, 75,175,139, 91,185,183, 70, 70, 30, 31,177, 73,105,136, 56, 27, 92,154, - 28,121,229,167,252,164,107,181, 94,217,200, 96, 48, 24, 12, 6,227,223, 69,157, 1, 43, 33,188,108, 60,172, 7, 77, 65, 90,198, -180,157, 59,191, 93,254,237,174,125,189, 75,140, 70,119, 10, 81,162,213, 98, 60, 83,104,197, 82, 91, 29,134,180, 59, 87,157,157, -125,218,126,245,197,167,239,124,181,227,179,254,224,172,126, 4,136,163, 4,167,165,102,235,115,117,133,171,218,200,204, 44,216, - 54,248,169,181,197, 89, 89,133,223,214,119, 89, 67,102, 68,154, 82,215,170,217,182, 13, 31,174,225,241,248, 67,172, 86, 78,200, - 89,205,119,173,166,146,143,139,245,183, 15,214,182,247,139,193, 96, 48, 24, 12,198,191, 15,155, 78,114,255, 39,200,206,142, 42, - 0,240,106, 99, 61,153,153,145,133, 0,154,252, 74,188, 91,145,121, 63, 0,248,161,161,203, 23,166, 71,235, 97,227, 40,242, 12, - 6,131,193, 96, 48,254,221,216,116,146, 59,131,193, 96, 48, 24, 12, 6,195,118, 8,128,106,175, 4,168,207,157,178, 27,114, 53, - 65, 93,126,230,100, 78,230,100, 78,230,100, 78,230,124,252,156,117,185,235,147, 63, 30,105,104,249,136,233, 15,162, 0, 8, 98, - 78,230,100, 78,230,100, 78,230,100, 78,230,252,175, 21,118,136,144,193, 96, 48, 24,255, 57,156,157,125,148,206,206, 62, 74, 91, -231, 87,104, 2,116, 10, 77,128,238, 65,182,137,241,120,193, 2, 86, 35, 33,132, 16, 95, 47,229,220, 33,253, 91,254,236,215, 74, - 62,246, 97, 57,149,186, 86, 26,149,103,215,243,106,143,182,195,155,162, 13, 85,218, 35, 9, 12, 12,236, 25, 24, 24,216,147, 16, - 34,105, 10,167, 66,231, 59,165,153,119,207,179,186,214,157,126, 87,186,248, 76,104, 10,103,101, 84,110,222, 78, 42,207, 46, 63, -168,220, 59,228,168,220, 58,228,171,154,117, 57,163,214, 4,180,170,107, 57,207,177, 43,253,150,237, 11,219,235, 57,118,165, 95, -117,211, 29,135,111, 86,189,255,221,221, 21,206, 99, 86,219,252,197,204,184, 31,207, 62,207,216,187, 13, 88,224, 84,223,229, 60, -124,123,134,121,181,237,151,225,238,211,163,218,123,126, 86, 71, 51,191, 94,215, 90, 4,246, 73,111,230,219,235,106,125,215,247, - 95, 69,166,109,213, 83,230,216,252,136,212,177,249, 81,169, 83,171,129,141,245,185,185,185,201,252,253,253,135,245,236,217,115, -102, 80, 80,208,107,157, 58,117,154,209,162, 69,139, 33,132,144,135,118,145,149, 66,231,187,184, 84, 72, 50, 75,133, 36, 83,161, -243, 93, 92,215,252, 74,157,223,114,194,179,166, 16,158, 53, 69,169,243, 91,254, 79,180,209, 22,164, 46,190,205, 21, 58,223,245, -106,215,192,203,114,157,207,232,250, 46,239,232,232, 56, 68,171,213, 62, 89, 81, 28, 29, 29,135, 60,136,118,254, 87,169,247, 7, -156,144,206, 66,165,171,249, 53,177, 84,246, 60,143, 7,117,198,221,139,238, 15,162, 97, 77,133,166, 85,247,171,124, 30,223,163, -114,157,149,179, 38,233,163, 47,117,105, 10,191,111, 11,217,244,119, 22, 78,123, 99,202,164,160,230, 65,163,230, 17, 0,193,213, -205,167,242,236,250, 39, 33,188,150, 60, 2,240,120, 4, 60, 2, 0, 52, 37, 51,250,210,223,110, 62,109,171,179, 2, 59,109,235, -150, 98,165,230,108,159,177,175,184,132,252,186,123,167, 66, 19, 48,184, 72, 31,126,179,177,125, 35,132,104, 90,183,110,221,213, -199,199,199,105,238,220,185, 34, 0,248,228,147, 79,218,180,105,211, 38, 43, 42, 42,234, 10,165, 84,223, 16,175, 66,235, 55,109, -227,218,101,223, 14, 31, 62, 2, 41,153, 69, 88,189,126,203, 0,165,139,207,196,194,180,200, 3,141,109, 51, 0, 56, 56,180, 84, - 11,212, 14,183,230, 45, 92,166, 29, 54,160, 43,191,176,196,130,227,103,175,247,221,189,101,217,101,181, 38,160, 91,190, 62, 60, -186,166,101, 57, 67,222, 18,157,146, 14,227, 12,121, 0, 48,165,234,116,119,165, 57, 72, 35,179, 14,115,149, 8,174, 3,248,177, -206,182,120,245, 57, 33,148, 72,154,243,120, 60, 84,188,247,124, 82,246,254,155, 77,197,241, 73,127,157, 29,218,168,206, 54, 17, -234,230,221,211,192, 23, 56,241,200,255,218, 71,202, 63,167,132,210,252,212,200, 63,234, 29,136,170, 66, 8,177,107,219,198, 62, -112,100,239, 62, 95,157,137,201, 86,120,246,127,253, 8,161,188,207,226,207,174,187, 97,203,242, 82,169,212,225,208,161, 67,154, - 97,195,134,217,233,218, 62,121,198,150,101,148, 98,105,192,225,195, 7, 69,195,134,217,190,153, 21, 90,223,193,224,241,118, 17, - 64,200,113,244, 19, 62, 71,191, 47,204,138,140,162,229,199, 69,108, 69,174,243,155,206, 3,181,249,123,134, 3,185,106, 72,143, -216, 81,159,117, 84, 64, 8,225,203,180,190,207,203,164,210, 5,222,190,254, 62,177, 49, 81,145,249,249,121,235,139, 51, 34,119, - 80, 74,235,113, 87, 87, 0,102,203,155,191,254, 17, 50, 92, 32, 20,146, 97, 79,116,231, 3,248,189, 33,109,170, 64,167,211, 61, -185,121,243,230, 86, 61,123,246, 4, 0, 88, 44, 22,245,254,253,251, 93, 62,252,240, 67, 5,108,248, 27,170, 14, 66,136,187, 70, -163,241, 20,139,197,238, 0, 96, 52, 26,147,245,122,125, 2,165, 52,185,174,101,149, 46,173,157, 9, 4,203,254, 56,123, 86, 0, - 0,125,251,246, 91,222,188,239, 92, 7,190, 72, 89, 92,221,252,102, 99,129, 2,192,235, 23, 47, 93, 32, 0,208,163,123,207, 69, - 10, 77,192,167, 69,250,240,244,134,180,189, 41,144,233,252,186,243,128, 55,122,247, 27, 60,254,233,201,211,120,129,222,158, 24, - 50,120,208, 91, 0, 14,213,199, 35, 16, 8,100,151, 47, 95,110,205,227,241,248, 22,139,165,164, 71,143, 30, 9,141,105,151,187, -111,175, 63, 9,120,205, 76, 22,227, 23,250,232,171,203,171,126,246, 8, 33,124,187,102,157,222, 1, 95,240, 18,199,113,137,249, -241, 87,122, 53,102,125,143, 58,245, 10, 88,132, 16,190,218,163,227,185, 73, 79, 79,109,251,225,194, 25,210, 77,187,126,129, 99, -203,110,225,217, 49,151, 3, 30, 84, 3, 27, 11,159,199,247, 56,121,242,132, 86, 38,225, 3, 0, 10,139,173, 24,110,195,151,173, -189, 87,247,211, 60, 66,124, 43,110,233,109,181,152,164, 2,161,184,132, 0, 0, 41,187, 58,192,217,173,197, 41, 87, 87, 71,249, -148, 73, 65,205,119,237,251, 37, 41, 33, 41,235, 76, 77, 62, 30,143,239, 17,124,240,144,214,221, 73, 10, 1,159,160,176,216,130, - 97, 35, 70, 91,171,155,215,213,213,113,228,148, 73, 65,205,247,124,247,107, 66,106,106,246,145,218,218, 41,119,245,233,172,176, -211, 29, 31, 63,243, 67,167, 18,158, 35,150,174,216,232,124,246,216,158, 51,253, 71, 78,227,226,227, 19, 75, 40, 33,225, 57,217, -169,175, 21,166,222,189, 93,103,167, 81,246, 30, 43,149,202, 86, 74,165,178,195,240,225,195,165, 11, 22, 44, 16, 14, 24, 48,224, -222,244, 25, 51,102,136, 78,159, 62,237,186,118,237,218, 17,110,110,110, 37,133,133,133, 55, 10, 11, 11,163, 41,165,213,246,165, - 58, 92, 92, 52,115,158, 26, 55, 26,131,198,191, 2, 43, 71, 48,227,229,215,113,226,216,143,179, 0, 52, 73,192, 50,203,213, 31, -190, 52,115,129,166, 71,215,142,252,101,123,110, 67, 38, 22, 96,104, 23, 95,242,194,220, 37,246, 59, 54, 45,251, 18, 64,255,170, -203,120,142, 93,233,199, 25,242,150,180,117, 54, 78, 30,211,179, 37, 14,238, 53, 78,246, 8,122, 11, 60,185,221,242,132,224,197, - 17, 0,208,122,248,171, 42, 7,153,108,179,155, 61, 95, 43,177,234, 55,183, 30,254,234,175, 81,199, 54, 21,212,214, 22,161, 68, -210,124,223,222, 61,222, 14, 74, 17,248,124, 2, 1,143, 7, 62,159,160,212,100,197,132,137,147,155,162,187,229, 63,174,222, 35, -120,192, 11, 0,192, 1, 95, 23,103,220, 57, 90,159,247,132,240, 69, 78,135, 15,254, 36,208,218, 73,192,231, 19,240,121, 0,159, - 71, 16,151, 94,140,233,211, 95,176,107,100,251, 52,195,123,107,187,158,254,180,255,208, 30,109, 29,219,127,119,129,216,245, 24, -254,180, 83,102,137,252,249,125,193,191, 79,246,236,247,198, 37, 74,185, 53,137,127,108, 56, 89,155,167,180,180, 52,125,232,176, -225,106, 34, 80,200,127,253,121,103, 63, 1,143,192,108,165,176, 88, 41,172,229,247, 46, 45,251,123, 37,224,241, 8, 40, 71,241, -210, 75,211, 49,116,216,112, 3,103,225,146,106,115,223, 7,143,183,235,248,175,231, 53,165,102, 14,107, 55,239, 88, 86,148,167, - 95, 22, 19,225, 20, 39,215,249,188,110, 72,143,180,249,190, 21, 60,208, 46,137,209,161, 51,247, 28,190,136,182, 1,254,176,114, -101,237,244,245, 80, 96,207,145,139,240,243,245, 43,107, 55, 71,225,211, 76,137,174, 93,186, 2, 64,189, 3, 22, 33, 3, 4, 10, -157,223,222, 49, 19,158,155, 48,126,194, 20, 56, 58,168, 97, 52,149,250,252,118,226,232,246,173,155, 87,247, 38,132, 60, 95,175, -112, 72,173,247,126, 23, 40,199, 53,122, 47,147,155,155,155,166,107,215,255, 13,167,104,177, 88,224,229,229,133,228,228,100,223, -250,186, 8, 33,114, 87, 87,215,145,219,182,109,211,142, 24, 49, 66,232,226,226, 2, 0, 72, 75, 75,115, 63,126,252,120, 39, 55, - 55,183,140,212,212,212, 35,148, 82, 67, 77, 14,171,153, 39,226, 9,192,151, 74,229, 0, 0, 10,194, 91, 48,231,217,246, 58, 87, -183,210,234,230,215,235,211,196, 11, 95,249,157, 8, 4,162,242,249,193,163,148, 35,213,205, 11, 0,142,142,142, 65, 66,161, 80, - 86,221, 52, 19, 95,221,131, 10,237, 94,228,241,121,101, 31, 86,139, 89,159, 29, 31,226,111,107,255, 21, 58,223, 64,161, 88,180, -245,153,231,102,246,154, 48,126, 44, 92, 53,118,248,245,220, 77,204,154,243,134,217, 98, 50,175,183,213, 83, 25, 62,159, 47,200, -200,200,136,115,112,112,112,105,200,242,247,185,120,164,229, 47, 39,142,105,127,253,237,212,162,117, 27, 54,205,118,243,233,107, -230, 40,189,119,159, 97,207,182,131,132,131, 71, 77, 82,107, 91,247,144,110,122,239, 69, 97, 99,215,247,168, 83,175, 63, 30,165, - 91,192,107, 19, 39, 77,106,251,202,172, 25,210,215, 54,159,195,111,123, 63,201,108,170,112,165,210,250,246, 36,124,193, 76,194, -231, 43, 8,143,136, 57, 43,151,104, 49, 26,151, 27, 50, 35, 83, 27,235,182,114,192, 15,231, 51,234,181, 12,161,104,179,235,251, -159,181, 58,123, 9, 74,140, 22, 60, 61,101, 26,118,237,250, 86,229,172, 22,163,196,104,193,154,117,235, 10, 10,227,142,104,227, - 18,115,146,131, 70,191,113, 50, 58, 54, 35, 52, 33,181,228,251, 26,125,132, 7,173,157, 4, 43,246, 69, 66, 45, 19,194, 65, 37, - 2,143, 71, 42, 77, 39,196,167,133, 98, 78,179,102,154,129, 41,169, 57,121,149,156,187,107,114, 42, 92,219, 13,181,115,112,219, - 59,110,230, 10,251, 59, 25, 2, 80,152, 16,165,150, 98,210,243,175,170, 91,185,200,160,144,242,237, 99,226,147, 93, 23,188,249, -230, 57, 59,109,235,110,121, 25, 81, 49,117,245,187, 69,139, 22,227, 71,141, 26, 37,159, 63,127,190,176, 89,179,102,248,122,207, -254,230,125,135, 78, 28,157,146,154,222,140, 82, 10,157, 86,155,248,210, 11, 19, 15, 29, 61,122, 52, 62, 49, 49, 81,184,122,245, -234,238, 63,253,244, 83, 0,234,241,159,168,149, 82,148,148, 90, 97, 45,255, 97,212,231, 85,251,189, 86, 35,132, 16,226,238,238, - 46, 73, 78, 78, 46,173,248,225, 32,132,220,219,152, 74,247,142, 67,159,232,223, 93,176,237, 88, 44, 10, 75,172, 80, 72,133,136, - 77, 55,160, 75,199,118,228, 11,171,165, 67,117,206,233,147, 70, 46,209, 41,233,176, 49, 61, 91, 66,235, 32,199, 87,159,174,192, -193, 11, 49,195,210, 11, 9,156,199,172,158,233, 42, 17, 12,214,200, 69,155, 7,116,105,237, 50,168,115,115, 92,233,210,218,229, -108,200,237,200,118,147,214,207, 77, 46, 20,254,154,125,108,110,181, 65,139,207,227,193, 81, 37,198,151,199,227, 32,151, 10,160, -144, 10,160,144,148, 61, 86,126,255, 27,130,204, 45,160, 25,159,179, 78, 87,187, 5, 76,159, 60,105,162,219, 51,147, 39, 82,240, -121,216,255,195,161,177,187,119,239, 74, 85,186,248,126,105,229,241,119, 20,167,132, 39,214,229, 34, 60, 64,107, 39,198,155, 95, -134, 66, 45, 19, 66, 37, 23, 66, 45, 23, 98, 80,123, 13,248, 13, 60,145,128, 16,226, 48,107,108,171, 17, 55,191, 13, 26,232,235, -169,244,190, 17,149, 23, 62,125,249,213, 13,167,115, 7,190,246,233, 39, 1, 78,133,185, 70,193,210, 5, 47, 9,146, 82, 82, 6, -238, 63,116,102,144, 91,183,233,183, 45,166,162,183, 51,110,124, 95,237, 30,219,196,136, 63, 59,121,244,156, 40, 53, 21,154,111, -221,184,157,212, 58,167, 84,130,176,184,124, 40,164, 2, 40, 43,182,173, 84, 0,133, 84, 8,165, 84,128,148,164, 88,100, 23,241, -207, 37, 59,241, 6,210,211,127, 90,234,211,246, 18,147, 21,215, 99, 10,209,194,183, 35, 92, 93,221, 96, 28, 49,181,197,165, 83, - 63, 4, 43, 92,253, 87, 22,165,254,245,182,173,158, 61,135, 47, 98,209,235, 51, 67, 8,112, 13, 0, 40,208,105,233,170, 45,157, -151, 45,122,229,190,186, 5, 31,108,234, 92,159,246, 85, 64, 8,225,203,117,190,187,251,143,156, 54,161, 93,143, 33,136,142,141, -197,177, 67, 87,241,196,224,225, 24, 49,122, 60,140,198,210,103,119,108,219,116, 5,192,150,170,203,170, 92,253,251,180,107,235, -191,219,221,205,173, 25,199,149,221,149,131, 82,160, 79,255, 65, 88,248,218, 75,224, 40, 69,135, 78,221, 6,141,152, 60,151, 82, - 90, 22, 4, 51,179, 50,139,110, 71,132, 7, 21,167, 71, 92,178,181,141, 37, 37, 37,102,189, 94,143,235,215,175, 35, 50, 50, 18, - 97, 97, 97,200,202,202,130,157,157, 93,189, 6,126, 38,132,168,219,183,111,255,204,169, 83,167,164, 14, 14, 14,247,234,141, 70, - 35, 84, 42, 21,158,121,230, 25,225,144, 33, 67,220, 71,142, 28,249, 28, 33,100, 15,165, 52,191, 58, 79,113,214,157, 20,181,139, -223,231,253, 7,244,159, 13, 0, 50,181,107,204,230,175, 15,133,213,182,110,153,157, 91,243, 94,189,122,183, 6,165, 32,160, 27, -139, 50,111,167,213, 52,175, 64, 32, 80, 92,188,120,177, 21,159,207,191,247,251,202,113, 28, 62,251,234, 59,191, 95,254,184, 53, -126,213,154,181, 82,181, 66, 2,125,158, 17, 47, 78, 29,103,243,111,176,220,197,111, 68,239,222,253,131,151,125,240,174, 64,169, - 80,224,228,165,104,204,125,237,205,146,212,184,208,181,148, 19,110, 41,202,184, 93,191, 31,185,191,211, 36, 3, 94,123,123, 40, -161, 26, 51, 84, 58,235,217, 49, 82,163,217,138,220, 34, 51, 74, 77, 86, 88, 57,138,188, 34, 51,194, 19, 10,224,172, 22, 55, 68, -221, 21,128, 6,128, 30,192,149, 42,175, 81,254, 28,213,188,206, 68,217, 62, 17, 39, 0, 70, 0,149, 87, 94,241,186,166,250,138, -229,195, 1,248,151, 59,173, 0, 46, 3,200,169,171,193, 2, 66, 8,165,148,222,251,166,175,250,186, 50, 34,177,114,210,162,185, -211,164, 31,238, 9,193,111,123, 63,202,212, 71, 93,168,232, 0,180,173,187, 95,203,136,186,255,112, 23,181,225, 82, 75,153, 91, - 64, 51, 1,225,175,239, 63,160,223,144,217, 47,191, 12,223, 86, 30, 34,171,213, 74, 67, 35, 99,204, 59,119,124,245,188, 93,179, -118, 27,242,147, 66,151, 84,236,106,180,197, 89, 25, 43,103, 77,170,186,199,202,202, 89,239,251,111,182, 58, 39, 33,128,189, 66, -132,207,143,198,128, 82,128,128, 66, 45, 23, 98,223,233, 36,196,132,252,152, 63,170, 67,126,209, 51,171,222, 31, 52,112,196,171, -167,194,163, 74,190,207,200, 40, 57, 65, 41, 77,171,201,201, 35,128,128, 79,160,150, 11, 97, 39, 23,193, 94, 33, 2,169,244,195, - 85,249,176,224,128, 17,175,254,114,234,124,252,219, 0,244,148,210,210,234,156, 50, 23,239,174,106,123,143,239,199,207, 94,173, -186,149,100,129,128, 15,180,116,145,193, 81, 37,130,209, 66, 16,167, 55,149, 45, 3,123,204, 93,240,129,227,162, 55,102, 31, 37, - 36,160, 45,165,225,166,218,250,110, 48, 24,196,211,166, 77, 19,154,205,102,211, 51, 47,206, 27,146,150,166, 31,251,217,198,143, - 37, 90,173, 14,134, 18, 11, 66,194,238,250, 47, 91,246, 65,203, 67,199, 79,255,252,254,155,179,130,135, 13, 27,102,247,221,119, -223,113,181, 57,171,162, 79,207,252,244,171,221, 7,190,253,100,237, 71,184, 29,159,131, 29,219,182,128, 90, 45,159,215,182, 76, -101, 39,165,148,190,253,246,219,178,159,127,254,217, 67,161, 80,228, 27, 12,134,202,135, 42,121, 60, 30, 17,164,103, 27,224,172, - 18, 67, 36,224, 65,231, 32,133,214, 78, 2, 33, 31,224, 17, 98,173,206,185,227,251, 35,203, 57, 67, 30, 14,238, 53, 78,254,234, -211, 21,248,191, 57,239, 32, 52, 83,124,156, 39,183, 91,254,202,228,241,139, 52, 50,235, 48, 55,123,158,118, 80,231, 22, 80, 72, - 69, 88,252,234, 52,116, 11,137,211, 38,231,114,239,232,139,249, 29, 1,188, 83, 93,223,121, 60, 2, 1,159, 64, 37, 23,226,248, -238, 53, 25, 69,121,250,188,138, 67,111,198,210,146,248,218,250, 92,219,246, 84,232,124, 23,117,238,216,126,197,236, 25,211,121, -189,123,118,163, 60,158, 16,153, 5, 70, 66, 41,240,218,220, 89,120,101,214, 75, 46,137, 41, 25, 75,183,108,249,124,137, 82,235, -255, 97, 97,198, 95,239,215,230,228,145,178,189, 62, 74,169, 0, 74, 89, 89, 96, 81, 74, 5, 40, 49, 90, 65,254,159,189,251,142, -111,170,220,255, 0,254,121, 78,102, 51,186,119,161, 45,179,236,189, 55,200, 18, 5, 5, 68, 65,112,224, 0, 68,175,202, 21, 21, -113, 32, 23, 5, 68,134,160,168, 12,153,138,202, 18, 68,150,236, 97,101, 21,202,106, 11,165, 3, 74,119,155,166,217,243, 60,191, - 63,218, 98,129,142, 20,235,239, 94,241,251,126,189,242,162, 73, 79, 62,121, 78, 72,210,111,158,113, 14,131,196, 63,186,131,158, -149,244,220,102, 22,164, 85,252,141,251,206,204,128,168,150,251,127, 77,241,110,166,251, 81, 23,155,154,121,241,163, 51,241, 57, - 39, 57,231,133, 81,125,254,253,140,195,197, 97,180,186,144,154, 99,134,203,193,217,115, 67,162, 81,127, 20,107, 58,123, 85,220, - 58,198,152, 79, 89,225,124,103,102, 70,236, 70,107, 80,235,145,163, 23, 45, 89,118,106,254,199,239, 74,242,245,118,136,156,195, - 75, 33,129, 74, 33, 45,189, 72, 96, 49,233,177,244,171, 21,217, 46,176,145,252,208, 33, 87, 85,237,188,139,200,199,141,120,168, -247,247, 12, 80, 48, 65,158, 17, 17, 93, 47,186,255,176,103,189,250, 63,242, 20,220, 46,251, 52, 77,104,179,131,166,156,132,253, -158,100,182,106,209, 28, 12,136, 51,230, 36, 78, 2, 0,109,104,211,175,155, 53,109,214,225,206,219, 26, 55,110,122, 87,129, 85, - 89, 38, 99, 76, 80, 5,199, 76,104,220,172,245, 91, 47,189,191,172, 94,106,150, 25, 1,145, 49,184,120,254, 44,118,253,240, 69, -156,197,160,155,191,107,251,150,183,102,125,178,184,237,176,225, 79, 96,219,214, 31,222, 96,140,125,201, 75,252,241, 62, 18,197, -113,107, 86, 46,143,148, 41,148,112,186, 68, 56,221,188,228, 95,151, 27,133,133, 58, 56, 93, 34,188,212,222,112,137, 12, 78,183, - 8,167, 75,132,205,238,210, 76,122,234,225,201, 0, 78, 84,212,206,186,205,251,238,145, 43,149,209, 28, 37,231,150,229,156, 67, -226,178, 11,225,225,225,223, 1,128, 82,169,132, 82,169,132, 40,138, 56,147,152,247, 74,112,179, 1, 47,161,180,176,115, 59,236, -233,186,212, 99,131, 43,219,247,176,176,176, 97,119, 22, 87, 86,171, 21, 70,163, 17, 71, 99, 79,249,174, 92,183,233,193,212,244, -140,134, 34,247,181,121,135, 52, 28, 12,224,182, 57, 73,229, 51,139,179, 19, 38, 71,118,155, 32,188,241,242, 51,141,151,172,217, -113,242,202,238, 89, 85,206,195,106, 48, 96,154,253,141,137,143,117,156,187,248,155, 43,133,199,190,154, 82,221,255,145, 84, 42, -149,229,229,229,165,151, 93,255,124,197,134,142,113,137, 55,135,127,182,232, 51,175, 51,215, 12, 56,159,154,137,103, 6, 68,225, -182, 63, 2, 85,100,106,195, 26, 5, 53,106,212,236,187,165,139,231, 74,175,100, 90,241,197,150,147, 56,176,237,235,163,217,185, - 39, 30,228,217,153, 21, 14,109, 86,151, 89,209,102, 30,108,227, 81,230,193,248,124, 24,173, 46,216,236, 46, 56, 69,142, 98,179, - 19,185, 69,118, 20,155, 29, 48, 90, 92,120,102, 96, 84,133,247,171,166, 30, 9,102,140,237,224,156, 15, 69,201,225,165, 20,229, -174,131, 49,182,163,180, 93,183, 93,159, 54,109,218,244, 57,115,230, 92, 44,219,182,236,246,178,109,171,186,189,220,253, 3,223, -121,231,157, 86,115,231,206,157,221,173, 91,183,239,127,251,237,183, 20,120, 82, 96,149,223, 9,198, 88,149, 79,176, 82, 46,141, - 80,123,251,151, 20, 28,127,116, 24,160, 94,171,190, 5,159,205,251, 79, 64,120, 76,215,244,172, 43,191, 71, 87,247,160,101,188, - 67,154,116, 87,169,212,191, 44, 88,176, 0, 99,134,245, 82, 93,207,119, 26,227,175, 91,114, 76,118,184, 66,130,155, 40, 62,154, - 61, 87, 59,119,222,167, 47,239,216, 46, 22, 1,248,180,162, 12,191,250,157, 78, 75, 88,185, 57, 86,140,129,139,238,140,194,212, -147, 29, 1,224,207,204,181, 50, 89, 93,144,148,206,157, 97, 12, 48,219,220,144, 72, 88,110, 81,226,143,151,198,206,250,232,129, -245,223,255,154,201, 5, 63,131,201,148,170,230,156, 87, 57, 4,193, 4,134, 98,179, 19,190,106, 25,252,180, 50,248,106,228,144, -148,123,115,149, 13, 11,174,223,176,247,102,122,122,193, 41,148, 20, 87,149,102, 74, 37, 66, 10,119, 59,173,156,187,189,135,118, - 10, 70,136,159, 2,225,254, 74, 40, 21, 82, 56, 93,128,197, 46,194,106,119, 35, 45,215, 2,131, 69,133,214,125, 30,111, 16, 24, -126,218, 22, 24,221,233,167,130,244, 83, 35,171,106,171,219,237,198,154,239, 54, 53,206,204,204,121,116,231, 79,223, 42,243,138, -157,136, 79, 51, 33,183,200, 6, 72,130, 49, 99,246, 23,202,183,167, 76, 24,190,102,195,230,244,254,189,186,164,215,240,105,133, - 41, 55, 97,125,235,238, 15,127, 61,116,232,112,213,197, 19, 59,113,229,236,254,143,141, 57,158,207,191, 98,140, 9, 27, 55,110, -116, 77,152, 48,193, 48,123,246,236,200,237,219,183,215,207,203,203, 59, 11,192,233,231,231,215,172, 73,227,232,115,123,119,239, -170,243,240,240,199,101, 25,249, 22,248,170,229,136, 14, 81, 35,246,232, 30,167, 66, 33,171,112, 62, 73,233, 48,224,147,117, 7, -188,141,237,177, 41, 15, 94, 44,240, 58,244,226,243,207,164,239, 61,146, 88,240,249,186,189,159,212,209, 58,207,122,137,121,159, -159,238,216, 40,108,218,191,158,194,156, 37,235,113,248, 76, 98,174, 73, 8,255, 56,203,230,250,245,195,209,111, 85,216, 86,137, - 80, 82, 88,123,171,100, 48, 21,231,233,175,158,217,213,164,166,207, 87, 37,158,217,251,211,122,161,208,224,196,141,124, 43,203, - 44, 52,192, 45,114,248,169,229,112,137, 28, 69,133,249,236,219,245,235,112,234, 84,172, 0,137,240, 2,128, 15,171, 10, 19, 88, -201,144,160,214, 75, 86,210, 3,164, 42,249,215,233, 22,209,180,113, 35, 44,255,124,161, 79, 80, 72, 40,122,246,246,124,206,179, -119, 96,116,219,239, 87,127,142, 67,191,197,245, 61,252,217, 23,157,180, 17,193, 75,124,234,182,152,239, 91,127,160,213,230,112, - 67, 95,164,131,194,126, 3,157,235,228, 33, 64,237, 70, 90,113, 56, 46,100, 95,209, 86, 55,156,149,127,126,203,217,224, 86, 35, -222,219,244,243,129, 57,131, 7,246,197,133,180, 98,168, 20, 82,120, 41, 36,240, 82, 72, 32, 99,110, 44,252,234,107,167, 78,111, - 24,154,127,225,167,124,143, 27, 92,202,148,155,176, 15, 37,223,118, 1,148, 44, 32, 89,191,228,189,181, 47,190, 53,111,240,131, - 35,158,101, 23, 78, 29,156, 14, 96,127,229, 9,127,112,139,119,239, 74, 69,183,137, 21,220, 86, 17,198,152, 16,210,168,227,119, -171,215,108, 24,221, 34, 38, 18, 57, 69, 78,100,234, 28, 56, 26,151,140,181, 43,223, 43,210,229, 92, 27, 7,135,209, 40, 50,151, -126,207,238,159,119,191,242,218, 91,104,217,170,109,189,226,140, 98, 31, 0,250,219, 30, 83,194,150, 61,253,252,196,209,161,161, -161,222,127,244, 96,113, 52,105,218, 2, 15, 61,242, 24,246,108,219,138, 75, 23,227, 33,242,146, 66, 73, 20, 57,138,116, 5,217, - 46,167,125, 77,101,237, 83,120,121, 69,175, 90,189, 46, 70, 16, 24, 28, 78, 17,118,151,136, 41,147,199,219, 39,189, 62,189,231, - 67,131,250, 92, 84, 72, 80,156,118, 61,203, 47, 54,238,114,107, 81,166,141,124,126,234, 66,185,213,230,134,222,236,196,206,111, - 42,175,113, 84, 1,209,221,218,118, 31,254,252,164,247,151, 43,149, 18,193,209,178, 73,100, 74,159,174, 45,111, 68, 69, 4, 25, -254, 51,247,139,206,199, 78,196, 61,244,196,216,231,189,158,105,214,129, 69, 4,170,188,199,143, 29,209, 70, 19, 24,245,180,169, -224,122,165,167, 54,147,169,253,139,162,234, 55,190, 53,148,168, 14,107,186,133,113, 52, 40,191, 13,103, 72, 49,103, 39,142, 4, -128,240,136, 40,171, 76,233, 83,229,148,128,219,238, 91,250, 58, 94,178, 98, 67,199,115, 73,153, 47, 46, 90,244,153,250,204, 53, - 3,206, 94,211, 67, 41, 23,224,112,138, 96, 30,118, 98,139, 92, 50,241,221,119,166,249,232, 76,110, 28,138,207,195,197,211, 7, -185,221,104, 29,171,118,249,140,212,132, 54,125, 26, 64, 35, 0,201,140,241,101,166,156,176,109,156, 31,170, 81,143, 45, 80,210, -203, 6,148,204,233,117, 75,149, 15,201, 20,154,110,140,241,150,140,195, 31,224, 55, 11, 74,255,166, 86,185,207,229,126, 54,229, - 36, 97,222,236, 15,176,120,229, 86,100, 22, 88,225,235,190,129,109,223,124,132, 55,230,124, 7,139,173,242,217, 11,213,213, 35, - 21, 21, 68,119, 22, 90,101, 63,151,109, 55,103,206,156,161,183,181,179,244,247,119,181,255,142,219,203,223,127,238,220,185,179, -203,253,190,210, 33,232,242,164,165, 33,172,186,157,242, 9,110,209, 80,238,163, 85,250,168,100,168, 31, 21,142, 49, 47,125, 24, - 20, 22,211, 35, 87,169,144, 74,126,218,176, 60, 32,223,162, 4, 19, 4,147, 39, 15, 10,148, 76,210,243,246,246,222,185,101,243, - 86, 52,140, 10,145,127,123,180, 48, 53, 46,197,114,171, 75,183, 56, 47, 93, 81,223,199, 44, 29, 57, 98,132,122,255,129,131,175, -163,146, 2, 75,194, 36,117, 87,172,219, 28,226,173,146,129, 49,192, 96,113,225,197,167, 31,243,180, 25,149,227,162,228,185,103, -159, 6, 43, 45,174,138, 11,178, 49,253,173,151,172, 26,231,149, 75,215,211,174,223, 28, 48,236,141,253,197, 70,102, 29,253,212, -228, 83,151,146,230, 84, 91,201, 66,116,102, 60,244,240, 67,242,146,158, 2, 64,194, 24, 68, 46,230, 52,173,175,253,215, 93,195, -130,217,182, 21,213, 21,108,134,155,137,133,222,225,173, 71,173, 95,240,202,138,136,208,144, 64,173, 70,197,181,106, 37,107,217, - 44, 70,222,181,107,119, 69,253,166,109,228, 71, 47, 91,112, 61,207,130,148, 76, 61,148,161,237,164, 99, 30, 24,130,245,159, 77, -237,203, 24, 19,170,155,248,250,235,161,223,135,173,252,106,145, 50,167,200,129,132,235, 70,100,235,172,200,210,217,144, 93,104, -133, 86, 37, 67,239, 71, 38, 40,127,217,182,108, 88,255, 94, 93,150,212,240,153, 5, 0,164,164,164,254,146,118, 51,235,241, 54, -237, 59, 99,253,218,213,189,252,253, 27,248,232,116, 41, 21,118,233, 87,128,127,244,209, 71,138,185,115,231, 74, 63,255,252,243, -226,174, 93,187,134,189,243,206, 59,131,115,115,115, 79,214,171, 87,175,233,158, 45,107, 14,180,235,253,104, 39,136,142,224, 94, -125,250,201,149,162, 20,123,119,236,112,252,248,195,183, 5, 22,139, 97, 82, 85,193,130,218,247,163, 28, 35, 67,112,157, 58, 23, -181, 10,247, 64,169, 80,148, 84,184,235, 95,235, 0,108,105, 52,228,213,125, 7, 79, 39, 38,117, 60,147, 22,114,224,204,213,220, - 66,179,163, 73,242,174,127, 87,249,129, 43, 97, 12, 82,137, 0,111,149, 20, 66,233,167,169,119,157,182, 87,193, 88, 48, 80,242, -218, 98, 96,165,255, 2,140, 33,179, 48, 61,206,131, 57, 25,140,139, 28, 72,204, 48,193,104, 45,233,130,175, 27,164, 70, 94, 78, - 6,190, 92,178, 6,113,167, 79, 97,208,144, 71,176,116,197,183,120,241,233,199,173,213,165, 9, 66,105, 15, 86,185,222, 43,173, - 74, 10,128,161,200,228,196,230, 99, 55,208,168,129,224,241, 31, 4, 0,240,214,170,161, 55, 88, 32,200,189,145,124,102,167,122, -215,193, 19,239,188, 55,107,209,155,186,172,248,235, 87,207, 31, 69,211, 32, 61, 26,212,113,224, 98,182, 15, 78, 23,212, 71,211, -198, 13, 33,200, 79,121,148,157,127,177,245,188,109,194,230,161, 29,219,181,232, 22, 29,226, 7,139,221, 93,218,139, 37,193,234, - 85,235,144,150,154,241,124,254,197,159,226, 60,111,109,229,140, 57,215,242,188, 66, 99, 94, 62,127, 98,127,202,136,177, 47, 35, -188, 78, 84,133,195,204, 21,169,168,112,170,232,182,138,138,174, 59, 49,198,132,128,122,237,214,174, 93,191,113,116,131,168, 48, -252,122, 34, 21, 39,147, 10, 16, 20, 20, 8,137, 58, 12, 49,125,198,251,157,223,189,248, 49, 75,190,113,173, 76,174,126,161, 75, -215, 30,224,156, 35,241,242,197, 66,189,222,247,174,207,102,115,102,194, 89, 0, 62,229,111, 83, 7, 55,111,171,245, 13, 56,107, -115,184,113,243,102, 6,142,255,118,168,125,233,118, 30, 83,202, 37,216, 27,151, 11,135, 83,132,195, 37,162,119,159,129,118,185, - 96,235,245,241,162, 85, 93,179, 50,179, 4,141, 79,144, 24, 80,167,185, 60, 92,233,176,157,187,166,151, 59,156, 34, 26, 70,104, -170,204, 12,142,104, 60,123,234,212, 41,205, 37,114, 21, 12, 38,155, 61, 43,243,102,216,242, 13, 7,141,151, 19,206,215,169, 27, -226,235,243,201,103,160,118,160, 3, 0, 0, 32, 0, 73, 68, 65, 84,203,228,197, 86,134, 92,189, 13,133,134, 98, 54,118,226, 91, - 17, 43,191,152, 51, 14,128,199,231,142,101, 28, 13,126,217,123,180,153,191,183,156, 25,173, 46,177,160,216,225, 30, 59,252,207, - 45,162, 44, 45,174, 38, 44, 90,248,153, 58,238,154, 1,231,174,233,225, 37,151, 64, 33, 23, 96,119,138,240,228,237,196, 24, 19, - 26,180,234, 51,169,123,199,214,216,115, 54, 31, 18,137, 0,139, 65,103,150,162, 32,169, 99,223, 65,234, 14,157,187,162, 95,223, - 62,184,154,148, 24,181, 99,251,230,254,177,199, 15,103,107, 67,154,190, 98,204, 77,220, 90,147,182, 26,205,102,137, 83, 17, 54, - 62,188, 78,189, 30, 35,199,140,247,141,142,170,195, 66,130, 2,225,226, 82, 76,120,250, 49,143,223,249, 37, 5, 57, 48,119,214, - 59,176,217,236, 8,246, 83,128,115, 96,213,146, 15, 97,183,219, 17, 17,168,132,222,228,172,244,254,213,213, 35,149,245, 58,213, - 68,249, 34,172,170,219, 25, 99, 59,166, 77,155, 54, 29, 0,159, 54,109,218,244,178,235,115,230,204,177, 0,200,172,238,113,254, -152,204, 88,201,176, 32, 0,120, 71,196, 52,241, 15,137, 56,246,227,218, 47,252,117, 70, 7,188,228, 18,212,141,140,198,219,255, - 89, 28, 60,164, 99, 16,242,172,106,108,220,180,186,208,110, 53,255,224,201,206,169,195, 98, 58,122,107,124,246,172, 93,255,131, - 24, 20, 24, 40,124,185, 55,239, 90,129,193,117,107,232, 42,233,196,118,241,244,158,229,225, 28,108,183,151,151, 87, 99,187,221, -238, 95, 85,158,200,129, 85,123,211, 75, 39,231,254,185,121, 45,101,152, 68,226,254,246,219,245, 8,244, 81,192,230, 20, 49,237, -205,215, 44,207, 12,210, 22,141,125, 98,204, 3,253, 30,122,245,128, 76, 19,179,191,123,251, 24,222,174, 93,187, 34,137, 68, 82, -109, 94, 65,202,201,187, 86, 75, 52,171,175,126,225,221,183,158,121,183,130, 97, 65,143, 38,228, 26,178,206, 31, 3,112, 91,143, - 8,107,212, 72,241,221,198,109,175,141,122, 98,244,123,117,218, 14,215,166,102,233, 33,103, 14,116,106, 30,142,131,187,183,242, -140,180,164, 41,158,172, 42,202,205, 43,140, 12, 14, 14, 69, 92,138, 17, 55, 11, 44,200, 46, 45,174,178,116, 54, 24, 44, 6,180, -137,142, 64,145, 94, 31,233, 73, 59, 43,194,128,173,123,246,236,121,252,161, 71, 71,227,213, 55,103,246,252,230,171,249,241,218, -176, 38,207, 25,179,147, 14, 85,119,223,210,119, 94,225,219,111,191,221,104,197,138, 21,194,184,113,227, 44,173, 91,183,246,122, -234,169,167,122,174, 91,183,206, 75,173,246,178,156, 59,186,253,189, 23,254, 53,237,209,229,139, 63,106,171,211,233,152,203,233, -220,229,208,233,166, 25,170, 41,226,174,111,123, 39,129,181,152,249,236,192, 94,193,219, 3,212, 66, 75, 37,183,143, 97, 45,102, -254,192, 47,205,112, 36,239, 90, 98,104,253,196,194,127,101, 22,137,239, 90,133,144,143,171, 43,174, 0, 64,144, 48,216,157, 34, -188, 85, 50, 8, 66,105,143, 37, 23,195, 87,255,176, 75, 29,236,171,128, 76, 34, 64, 42, 41,233,221,204, 47,118,224,229,241,158, - 30,233,131,139, 46, 55,135,197,238,130,185,244,219,160,161, 56, 31,239,188,249,111, 12, 25, 54, 2, 47, 76,250, 55,116, 22,224, -116,138, 1, 14,167,179,218, 55,133,192, 4,152,109, 46, 60, 55, 40, 26,133, 70, 7, 76, 22, 23,236, 46, 17,106,133, 20, 50,169, - 0,141,151, 20, 62,106, 25,192,185,156, 49, 54, 1, 0,100, 50,153,213,225,112,172,175,180,133,156,163,126,100, 40, 44, 78, 1, -157, 71,207,199,128,110, 77,112,241,216,102,233,225,223,207, 55,120,253,205,119,241,218,139,195,176, 41,161, 17, 2, 66,162,161, -213,168,224,228, 2, 0,238,209,132, 60,206,103,136,225,205, 70, 62,249,245,138, 85,137,255,249, 96,154, 87,145,137, 65, 41,151, -224,192,254,125,136, 61,113,122,113,222,197,159, 42,109,215,189,144,113, 33,212,199,199, 7, 94, 10, 9,236, 14,155,221,211,251, -185, 69, 14, 14,180,215,134, 54,253, 26, 40,153,111,229, 22, 81,193,109, 85, 23, 88,140, 49,230, 27,209,106,245,215, 43,191, 29, - 23, 17, 22,130,173,251,227,177,122,197,231,104,208,110, 40,142,253,178, 26,190,245,187, 66, 19,213, 19, 10,239,141, 19, 4,137, -180,245, 43,175, 79, 31,217,161, 83, 55, 28, 63,122, 0,185,217, 89, 95,115,158,224, 81,143,134, 68,198, 94,125, 96,224, 48, 88, -237,110,244,234, 63, 20,187,127,222,250, 47,148, 46,158,240,212,157, 69,184, 8,193,245,239, 41,175,202,114,245,118, 89,190,222, -142, 27,249, 22,164,101,155,240,211,247,223,120, 60, 36,197, 96,239,212,187, 77, 93,217,132,121, 7,110, 68,214, 13,183,201,108, - 22, 85, 82,242,181,102, 47,140,127, 70,214,160,113, 51, 33, 87,111, 67,158,222,134,124,189, 13, 70,171, 11,141,235,198, 8, 78, - 23,235, 86,147,118, 3, 64,144,175, 66,182,244,231, 20,248,104,100,232,222,236,222, 23,206,138,162,248, 71,113,181,168,164,184, -138, 79,209, 67, 41,151, 64, 41, 23,160,148, 75,224,114,115,143,190,176,168, 66,154, 60,244,242, 43,147, 35,236, 46,160, 64,111, -135, 84,194, 16, 18,228,175,233,212,246, 73,172,154,255, 47, 0,192,139,111,127,137, 23,158,123, 10,205, 91,182, 70,145, 78, 23, -246,228,168,135, 22, 1,240,168,192, 18, 69, 17, 59,247, 30,138,218,123, 36,238,237,151,167,206,208, 62, 49,172,159,228,236, 53, - 61,178, 10,109, 72, 78, 50,212,168,167, 13, 0, 92,110, 17, 28, 28,107,126,216, 1,149, 66,138, 60,189, 3,156,115,124,244,249, -143,240, 86,201,144,165, 43, 25,214,175, 74, 85,245, 72,233,239, 43,236,129,242, 84,233,253,243,240,199, 60,173, 10,115,203,247, - 96,205,153, 51,231,226,156, 57,115, 42,236, 17,171, 76,181, 19,236,188, 35, 98,154,248,249,135, 31,223,254,195,138,128,173,113, -118,252,190,241, 52, 30,238, 18, 14,185, 84,128,218, 55, 24,231, 82, 76,216,179,123, 67,209,206,237,155,110, 22,202,204, 21,246, - 50,149,167, 14,111,218, 94,163,242,217,183,116,249, 90, 87, 80, 72, 8,214, 31, 45,204,208,153, 92,183,202, 89,183,219,201, 78, -239, 89,222,192, 37, 58, 31,180,100, 95,169,246,235,172,200, 33,159,243,213, 54, 0, 28,162, 40,130,139, 34,100, 94, 90, 77,112, -163,110, 57, 0,224, 22,185,151, 84, 96, 37,223,224, 75, 95, 37, 92,116,101,228, 93,171,186,187,147, 1,240, 81,203,240,195,225, -155, 0,144, 35, 49,156,185, 60,246,137,146, 97, 65,171,221,171,184,101,163, 70,188, 83,167, 78, 69, 42, 85,133,139, 69, 60, 82, -211, 97, 65, 79,240,228,100, 59,128,121, 17, 77,123,141, 24,172,109,211, 89, 33,200,209,161,105, 56, 14,238,249,137,255,190,123, -213,139,230,156,196,181, 30,229,112, 14,163,213,137,204, 2, 43,110, 22, 88,145,173,179, 34,187,208,134,108,157, 21,140, 49, 88, -237, 53,238,129,190,141, 41, 55,113,227,250,181, 43, 31,177, 57, 48,166,247,160, 17,248,247,140,165,209,235,191,158,187, 79, 21, -218,172,135, 39, 19,104, 57,231,110,198, 88,218,248,241,227,219,110,216,176, 65,210,170, 85, 43,203,229,203,151,213, 0, 68, 0, - 14,173, 86,173,250,230,139, 57,123, 58,119,238,252,253,205,164,132, 3, 0,116,158,172,164,170,215,119,188,178,153, 79,225,132, - 40, 77,247,193, 13,195,212,136,210, 24, 6, 55,211,158,251, 52,164,255,235,179,115,247,127,150,155,101,115,253,154,103,145,180, -187,105,148,121, 52, 23,208,105,179,166,143, 28, 53, 26, 18, 38,192, 97, 53,167, 3, 0, 88,201,132,242, 15,191, 77,128,214, 75, - 6,111,149, 20, 90,149, 12, 61, 91, 4,120,244,141,182,236, 41,112,186, 69,152,109,110, 88,108, 46, 88,237, 46, 4, 69,250, 99, -197,250,141,184,158,107,193,182, 83,249, 72, 76, 55, 32,166,174, 6,156, 87,255,241, 40,186,157,166, 97,143,141,243,150, 8, 12, - 18,129, 9, 45,154, 53, 65,161,209, 1,185, 84,128,220, 75, 5,141, 82, 10, 31,149, 12,114,185, 12,185,185,185,176,217,108,136, -138,138,242,170,178,129, 34,135,183, 86,133,152, 6, 17,112, 56, 93,216,121,228, 18, 62,158, 50, 18, 3,123,119, 4,147,105,145, - 96,107, 15,239, 0,111,136,130, 0,135, 75,132,221,225, 6, 32, 84,218,219, 22, 21, 21,245,128, 70,163,209,152,205,102, 67,122, -122,250,161,172,132, 45,215, 67, 90, 14,159,176,123,239,129,245, 67,135, 12, 68, 92,252, 69,108,218,186,253,104,126,160,126,106, -217,125, 90,181,106,213, 53, 40, 40, 72, 91, 80, 80, 80,124,254,252,249,147,158, 63,189,127, 96,140, 49, 77,104,179,215,187,245, -236, 11, 99, 81, 46,114,110,164,122,252,173,185,121,180, 55,222,159,179,180, 67,211, 38, 77, 59,184,121, 73,193,213, 34,202, 27, -111,204, 88,210,161, 81, 76,147, 14,101, 11, 61,154, 71, 85,125, 88, 53, 77,104,211,201, 31, 47,252,234,233,168,200, 72,236, 58, -158,128, 57,239, 78,138,211,168,189,235,215, 13,245,247,147,183,236,136,179,103,127, 67, 8, 20,240, 9,141,169, 59,230,145,137, -117, 7, 15,121, 4,231,207,157,198,103,243,102,197,154, 36,170,217,158,180, 85, 27,218, 48,184, 93,167,222, 99,189, 3, 66, 81, -164, 55,192,219, 63, 4,205,219,116, 26,171, 13,109,248,118,233,201,234,239,137,200, 57,108, 14, 14,157,193,129,235,121, 37,197, - 85,106,142, 25,162, 88,131, 57, 63,110,145,105,189,164,210, 0,231,213,168,243,251, 14,240,232,200, 80, 54,111,214,155, 18, 7, -188,144, 87, 84, 82, 92,229, 21,219,145,167,183,195,104,117, 34, 64, 35,133,232,174,124,165, 95,101,116, 70, 7,188, 75,231,201, -122,210,171, 88,153,175, 86,255,208,244, 92, 82,230,240,133, 11, 63, 83,159, 77, 41, 87, 92,201, 74,122,175,148,114, 9,220,162, - 8,120,240,142,151, 73,101,175, 62,250,208, 0,220,200,183,148,174, 68,102,136,105,221, 25, 65, 42, 17,253, 71, 79, 3, 0, 12, -123,168,100,158,113, 74,150, 9, 63,255,158, 7,220, 62, 97,187, 74, 38,139, 69,178,252,219, 95, 94,223,248,227,247,190, 86,183, - 20,203,118,165,193,108,115,193, 75, 46,129, 82, 46,129, 74, 46,185,109, 74, 80,117, 92,238,146, 57,117,215,243,157, 48, 91,173, - 40,182, 56,193, 1,156,188,106,132,197,238,130,222,228, 68,215,102, 85,246,153,120,226, 23, 0, 15,151, 93, 41,223,155, 85, 73, - 15, 84, 69, 78,149,207, 40,219,254,206,140, 59,127, 87,154,231,209, 23, 65,233,157,149, 98,249,235,222, 17, 49, 77,252,252,194, -143,111,255,126, 69,192,150, 56, 27, 14,158, 43,192,168, 94,117, 97,214,103, 99,238,156,183, 10, 25,184, 93,144, 8, 69, 54,171, -101, 75,129,218,241, 49,191,148,236,184,251, 33,254,160, 9,110,209, 70,165, 86, 31,248,228,179,101,142,144,208, 58,226,150,223, -139,114,245,102,247,109,125,133,110,155, 77,224, 34,151,123, 82, 92, 1,128, 32, 48,199,140,127,141,128,200, 57, 62,252,108, 35, -102, 79, 29, 13,173,106,156,154, 49,166, 54, 89, 93,152, 50,115, 37, 22,188,255,188,183, 90, 41, 5, 99,128,213,238,198,211, 99, - 70,120, 18, 13,147,213,133,228, 19, 27,140,134,148, 29,151,203, 15, 11,118,233, 57,228,116,151, 46, 93,138,252,253,253,161, 82, -169,254,232,153,240, 64,101,171, 5,115,139,144,225,237,237,221,199,199,199,167,124,158,169,168,168,232, 39,143,195,203, 49, 20, -229, 31,200, 78, 59,223,185, 71,191, 97, 56,180,231, 39,254,251,174,111, 94,172,201, 49,118,252, 3,252,111,156, 57,159,220,156, -177,128,146, 30,172,210,226,202,238, 20, 17, 29,170,198,141,180,100,248,249,250, 86,187, 58,173,140, 58,164,217,163, 76,224,147, - 24,248, 42, 99,118,210,198,210, 98,231, 73, 77, 88,179,248,139, 23,206,126, 60,116,236,171,210, 65,163, 38, 75,190,158,243,202, -116,220, 49, 57,181, 10,142,196,196,196, 75,207, 63,255,124,247,216,216, 88, 55, 0, 51, 99,204, 41,145, 72,212,118,187, 93,222, -175, 95, 63,125, 66, 66,194, 97,120, 48, 25,177,215,115,155,130,152,210, 48,164, 81, 76,167, 39,163,189, 13, 3,251,245,234,134, -110, 45, 35,113,163, 87, 55, 0,120, 53,221,168,109,218,243,165,111,126,104, 16, 92,119,231,215,171,127,158,253,226,232, 1, 83, - 34,134,205, 92,152,249,243,140, 42, 39,152, 94,191,116,168,130, 99,130,148, 13, 27,202,160, 85, 73,225,173,146,193,219, 75, 6, -167,203,179,111,180,165,184,211, 37,150,244, 96,217, 93, 48, 90, 92, 56,112, 54, 7,217,122, 59,138, 12, 14, 88, 28,110,112,240, -146,111,159, 30,124,138,231, 94, 57,230, 87,246,179,127,116, 7,253,242,207,231,251,108, 62,150,113,107,133,158,175, 90, 1,111, -117,201,170,234, 35, 71,142, 32, 48,176,250,111,247,162, 40, 98,211,238,147, 88,184,230, 0,118,175,122, 11, 94,114, 9,218, 60, - 58, 19,207, 14,239, 2,145,139, 72, 78,188,152, 19,211,162,109,168, 32,168, 32, 48, 6,155, 83, 4,192, 43,125, 62,237,118,123, -224,245,235,215,139, 27, 55,110, 28, 86,167, 78,157, 81, 18,137,132, 43, 1,219, 79,223, 23,154,247,239,248, 78,109,178,216,220, -106,151,126, 85,227, 44,203,195, 49, 49, 49, 96,140,241,160,160, 32,249,129, 3, 7,140,173, 91,183, 14,174, 44,183, 42,140, 49, - 65, 21,210,100,241, 11, 47,189, 62,170, 81,195,134,216,248,221, 42,112,206, 54,123,122,255,111,127,142,197,172,119,110, 95, 49, -248,198,140, 37, 29, 22,204,124,245,182,219, 94,122,103, 97,165,171, 8, 25, 99,172,110,171, 7,222,106,214,172, 5, 98, 47,102, - 96,222,123, 47,197, 89,115, 83,158,180,107, 3, 39, 58,140, 89,255,110,215,190, 35,194, 2,125,144, 89,104,195, 35,227,134,163, - 71,207, 94, 56,127,238, 52,102,189,255,102, 44,204,246, 65, 60,239, 82,181,147,160, 1, 64,228,178, 73,253, 6, 15,151, 89,108, - 14, 44,153,247, 1, 38, 78,253, 24, 93, 31, 24, 38,187,112,246,247, 73, 0,254,227,233, 62,219, 28,110,244,107, 29, 84, 82, 52, - 59, 69,108, 79,145, 72, 43,122, 5, 74, 37, 76,104,215,208, 15, 22,187, 11,197,230,202,135,140, 0, 64, 42,151,101, 23,233,139, -235,125, 49,251,117,137,201,234, 66,158,222,142, 92,189, 13,249, 69,127, 20, 86,249,122, 27,242,244,118,200,164, 12, 73,215,210, - 33,200,164, 53,158,127,167, 51, 58,209,185,137, 63,128,146, 66,230, 94, 56,165, 62, 93,118, 31, 62, 55,114,225,194, 69, 94,231, - 82, 13,136, 79, 41, 46,237,185,146, 64, 41, 19,160, 40,253,217, 45, 2,213, 61,132,111, 72,163, 6,207, 60,255, 98,127, 31,173, - 10,153, 87,114, 33,149, 48, 72, 36, 12,190, 33,145,240, 85, 90,241,202, 75, 19, 16, 20,232,135,235,249, 54, 44,222,154,132,248, - 75, 87, 33, 90,106,182,219, 75,150,125,255,224, 11, 47,191,225, 39,200, 20, 88,183, 39,181,164,157, 18, 55, 18,126,255,217,154, -153,124,222,100, 44, 46,224,224,110, 15,191,248, 51,238,114,151, 20,166,179, 63,156,134,239,215,124,137, 61,103,114,111, 77,206, - 58,182,121, 1, 94,127,231, 35,228, 23,219,129, 10, 38,213, 87, 85,143,160,164, 3,162,172,231,233,174,235,229,138,162,138,174, -179,210,235,246, 74, 50,236,119, 20, 85,246, 59,110,183,223,145,231,209,177,251, 42,237,193,242,142,136,105,226,235, 31,118,124, -219, 15,203, 3,182,156,177,227, 80,124, 73,113,229,178, 21,225,171,121,239,100,153,139,138,123, 87,117,192,198, 59,105, 66,154, -180, 82,106, 52,135,223,251,104,177, 45,180, 78, 61,215,206,179,197, 5, 6,171,251,174,110, 16,185, 90,227,214,248, 6, 91,253, -162,219, 47,148, 89,236, 31,228,229, 93,170,114, 94, 23, 67,201, 55,164, 29, 39,178,193,121,201, 87,162, 31,143,220, 68,233, 55, -113,184,197,146,225,147, 95,207,230, 66, 90, 58,207,196, 19,140, 1, 95, 45,251,178,248,225,214,122,211,216,217, 31,222, 26, 22, -236,218,182,164,231,202,199,199, 7,126,126,126,208,106,181,240,100,136,176, 76,101,171, 5,189,189,189,251,156, 61,123,214,203, -199,199, 7, 18,137, 4, 54,155, 13, 45, 91,182,244, 56,183, 60,109, 88,179,151, 59, 63, 48, 98,122,207, 7,134,225,192,238, 45, -252,247,221,171, 39,212,244, 0,134, 15, 15,232,254,243,172, 89, 31, 54,120,239,227, 47,148,222, 94, 82, 92, 54,218, 33, 48,134, -232, 80, 53, 2, 53, 2, 14,253,180,206, 58,122, 88,119,143, 15,106, 23, 25, 89,103,253,130,207,151,107, 22,204,157,217,207,187, - 78,211, 3,134,155,137,133, 0, 96,202, 78,152,167, 14,107,118,169,238,111,123,119,182,237, 51, 2,161, 17, 13, 7,122,154, 89, - 58, 84,104,190,118,237, 90,202,123,239,189,215,116,238,220,185, 92, 34,145,136, 0,148,159,125,246,153,249,202,149, 43,103, 81, -178,196, 22,213,245, 94,245, 31,216,114,138, 86,225,238, 26,160, 22, 90, 54, 12, 83,163, 91,203,146,209,207,209, 15,247, 68,100, - 84, 20,174,101,155,219, 21,154, 69,153,209, 46,105,184,116, 89,252,169,250, 65,146, 23, 93, 22,251, 37, 84,115, 16,216,138, 48, -252, 49,241,189,172,247,202, 91, 37,131, 8,212,228,155, 34,119,186, 68,216, 28,110, 88,108,110, 88,236, 46,152,236,110,152,237, -110,136,188,228, 61,193, 24,131,195, 37,150, 61,164,231,237, 99,128, 79, 64, 16, 26,214, 47, 89,245,234,173, 42, 57,100,131,143, - 90, 86,178,214, 57, 48, 16, 33, 33, 33,213, 55,144,115,216, 29, 37,111,113,187, 83,188, 53,124,111,119,184,192, 57, 71, 82, 82, -226, 91,105, 41, 41,143, 54,142,105,220,187, 69,155,182, 1,106,165, 0, 0,149, 22, 3,102,179,217,237,237,237, 29, 18, 16, 16, - 32,220,188,121,243, 86,209,220,184, 93, 63,215,214, 45,155, 49,114,228, 8,227,229,147,231,110, 45, 85,183, 88, 44,172, 71,143, - 30, 62,145,145,145,130,205,102,243,116,126, 95,233,115,192,152, 38,184,201,240,200,102,221, 63,126,122,252,196, 38,253, 6, 60, -136,131,251,247, 98,219,150, 13,107, 77,185,137, 85, 30,175,171,188,166, 77,155,221,181,138,176, 81, 76,147,187, 86, 17,214,107, - 16, 83,105,129,229,235,219,198,167, 77,167,190,145,105,249, 14,236,218,181, 19, 38,125,246,251,118,187,209, 12, 25, 95,185, 99, -195,210,231, 95,120,125,166, 79,223, 62,189,224,239,163,134, 84, 42,193,153, 83,177,152,251,159,233,177, 48,219, 7, 85,247,249, -121,107,127, 91,180,144, 55,142,170,247, 90, 84,163, 86, 56,243,251, 81, 36, 39, 93,184,120,238, 84,108,203,198,173,187, 34, 56, - 34,250, 53,214,162,197, 92,126,233, 82,149, 95,160, 1,192,110,181,166, 63,251,204, 83, 40,191,138,176, 91,251,166,129,183,189, - 0, 75,175,152, 13,185,142,111,230, 79,185, 82,182,138, 80,116,216,211, 43,203,213,235,242, 54, 29, 58,126, 98,234,163, 15, 63, - 40,228, 23,219, 75,122,172,244,246,210,139, 13,249,101, 63, 23,219, 16, 19,161, 69,226,197, 51,162, 85,159,239,113, 33, 92,218, - 44,235,179,143, 15,190, 4,252, 49,169,159, 1,213,206, 95,188, 19,151,249, 76,152,247,233, 66,175,115, 41, 70,196,167, 22,151, - 12, 9,202, 36, 37,133,149, 76,184, 85,108,149,172, 78,175,154,139, 73,102, 63,247,204, 24,228, 23, 59, 32,138,128, 84, 34,148, - 94,228,184,110, 96,184, 97, 48, 35, 95,151,135,148,180,116, 20,101, 39, 67, 16, 4, 4, 69, 52,129,167,221,141,110,174, 8, 55, -219,121,235, 81, 15,247,150,110,249, 45, 11,106,165, 20, 54, 67, 14,118,253, 48, 63,207,102, 44,254,216, 98, 54,110,177, 20, 92, -169,118,174, 81, 25,129,177,188, 98,163, 53, 84, 41,147, 96,227,154, 47,240,248,179, 47,149, 62, 41, 37,255,188,245,238, 44, 64, - 96, 40,212, 25,192, 24,171,105,175,232,157,157, 46,158, 77,216,172, 89,102,173,170,180,192, 82,171, 3,247,109,251,126,121,192, -111, 41, 2, 78, 38,234, 48,170, 87, 93, 56,173, 58, 44,254,232,223,217,197,197,185, 15, 24,242,174,120, 92, 92, 1, 0, 4, 97, -240,232,231,166, 94,108,216,164,133,237,224, 5, 99,106,145,201, 89,233, 60,134,110,163,222,187,120,250,151,207, 31,210, 59,175, - 77,214, 70,180,116,139, 46,215, 60,115,110,226,204,138,182, 21, 57, 20, 51, 23,111,188, 53, 60,248,246,220,117, 37, 63,187,221, -112,115, 17, 92, 4, 94,121,255, 43,184, 68, 55, 68,183, 27,162,155,195,233,230,234,234,154, 27, 18, 81,111,139, 46,225,199,102, - 99,255,115,247,176,160,159,159, 31, 2, 3, 3, 17, 24, 24,136,178,130,200, 83,149, 13, 11,250,248,248, 64,171,213,226,232,209, -163, 80,169, 84,208,104, 52, 53,202, 45,163, 13,107, 54,185, 83,223, 71,191,120,224,145,231,241,235,150,101,252,212,145,159, 39, -154,115, 18, 87,122,122,127,183,219,205,156, 78, 39, 30, 30,212, 55, 61,238,226,213,221,239, 78,157,244, 96,247,161, 19,149,221, -154,214,129,213,238, 70, 70, 90, 50, 14,253,180,218,218,164, 65,248,158,254,189,186,164, 59,157, 78,184,221,238,106,255,128, 91, -237,142,124,137, 76,165, 25, 51,102,172,236,212,201,147,155,181, 33, 77, 54,186,153,112,142,113,177, 13, 99,108,100,155, 54,205, -225,112,138, 48,155,139,171, 95, 48,112, 7,131,193,144,178,106,213,170, 6,207, 60,243,140,186, 69,139, 22,178,228,228,100, 44, - 88,176,160,192, 96, 48, 84,123,220,175, 50,123,143, 36,126, 38,101,186, 43, 10,209,241,100,180,183, 97,224,245,158,221, 48,102, -104, 79,124,255,203, 49, 28, 58, 26,139,116,163,246,172,209, 37,253,233, 70,122,166,173,101, 64,241,230, 71,186,213,147,108, 92, -163,219, 28,210,239,157, 39, 56, 87,238,205, 59, 52,195,227, 5, 30, 37,139, 49,156,240, 81,151, 28,175,169,172, 39, 75,194,152, -199,149, 16, 3, 82,142,198,158,105,213, 49,166, 5,226, 82,244,200, 45,178,193, 98,115, 65, 20, 57, 68,112, 4,122, 43,224, 37, - 23,112, 61, 45, 5, 34,119,164,122,218,182, 18, 60,175, 79,239, 62, 82,128,129, 49, 46,149, 73,165,224, 40, 57, 46,162, 74,165, - 50,134,132,132,120,212,131,229,112,185, 48,242,193, 46,232,218,169, 13, 30,157, 56, 31, 0,176,127,237, 52,248,107,101,248,126, -253, 74, 92, 63,188,104,125,195,238, 47,237,189,112,254,226, 99, 23,227,126, 27, 59,164,131,170, 93,152, 52, 83, 94, 89,158,209, -104,220,204, 24, 83,200,229,242, 7,123,247,238, 29,176,121,243,230,162,160,160, 32, 81, 33,151,231, 61, 50,108,168, 40,147,203, - 11,203,182, 61,126,252,184,108,226,196,137,222, 58,157,238,122, 78, 78, 78, 44,231,188,202, 46, 18, 77, 72,179, 1, 16,176, 1, -140,121,105, 85,234,244,110, 3,198, 68,116,234,218,197,119,248,200,199,161, 84, 40,241,235,222,221, 88,178,104,238,143,198,172, -203,207,121,252, 52,162,118, 86, 17,234,245,190,166, 43,151,206,233, 82,115,237,254, 50,191, 24,200,148,222, 19,153,111,196, 98, -137, 82, 59, 35,184,237,112,159, 77,219,119,226,252,133, 11, 8, 80, 57,113, 45,249,138,249,194,217,184, 47,205, 76, 54,147,231, - 93,242,104,165, 19, 0,168, 11,220,143,117,123,234, 65,127,155,195,141, 35, 7,126,177,138, 46,241,193,216,195, 59,147,235, 54, -233,228,213,170, 83,127,255,252,109, 43, 71, 2,248,190,186,156,140,203,119,247,216, 70, 53,237,156,186,255,192, 62,223,208,232, -150, 18, 6, 6,135,205,138,188,107,167, 92,230,156,132, 98,125,198,121,143, 86,213, 22,220,192,251,239,204,248,100,114,167,142, - 29, 53, 28, 94,183,245, 88,149, 21, 86,249,197,118, 4,121, 43, 96, 41,206,195,149, 83,187,173,230, 60, 73,149,199, 43,115,217, - 77,234,252,220,156, 91, 67,105,198,156,196,174, 85,109,159,159,155,163,112,217, 77,213,254,237, 16, 4, 9,124, 52, 10,156, 79, -189,121,107, 66,187, 82, 86, 50,247, 74, 33,147,220,154,135, 5,220, 61, 95,173, 2,125,229, 94,126,184, 89, 96, 5, 3,135,232, -118,193,229,180,195, 80, 92,140,155,153,217,200,201,206,129,193, 80, 4,181,214, 31,173,218,117,134,183,198, 11,231, 14,253, 8, -206,185, 71,199, 37,116, 50, 89,211, 78, 93,123, 41, 47,164,149,204,181,242,146,113,252,188, 97,110,129,177, 56,183,151, 33, 51, -233,138, 39, 25,229,185,220,238,125,241,151,174,180,172, 27, 94,159,157, 77,214, 99,253,138,207, 97, 47,237,201,116, 58,221,184, -112,221,132,172, 66, 51,174, 95,187,204, 69,183,187, 70,135, 92,250, 59,170,180,192,146, 43,100, 42,159,128, 8,204,122,114, 28, -190,252,242, 43,164,222,184,137, 37,179,166,100, 23, 27,242,250, 25, 50,175, 36,121, 18,206, 24, 27, 80,118,172, 12, 83,118,194, -188,231,190, 76,205,216, 30, 87, 40, 88,236,188,202, 9, 60, 94,193,209,232,245,220,130, 61, 22, 67,161,194,109, 51, 75,127, 94, -255,220,134,138, 50, 1, 64, 96,176,127,252,198,104,104, 85, 82, 48,198, 80, 54, 44,184,116,214, 4,168,149, 37, 99,199, 22,155, - 11,227,166, 44,196,250,133,255, 6, 7,240,228,227,199,110,251,224, 41,159, 89,110, 8,175,110,122, 90,238,205, 1,195,222,216, -111,117, 40,109, 67, 71, 60,115,186, 99,199,142, 69, 42,149, 10, 42,149, 10, 62, 62, 62,240,247,247,135,159,159, 31, 42, 82, 73, -102,165,171, 5, 5, 65,128, 32, 8,208,104, 52,208,106,181,208,104,238, 94, 85,115,231,190,223, 73, 27,214,108,114,167, 62,143, - 44,237,255,232, 11,248,117,203,114,126,234,200,207,147,204, 57,137, 43,170,122,174,239,204, 20, 69,241,220,200,145, 35, 91, 79, -156, 56, 81, 62, 99,234,196, 61,191,236, 61,148,180,113,199,242, 97, 58, 93, 81, 36,231, 28,126,190,190, 55, 70, 15,235,254,115, -191, 30,157,210,247,239,223, 47,110,216,176,193,198, 24, 59, 95, 93, 59,243,115,115,215,238,223,119,224,195, 94,125,250, 98,229, -154, 13,125, 46, 94,186,220, 39, 57,249, 10, 34,163, 27,162,126,131, 24,152,153, 63, 14, 28, 62, 10, 99, 81,110,133,115,196, 42, -219,247,178,165, 38, 58,157,238,183,209,163, 71, 15, 58,118,236,152, 48,122,244,104,115,126,126,254,113,148,126,111,170,172,247, -170,124,230,111, 95, 13,207, 3,176,182, 94,223,241, 63,222,116, 20,189, 6, 96,110, 84,116, 20, 14, 29,141, 69,236,177, 19, 95, -229,171,163,102, 62, 55,110,252,132,122,143, 72, 94,120,164, 91, 61, 73,136,191, 26,223, 45, 95, 32,217, 30,155,182, 48,173,192, -189, 18,192,172,170,218,121,167, 2,131, 3, 61,154, 7,192,233,230, 16,121,201, 7,173,183,151,172,194, 15,220,138, 50,165,118, -229,115,147, 38, 78, 76,110,213,166,221,235,227,198, 79,146,183,107, 24,137,147, 87,139, 0,198, 16, 16,166, 65, 86, 86, 22,142, -108, 90,238,210,221, 76,248, 74, 34, 17,239, 26,222,169,170,157,133,105,113,141,203,109, 55, 33, 63, 63, 31,135, 14, 29, 66, 89, - 97, 21, 28, 28, 92, 97,129,117,103,102, 65, 78,230,241, 89,159, 46,235,241,226,211, 35, 48,180,111, 75, 28, 62,149, 12,123,233, -241,150,202,150,132,167,196,126,173,120,109,116, 67,251,228,145, 77,138, 45, 78, 69,218,251,169,250, 35,229, 87,185,222,153,201, - 57,183, 51,198,182, 39, 38, 38,246,108,219,182,109,189,157, 59,119, 22, 94, 60,177,231,213,242,237,120,227,141, 55,180, 95,126, -249,165,154,115,126,220,102,179,221,245, 69,176,194,125, 23,240,221,153,211,167, 3, 29, 78, 17, 71, 79,156,107,222,191, 71, 59, -136, 28, 56,117,234, 20, 86,126,179,210,122, 62,254,236,124, 83, 78,216,127, 42, 91, 32, 82,217,243,233,105, 49, 85,209,118,101, -153,156, 31,114,105, 67,155,125,117,252,232,225,119,149, 17, 29,209,236,161,233,143,220, 60,183,253,145,176, 22,131, 17,212,176, - 59, 50,227,183,227,248,158,111,119,138, 46,215, 52, 47, 81, 72, 55,229, 37, 84, 90,236, 87,214, 78,165, 74,253,175, 22, 29,250, -224,122,122, 26, 82,175, 92, 88,107, 41,184,146,169, 13,107,182, 54, 51, 35,125, 82,131,150, 61,112,108,207,247,175,162,146, 2, -171,186,215,124,100,176,106,249,206, 29,219,199,100,100,124, 29,102,178, 88,149,156,115,171, 82, 33,205,214, 10,134, 74, 23, 69, -221,253,255,126,201,161, 9,168, 63,242,241,113,147,126, 89,178,100,145, 44,212, 79,141,108,157, 21,197, 22, 7, 12,102, 7, 4, -198,208, 56, 66, 3,179,161, 16,135, 55,125,234,180, 27,117,163, 57,191,234,168, 44,179,228,124,130,252,149, 55, 94, 58, 8,133, -111,100, 68,131,254,211,171,236,157, 51,100,198, 15,123,227,165,159,155,114,206,251,107, 67,155, 25,140, 57, 9,239, 85,182,239, -140,149,188,191,199,246,139,132,195, 85,114,252, 48,151, 8,184, 69,177,180, 87, 15,224,183,198,237,239,126,195,223,158,201,196, - 31,126, 57,142,204,156, 34, 88,236, 78,216,236, 46, 56,156,110, 8, 18, 9,252,252,253, 16, 83,191, 61,124,253,124,144,147,157, -137,216,253,219,145, 20,127,248, 56,227,152,105,206, 77,218, 95,121,230, 31,228, 42,191,166,225, 17, 97, 66, 86,177, 29, 42,133, - 4,103, 15,239,116, 56,237,182,249,158, 20, 87, 21,101, 22, 21, 20, 46,124,125,234,155, 79,174, 94,181, 38,172,117, 3, 31,100, -228, 91,144,145,103,133,193, 90,242,253,198,229, 22, 97, 51,230, 35,254,192,154,108,183,213,112, 79, 71,158,255, 59,169,180,192, - 18, 93,110,123,226,213,107,152, 54,243, 83, 92, 75, 75,199,146, 57,111,230, 24,107, 80, 92, 85,100,213,228,250,213,126, 3,186, - 93,233, 33, 73,254,147, 86,229, 86,119, 13, 11,114, 17, 34,231,248,249, 68,246,173, 97, 65,177,116, 70,101, 92,114, 81,149, 89, -119, 14,225,197, 39, 26,190,181, 88,114,124, 19,174,206,215, 1,128, 68, 34,185,117, 41,155, 43,101,181, 90,171, 92, 85, 84,197, - 65, 68,111, 27,215, 22, 69, 17, 62, 62, 62, 80,169, 84, 53, 30,122,212,132, 54, 29,211,169,239,163, 95,244, 31,254, 34,246,109, - 93,193, 79, 29,222,254,146, 57, 55,113,185,199, 1,165,116, 58,221, 69,198,216,149,249,243,231,183, 91,185,114,101,131,169, 83, -167, 94, 91,247,197,135, 75, 0,160,160,160, 0, 0, 16, 23, 23,199, 95,122,233, 37,155,213,106, 77,209,233,116,103, 56,231,213, - 14, 29, 88,242,212,179, 87, 46,157,219,234,198,205,172, 17, 13, 91,117, 70,112,131,206, 8,107,220, 5, 58,131, 3, 39,175,102, -226,218,229,253,184,124,116,211, 78,179,214,245, 97, 77,219,220,182,109,219, 72, 65, 16,234, 27,141,198,176, 22, 45, 90,180,213, -104, 52,113,109,219,182,109, 47,149, 74, 51, 78,159, 62, 93,245,139,231, 14,105,135, 86,219,234,245, 29,191, 56,221,224,221,239, - 90,182,185,125,186,193, 59,206,172,244,253,119,238,254,207,108,161,131,230, 47,228,142,252,139, 27,215, 20,111,254,110,249, 2, -201,184, 9,111,184, 47,232,253, 95,147,170, 20,191,206,121,182,181,199,143,193,152,144, 53,249,153, 71,255, 56, 76, 67,105,207, - 85,233,207, 30,117,199, 23, 21,157,211, 3,120, 91, 21,209,242,139, 11,175, 77,156,213,166, 83,143,167,122, 15, 25, 45,184,228, - 90,236,217,250, 53, 79,137, 63,176, 81,202,221,239,154, 61, 56,122,127,117,236,118,123,181,197, 85, 69,244, 55, 52,125, 55,110, -248,230,217,205, 91,183,204, 25,254,200,163,129, 75,223,127, 2,159, 46,251, 9, 26,149, 18, 92, 20, 49,250,129,168, 81,151, 55, - 12, 30, 22, 25,234, 85,103,243,193,140, 35,175, 44,186,240,182,217,236, 72,170,110,149,107,105,193,124,212,219,219, 59,175,103, -207,158, 93,149, 74, 37,203,207,207,151,134,132,132,184,124,125,125,237, 25, 25, 25,102,155,205,182,153,115,238,113,175, 34, 0, - 56,156, 34, 82,115,172,216,182,101, 51,206,157,216,143,203,151, 19, 13,151, 47, 93,254,156, 73,249, 34, 99,118, 82, 97,245, 9, -119, 19, 43, 92, 69, 88,241,109, 85, 49, 73, 84,179,227,118,124,218, 55,230,129, 87,187, 5, 54,234, 1,255,232,146, 53, 58,250, -140, 11,184,113,106,227, 54, 67,166,252,113,206, 47, 84, 61,145,169, 10, 17,117, 27,196,112,137, 2,191, 29,250, 5, 92, 20,191, - 2, 0, 46,138, 95,197, 29,219, 57,169,203, 67, 47, 32, 32,164, 94,219,178,181,243, 53,205,150, 75, 5,211,174,205,171,183,166, -166,166, 34, 33, 33, 1, 87,175, 94, 69, 97, 97, 33,190,251, 46,181, 70,255, 63,166,194,212, 95,181,129, 13, 7, 63,246,196,216, -159, 71,141,121,218,171, 65, 76,107,161,105, 93,127, 4,106,165, 72,188,154,134,164,211,241, 98,226,201,157, 86, 71,113,238,112, -115, 97,106,165, 5,159, 38,184, 69, 40, 19,248,180,178,115, 11,118,235,214,163,233,155, 31,207,233, 26, 24, 28, 82,225,231,120, - 65, 94,174,226,173, 87,182, 55,141,253,253, 55,143,206, 69, 40,186,221, 5, 19,158, 29, 45, 74, 74, 78,228,137, 91,253,210, 12, - 0, 47,235,181, 42,185,157,139,174,106,123,236,199,143,232, 5,151, 40,194,100,113,160,216,100,131,222, 96, 69, 86,110, 1,206, -197,199,227,240,207,219,145,156,120, 46,197,105,183,239, 21, 4,182,201,156,157,120,184,186,188,219, 8,210, 6,129, 1, 1, 72, - 41, 52,194, 75, 33, 69, 90,210,105,155,169, 88, 95,233,217, 67,170, 99,206, 79,202,210,132, 54, 29, 52,122,244,152,221, 15, 12, -126,196,183, 83,247, 1,234, 32, 31, 63,200,165, 28, 87, 82, 51,113,230,248,110,211,181,115, 71,138,157,118,227,131,181,113,150, -150,255,117,149, 22, 88,197,134,188,126,207, 63, 55,113,143, 32,149, 40,193, 69,171,217,172,123,240,207, 20, 87,127, 21,206,221, - 25,207, 62, 89, 50,105,189,236,187,128, 75,228,170, 39, 31,223, 99, 41,255,221,192,233,230,234, 39, 31, 63,110, 6, 0, 46, 86, - 62, 97,239,214, 16,222,247,191,102,164,167, 23,156, 42, 44,180, 29,252,179, 43,251,202,159, 91,176,138,213,130,166,102,205,154, -221, 42,170, 36, 18, 9,220,110,183,199, 31, 64,114,165,234,197, 7, 30,121,158,237,251,105, 5, 63,121,232,167,201,230,220,164, -101,247,218,222,210,130,233, 4, 99,236,194,187,239,190,219, 41, 52, 52, 52,244,131, 15, 62,240, 42, 46, 46,150, 45, 93,186,212, -154,159,159,159, 93, 92, 92, 28,203,121,229, 19,146,239,206, 60,227, 4, 48, 82, 27,218,164, 31,223,188, 98,160, 95, 80,157, 65, -190,193,117, 27, 21,229,221, 76,209,231,101,238, 5,176,175,244, 0,143, 53,210,190,125,251,134,130, 32,140, 6,208, 74,163,209, - 52,214,106,181, 74,206,121, 51,198,216, 69, 81, 20,227, 91,180,104,177, 3, 64,141,254,255,210, 14,173,182,245,158,252,205,134, - 66,179, 40,183, 11,242, 13,105,135, 86,219, 0, 32,103,239, 84, 51,128,109,161,253,166,141,220, 30,155,182,228,162,206,247,213, -220,131,179, 61, 62, 55, 93,153,162, 27,103, 27, 87,191,149,103, 44,153, 23, 51, 0, 60,171, 9,109,186,224,124, 92,236, 12,198, - 33,115,195,245,145, 57,231,202,233,218,200,151,201,100,214, 58,117,234, 84,184, 90, 80,169, 84, 86, 57, 63,165,244, 96,135, 43, - 25,235,187,102,203,143,107,158,253,105,251,182, 57,189,251, 15, 15,244,170, 91, 23,245, 67, 24,214, 76,235,240,234,254,184,188, -147,143,188,121,228,203,107,153,214,120,206,121,141,230,187, 24, 12,134, 36,198,152,206,104, 52, 62,202, 57,191,193, 24,139,212, -233,116,103,157, 78,231,249, 26, 23, 2, 34,198,118,235,214,249, 59,198,152,148,187,196,121,177, 50,201, 6,107,214,229,140,123, - 41, 40,202,107, 93,223, 7, 83, 62, 88,220,161, 81,227, 38, 29,202,206, 69,216,178,158, 55, 38,190,189,160, 67,189, 6, 49, 29, -254, 56, 63, 97,213,171, 8,121,230, 25, 11, 11,109, 61, 48,113,239,252,247, 3,147,143, 79, 86, 5,212,213,154,242,211, 10,117, -105,167,231,155,115, 67,231,223,203,129, 37,203, 75,189,122,113,209,202,249,111, 79,205,186,153,178,210,148,155,116, 1, 0, 76, -185, 73, 23,212,161, 77,222,207,207,206,152, 90,144,123,109,254,189, 62, 23, 38,147, 41,243,219,111,191,245,235,209,163,135, 16, - 26, 26,138,188,188, 60, 28, 60,120, 80, 20, 69,177,218, 19, 51,223,201, 88,112,237, 32, 99,141, 2,214, 46,251, 98,158, 92,227, -253,144,203,229,138,224, 28,144, 74,165, 89,118,115,241,110,131,160,121,147, 23,166, 86,243,186, 20, 25, 0,161,236,220,130,162, - 40,178,121, 75,214,164,201,188,188, 43, 28, 82,117, 90, 13,106, 81, 20, 61, 62, 23,161, 46,253,116,163,154,238, 87,101, 24,231, - 51,219,118,236, 58,221,233,116, 88, 81, 50, 31,204, 10,192,202, 57, 10, 4,129, 29,150,136,206, 61,158,156, 2,173,210,124, 6, - 31,206,164,240, 86, 73,193,192, 96,212, 23,242,154,204,185,170,136, 41, 39,241, 34, 99,125,163,119,217,127,124,230,192,175, 59, - 31,119,187,221,245, 75, 95, 57,169, 54,139,105,163, 49,203,127, 45,231,167,254,220, 50,244,191,137, 74, 11,172,210, 98, 42,250, -255,175, 41,247,166, 32,165,250,163,203,214, 68, 86, 78,225,154,193,195,167,242,212,180,220,147,215,179,109,107,121,185,211,223, -252,217,204, 27, 55,242, 14,150, 14, 11,222,181,196,243, 94, 87, 11,150,113, 88, 45,159,124,246,238, 24, 88, 45,166,117,230,220, -164, 53,127, 38,171, 76,105, 1,117,152, 49,230, 59,121,242,228,246, 74, 16,255,138, 0, 0, 32, 0, 73, 68, 65, 84, 90,173, 86, -150,159,159,127,130,115,174,175,246,206,149, 48,230, 36, 29, 4,112, 16,192,180,218,104, 99, 92, 92,220,181,118,237,218,173, 23, - 4,161, 62,231, 60,148,115,238,139,146, 2, 54, 95, 42,149,222,188,116,233, 82,141, 63,196, 1,128,219,188,119, 25,237,146, 24, - 23,247,223,125,231,239,100,129, 33,191,166, 23,186, 87, 72, 52, 94,255, 51,115, 8, 76, 57,137, 23, 1,212,194, 17,118,111, 87, -213,113,174, 60, 85,190,208, 58,244,203,234,103, 5,133,239, 71,253,155, 90,205,131, 94,191, 57,235,232,249,188, 19,156,115,143, -143,142,125,119, 54,207, 83, 40, 20, 22,198, 88,164, 92, 46,183,216,237,246,248,123,201, 41, 45,238,239,105,165, 97,101, 68,176, -211, 29, 58,120,254,241, 36,130, 85, 89, 20,243,156,243,102, 0,211, 88,139, 22, 31,168,147, 79,249,155,243,131, 10, 56, 79,172, -149, 63, 84,198,236,132, 89, 40, 29,230, 46,207,156,147,244, 17,128,143,254, 76,246,169, 83,167,126,158, 63,127,190,126,201,146, - 37, 81,110,183, 91,109,183,219,205, 22,139, 37, 53, 35, 35,227,183,123,201,227, 60,217, 14,224,181,210, 75,141,153,243, 19,178, -181,161, 77, 22,119,239,214,253, 53, 0, 96,224,139, 83, 15, 47,158, 82,213,125,180,161, 77, 44,229,183,175,234, 92,132,181,201, -152,155,244, 21,128,175,254,178, 7,224, 98,222,216, 81,143, 2,165, 7,212, 22, 93,174,123, 62, 28,199,109,177, 37,239,249,111, -112, 15, 39, 47,191,175,240,210,211, 35,252, 21, 23, 0, 3, 40,147, 50, 41,147, 50, 43,216, 86,248, 59,180,147, 50,239,223, 76, -175,240,230,145, 94,225,205, 35, 61,189,127, 69,219,255, 93,247,253,127, 53,243,126,187,120,124, 38,111, 66, 8,169, 45,220,131, -179, 9, 16,242, 87,178,100, 94,242,248, 56,126,247,178, 61, 33, 12, 37,103,165,190, 11,247,236,236,219, 37, 33,140, 85,152, 81, -149,234,242, 41,147, 50, 41,147, 50, 41,147, 50, 41,243,254,203,172, 46,187, 38,245,199,255,180,191,178,123, 12,127,147,110, 73, -202,164, 76,202,164, 76,202,164, 76,202,252,239,102,222,111, 23,207,207,241, 66, 8, 33,132, 16, 66, 60, 66, 5, 22, 33,132, 16, - 66, 72, 45,163, 2,139, 16, 66, 8, 33,164,150, 81,129, 69, 8, 33,132, 16, 82,203,168,192, 34,132, 16, 66, 8,169,101,140,115, -142,210, 83, 76, 49, 0,183,253, 76, 8, 33,132, 16,242,255,225,126,171, 69,110,245, 96, 49,198,254,212, 57,183, 8, 33,132, 16, - 66,254,140,251,169, 22,185, 85, 96,113,206,217,253,180, 99,132, 16, 66, 8,249,123,185,159,106,145,219,230, 96,253,221,187,227, - 8, 33,132, 16,242,247,118,191,212, 34, 52,201,157, 16, 66, 8, 33,164,150,177,210, 67,222, 19, 66, 8, 33,132,144, 90, 66, 61, - 88,132, 16, 66, 8, 33,181,140, 10, 44, 66, 8, 33,132,144, 90,246,151, 22, 88,140,177, 1,148, 73,153,148, 73,153,148, 73,153, -148, 73,153,255, 52,212,131, 69, 8, 33,132, 16, 82,203,168,192, 34,132, 16, 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50, - 42,176, 8, 33,132, 16, 66,106, 25, 21, 88,132, 16, 66, 8, 33,181,140, 1,168,112, 37, 0,231,124,159,199, 33,247,176,154,160, -186,124,202,164, 76,202,164, 76,202,164, 76,202,188,255, 50,171,203,174, 73,253,241, 63,141,115,254,151, 93, 0, 12,160, 76,202, -164, 76,202,164, 76,202,164, 76,202,252,167, 93,104,136,144, 16, 66, 8, 33,164,150, 81,129, 69, 8, 33,132, 16, 82,203,168,192, - 34,132, 16, 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50, 42,176, 8, 33,132, 16, 66,106, 25, 43, 93, 13, 0,198, 24,231, -156,179,255,114,123, 8, 33,132, 16,242, 15,117, 63,213, 34, 2,240,199, 14, 49,198,248,127,187, 65,132, 16, 66, 8,249,231,185, -223,106, 17, 26, 34, 36,132, 16, 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50,154,131, 69, 8, 33,132,144,255, 9,247, 83, - 45,114,171,192, 34,132, 16, 66, 8, 33,181,131,134, 8, 9, 33,132, 16, 66,106, 25, 21, 88,132, 16, 66, 8, 33,181,236, 47, 45, -176, 24, 99, 3, 40,147, 50, 41,147, 50, 41,147, 50, 41,147, 50,255,105,168, 7,139, 16, 66, 8, 33,164,150, 81,129, 69, 8, 33, -132, 16, 82,203,168,192, 34,132, 16, 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50, 42,176, 8, 33,132, 16, 66,106, 25, 3, - 80,225, 74, 0,206,249, 62,143, 67,238, 97, 53, 65,117,249,148, 73,153,148, 73,153,148, 73,153,148,121,255,101, 86,151, 93,147, -250,227,127, 26,231,252, 47,187, 0, 24, 64,153,148, 73,153,148, 73,153,148, 73,153,148,249, 79,187,208, 16, 33, 33,132, 16, 66, - 72, 45,163, 2,139, 16, 66, 8, 33,164,150, 81,129, 69, 8, 33,132, 16, 82,203,168,192, 34,132, 16, 66, 8,169,101, 84, 96, 17, - 66, 8, 33,132,212, 50,198, 57, 7, 99,140,151, 94,239,203, 57, 63,252,223,108, 16, 33,132, 16, 66,254,121,238,183, 90, 68, 90, -246, 3,231,156,149,238, 28,251, 47,182,135, 16, 66, 8, 33,255, 80,247, 83, 45,114,107,136,176,116,135,250,254, 23,219, 66, 8, - 33,132,144,127,176,251,169, 22,185,173, 7,235,191,217, 16, 66, 8, 33,132,252,179,221, 79,181, 8, 77,114, 39,132, 16, 66, 8, -169,101,172,244,144,247,132, 16, 66, 8, 33,164,150, 80, 15, 22, 33,132, 16, 66, 72, 45,163, 2,139, 16, 66, 8, 33,164,150,253, -165, 5, 22, 99,108, 0,101, 82, 38,101, 82, 38,101, 82, 38,101, 82,230, 63, 13,245, 96, 17, 66, 8, 33,132,212, 50, 42,176, 8, - 33,132, 16, 66,106, 25, 21, 88,132, 16, 66, 8, 33,181,140, 10, 44, 66, 8, 33,132,144, 90, 70, 5, 22, 33,132, 16, 66, 72, 45, - 99, 0, 42, 92, 9,192, 57,223,231,113,200, 61,172, 38,168, 46,159, 50, 41,147, 50, 41,147, 50, 41,147, 50,239,191,204,234,178, -107, 82,127,252, 79,227,156,255,101, 23, 0, 3, 40,147, 50, 41,147, 50, 41,147, 50, 41,147, 50,255,105, 23, 26, 34, 36,132, 16, - 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50, 42,176, 8, 33,132, 16, 66,106, 25, 21, 88,132, 16, 66, 8, 33,181,140, 10, - 44, 66, 8, 33,132,144, 90,198, 74, 87, 3,128, 49,198, 57,231,236,191,220, 30, 66, 8, 33,132,252, 67,221, 79,181,136, 0,252, -177, 67,140, 49,254,223,110, 16, 33,132, 16, 66,254,121,238,183, 90,132,134, 8, 9, 33,132, 16, 66,106, 25, 21, 88,132, 16, 66, - 8, 33,181,140,230, 96, 17, 66, 8, 33,228,127,194,253, 84,139,220,234,193,186,159,198, 61, 9, 33,132, 16,242,247,115, 63,213, - 34,183,122,176, 8, 33,132, 16, 66, 72,237,160, 57, 88,132, 16, 66, 8, 33,181,236, 47, 45,176, 24, 99, 3, 40,147, 50, 41,147, - 50, 41,147, 50, 41,147, 50,255,105,168, 7,139, 16, 66, 8, 33,164,150, 81,129, 69, 8, 33,132, 16, 82,203,168,192, 34,132, 16, - 66, 8,169,101, 84, 96, 17, 66, 8, 33,132,212, 50, 42,176, 8, 33,132, 16, 66,106, 25, 3, 80,225, 74, 0,206,249, 62,143, 67, -238, 97, 53, 65,117,249,148, 73,153,148, 73,153,148, 73,153,148,121,255,101, 86,151, 93,147,250,227,127, 26,231,252, 47,187, 0, - 24, 64,153,148, 73,153,148, 73,153,148, 73,153,148,249, 79,187,208, 16, 33, 33,132, 16, 66, 72, 45,147, 86,116,163,172,203,199, - 57, 46,151, 43, 4, 0,164, 82,105,174,243,228,123,225, 85,133,200,128,254, 46, 96, 69,105,224,139, 78,206,127,173, 32,243, 87, -151,203,229, 95,154,169,115,158,124,111,112,149,153,157, 63,218,115,219,246, 39,222, 29,120,215, 70,140, 73,100,157, 63,202,188, -163,173, 17, 85,229,222,134,115,247,255, 71, 59,255, 46,153,255,100,242,174, 31,231, 56,157, 37,175, 35,153, 76,154,235, 56, 81, -245,235, 72,222,229,163,204,219,182,255,253,221,208,170, 50,213, 42,101, 65,163, 58,193, 11,171,202,188,150,153,255,111,147,217, - 26, 88, 85,102, 77,223,155,145,225,225,253,221,165,239, 77, 9,240,226,141,204,204,255,159,247,166,135, 24, 99, 29, 1,188, 7, -192,167,220,205,241,156,243,215,239, 53,147, 16, 66,254, 23, 84, 88, 96,185, 92,174,144, 51, 91,103,192,100, 3,250, 63,253, 81, - 72,195,225,203,190,187,107, 27,171, 78, 81,116,241,135,214, 18,103,177,127,176,212,225,147,153,153,201, 0,128, 49,182, 2, 64, - 84, 5,153,254,103,182,206,128,217, 14,244, 30, 51,211, 63, 10,240,201,147,203,223, 80,105, 52,253, 44, 22, 75, 75, 0, 80,169, - 84, 23, 45, 38,211,193, 96,135, 99,193,157,219, 87,182, 3,229,219,250,192, 83, 31,133, 52, 27,190,236, 85,183, 40, 42,110,158, -250,186,183, 53,255,138, 84,230,178, 45,157, 14,236,154, 1,220, 85, 76, 85,146,247,199,227, 62,254, 78,160, 12,120, 64,225,229, -213,214,207,223,191,151,200,121,115, 81, 20,153,219,229,186, 84,172,215, 31, 21, 93,174,115, 46,187, 41,240,204,246, 57, 98, 85, -237,188,115, 95, 30, 7,164, 91,129, 81, 26,173,182,159, 68, 38,235, 14, 0,110,167,243, 55,147,209,120,112, 4,176,201,147,125, -247,244,249,185,215,237,255,105,156, 78, 87, 72,202,158, 25,176, 57,129,246,143,205, 9,105, 51,118,237,119, 0, 96,207, 61, 23, -106,188,178,189, 11, 0,104, 26, 13, 61,161, 12,107,159, 3, 0,210,244,172,144,164, 29,239,194,230, 4,154, 15,157, 25, 82, 93, -230,248, 15,126, 12,124,107,194, 72, 37, 0,236,221,252, 69,147, 3, 91,190, 26, 2, 0, 15,140,124,105,215,160,199, 94, 73, 2, -128,121,203,183, 4,126, 63,231,137, 42, 51, 61,123,111,234,229,250, 43, 59, 26,219,139,179,252, 34, 53,210,176, 43, 87,174, 8, - 0, 16, 17, 17,225,209,123,179, 46,224,155, 5,188, 44, 72, 36,189, 26, 53,110,220, 30, 0,191,150,156, 28,231,118,185,142,133, - 3, 75,107,249,181,244, 42,231,124, 88,249, 27, 24, 99,127, 50,146, 16, 66,254,251, 42, 44,176, 0,192,100, 3, 14, 95, 5,250, -116,109,131, 9, 99, 31,210,150,255,221,166,101, 51,163,174,156,218,214,236,155,181, 11,132, 54,109,218, 32, 37, 37,197,163, 7, - 51,219,129, 67, 87, 0, 20, 93,246,214,105, 52,201,139, 62,253,212,103,224,192,129,210,136,136, 8, 48,198,144,157,157,221,117, -223,190,125, 29,167, 76,153, 50, 9, 69,151,117,102, 59, 12,135,174, 84,159, 91,214,214,150, 77,234,225,189, 87,158,240, 5,128, -233, 79, 47,237,120, 42, 49, 39, 32, 57, 57,185,255,219,111,191, 93, 32, 57,120,240,171, 32, 96,117, 14,112,195,147,118,174,251, -249,132,151,111,214,134,134,227, 94,121,101,115,227,198,141,181,209,209,209,204,219,219, 27, 18,137, 4, 58,157, 46,234,194,133, - 11, 67, 78,158, 60,105,218,119,120,133,226,244,201, 71,174,229,122,117,177,122,180,239,150, 76,175,189,222,222, 23,159, 26, 49, -162,238, 19, 79, 60,225,213,168, 81, 35, 0, 64,114,114,114,204,166, 77,155,198,108,222,188,249, 3, 88, 50, 93,102, 59,172,213, -237,251,173, 76, 0, 94, 64,119,191,144,144,113, 18,153,172,165,203,229,170, 3, 0, 82,169,244,166,219,233,188, 88,148,155,251, -237,157,219,147,187,217,156,192,229, 44, 96, 64,175,246,120,106,228, 0, 13, 0,188, 61,250,227,174,233,169, 87,229,118,187, 29, - 77,154, 54,239, 49,107,206,194, 61, 16, 4,172,223,178,239,214,246,158,100,198, 95, 78,193,140, 89,139,144,121,126, 83, 87,183, -254,106, 63, 67,177, 94, 2, 0, 62,190,190, 35, 55,253,176,225, 96, 68,235, 81,191, 95,205,119,120,148, 89,213,123,115,247, 15, -159,135,103, 92, 56,216,226,203,189,171,100, 81, 81, 81, 56,127,254,188, 71,251,126,235,181,161, 79,244, 22,195,195, 47, 45,120, -243,205,176,222,189,123, 67,171,213, 66, 42,149,194,229,114, 13, 56,118,236,216,128, 25, 51,102,188, 4,125,162,201,211,247,166, - 7, 22, 48,198,250,141,159,240,106,248, 67,143,142,194,200, 7,123,212, 74, 40, 33,132,252,183, 85, 88, 96, 73,165,210,220,129, -207,204, 14,233,213,165, 21, 78,157, 75,210,167, 93,207, 50,150,253,174,240,226,166, 38,143,246,168,211,226,200,145,195,176,217, -108,248,237,183,223,112,238,220, 57,164,166,166, 98,226,196,137, 54, 41,240, 98, 37,153,186,222, 99,102,250, 67,127, 69, 27,163, - 72,172,191, 47, 33, 65, 98,181, 90,113,228,200, 17,232,116, 58, 40, 20, 10,212,173, 91, 23,131, 6, 13,146, 38, 36, 36, 4,244, - 31,248,160,111,239, 7,159, 76,129,111,140, 81, 42,149,234, 42,221, 1,169, 52,183,255,211, 31,133,180,136,169,135,228,180, 76, -253,123,115,190, 49,138, 34,151, 94, 75, 77,119, 28, 62,124, 24,237,219,183,199,175,191,254, 26, 88, 88, 88,248,254,210,165, 75, -223,147,125,242,229, 98,167,189, 96,106, 21,121,186,222, 99,102,250, 7,230,110,140, 62,176,251, 39,249,197,139, 23,229, 95,127, -253, 53, 10, 10, 10,160, 80, 40,224,231,231,135,176,176, 48, 52,105,210,132, 77,159, 62, 93, 59,116,232, 69,252,235,197, 81,209, -142,134, 47, 36, 86,214,206, 91,251,110, 76, 87, 7, 21,239,109,180,229,151, 95,132,158, 61,123,222,246, 53,189, 65,131, 6, 24, - 60,120,176,215,184,113,227, 26, 61, 49,102,172,216,251,225,241,201,208, 70,155,171,205, 52,221, 80, 5,154, 99, 35, 6,140, 25, -179,125,230,204,153,126, 97, 97, 97,208,104, 52, 0, 0,189, 94, 95, 55, 45, 45,173,235, 7, 31,124,240,216,137,248, 31,164,189, -135,222,200,132, 38,210, 82,213,243,249, 79, 37,147, 73,115,203,122,141,188, 53, 42,221,141,140, 28, 19, 0,216,237,118,216,237, -118,216,108, 54, 76,126,105,162,228,197,199, 58, 55,142,238,245,234,217,212,155, 57,133,205,247,253, 30, 80,118,223,234, 50,165, -230,212,162,162,235,251, 95,156,241,230,155, 97,161,161,127,140,252,173, 95,183, 78, 82, 88, 88, 56, 96,198,140, 25, 45,184,186, -111, 81,243,161, 51,253,170,202,172,234,189, 89,148,244, 75,253, 89,175, 12,110,187,108,206, 14,184,221,110,196,198,198,226,200, -145, 35, 88,184,112, 33,223,181,107,151,222, 71,163,169,230,189,153,232,221, 51, 60,187,225, 39,159,108,102, 74,165, 18,219,182, -109, 67, 66, 66, 2, 4, 65, 64,155, 54,109,240,212, 83, 79, 97,192,128, 1, 97, 19, 38, 76,228,189, 31, 28,125, 13,190, 77, 13, -127,230,181,196, 24, 19, 0,188,250,206,140, 79,194,159,126,225,101,204,155, 53,157, 10, 44, 66,200,253,163,116, 53, 0, 47,189, -244,225,156,131, 3, 66,131,225,203,190,223,120, 90,252,165,193,240,101,223,115, 64,224,128,224, 3,212,107,215,174,157,179,168, -168,136,159, 60,121,146, 79,158, 60,217,180,120,241,226,131,191,252,242,203, 38,151,195,177, 50, 34, 60,124, 62, 7,132, 10,103, -212, 3, 66, 52,224,171, 86,171,243,174, 95,191,206,119,238,220,201, 63,252,240, 67,254,237,183,223,242, 93,187,118,241,125,251, -246,241, 93,187,118,241,239,191,255,158,199,199,199,243,164,164, 36,174,209,104,242,162, 1,223, 42, 50, 37, 28,144, 52, 25,254, -245,212,205,167,156, 51,155, 14, 95, 54,133, 3, 18,127,160, 89,187,118,237,220,155, 54,109,226,235,215,175,231,107,215,174,229, -241,241,241, 60, 63, 63,159, 75,149,154,188,178,251, 85,214, 78, 14, 8,117,234,212,201, 43, 42, 42,226,145,145,145, 92,161, 80, -240,208,208, 80,222,164, 73, 19,222,181,107, 87, 62,100,200, 16, 62,118,236, 88,254,254,251,239,243,162,162, 34,238,229,229,149, - 83,118,191,202, 50,219, 3, 42,141, 70,115,253,204,153, 51,188, 50, 22,139,133,231,231,231,243, 61,123,246,112,141, 70,115,189, - 61,160,170, 42, 83, 5,116,104,221,186,117, 94,126,126, 62,119, 56, 28,252,250,245,235,252,194,133, 11, 60, 33, 33,129, 95,191, -126,157, 91, 44,150, 91,217, 73, 73, 73,188, 97,195,134,121, 42,160, 67,165,153,255,228, 75,217,107,226,142, 75, 84,104,232,144, -176,176, 48,203,230,205,155,249,205,155, 55,249,154, 53,107,184, 0,124,124,215,182, 85,100, 42,128, 65, 61,123,246,116,199,198, -198,242,179,103,207,242,105,211,166,241,193,131, 7,243, 7, 31,124,144,207,152, 49,131,103,100,100,240,140,140, 12, 62,100,200, - 16,183, 2, 24, 84,221,235,179,162,247,166, 47, 16, 53,116,232, 80,139,195,225,224,215,174, 93,227, 45, 91,182,204,144, 0,227, - 52, 64,139, 62,128,178,186,215,103, 29,192, 63, 60, 60, 60, 43, 54, 54,150,111,217,178,133, 71, 71, 71,231, 73,128,241, 62, 64, - 3, 31,160,129, 4, 24,223,160, 65,131,188,216,216, 88, 94, 80, 80,192,163,162,162,178,234, 0,254,247,250, 90, 66,201, 49,248, - 86,189, 51,227, 19,158,152, 97,226,239,204,248,132, 3,184,206, 75,126,249,235,127,253,245, 64, 23,186,208,229,255,253,114, 87, - 45,242, 55,191, 72,203, 21, 90,140, 49,198, 81,114,108,172, 10, 89, 36,146,217,243,230,205,147, 90,173, 86,124,243,205, 55,134, - 39, 71,143,222,226,231,231,231,146,201,100, 96, 66,245, 11, 18,243,148,202,215, 62,157, 55,207,207,110,183,227,244,233,211,232, -216,177, 35,148, 74, 37,228,114, 57,100, 50, 25,100, 50, 25,194,195,195,145,155,155,139,150, 45, 91,226,173,183,222,242,157, 59, -123,246,107,176,217,102, 85,149, 43,138, 92, 10, 0,110, 81, 84,200,129, 9,109, 59,117,154, 63,125,250,116,193,199,199, 7, 86, -171, 21, 54,155, 13, 9, 9, 9, 8, 12, 12,132, 90,165,150,194,102,170,182,173,130, 32, 8, 90,173, 22, 7, 14, 28,192,242,229, -203,145,154,154,138,172,172, 44,120,123,123,163,101,203,150,104,222,188, 57,250,244,233,131,107,215,174,129,121, 48,105,228,146, - 84,250,242,228, 23, 95, 12,105,223,190,125,133,191,183, 90,173, 40, 42, 42,130, 94,175, 71,221,186,117, 49,106,212,168,144, 13, -235,215,191, 12,151,107, 65, 69,219, 7, 2, 97,117, 99, 98,182,159, 60,121, 50,136,115,142,245,235,215,195,104, 52,194,110,183, - 67, 16, 4,120,121,121,193,223,223, 31, 15, 60,240, 0,130,131,131, 17, 19, 19,131, 31,127,252, 49,104,200,144, 33, 59, 2,115, -115, 59, 20, 0,153,213, 62, 9, 4,233, 57, 57,123, 7, 1, 65,227,198,142,221,117, 46, 62,190,215,184,113,227,144,147,147, 51, - 93, 54,109, 90,145, 19, 88, 84,221,253,155, 2,190, 1,225,225,171, 63,249,228, 19, 33, 59, 59, 27,111,188,241, 70,126,102,122, -250, 52, 95,224, 40, 0,236,223,189,187,215,183,223,126, 59,119,253,250,245, 65,235,214,173, 19,218,183,111,191,186,233,245,235, - 45, 19, 1,125, 77,218,105, 0, 94,253,236,179,207,188,172, 86, 43, 6, 14, 28,120,205, 43, 53,181,173, 11,176,120,122,255, 44, -224,229,133,111,189, 21,166, 84, 42,241,198, 27,111,228,155,211,211, 91,185,128,188,114,155,164, 5,167,164,236,126,250,233,167, - 47,196,199,199, 7, 45, 90,180, 40,236,177, 17, 35, 94, 6,240,177,167,143,113,199,132,246,152,241, 19, 94, 13,109,223,185, 27, -214,173, 92,138, 57, 51,223, 94, 13, 96, 25, 99,236, 21, 0,159,122,154, 73, 8,185,191,120, 82,139,252, 93,220, 42,176, 74,119, -168,111, 85, 27,251, 7, 6,118,108,213,170, 21,142, 28, 57,130,214,173, 91,159,244,243,243,115,201,149, 74,200,100, 50,112, 81, -172,246,193, 84, 26, 77,255, 1, 3, 6, 72,127,255,253,119, 52,108,216, 16, 42,149,234, 86, 97, 85,118,145,203,229, 8, 15, 15, - 71,113,113, 49,250,247,239, 47, 91,178,100, 73,255,234, 10, 44, 0, 72,191,114, 65,155,247,251, 39, 99, 87,172, 89,221,160,119, -239,222,208,235,139, 33,138, 34,212,106, 53,236,118, 59,164, 82,105,201, 80,143,147, 23,123,242,196,184,221,110,183, 68, 34, 65, -195,134, 13, 49,123,246,108, 88,173, 86,200,229,114, 0, 64,113,113, 49,138,138,138,112,225,194, 5,164,165,165,129,151,150,222, - 85,241,246,245,125,232,137, 39,158, 80, 84,244, 59,155,205, 6,189, 94, 15,189, 94,143,162,162, 34, 88,173, 86,116,235,214, 77, -241,203,142, 29, 15,161,160,160,194, 2,203,230,229,245,216,186,117,235, 66, 20, 10, 5, 44, 22, 11, 12, 6, 3,110,220,184,129, -244,244,116,107,110,110,174,203,219,219, 91,136,142,142, 22,148, 74,165,114,248,240,225,172,184,184, 24,140, 49, 12, 29, 58, 52, -240,187,245,235,159, 0, 80,229,138, 54,242,135,189,128,173,131,221, 62,172, 75,231,206, 7, 78,158, 58,213,254,181,215, 94, 67, -124,124,252, 39,234, 31,126, 56,108, 6,206, 85,117,223,107,192,203,243,203, 21, 46, 60, 61,189,181,227,142,194, 37,186,164,112, - 57, 95, 86,184, 60, 94,195,194, 5, 0,188,125,125, 59,133,135,135, 99,215,174, 93,184,158,154,250,118, 77,138, 43, 0, 16, 36, -146,158,189,123,247,198,182,109,219,144,145,158,254,246, 29,197, 21, 0, 32, 15,200,147, 94,187,246,246,234,213,171, 87, 61,247, -220,115,144, 72,165, 61,225,114,213,228, 97,238,154,208,254,220,196,215,176,122,249,146,213, 0, 94,224,156,139, 0, 78,214, 36, -144, 16,114,127,241,164, 22,249,187,184,213,237,196, 57,103, 0, 14, 85,181,113, 72, 72, 72, 29,173, 86,139,204,204, 76, 52,111, -214, 44, 87,169, 84, 66, 33,147,193, 75, 81, 97,221,112, 23,179,217,220, 58, 34, 34, 2,122,189, 30, 65, 65, 65,144,203,229,183, - 46, 10,133,226,214,207,222,222,222, 16, 4, 1, 81, 81, 81, 48,155,205,173,171,205,205,185, 16,242,195,146,151, 38,199, 30,222, -213, 96,196,136,145,240,247, 15, 64,100,100, 93,132,132,132, 64,165, 82, 33, 50, 50, 18,141, 26, 53,226, 11, 22, 44,128, 58,164, -141, 71, 31,224,229,139, 38,169, 84, 10,183,219,141,156,156, 28, 36, 38, 38, 34, 62, 62, 30,177,177,177, 56,123,246, 44, 12, 6, - 3, 60,168,175, 96,182, 88,218, 74,165,119, 79,121,179,217,108, 40, 42, 42,186,213,123, 85, 84, 84,132,188,188, 60,164,165,165, -193,104, 50,181,171, 44,207, 63, 48,112,100,171, 86,173, 36, 0,160, 82,169,208,174, 93, 59, 44, 91,182,204,245,243, 79, 63,141, -110, 17, 27, 27, 16,185,103,143,223,138,175,191, 30, 61,106,212, 40,247,239,191,255,142,226,226, 98, 92,190,124, 25,193,193,193, - 82,133,151,215, 19,158, 60, 7,228, 15,103, 0, 83,144,193,240, 96,247,238,221, 83,244,122, 61, 62,253,244, 83, 65,230,237,189, -124, 38, 32,169,242,142, 18, 73,143,222,189,123, 99,251,246,237,200, 76, 79,159,150, 94, 65,225,146, 14,228, 93,191,118,109,218, -234,213,171, 49,104,208, 32, 48,169,180,198, 19,145,186,118,237,218, 74, 20, 69,156, 63,127, 30,126,192,137,154,222,191, 81,227, -198,237,181, 90, 45, 18, 18, 18,160, 41,237, 93,171,136, 6, 56, 26, 23, 23, 7,149, 74,133,230, 45, 90,116,168,225,195, 44, 96, -140,101, 61, 55,241, 53,108,217,125, 28, 0,176,122,249,146, 28,252, 81, 92, 17, 66,254,225, 60,169, 69,254, 46,106,116,160,209, -178, 66, 66, 38,147, 65,161, 84, 66,161, 80,148, 20, 70, 74,165,199, 25,140, 49,120,121,121,221, 42,168,202, 23, 86,229,127, 86, -171,213, 30, 21, 46, 0,160,187,186,187,215, 11,207, 63,167, 80, 42,149,176,219,109,224,156, 67,169,244,130,159,159, 31, 26, 54, -108,136,226,226, 98,116,239,209,199,118,163, 72,190, 35,176,249,240,248,154,236,115, 25,151,203, 5,147,201, 4,157, 78,135,194, -194, 66, 20, 23, 23,195, 98,177,120,188,164, 92, 20, 69,201,141, 27, 55,176, 97,195, 6, 20, 20, 20, 0, 40,153, 64, 93, 86, 84, -149,253,155,146,146,130,245,235,215, 35, 53, 53, 21,168,193,255, 79,175, 94,189,176, 99,199, 14, 73,223,254,253, 87,254, 26, 29, -157,249,107,116,116,102,223,254,253, 87,110,223,190, 93, 82,167, 78, 29,164,165,165,225,244,233,211,208,233,116,101, 47, 96, 82, - 67,201,128,206, 92, 88,248,220,244,233,211,185, 86,171,197,167,243,231,183,253, 24,120,178,170,251,148, 47, 92,124,171, 40, 92, -124,255, 92,225, 2,206, 57, 68, 81,132,219,237,209,209, 72,238,194, 24, 99, 50,153,172,166,135, 72,240,120,227,242, 19,218,223, -122,127, 54,118,110,219, 84,246,171, 43, 84, 92, 17, 66,238, 71, 82,224, 86,197, 88,237, 31,222,156,156,156,155, 38,147,169, 65, -116,116, 52, 50, 50, 50, 66,162,162,162,210, 21, 50, 25,228, 10,133, 71,115,176,212,106,245,249,204,204,204, 30,117,234,212,129, -203,229,186, 85, 76,221, 57, 68, 8,148,244,202,156, 61,123, 22,106,181,250, 60,172, 85, 30, 1, 1,110,187,174, 94,135, 14, 29, -110,245, 4,249,249,249,193,207,207, 23, 74,165, 23,222,125,247, 93,113,209,130, 5, 75,163, 30,152,169,127,118,202,116, 62,253, -227,149, 30, 62, 53,158,241,244, 15,146, 90,173, 62, 31, 25, 25,217,205,215,215, 23, 91,182,108, 65, 90, 90, 26,116, 58, 29,204, -102, 51,108, 54, 27,204,102, 51,236,118, 59,188,188,188,208,162, 69, 11,248,248,248, 96,223,190,125,231, 97,179, 85,152,167, 43, - 40,216,114,254,252,249,110,157, 59,119,190,213,131,210,175, 95, 63,214,175, 95,191,160,178,235,102,179, 25,249,249,249, 56,121, -242, 36,246,237,219, 7,198, 24,174, 92,185,226,182, 89, 44,223,255,217,253,254,167,178, 2,191, 73, 86,175, 94, 53,105,210,164, -231,123,244,232, 1, 55, 48, 4,192,250,202,182,255,171, 11,151, 50,177,177,177, 23,220,110,119,143, 38, 77,154,160, 8,232, 2, - 96, 91, 77,238,159,124,245,106,156,203,229,234,223,182,109, 91,108,217,184,177, 23,128,180,138,182, 51, 1,189,218,183,111, 15, -139,197,130,203,151, 46,157,241, 36,187,180,184, 90,249,206,140, 79,198, 63,253,194,203, 88,183,114, 41, 86, 47, 95,114, 99,213, -178,197,145, 0, 28, 53,105, 39, 33,228,254,229,105, 45,242,119, 81,163, 30, 44,189, 78,119, 38, 46, 46, 14, 29, 58,116, 64,114, -114,114,103, 46,138, 82,185, 66, 1,133, 92, 14,193,131, 63, 32, 22,147,105,255,254,253,251, 93,237,218,181,131,209,104,132, 84, - 42,189,173,247, 74,161, 80, 64, 38,147, 65, 42,149, 66,173, 86, 99,235,214,173, 14,139,201,180,191,186, 92,209, 45,186, 5, 65, -184,245, 71,172,168,168, 8,102,179, 5,179,103,207,198,231, 11, 22,140,117, 3, 83,100,154,224, 26,205, 73,169,109, 86,179,249, -192,206,157, 59,157, 13, 26, 52,192,248,241,227, 49,101,202, 20, 76,153, 50, 5,147, 38, 77,194,248,241,227,241,212, 83, 79, 97, -196,136, 17,232,210,165, 11,130,131,131,145,152,152,232,180,154,205, 7, 42,203, 83, 90,173,155,159,121,230,153,220,178,194,204, -100, 50,193, 96, 48, 64,175,215, 35, 47, 47, 15,199,143, 31,199,186,117,235,176, 96,193, 2,108,221,186, 21, 54,155, 13, 14,135, - 3,103,207,158,213,105,156,206,141,255,159,251,126,191,145, 1, 91,142, 29, 59,134,128,128, 0, 68,212,173,219,167,170,109, 75, - 11, 23,180,109,219, 22,122,160, 87,101,219,233,239,161,112, 41,207,100, 48,156, 74, 73, 73, 65,223,190,125, 17, 94,183,238, 39, - 45, 0, 85, 77,238,239,118,185,142, 30, 59,118, 12, 79, 63,253, 52,162, 27, 52,248, 36, 24, 8,190,115,155, 96, 32,184,126,163, - 70,159,140, 31, 63, 30,123,247,238,133,219,229,170,180, 71,142, 49,214,145, 49,182,157, 49,118, 24, 64,218,248, 9,175,142,191, - 99, 66,251,227,140,177,111, 1, 84,122,200, 20, 66, 8,249, 59,171, 81,129,165,114,187,223,153, 58,117,170, 83, 16, 4,140, 28, - 57,210,123,219,246,237,163,206,158, 59,215, 48, 55, 55,215,207,237,118, 87,155, 21,108,179, 45,158, 58,117,106,145,221,110, 71, -211,166, 77, 81, 88, 88, 8,183,219, 13,169, 84, 10,169, 84, 10,198, 24, 4, 65,128, 86,171, 69, 92, 92, 28, 86,173, 90, 85, 28, -108,179, 45,174, 46,215,237,118,159, 95,191,126, 61, 36, 18, 9,247,242,242, 2, 99, 12, 82,169, 20,139, 22, 45,202,253, 28,216, - 2, 0, 18, 65,176, 3,128, 32, 48, 79,103,229, 86, 59, 62,169, 80, 40, 32,150, 76,238,175,118, 91,127,155,237,179,121,243,230, - 25, 46, 95,190, 12,147,201,116,171,183,205,104, 52,222,154, 52, 95, 84, 84, 4,198, 24, 76, 38, 19,182,111,223,110,240,183,217, - 62,171, 44,175, 0,200,206,184,114,229,145,206,157, 59, 23,164,164,164, 64,175,215,227,252,249,243,216,183,111, 31,126,252,241, - 71,236,221,251,127,236, 93,119, 84, 84,215,215,221,119, 58, 83,232,189,139, 20, 65, 4, 21,177,119, 81,177,119,141, 70, 99, 18, - 99, 52,137,137,177, 36,209,104,108,137,198,152,166,166,153,104, 18,107,130, 93, 36,118, 69,137, 26, 43,168,128, 10,138, 32, 34, - 48, 67,155,222,203,253,254,128,225,135, 74, 25, 82,190,196,100,246, 90,179, 24,102,238,219,239,220,247,238,188,183,223,185,231, -158,115, 12,119,238,220,129,201,100,130,191,191, 63, 40,165,216,191,127,191,204,164, 80, 12,174, 0, 74,109, 60, 6,255, 73,180, -240,241, 73,240,246,242, 42,244,244,240, 40,106,225,227,147,240,248,247,206, 64, 78, 78, 78, 14, 76, 38, 19, 66, 67, 67,221, 26, -139,195,162, 38,211, 89,171,112, 9,108,217,114,117,112, 61,194, 37, 24,240, 12, 14, 11, 91,109, 21, 46,212,100, 58,219, 92,155, - 29,129,245,111,189,245,150,134,195,225, 32, 41, 41, 41,212, 24, 30,126,139, 5, 76, 18, 1, 81,125, 0, 78, 83,219,251, 2, 95, -189,247,222,123,165,132, 16,108,223,190,221,195, 57, 44, 44,147, 5, 76,117, 6, 90, 56, 3, 45, 88,192, 84,231,176,176,204,164, -164, 36, 15,147,201,132, 57,115,230,148,250, 2, 95, 53, 66,249, 6,165,116, 56,165,180, 23,165, 52,240,135,111,215,225,208,129, -221, 86,113,245, 18,165,244, 18,165,116, 10,165, 52,179,185,125,181,195, 14, 59,236,120, 26, 64,234,139,115, 98,119, 94, 41, 6, -168, 87,239, 46,109,113,249,218,109,153,135,171,211, 81,235,119,149, 89,187, 91,245,139,117,106,251,245,215, 95,131,205,102,227, -193,131, 7,200,206,206,134,147,147, 19,158,125,246, 89,157, 70,161, 24, 97,173, 69, 72, 8,233, 79, 41, 61, 81,195, 89, 93,239, - 76,150, 43, 10, 99, 93,111,121,228, 80, 10,211,217,217, 25, 74,165,178, 54,173,128, 64, 32, 0,159,207,199,149, 43, 87, 48,116, -248, 72,115,153,160, 87,109,162, 81,107,189,179,186,156, 32,132, 9, 0,157, 1, 65, 58, 48,207,203,207,111,254,226,197,139,249, -137,137,137,224,112, 56, 8,104, 17, 81, 26, 58,232,227,245, 12, 6, 49, 21, 85,200, 23,133,181,240,115,206,206, 45, 0, 64,170, -107, 22,214,212, 34,172,207,206, 32,253,153,208,125, 91, 62,117,106,223,190, 58,206, 92, 42,149, 66, 44, 22, 67, 34,145, 64, 42, -149, 66,165,170, 78,245,144,146,146,130, 67,105,183,228,154,128,113,121, 13,217,249,191,190,223,118,244, 51, 92, 12,217,177,109, - 11,211,211,211, 19, 98,177, 24,101,101,101,144, 74,165,208,104, 52, 48,155,205,168,172,172,196,247, 63,110, 49, 87,136,122,229, - 91, 19, 57, 54,202,169,122,192,119, 83,158,243,143,139, 14,166,211,166, 77,115,116,114,114,130,197, 98, 65, 85, 85, 21, 10, 11, - 11,113,239,222, 61,164,165,165,169, 36, 82, 61, 84, 30, 3,138,172,137, 70,235, 61,158,127,214,160,122, 26, 57,107,198, 18, 0, -248,249,250, 22,223,191,127,223,203,108, 54,195,223,223,223, 36,173,172, 92,205, 5,142, 57, 2, 37, 0,104, 57,176,120,237,250, -245, 47,142, 28, 57, 18, 29, 59,118,124, 80, 42, 22,135,212, 55,150, 64, 8, 51, 18,112, 86, 7, 4,100, 93,186,116,201,167,176, -176, 16,207, 61,247, 92,249,253,187,119,107,211, 52,200,128,158,193, 97, 97,171,147,146,146, 60, 90,182,108,137,216,216,216, 82, - 7,107,154,134,250,199,103,131,191, 77,105,206, 47, 33,175,140,142,233,248,234,171,175,194,100, 50, 33, 45, 45, 13, 23, 47, 94, -196,253,251,247,113,238,220, 57,169,147, 80,248,140,181, 22, 97, 67,227,115,112,132, 42,116,251,246,109,132,195,225,224,199, 31, -127, 68,122,122, 58, 0, 32, 46, 46, 14, 47,188,240, 2, 76, 38, 19, 38, 79,158, 66,127,185,205,207,107,108,124, 18, 66, 98, 0, -124,130,106,113,215,145, 82,234, 64, 8, 41, 6, 16,216,156,152,171,167,114, 44,217, 57,237,156,118, 78, 59, 96, 67, 45,194, 15, -190,129,243,163,229, 56,166, 23,239,254,118, 57,171, 71,207, 94, 81,203,151, 45,101,116,234,212, 9,129,129,129,136,139,139, 67, - 97, 97, 33,207,197,197,165,169,122,103,202, 94,131, 38,221,107,219,182,173,203,130, 5, 11,156, 7, 14, 28,200, 14, 12, 12, 4, -165, 20,233,233,233,216,187,119,175, 97,211,166, 77,114,181,247,112,233,213,212,159,148,182,212, 59,187, 8,168, 1,172, 8, 40, - 46,254,238,181, 87, 94, 89,218,190, 67,135,105,203,150, 45, 99,136, 4,124,246,170, 69, 47, 57, 0,192, 7, 95,238,116, 30, 57, -238, 89,172, 13, 7,122, 79,170,191,206, 91, 93, 59, 11,139,166,223, 31, 50, 58, 33,124,222,172, 23,205, 19, 38, 76, 16, 58, 57, - 57, 33, 48, 48, 16,174,174,174,200,203,203, 67, 81, 81, 17, 61,120,240,160,242,183,140, 28,246,254, 99,151,239, 59, 56,251,218, - 82, 55, 80,209, 43,113,124,254,144, 33, 67, 92,167, 78,157,234, 24, 31, 31,207,230,241,120,224,241,120, 16,139,197,184,115,231, -142,225,224,193,131, 74,181,215,224,170,171,169, 73, 10, 27,107, 17,106,122, 77, 92,126,231,215,227,203,230,100,221,184, 49,197, - 2,180, 51, 24, 12,254,102,179,153, 48, 24,140, 18,139,197,114,195,160, 80,252,160,139, 91,246,185,189, 22,161,109, 48,155,205, - 28,179,217, 12,169, 84,138,227,199,143,179,238,222,189,187,248,218,181,107,139,139,139,139, 97, 52, 26, 49,118,236, 88,196,197, -197, 33, 53, 53, 21,101, 98,241,193,198,184,110, 3, 50, 94, 81,209, 11,211,167, 79, 63,188,109,219, 54,198,181,107,215, 60,126, -252,241,199,239,235, 19, 46, 83,166, 76,177,136, 11, 11, 95,208, 53,146, 3,171,137,223,102,249,145,164, 47,174,141, 26, 51, 46, -122,217,146,197,236,110,221,186,193,195,195, 3, 61,123,246,132,193, 96,112,105,221,186,117, 83,191, 77, 69,175, 65,207,228,181, -107,215, 78,248,249,231,159,251,188,248,226,139,152, 53,107, 22, 0, 64,163,209,224,216,177, 99,152, 51,103, 78,105, 33,171,179, -170,169,241, 89,227,153,178, 10,175, 51, 0,122, 1,200,179, 7,180,219, 97,135, 29,255, 21, 52, 89,139,240,215,139,153,168, 91, -142,163, 26,190,217,166,160,169,119,103,204, 95, 29,203, 52,202, 93,217, 68,235,148,155,147, 67,154,170, 73, 88, 91,239,204, 57, - 66,233,126,239,231, 78,171, 62,248, 96,246,218,181,107, 19,172,169, 24, 4, 2,193, 13,141, 74,117,210, 83,167, 91,167,118,142, - 56,217,220,218,121, 69,128, 24,192, 43,174, 87,175,174, 31, 54,114,236, 26, 7,183, 80,246,187, 43, 55,105,153, 12,134,254, 78, -113, 25,214,134, 3, 66, 27, 22, 60,170,245, 64,150,212,215, 36,118, 31,119,251,189,183,222,154,247,193,138, 21,157, 68, 34, 81, -111,131,201, 20, 97,177, 88, 0,139, 37, 87,173, 82,157,161, 6,195, 37, 93,220,146, 79, 29,156,125,169,205,117, 3, 93, 90, 43, -220,242,119,119,218,252,195, 15,111,236,218,181,235,137,190,187,235,116,235,213, 46,173, 79,216,210,247,186,109,180,192,121, 72, - 36,231, 27,106, 75, 96,175, 69,104, 43, 88, 22,203,203,174,174,174, 91, 19, 18, 18, 28,250,247,239,143,161, 67,135,162, 91,183, -110,176, 88, 44,160,148, 66,161, 80, 96,231,206,157, 88,179,102, 77,110, 8,176,162, 41, 62, 29,112,146,119,232,208,224,118,237, -218,253,216,152,112,169, 17, 87, 77,198, 28, 54,254,219,228,229,154,156, 71, 20, 76,124,109, 85,184, 94, 94,226,226, 46, 48,249, -100,101,222, 96,216,254,219,140, 84,152,211,119,118, 30, 59,122,244,107, 76, 22,171,103,205,138, 70,122, 51, 59,251,170,181,216, - 51,226, 94, 56,222,204,177,100,205, 61,103, 15,104,183,195, 14, 59,254, 51,104,176, 22,161,213,203,195, 98,177, 36,121,251,103, - 60,219, 24, 9, 27, 72,168,241, 92,161,201, 90,132, 53,239, 11, 0, 5,116,186,247, 31, 73, 34, 90,103,181, 32,251,177,246,205, -233, 84, 21,112, 27, 38,221, 48, 72,178,129,228, 87,170,249, 58,125,240, 78,221, 62, 53,180,237,163,118,114, 42,181,192,175, 80, - 42,127,133, 82, 89,111,118,105, 54,139, 83,217,148,157,143,247,189, 16,144,255,209,190, 63,206,217,224,193,248,157,237,255,203, -120, 88, 94,190, 31,128, 40, 32, 37,197,251, 72, 74,202,132,121,115,231,142,245,245,243, 11,243,240,240,112,117,116,116,100, 92, -184,112,225,158, 73,171, 93,223, 30,216, 92,227, 61,109, 18, 58,224,100,100, 97, 97,155,241,163, 71,191, 70, 88,172, 30,117,133, - 11, 53,153,206,133, 2, 95, 53,230,185,178,162,185,191,205, 64,158,111, 66,141,231, 10, 76, 27,127,155, 69,213,118,172,132,201, -180, 18,215,159,204,106,242, 59,126,155, 31, 16, 66, 20,176,103,104,183,195, 14, 59,254, 75,248, 43,235,240, 0,232,111,231,180, -115,254, 91, 56, 81, 29,204,238,244, 79,183,211,206,105,231,180,115,218, 57,159, 70,206,127,219,171,193, 41, 66, 59,236,176,227, - 81,208,234,160,115,155, 74, 45,217, 97,135, 29,118,216,241,223, 6, 1,208,191,190, 47,104, 51, 86, 7, 16, 66,234,179,190,216, -255, 0, 0, 32, 0, 73, 68, 65, 84,229,104, 12, 77,241,219, 57,237,156,118, 78, 59,167,157,211,206,105,231,252,247,113, 54,197, -221, 28,253,241,143,198, 95,233, 30,195, 83,226,150,180,115,218, 57,237,156,118, 78, 59,167,157,211,206,249,247,114,254,219, 94, -205, 74, 52,106,135, 29,118,216,241,111,197,242,229,132, 1, 16, 2, 44,103, 0,187,153,192,120,102,245,255,191, 31,227,199,147, -122,147,208,190,241, 6,113,252, 35,188,118,216, 97,199, 63, 31,246, 24,172,191, 17,132,144, 32, 31, 31,159,111, 1,144,210,210, -210,151, 41,165,133,127,183, 77,118, 60, 9,119,119,247, 4,147,201, 4,153, 76,214,100, 10,133,167, 17,109,194,201,104,202, 64, -235,218, 15, 40, 10,179,115,233,214,250,218, 70, 71,144,231, 64,254,151, 75,139, 88,112, 51,235, 14,221,103,235,190, 8, 33,140, - 81,131, 61, 63, 1,128,253,135,203,230,211,191, 32, 47, 22, 33,164,149,167,167,231, 81, 22,139,197, 50,155,205,175,136,197,226, -148,134,218,142, 31, 63,158, 9, 0,158,252,189, 11, 93,220, 60, 22,188, 55,143,176,245,186,143,165, 58,173, 86,198, 96,177,242, -185, 28,193, 89, 19, 67,120,184, 72, 60, 56,187,190,237,119,237,218,213, 96,117,237,152, 8, 50, 56, 42, 58,122,120,135, 88,126, -222, 39,235, 58,173,237, 29,234,193,190,247, 32, 67,244,205,214,194,111, 61, 93,253,135,207,126,137,149,194,163,230, 41, 31,125, - 79,149, 13,113,216,241, 36, 62, 36,196,205, 0,196,178,121,188, 64,179,201,228, 77, 0,202,100,177,196, 70,157,238, 1, 7,184, -190,128, 82,233,191,157,147,195,227, 5,152, 77, 38,111, 0,248, 39,218,105, 71, 53, 26, 20, 88,142,142,142, 87, 24, 12, 70, 64, -221, 34,181,140,154,130,206,214,207,234,126, 71, 8,129,217,108, 46,170,172,172,140,183,117,231,132, 16, 39, 0, 19, 0, 88,151, -154,239, 0,176,147, 82,250,187, 2,137, 9, 33, 78, 28, 14,103,190, 80, 40,236,167,209,104,218, 0, 0,159,207,207, 82,169, 84, -167, 12, 6,195, 39,191,135,151, 16,194, 2, 48, 94, 36, 18,245,101, 48, 24,125, 41,165,132, 82,154,170, 84, 42, 79, 1,216, 69, - 41,181,181,244, 78, 93, 78,190,151,151,215,202,168,168,168, 73, 11, 23, 46,172,112,119,119,143,156, 51,103,206,101, 79, 79,207, -159,202,203,203, 23, 81, 74,255,214,186,137, 86, 16, 66,194,124,124,124,118,176,217,108,230,131, 7, 15,250, 2, 64, 96, 96, 96, -170, 94,175, 55, 75, 36,146,103, 41,165,119,155,201, 39, 4,208, 69, 36, 18,197,139, 68,162, 94,102,179,185,181,197, 98,129,197, - 98,185,169, 84, 42,211, 12, 6,195, 21, 0, 23, 40,165,170,191,162, 63,191, 7,132, 16, 71, 47, 47,175,109,132, 16, 16, 66, 34, - 40,165,138,191,219,166, 63, 27,148,129,214,217, 89,183, 34,173,255, 71,183,137,106,184, 49, 65, 80, 61,109,109, 22, 88, 67, 18, - 92, 6, 13, 31,222,142, 1, 0, 6,195,229, 65, 0, 14,253, 14,147, 27, 54,143,144, 86, 99,198,140, 57,191,109,219, 54, 87,157, - 78,135,151, 95,126,121,135,179,179,243, 87, 50,153,108, 97, 99,219, 57, 58, 58,206, 89,241,254,151,130,154,107,154,151,197, 98, -241, 42, 41,121, 16,113,251,214,141, 65,183,111,103,174, 50,168,246, 93, 48, 80,230, 12,169,122,196, 45, 91,236,136, 14, 35,195, - 70,142, 31, 61,116,197,138,101,152,244,204,164, 22, 89, 89, 90,190,191, 83, 30, 87,110, 16,134,123,120, 4,140,120,231,221,143, -200,133,223, 78,143,216,181,115,211,169,119,166,145,126,118,145,213, 52, 8, 33,228, 3, 22,171,139,107, 84, 84,175,103,246,239, -135, 40, 48,144,197,226,241, 24, 0, 96,210,233, 2,149, 15, 30,248, 38,141, 24,209,121, 57, 33,167,151, 82,122,209,206,249,255, -207,105,199,163,104, 80, 96, 49, 24,140,128,135, 15, 31,122, 9,133, 66, 0,213,177, 90,102,179, 25,102,179, 25, 53, 55, 69, 80, - 74,107,255,154, 76, 38, 68, 69, 53,114, 97,174, 1, 33,132, 1,160, 31,128,231,251,244,233, 51,238,147, 79, 62, 97,199,198,198, - 90, 75,123,244,124,247,221,119,191, 36,132,236, 1,176, 25,192, 73, 91,159,112, 9, 33,137, 66,161,112,251,199, 31,127,236, 52, - 96,192, 0,150,159,159, 31, 8, 33, 40, 45, 45,237,114,226,196,137,248, 57,115,230,188, 66, 8,153, 76, 41, 61,218, 52, 91, 45, -103,140,163,163,227,238,209,163, 71, 7,244,238,221,219, 33, 58, 58, 26,102,179, 25, 25, 25, 25, 47, 94,185,114,101,226,158, 61, -123,150, 18, 66,198, 81, 27,235,169, 17, 66,136, 72, 36,154,234,239,239,191,114,201,146, 37,110,147, 39, 79,230,102,102,102, 86, -133,134,134,146,179,103,207,122,238,220,185,243,149,213,171, 87,143,119,116,116, 92,164, 84, 42,183,208,154,137,238,198,224,228, -228,116,133,193, 96, 4, 0, 77, 11, 96, 0, 54,139, 96, 66, 72,251,144,144,144,157,191,254,250,107, 72, 65, 65,129,121,212,168, - 81, 91, 1,224,212,169, 83,177, 70,163,145, 12, 28, 56,240, 48, 33,100, 2,165, 52,195,198,190,183,117,115,115, 59, 48,105,210, - 36,183,176,176, 48, 65, 72, 72, 8, 17, 10,133, 96, 50,153,144,201,100,126,153,153,153,253, 47, 94,188,168, 57,113,226, 68, 37, - 33,100, 4,165,244,201, 4, 76, 13,115,119,243,242,242,154,194,102,179, 99, 76, 38,147, 63, 0,176, 88,172,135, 70,163, 49, 83, - 34,145,108,163,148, 54,152,128,181, 41,120,123,123,127,177,114,229, 74, 15,137, 68, 66, 87,175, 94,253, 5,128,169,191,151,235, -159,142, 29, 63,237,194,149,203, 23, 1,128, 67, 8, 33,143,143, 63, 66, 8,105, 29, 1,206,155,111,206, 69,124,199,206,120,118, -210,248, 38, 57, 71, 13,245, 88,193,101,178,220,213,122,221,197,114, 25,227, 64,144, 23,119,244,228,241,241,121, 0,112,228,240, -141,209,157, 59,187,157,245,112,182,140, 20,112,121,157,245,102, 83,197,254, 95,202,151,216,106, 47, 33,164,149,191,191,255, 81, - 87, 87, 87, 65,101,101,101,105, 89, 89,217, 55, 99,198,140,249, 96,243,230,205,174,247,238,221,195,131, 7, 15, 48,123,246,108, - 81, 81, 81,209,107, 60, 30,239, 55,157, 78,215,160, 39, 75,161, 80,172, 91,249,254,220, 37,142, 78,174, 76, 1, 95, 8,145,163, - 19, 66, 66, 34,208,177, 83, 79,244, 31, 48, 2,121,121,183,187,236,252,121, 83, 58,179,100,247,135,102,110,220, 7, 82,105, 72, -131,215,165, 54,145,164,183, 85, 92, 45, 89,178, 12, 57,183,110, 41, 10,242, 25,175,255,178,159, 37, 24,156, 16,197,211, 27,148, - 5, 23,126, 59, 29,210,165,107, 31, 0,136,223,181,115,211,169,229,147, 73,194,210,237,255, 62,241,254,103,129, 16, 66, 86,176, -217, 83, 19, 63,255,220, 43,238,149, 87, 56,202,252,124, 67,222,134, 13,106,113, 90,154,153,197,227,209,192, 65,131,136,103,223, -190, 14,175,220,188,201, 57,183,122,117,175, 85, 92,110,232,187,122,253,118, 59,231,255, 31,167, 29, 79,162, 65,129, 69, 8,129, - 80, 40, 68, 82, 82, 18,216,108, 54, 88, 44, 22,216,108,118,131,239,131,130,158,168,192, 81, 31,231, 24, 31, 31,159, 47,191,250, -234, 43,239,196,196, 68, 56, 56, 56,212,126,199,100, 50, 49, 96,192, 0,244,239,223,159, 93, 92, 92, 60, 49, 41, 41,105,226,170, - 85,171,196,132,144, 89,148,210,189, 77,240,246,141,140,140,220,123,236,216, 49,190, 86,171, 69, 90, 90, 26,170,170,170,192,229, -114, 17, 16, 16,128,129, 3, 7,178,110,221,186,229, 54, 96,192,128,189,132,144, 97,148,210, 84, 27,108,141,247,242,242, 58,179, -107,215, 46,135,118,237,218,145, 59,119,238, 32, 46, 46, 14, 0, 32,147,201, 48,106,212, 40,135,201,147, 39,135, 77,156, 56,241, - 2, 33,164, 55,165,244, 74, 19,124, 29,124,124,124,182,140, 30, 61,218,111,213,170, 85, 78,142,142,142, 40, 40, 40, 40,241,241, -241,137,176, 30,239,137, 19, 39,114,135, 15, 31,238,187,102,205,154,117,187,119,239,126,139, 16, 50,149, 82,122,181, 49, 94,171, - 16, 22, 8, 4, 16,139,197,216,177, 99, 7, 94,123,237, 53, 48,153, 76, 72, 36, 18,236,220,185, 19,175,191,254,186, 85,200,216, - 36,130,133, 66, 97,255,118,237,218,125,127,234,212,169, 0, 23, 23, 23,248,249,249, 49,222,123,239,189,152,208,208, 80,126,139, - 22, 45,152, 37, 37, 37,216,187,119,111,232,148, 41, 83, 14, 56, 56, 56,188,168,213,106,155,156, 58,243,246,246,254,225,151, 95, -126, 9,202,202,202,194,134, 13, 27, 80, 89, 89, 9, 46,151, 11, 23, 23, 23,248,248,248, 32, 34, 34,130, 44, 88,176, 64, 48,124, -248,112,193,172, 89,179,126, 0,208,190, 41, 78, 66, 72, 59, 47, 47,175,111, 39, 78,156, 24,186,124,249,114, 23, 31, 31, 31, 88, - 31, 8,100, 50, 89, 64, 65, 65, 65,151, 37, 75,150,140,243,246,246,190, 39,145, 72,102, 80, 74,175, 53,217,249, 71,249,219, 39, - 36, 36, 12, 27, 53,106, 20,179,164,164, 4,219,182,109, 27, 70, 8,105,111,171,168,124,218,112,229,242, 69,188,252,234,108,165, - 95, 96, 32,231, 96,242,207, 35,149,202,239,206,138, 24, 46, 44, 0, 80, 90,164,166,238, 93, 68, 61,134,143,152,200, 25, 50,116, -148,242,187,175,215,137,108, 17, 88, 92, 38,203, 61,105,251,204, 7,105,231,114, 91, 31, 61, 81,208,127,212,136,254, 12, 22, 39, - 50, 12, 0,230,205,157,206,221,159,124,226,171,196,254, 45, 74,122,117,143,120,240,204,228, 13,129,182,218, 74, 8,105,213,170, - 85,171,211,233,233,233,222, 60, 30, 15,149,149,149,238,223,125,247,221,103, 61,122,244, 96,228,229,229,225,214,173, 91,200,207, -207,135, 76, 38,195,128, 1, 3, 68, 87,175, 94,253, 6, 64,131, 2,171, 76, 51,102,101,168, 87,249,122,127,119,215, 16,173, 65, -230,101, 54, 85, 68,159, 58,113,173,237,158, 93,234, 56, 47,159,128,136,137, 19, 95,198, 59, 11, 63, 98,239,219,179,101,201,153, -180, 99, 0, 66, 26,206,224, 79,209,237,221, 69, 11, 33, 87,232, 48,121,210,116, 76,153, 52,221,157, 66,239, 75,205, 90,161, 94, - 83,229,226,204,201, 74,217,242,243,174,209, 0, 2,234,136,172,147,118,145,213, 48, 86,176, 88,157,135,125,249,165,103,204, 75, - 47,241,174, 45, 95,174, 42, 79, 75,211,132, 15, 25, 82, 21, 55,115,166, 14, 0, 20,249,249,156,156,165, 75, 5,158,189,122,241, -187,206,159,239,106,214,235,125,222, 39,164,211,123,148, 94,106, 46,103,208,132, 9,230, 37, 63,254,216, 49,109,238,220, 62,196, -104,100, 14,234,218, 53, 99,245,182,109, 15,255, 8,231,159,105,103,241,153, 51,186,202,208, 80,196,141, 26, 85, 17,228,229,165, -251, 51,251,254, 71,236,180,227, 73, 16, 74, 41, 8, 33,189, 1,156, 6,176,156, 82,186, 12, 0, 92, 92, 92,196, 82,169,212,107, -239,222,189, 77,138, 43, 54,155, 13, 95, 95, 95, 68, 68, 68, 72,196, 98,177,119,131, 59, 35,228,129,197, 98, 9,160,148,214,122, - 91, 26,130, 78,167, 67,110,110, 46,218,182,109, 91, 68, 41,109,240,194, 75, 8,113, 20, 8, 4,121,183,110,221,242,200,206,206, -198,149, 43, 87, 16, 26, 26, 10, 87, 87, 87,176,217,108, 24,141, 70,200,229,114, 68, 70, 70,130,199,227,161, 67,135, 14,229, 42, -149, 42,180,177,169, 30, 66, 8, 79, 40, 20,230,158, 57,115, 38, 48, 46, 46, 14,151, 46, 93, 66, 96, 96, 32,124,124,124, 0, 0, -249,249,249, 56,123,246, 44,134, 12, 25,130,244,244,116,140, 29, 59,246,129, 74,165,138,160,148,234, 26,226,116,119,119, 47, 57, -117,234, 84, 81,108,108,172, 86,165, 82, 49,196, 98, 49, 59, 45, 45,205,164, 80, 40, 68, 50,153,140, 45,149, 74,217,114,185,156, -165, 82,169,216, 12, 6,131,163,209,104,216, 39, 79,158,100,234,245,122,167,198,142,147,245, 60, 37, 39, 39, 35, 54, 54, 22,123, -247,238,197,188,121,243,112,238,220, 57, 4, 6, 6, 98,215,174, 93,152, 63,127, 62,110,223,190, 13, 15, 15, 15, 68, 71, 71, 55, -122,142, 0, 32, 60, 60,252,206,141, 27, 55,194, 56, 28,142,181,238,162,181,158, 29,202,202,202,112,247,238, 93, 60,124,248, 16, -225,225,225,152, 52,105,210,221,162,162,162,240,198,248, 0, 32, 32, 32,160, 44, 43, 43,203,163,109,219,182, 16,139,197,112,113, -113,129,179,179, 51, 92, 92, 92,106,223,135,134,134, 98,238,220,185,240,241,241,145,104, 52,154, 70,109, 36,132,180,143,141,141, - 61,122,242,228, 73, 15, 39, 39, 39,148,150,150, 66, 46,151,131,197, 98, 65, 32, 16,192,195,195,163, 86,192,231,230,230, 98,232, -208,161,229,121,121,121,137,205,240,184, 49,188,189,189,111, 93,191,126, 61,130, 82,138,194,194, 66,220,190,125, 27,175,190,250, -106,174, 86,171,141,250, 43, 98,135,254, 46,212,137,171,226, 76,125,225,101,206,168, 17, 35,213, 25, 87,142, 88,248, 56,131, 78, -237,249, 82, 0,184,148,161,113,209,160, 55,218,199, 15, 98,236, 79, 62, 32,216,178,249, 59, 54, 44,240, 6,193,237,236, 28,250, -126, 67,220,195, 18, 93,158,155, 63,123, 80,235, 94,221,123,177,228,114,234,243,253,214,141,157,238,223,203,243, 6,128,224,150, -161,226,105,207, 77,191,228,228, 68, 74,211,206,165,153, 62, 89,119,228,102,202, 81,105,189,177, 95,117, 65, 8, 9,141,136,136, -248, 45, 57, 57,217,195,203,203, 11,206,206,206, 80,169, 84, 48, 24, 12,200,206,206,214, 38, 37, 37, 25,157,156,156, 28, 75, 75, - 75, 33,149, 74, 65, 8, 65,114,114,114, 33,165, 52,248,113, 46,107, 12, 22, 0,188, 58,184, 53, 59,186, 95,132, 43,135,103,226, -243,217, 57,190, 32,102, 30,161, 34,239, 83,167,126,107,155,122,230,215,103,135, 12,123,198,179,107,215,190,248,104,213, 59,198, -194, 82,113,156, 84, 61,226, 86,125, 49, 88,173, 35, 72,191, 81, 99, 71,143, 95,177, 98, 25,150, 45, 89,142,148,228,253, 50,145, -144,161,115,114, 97, 59,247,234,210, 93, 59,247,181,145, 15,212,202,162,192,207,190,218, 56,105, 64,226,248,128, 46, 93,251,224, -194,111,167,177,107,231,166, 43, 28,179,209, 62, 93,248, 24,150, 19,226,234, 18, 26, 58,227,141,220, 92,206,181,101,203,148,166, -226,226,170,248, 57,115,202,235,107, 91,116,252,184,144,235,231,231,228, 58, 98,132,219,186,224, 96,106,148, 72,190,173, 47,134, -168, 62,206, 19, 34,145,203,207,135, 15, 39, 80, 54,187,247,219,239,188,195, 31, 54,108, 24,228,114, 57,246,236,217,131,111, 55, -108,208,249,250,250,222,240,203,204, 76,143,145,203, 23,219,202, 25, 63,103, 78,185,217,108, 38,227,231,207, 31,144,149,159,223, -175, 84, 34,105, 1, 0,190,110,110, 15,226, 67, 67,175,252,144,146,114,251,139,144, 16,139,173,118,110, 60,114,196,123,119, 65, -193, 75,110,110,110,124,177, 68,194,226,113,185, 21, 93,162,163,119,125,189,104,209,105,211,245,235, 28,135,128, 0, 39,231, 97, -195,154,221,247,248, 57,115,202, 43, 21, 10,214, 27, 31,124,208,253,190, 88,220, 66,169,211,133, 75, 21, 10, 31,179,209,200,112, - 18, 8, 42, 90, 70, 70, 74, 52,105,105, 37, 45,213,234,217, 27, 41,109,176, 18,202, 31, 69,125, 90,228,105,134,213,131,117,154, - 82,250,196,106, 25, 74,169, 77,222, 43, 54,155,253,200,116, 84, 35,224, 16, 66,112,245,234, 85,184,187,187,195,199,199, 7, 60, -222,163,197, 1,203,202,202,112,238,220, 57,220,188,121, 19,237,218,181, 3, 0, 78, 99,132, 60, 30,239,205, 53,107,214,184,232, -245,122, 92,185,114, 5,241,241,241,224,241,120,224,112, 56,143,136, 63,137, 68,130, 54,109,218,224,237,183,223,118, 94,181,106, -213,155,104,164,134, 28,139,197,154, 53,125,250,116, 47,171,199,234,193,131, 7,232,208,161, 67,237,247,158,158,158,200,200,200, - 64,124,124, 60, 2, 2, 2, 48,110,220, 56,175,109,219,182,205, 2,240, 73, 67,156, 92, 46,151, 17, 27, 27,219, 17, 0,132, 66, - 33, 24, 12, 70,142,147,147,147,167,183,183,183,208,201,201,233,137, 62,254,248,227,143, 82, 6,131, 97,108,172,239, 64,245,180, - 96,105,105, 41, 98, 98, 98, 32,147, 85, 87, 90, 81,169, 84, 8, 15, 15,135, 92, 94, 29,114,166,211,233,224,231,231, 7,141,166, -241,208,174,118,237,218, 45,139,138,138, 26,216,167, 79, 31, 30,155,205,198,181,107,215, 16, 23, 23,135,164,164, 36, 4, 5, 5, - 65, 32, 16, 32, 55, 55, 23,177,177,177, 56,115,230, 12, 60, 61, 61,209,166, 77, 27, 94,135, 14, 29,126,173,172,172, 76, 45, 40, - 40, 88,214,136,157, 12,145, 72,132, 51,103,206,224,135, 31,126, 64,126,126, 62,138,139,139,225,232,232,136,246,237,219, 35, 58, - 58, 26,221,186,117, 67,110,110, 46, 72, 19,131,137, 16,226, 19, 17, 17,145,114,233,210, 37, 15, 74, 41,182,109,219, 6,165, 82, - 9,189, 94, 15, 6,131, 1, 7, 7, 7,184,186,186,162, 95,191,126,240,244,244, 68, 68, 68, 4,118,238,220,233, 49,120,240,224, - 67, 53, 30,168,210,166,142,171,171,171,235,236,165, 75,151, 6,122,121,121,161,160,160, 0, 50,153, 12,222,222,222,232,211,167, -143,255,137, 19, 39,102, 3,248,188, 41,142,167, 5,214,128,118, 66, 8, 57,152,252,243,200, 32, 95,110,235, 78,113,138,224, 27, - 87, 89, 97,135, 78,220,105, 11, 0,174,174,193,215, 59,117, 80,220,189,116,229,200,253,131,201, 63, 95,188,153,131, 3,182, 76, - 97,151,203, 24, 7,142,158, 40,232,223,182, 77, 79,230,250,175,150,142,124,121, 90, 34,207,205,181, 39,145, 75,118,226,220,197, - 27,193,239, 45, 91,224,245,254,178,213, 7,143,158, 40, 48,151,203, 24, 43,109,177,183, 77,107,223, 47, 78,239,247,242, 80, 26, -190, 70,198, 69,103,128,221, 21, 45, 67, 91, 65, 46,151,195,193,193,193, 97,210,164, 73,230,133, 11, 23,170,157,156,156, 4,132, - 16,164,166,166, 74, 0, 36, 54,197,171,245,114,165,102,131,209, 68,185, 76, 11, 37,142, 26, 98,174,228,102,102,223, 67,239,222, -131,197, 29,227,227, 86,173,254,248,243,119, 67, 67, 35, 61, 39, 77,158,193,254,228,147,197, 27, 0,244,172,143,231,102, 46, 61, - 21, 29, 70,248, 0,134,174,120,127, 25,242,242,114, 93, 95,126, 94,186,156,197,227,251, 69, 5,119,119,220,240, 67,234,160,240, -240,144, 22, 47,191,240,226, 47,223,253,248,195, 80,212,241,100,253,252,211,119, 7, 8, 33, 9,182, 28,219,255, 16,218, 78, 73, - 73,129,178,176,208, 88,249,235,175,218,132, 47,191, 44, 15, 76, 76,252, 92,111, 48,120, 88, 47, 21, 12, 66, 64,172, 33, 18, 22, - 11, 97,189,253, 54,131,178, 88, 48,186,186, 62,191, 0,104,213, 20,231,188,146,146, 49,207,190,244,210,208, 3, 71,142, 32, 36, - 36,164,246,126,230,226,226,130,249,243,231, 99,206,156, 57,188,140,140,140, 78,187,119,239,238,244,201,199, 31,123, 47, 0,198, -216, 98,231,177, 11, 23, 92,103,174, 88,177,168, 93,124,124,208,214, 29, 59,120, 97, 97, 97, 0,128,187,119,239, 70,124,180,122, -117,112, 76,108,172,120,213,155,111,110,206, 90,184,176, 13,128, 95, 27,227, 44, 77, 75,211,239, 46, 40,120,233, 84,106,170, 75, - 76, 76, 12, 0,224,246,237,219, 94,235,214,173,155,222,102,220,184,201, 43, 94,121,101,241, 48,173, 86,234, 84, 86,198, 27,246, -197, 23,172,159,199,143,111,146,211,106, 39, 0,244,121,241,197, 55,123,246,237, 27, 61,230,165,151,220,130,130,130,136, 72, 36, -130,193, 96, 64,113,113,177,107, 86, 86, 86, 88,138, 66, 33,223,119,225,194,182,141, 53, 69,220,255, 34,212,171, 69,158, 86, 88, - 5, 86, 31, 66, 8, 5,208,135, 82,122, 6,168,190,113,155,205,102,155,196, 21,139,197, 66, 77, 16,176, 77, 59,165,148,162,188, -188, 28,229,229,229,181, 83, 68, 18,137, 4,167, 78,157, 66,110,110, 46,216,108, 54, 56, 28, 14, 12,134,166,107,195, 10,133,194, -254,253,251,247,103, 93,184,112, 1,161,161,161,224,243,249,181,118, 89, 95, 28, 14, 7,190,190,190,144,203,229, 72, 72, 72, 96, -175, 95,191,190, 63, 26, 17, 88,206,206,206, 67, 38, 76,152,192,181,254,175, 84, 42,193,100, 86, 63,232,234,116, 58, 40,149, 74, - 84, 86, 86, 66, 42,149, 66,171,213,162,107,215,174,220,148,148,148, 33,104, 68, 96,213,133, 90,173, 86, 74, 36, 18,151,158, 61, -123,186,110,222,188,249,118,215,174, 93, 35,235,126,127,250,244,105,173, 86,171,101, 51, 24, 12,155,234,220,109,223,190,189,246, -216, 63,124,248, 16, 27, 54,108,168,253, 46, 55, 55, 23,235,215,175,175,205,203,209,216, 57,138,138,138, 26,188,109,219,182,248, -173, 91,183, 86, 49,153, 76,220,190,125, 27, 59,118,236, 0,165, 20,158,158,158, 80,171,213, 16,139,197, 72, 77, 77,133,201,100, -130, 72, 36,130,191,191,191,195,172, 89,179,122, 44, 95,190,156, 13, 96, 89, 67,220,102,179,217,204,100, 50, 17, 28, 28,140, 37, - 75,150, 64,171,213,130,195,169,214,149,114,185, 28, 82,169, 20,233,233,233, 40, 40, 40, 64, 83, 55, 23, 7, 7,135,113, 91,183, -110,245,226,114,185,208,104, 52, 80, 40, 20,120,240,224, 1,238,223,191,175,149, 72, 36, 38, 71, 71, 71, 70,112,112, 48,131,199, -227,241, 70,141, 26, 69,172, 66,115,216,176, 97,238,219,182,109,123, 6, 77,136, 35, 66,136,103,235,214,173,223,157, 62,125,122, -237, 28, 54,165, 20,165,165,165, 24, 51,102,140,224,252,249,243, 11, 9, 33, 59, 40,165,101,141,241, 60,109,160,148, 82,165,242, -187,179,105, 7,190,108,125,227, 42, 43, 76,175,175,234, 58, 96,200,108, 22, 0,156, 63,243, 99,215, 27, 87, 51,193, 39,166,251, -135,143,125,114, 86, 36,122,185,209,115, 68, 8, 97, 12, 73,112, 25, 20,228,197, 29, 61,106, 68,127,198,247, 91, 55,118,122,121, - 90, 34,207,171,229, 70, 2, 0,174,156, 0,116, 51,207, 99,104,117, 42,135,239,183,110,236, 52,106,196,144,139,249,247,238,127, - 62,180,191,235,190, 67, 39,165, 71, 26,243, 16,250,250,176,253,221,156, 42,224,230, 24,135,224, 80, 71,164,103, 92,199,129,189, -191, 34, 34,170, 7,116, 58, 29, 76, 38,147,112,248,240,225,234,164,164, 36,109, 78, 78,142, 66,163,209,244,166,148,230, 52,213, -255,162,162,108, 75,164, 79, 23, 3,135,207, 51, 41,100, 28,245,130,197,187,199,119,232, 60, 48,222,213,215,159,237, 41,180, 28, -236,219,187,231,142,159,182,127, 59,103,222, 91,239,163,125,251,174, 93,111,222, 57, 28, 13,224, 70,125, 92,217,119,105, 74, 76, - 4, 49,229,221,185, 51,244,126, 65, 65, 81, 43,111, 31,253, 93, 41, 53,206, 94,176,113, 64,207,222,227,218,134,181,238,197,205, -202, 62, 67,230,190, 54,253,167,207,190,218, 56, 9, 53, 34, 43, 45,237,104,239,101,203, 10,184, 0, 26,244,134,255,215,192,225, -241, 2, 68,193,193,172,252,205,155, 53,161,195,135, 87, 1,128,222, 96,240,200, 47, 40,112, 22, 8, 4,160,148,194,104, 52, 62, - 18, 35,108,141, 11,142,137,140,172,215, 19,254, 56,103,254,123,239,181,125,251,237,183, 81, 90, 90, 10,147,201, 4, 54,155,253, - 72,123,181, 90, 13,149, 74,133,231,159,127, 30, 95,124,252,113, 23, 91, 56,205,102, 51,153,185, 98,197,162,119, 22, 45, 10,155, - 49, 99, 6,163,238,181,215,205,205, 13,187,247,236,225,126,245,213, 87, 1,239,126,241,197,243,207,242,120,121, 77,113,150,135, -135,195, 77, 44,230, 91,197, 21, 0, 68, 70, 70, 98,195,134, 13,188,105,211,166,113,135, 15, 31,254,105, 70,187,118,235, 62,239, -209,227,142,123,171, 86, 78, 92, 30, 47,192,214,227, 9, 0, 10,173, 54,230,243,117,235, 92, 47, 94,188, 8,177, 88,140,210,210, -234,231, 80, 66, 8, 58,118,236, 72,166, 76,153,226,220, 50, 48,176, 83,253,103,233, 79,195, 19, 90,228,105, 6, 11, 0,106, 58, - 66,106, 58, 86, 59, 10,204,102,243, 35, 66,165, 41,129,245,123, 32,149, 74, 33,149, 74,177,105,211, 38,112, 56,156,218,155, 46, - 0,232,245,250, 38,183, 87,171,213,177,126,126,126,144,201,100,104,213,170,213, 35,158, 43, 14,135, 3, 22,139, 5, 14,135, 3, - 30,143, 7,157, 78,135,160,160, 32,168,213,234,216,198, 56, 53, 26, 77,123, 55, 55, 55,212, 28, 27,232,116,213,215, 58,157, 78, - 87,107,175, 94,175, 71, 85, 85, 21,148, 74, 37, 20, 10, 5, 84, 42, 85,156, 45,253,181, 88, 44,200,204,204,188, 27, 25, 25,217, -158,201,100, 66, 36, 18, 9, 85, 42, 85,109,236, 80,101,101, 37,182,108,217,162,122,238,185,231, 60,146,147,147,155, 20, 88,132, - 16,188,254,250,235,224,241,120, 80,171,213,248,230,155,111,240,198, 27,111,128,195,225, 64,161, 80, 96,195,134, 13,152, 59,119, - 46, 88, 44, 22,244,122, 61,214,173, 91,215, 32, 87,118,118,118,254,133, 11, 23,226, 58,116,232,224,186,111,223,190,178, 1, 3, - 6,120, 38, 38, 38,130,207,231, 67,163,209,192,104, 52,162, 75,151, 46,136,138,138,130, 68, 34,193,225,195,135,203, 35, 34, 34, - 60, 46, 94,188,104, 41, 45, 45,189,223,152,157,117, 69, 19,139,197,130,217,108,134, 88, 44,134, 84, 42, 69, 89, 89, 25,138,139, -139, 81, 84, 84, 4, 22,139,133,166, 30,222,221,221,221,199,198,196,196, 48, 1,128,207,231,163,125,251,246, 88,180,104,145, 73, -163,209, 76, 0,112,184,166,217,224,141, 27, 55,238, 59,123,246, 44,203,207,207, 15,183,110,221,130,167,167, 39,203,193,193,161, - 73,129,229,227,227,243,227,193,131, 7,221,172,162,218,122,156,213,234,234,211, 49,102,204, 24,183,173, 91,183,254, 8, 96, 72, -163,134, 62,133, 16, 49, 92, 88,157,218,243,165,135, 78,220,105, 59, 96,200,108,150,111,216, 82, 0, 64, 55,128,117,252,208,186, -182, 67,250,135,239,178,198,101, 53,134, 81,131, 61, 63, 25, 62,188, 29, 99,242,248,248, 60, 22, 39, 50,108,251,214,117,222,110, -174, 61,255,119,145, 96,186, 65,200, 7,162,194,204,140,223,126,206,243,158, 59, 59, 82,191, 99,243, 75,121,219,119, 93,233,207, -225, 92,235, 7, 96,110, 67,220,215,179,116,201, 85, 10,255,214,174,156,211, 4, 14, 35, 16,215, 62, 2,158,158, 82,124,243,221, - 86,248, 7,117,135, 78,167,131,147,147,147,192,108, 54, 27,152, 76,230,118, 91,196, 21, 0,156, 60, 41,181,180,105, 35,213, 51, - 21, 22,211,107,111,124, 50,122,192,224, 17,209,253,250,245,183, 28, 59,126,204,208, 61,206, 80,210,175, 95, 87,113,234,233,180, -220,210,210,135, 17, 81, 81,109,145,115, 59, 99, 16, 64, 50,129,250, 7,108,102, 46, 61, 18, 22, 70, 82,147,146, 94,182,104, 44, -233,252, 15, 86,222, 24, 60,116,232,212,152, 94, 61,123, 89,142,159, 56,165,231,162,252,166,168, 71,183,135, 83, 39, 78,216,151, -180,119,223,192,212, 83, 41,225, 50,185, 56,229,227,175, 26, 14, 53,248, 47,194,108, 50,121,179,120, 60, 70, 89,106,170, 41,118, -218, 52, 29, 80,253,123, 20, 8, 4, 56,112,224, 0,184, 92,110,237,139,195,225,212,190,247,246,246,182, 46,170,178,137, 19, 0, - 74, 74, 74, 80, 90, 90, 10,103,103,103,120,122,122,162,180,180, 20,231,207,159, 71, 78, 78, 14,216,108, 54, 6, 13, 26, 4, 70, - 3,177,203,143,115,142,159, 63,127, 64,235,216,216,160,199,197, 21, 0, 24, 12, 6, 84, 86, 86, 98,228,200,145,140,195,135, 15, -251, 28, 41, 44, 28,241, 30,240, 68, 16,121, 93,206,184,161, 67, 43,196,187,119,215,187,239, 14, 29, 58,144,115,231,206,241, 6, - 37, 38,206,153,183,114,229, 87, 95,108,221,250,192,108, 50,249, 52,167,239, 12, 6,131, 65, 8, 65, 96, 96, 32, 42, 43, 43,161, - 84, 86,207, 84,139, 68, 34,184,186,186,194,104, 52,194, 66, 41,187, 62,206, 63, 11, 13,105,145,167, 21, 44, 0,168,233, 12, 0, -244,177,126, 65, 8,129,197, 98,177, 73, 92,177,217,236, 38, 99,170,154, 66,125, 55, 85, 91, 4,150,213, 86, 7, 7,135,218, 31, - 88, 93, 97,101,181,147,193, 96,128,201,100, 54,121,243, 6, 0,139,197,194, 84, 40, 20,216,179,103, 15,122,247,238, 93, 59,253, - 36,147,201, 32,149, 74, 33,147,201,160,213,106,145,159,159,143,147, 39, 79, 34, 60, 60, 28,128,109, 73, 91,243,242,242,174,132, -132,132,196, 91,111,222,125,251,246, 13,216,188,121,115,241,144, 33, 67,252, 40,165, 88,188,120,113,121,151, 46, 93, 60,234,222, -220,155, 2,147,201,196,249,243,231, 17, 30, 30, 14, 74, 41, 56, 28, 14,110,223,190, 13, 47, 47, 47, 88, 44, 22,176, 88, 44,148, -149,149,193,209,177,241,220,134,153,153,153, 47,188,248,226,139,197,206,206,206,109, 43, 42, 42, 74,120, 60, 94,207,180,180,180, - 64,131,193, 0, 39, 39, 39, 56, 57, 57,225,208,161, 67,112,113,113,193,155,111,190, 89,168,209,104,206, 11,133, 66,111,141, 70, -115,189,180,180,116,177,205, 6, 3, 48,153, 76, 80,169, 84,168,170,170, 66,101,101, 37,228,114, 57,180, 90,109,147, 54,214,135, -158, 61,123, 34, 37, 37,133,249,225,135, 31,126,159,151, 87,253, 32, 24, 26, 26,138, 55,223,124,147,233,239,239,143,252,252,124, - 92,185,114, 5, 6,131, 1, 77,185,159,217,108,118,223,121,243,230,245, 8, 10, 10, 34, 6,131, 1, 22,139, 5, 58,157, 14,214, -247,133,133,133,104,221,186, 53, 35, 56, 56,184, 43, 33,164,175, 45, 11, 38,236,168,134, 92,178, 19,174,156, 0,128,233, 6,139, -252, 43,168,126,103, 50, 18,137, 68,178,114,210, 12,230,180, 67, 59,148,222,183,239, 56, 34, 48,116, 10, 2, 90,142,196,244, 23, -205, 88,246, 65, 10,252, 3,163,113,255,254,125,244,237,219,151, 83, 92, 92,252, 34,128,249,182,114, 31, 63,126,193,124,236,208, -225,113,227,159,153, 26,223,191,255, 16,211,209,163,135,144,121,253,104,214,139,207,140,149, 80,139,146,184,184, 8,210,239,220, -185, 25, 17, 19,211, 1, 6,163,177, 39,176,108, 13,128, 6, 47, 42,119,239, 82,253,242,229,203, 25,191,236,255,113,202,164,201, -207,183, 75, 72, 24,104, 60,122,252, 32,174,252,118,252,218,167,107,166,159,249,112,221,206,190, 3, 6,141,109,227,224,116,225, - 80, 76, 27,205, 75,129, 78, 65,205, 74,125,242, 95, 2,203,193,193,130,154,235, 34,131, 16, 80, 74, 31, 17, 87,143, 11, 44, 6, -131,209,228,131,127, 93, 78, 43, 40,165,181, 15,210,223,126,251, 45,120, 60, 30,184, 92, 46,216,108,118,147, 97, 22,117, 57,179, -242,243,251,109,217,190,157, 87,159,184,170,168,168, 64, 69, 69, 5,148, 74, 37, 38, 78,156,200, 89,126,249,114,135, 6,232,106, - 57,131,124,125,117, 66, 62, 95,156,157,157,237, 23, 29, 29,253,136,189,114,185, 28,124, 62, 31,219,119,236,224, 12, 27, 58,244, -213,132, 67,135, 62, 5,208,104,254,170,250,250, 78, 8,129,151,151, 23, 92, 93, 93, 65, 8,129,201,100, 66,105,105, 41,178,178, -178,112,249,242,101, 48, 9,105,118, 90,162,230,160, 62, 45,242, 52,195,234,193,170,119, 20, 54, 71, 96, 49,153,204,223,237,197, -106, 8,182, 76, 17, 10, 4,130, 27,197,197,197,221,253,253,253, 97, 50,153,106, 5,214,227, 83,132, 64,181,183, 35, 35, 35, 3, - 2,129,160, 94,183,126, 93, 78, 74,105,215, 78,157, 58, 97,239,222,189, 72, 77, 77,197,189,123,247,160, 86,171,161,211,233,160, -209,104,144,149,149, 5,139,197,130,152,152, 24, 8,133,194, 38, 57, 1, 64,165, 82,149,176,217,236, 72, 62,159, 95,251,153,175, -175, 47, 42, 42, 42, 44, 70,163, 17, 91,182,108,145,251,248,248, 8,249,124,190,205,130,149, 16, 2,137, 68,130,128,128,128,218, - 24, 44,133, 66, 1, 47, 47, 47,171,160,128, 78,167,131,163,163, 99,147, 83,132,148, 82, 45,128,121,117,184, 59,142, 31, 63,254, -167,164,164,164,150, 39, 78,156,192,197,139, 23,225,233,233,137, 85,171, 86,221, 43, 40, 40,152, 68, 41,189,108,147,145,205,128, - 45, 99,168,162,162, 98,207,141, 27, 55,186,118,234,212,169,246,234,208,183,111, 95,210,183,111, 95, 15,235,255,106,181, 26,101, -101,101,184,116,233, 18, 78,156, 56, 1, 66, 8,114,115,115,205, 26,141,230,167, 70,246,205, 9, 14, 14,222,188,104,209, 34,145, -201,100,170, 29,219,124, 62, 31, 14, 14, 14,224,112, 56, 96, 50,153, 40, 40, 40,192,200,145, 35,157,191,252,242,203, 31, 9, 33, - 97,148,210,166, 7,234, 83, 2,165, 69,106,186,148,161,113,113,117, 13,190,126,254,204,143, 93,187,213, 92, 35,206,159,249,209, -228,234, 26,124,253, 82,134,198,165, 87,160,212, 36,106,130,103,255,225,178,249, 6,195,229, 65, 71, 14,223, 24, 61,111,238,116, -110,112,203, 80,241,185,139, 55,130,187,153,231, 49,132,124, 64,165, 1, 42,165,192,173,187, 76, 75,112,203, 80,241,229,171,183, -185,159,126,182, 41, 84,173,209,239, 59,116, 82,122,164, 49,110, 74,169,150, 16, 50,234,245,119,217,103,166,190,224,197,229, 58, - 4, 66, 81,117, 21, 45,130,221, 49, 97,108, 36,190,250,238, 42,156,156,220,224,237,237, 13, 6,131, 33,180,181,239,229,229,229, -100,207,207,191, 78,123,238,249,233, 93, 18, 7, 14, 53, 29, 57,250, 11, 43,245, 88,242,249, 31,191,123,119, 31,101,170, 4,132, - 42,248,129, 65, 1,215,243,239,229, 76,234,213,107, 32,248, 92, 65, 56, 16, 85,239,128,173, 93, 56, 64, 81,200, 96,192,225,185, -231, 95,238,150,152, 56,194,116,244,232,126, 28, 61,180,245,194,210,165, 45, 14,221,123,184,131,243,219,229, 34,135, 81,227, 94, -169, 74, 57,124, 83, 63,118,120, 72,142,159,176,253, 63, 34, 7,222, 63, 9, 76, 22, 75,108,210,233, 2, 3, 18, 19,153,234,251, -247,217, 34,111,111, 19, 0, 24,141,198, 38, 5, 22,128,122,167,154, 31,231,180,213, 22,181, 90, 13, 11, 80,175,200,120,156,179, - 84, 34,105, 81,243,240, 93, 11,163,209, 88, 43,174, 42, 42, 42, 32,149, 74, 33, 20, 10, 81,166,211,213, 59,149,249, 56,231,192, -206,157,183, 44, 95,182,108,254,238, 61,123, 56,192,255,196,149,245,197,102,179,241,209,154, 53,156, 55,222,122,235,149, 87, 89, -172,217,205, 57,158, 64,245,195, 58,147,201, 4,139,197,194,253,251,247, 81, 88, 88,136,251,247,239,227,254,253,251,224,243,249, -160, 13, 28,207, 63, 11,255,166,248, 43,160,137, 52, 13,205, 9,114,183, 85, 16,152,205, 13, 38, 62,126, 2,182, 8, 44,149, 74, -117,226,228,201,147,157, 71,141, 26,197,186,112,225, 2,124,124,124,106, 5,150,245,175,117,218, 73, 32, 16, 96,223,190,125, 6, -149, 74,213,104, 33, 73,181, 90,125,242,208,161, 67,241, 75,150, 44, 97,191,240,194, 11,200,206,206,198,140, 25, 51, 32,149, 74, - 33,151,203, 81, 81, 81, 1,181, 90,141,206,157, 59,195,193,193, 1,215,175, 95, 55,170,213,234, 70, 83, 21, 80, 74,169, 68, 34, - 81,122,122,122,250, 62,254,221,184,113,227,188,191,254,250,107,245,173, 91,183,140,221,187,119,119, 2,108, 19, 26, 86,252,252, -243,207,181,158,185,156,156, 28,124,253,245,215,181, 49, 87, 87,175, 94,197, 39,159,124, 82,155,187,172, 57,160,148, 94,110,211, -166,141,201,104, 52, 34, 60, 60, 28,254,254,254,208,106,181, 88,187,118,173,233,175, 16, 87,182, 66,171,213,238,158, 58,117,234, - 59,233,233,233,190, 44, 22,171,218,117, 93,211, 63,131,193,128, 59,119,238, 32, 43, 43, 11,183,110,221, 66,101,101,101,237, 3, - 64, 70, 70, 70,149,209,104,220,217, 16,175,167,167,231,226, 31,126,248,193, 71, 32, 16, 60, 50,158,173,222, 79,171, 87,180,172, -172, 12, 46, 46, 46, 72, 72, 72,240, 58,121,242,228, 98, 0, 54,231,110,250, 39,131, 16, 66,186,119, 17,245,120,253,149,231,209, -169,131,226,238,141,171,153, 56,126,104, 93,109,144,123,108,135,152,187,151,210, 29, 49,120,224,252, 30,231, 46,204,104, 52,200, -189, 38,134,234, 80,231,206,110,103,247, 39,159,248,106,193,220,233,151,222, 91,182,192, 75,171, 83, 57, 68,133,153, 25, 64,181, -184,250, 45, 93,168,125,127,217,244, 75,171, 63,219, 98, 41,148, 24,230, 92,188, 88,213,224,234,222,186,162,165, 77, 43, 56,248, - 4, 15, 45, 14,110,217, 55,228,250,213, 77,240,112,174,130, 99,120,119, 12, 78,236,140, 19, 39,111,224,254, 67, 45, 74, 74, 74, -160,211,233, 26, 77,123,112,235,250,190, 41,148,208, 32, 66, 73, 33, 97, 80,135, 41, 83, 95,234, 57,116,232, 8,154,146,146,108, -218,191,111,251,217,157,219,214,239,102,112,216, 44,141,222, 89, 79,136, 86,102, 97, 56,102,171, 84, 21, 0, 0, 22,135,211,176, -187,181, 38, 33,107,116,155, 40,159, 41, 83,103, 56, 15, 25, 60,146, 30, 58,180,223,178, 51,105, 75,234,206, 77,177,219, 45, 12, - 57,167,228,129,154, 39,147, 27,101,148,112, 93,148,114,139, 90,156, 23,166,245, 27, 58,238, 95, 35,214,255, 44, 24,116,186, 34, -229,131, 7,190,110,189,123,243,238, 44, 91, 38,240,238,220, 89, 75,106, 98,132, 27, 19, 88, 76, 38, 19, 96, 48,234,189,232, 61, -206,105,171, 45, 26,141, 6, 22,160,222,197, 71, 77,113,154, 76,166, 71,196,149, 85, 96,213,192, 38, 59,191, 91,186,244, 66, 80, - 98, 98,229,233,211,167,189,251,244,233, 67, 20, 10, 5, 20, 10,197, 35, 34,203,207,207,143, 68,199,196, 8,126, 78, 77, 13,173, -239,194, 84,223,241,180,165,239, 12, 6,227, 47, 23, 88,255, 54, 52, 26, 75, 97,245, 96,217, 34,176,108,244, 96, 25,141, 70, 35, -188,188,188, 80, 94, 94,222,224, 13,185,212,196,113, 0, 0, 32, 0, 73, 68, 65, 84,159,193, 96,128,207,231, 91,231,128, 27, 93, - 73,167,211,233,214,206,159, 63,127,214,224,193,131, 61, 34, 35, 35, 81, 86, 86, 6,111,111,111, 56, 56, 56,212,198,134, 89,249, -174, 94,189,138, 31,126,248, 65,174,211,233,214, 54,193,249,249,154, 53,107, 94, 27, 51,102,140,155,143,143, 15, 92, 93, 93,113, -253,250,117,184,186,186, 66, 46,151,227,246,237,219,112,116,116,172,141,203, 73, 78, 78, 86,232,116,186, 70,227,122,212,106, 53, - 77, 75, 75, 51, 56, 58, 58, 94, 47, 43, 43, 99, 86, 86, 86,178,170,170,170, 88,114,185,156, 45,147,201,216, 71,142, 28,241,112, -118,118, 86,159, 58,117,170, 44, 40, 40,136,121,239,222, 61,166,209,104,108, 82,181, 18, 66, 48,123,246,108,112, 56, 28,232,116, - 58,172, 93,187, 22,243,231,207,175,141,185, 90,179,102, 13, 22, 45, 90, 84, 43,152, 55,110,220,216, 20,229, 35,160,148,194, 96, - 48,192,104, 52,194,104, 52,218, 36,122,255, 8,108, 17,234,148,210, 82, 66,200,176, 78,157, 58, 29,219,181,107,151,123, 77, 78, - 49,136,197, 98,136,197, 98,148,149,149, 65,169, 84,194,100, 50,193,223,223, 31, 98,177, 24,251,247,239,151, 41, 20,138,196,198, - 86, 16, 50,153,204,169, 61,123,246,100, 61,110,131,245,169,206, 42,218,121, 60, 30,138,139,139,209,183,111, 95,238,233,211,167, -167,226, 41, 23, 88, 86,225,210, 58, 2,156,225, 35, 38,114,218,199, 15, 82, 95,186,114,228, 62,159,152,238, 15,233, 31,190, 11, -168, 78,211,112, 41,221, 17,237,227, 7, 49,134,151,232, 59, 75,171,190,107, 31,221,138, 24, 26, 43,171, 3, 0, 30,206,150,145, -137,253, 91,148, 56, 57, 17,214,251,203, 86, 31,252,126,235,198, 78,191,253,252,191, 52, 13,239, 47,171, 78,211,144,216,191,133, - 41,251, 86,206, 72, 0, 13,167,105,120, 76,180, 12, 27, 54, 60,253,187, 77,219, 80,148,151,236,247,213,106, 23, 46,180, 85, 0, - 59, 18, 61,187, 56,225,226, 23,133,184,118,237, 90,169, 94,175,239,219, 88,223, 41,161, 65, 89,217,153,173, 98,219, 68,251, 76, -153,250,178,211,176, 97, 35,145,146,114, 0,219,182,108, 74, 27, 59,113,204,247, 15,171,228, 76, 47,182,128, 35,160, 22, 46,147, -227,204,114, 16, 8, 36,134,226, 98, 0, 0,139,197,118, 2,198, 91, 26,153, 33,196,204,151, 39, 59,247,235, 63, 18,191, 28, 58, -128,109, 91,190, 59,243, 94,155,113,155, 66,226, 90,147,206, 29, 62,126, 37,164,101, 72,176, 74, 41,150, 51, 8,215,160,213, 90, - 28, 63,222, 82,240, 89,222,162,169,121,233,153,227, 63,181,175, 34,124, 4,215,183, 13, 25,210,233,141,187,119, 57,158, 61,122, -240,139, 83, 83, 5,164,186,114, 72,163, 2,139,197, 98,129, 54, 60,165,245, 8, 39,217,186,149, 1,160,209,197, 85, 28, 14, 7, -106,181, 26, 70,160,161,139,224, 35,156,190, 71,143, 62,184,123,247,110,132,155,155,219, 35,226,170,178,178,178,246,189, 86,171, -133, 90,173, 6,159,207,207,178,133, 83,156,150,166, 93, 61,123,246,146, 73, 19, 39,174, 63,113,242,164,131,187,187, 59,100, 50, -217, 35, 2, 75,175,215,163, 95, 66, 2,103, 77,122,250, 20, 0, 75,109, 57,158,222,125,251, 54, 25,239,203,100, 50, 97,249,139, -167, 8,255,109,104,240,110,102, 21, 75,182,174, 34,172,239,198, 72, 8,233,255,216, 71,139,226,227,227,181, 57, 57, 57, 8, 10, - 10,170, 21, 41,117,247,233,228,228, 4, 23, 23, 23, 92,189,122, 21, 43, 87,174,212, 0, 88,212, 24, 39,165, 84,161, 86,171,159, - 25, 48, 96,128,134,197, 98, 33, 42, 42,170, 54,255,149,197, 98, 1,151,203,133, 80, 40, 68,122,122, 58,134, 15, 31,174, 86,171, -213,207, 60,158, 3,171, 30, 78,153, 90,173,126,118,224,192,129,234,236,236,108,244,236,217, 19,215,174, 93,131, 82,169,132, 82, -169, 68,126,126, 62,162,163,163,161, 86,171,241,245,215, 95,107,212,106,245,179,148, 82, 89, 99,156, 10,133, 98,248,252,249,243, -153, 63,253,244, 83,136,191,191,127,155,142, 29, 59, 70, 38, 36, 36,132,141, 30, 61, 58,120,200,144, 33,190, 17, 17, 17,218,196, -196, 68,207,193,131, 7,123,170,213,106,246,185,115,231, 74,140, 70,227,224, 38,142, 39,128,106, 81,146,147,147, 83, 59, 37,200, - 98,177, 80, 94, 94, 94,155,105,223,122, 49,170, 79, 0, 55,196,105,133,197, 98,169, 21, 86, 86,161,213,212,181,191, 1,206, 38, -111, 24, 92, 46,215,234,225,124,162,109, 61,231, 40,227,230,205,155, 3,122,247,238,157, 49,109,218, 52, 69,105,105, 41, 28, 29, - 29, 17, 26, 26,138, 86,173, 90,193,195,195, 3, 6,131, 1,251,246,237, 83,237,223,191,255,134, 76, 38,235,251,120, 14,172,199, - 57, 25, 12, 70,126,125, 23, 87,171,247,202, 42,176, 28, 28, 28,224,239,239,111, 61,182,249, 54,244,253, 15,225, 47,231,172, 17, - 46, 9,253, 18, 91, 14, 25, 58,202,121,127,242, 1,193, 23,223,108,190,217,107,228,172, 13, 30,193,243,246,122, 4,207,219,219, -107,228,172, 13, 95,124,179,249,230,254,228, 3,130, 33, 67, 71, 57, 39,244, 75,108,153,157,117, 43,242,145,186,132,245,216, 41, -224,242, 58,247,234, 30, 33, 77, 59,151,102, 90,253,217, 22,115,247,110, 67, 46,174, 95,191, 97,231,250,245, 27,118,118,239, 54, -228,226,234,207,182,152,211,206,165,153,122,117,143,144, 10,184,188,206,182,244,125,230,203,147,157,135, 14, 25,137,148,148,125, -166,221, 63,127,189,102,227,182,226,222,125, 71, 23,137,243,243, 46, 83,168, 55,195,195,241, 58,110,222,188, 41,211,235,245,125, -235, 11,112,175,143,115,198,244,201,117,197,213,175,238, 62, 61, 55,222,188, 9,243,241,227, 7,141, 39, 79,166,107,126,205,144, -200,174,100,151, 87, 86,200,181,247, 84, 10,185,222, 98,177,128, 90,204,204,229,203,171, 3,113, 27, 58, 71,221,187,247,193,169, - 19, 59,176,101,243,183, 50,139, 5,218,113,187,118,153,199,143, 95, 70,131, 91,180, 8,222,254,243, 14, 50,108,196, 40,103, 10, - 88,134,143, 25,233,242, 83,210, 79,164,101,120,203, 22,161,161,213,169,105,158,202,177,244, 23,112, 46,165,180, 74,126,255,254, -153,171, 95,126,169,243,126,230, 25, 55,174,183,183, 19,204,102, 98,189,190, 55,244, 98,177, 88,143,120, 92, 26,227,244,247,240, -120,152,156,156,140, 86,173, 90,193,223,223, 31,117, 99, 96,173,137,180,221,221,221,177,103,207, 30, 80,224,138, 45,156,113, 33, - 33, 87, 63, 90,189, 90,111,177, 88, 80, 85, 85,245,132,247,170,170,170, 10, 22,139, 5,135,126,249, 69, 47, 87, 42,183,216,218, -247,190, 76,166,114, 82,175, 94, 31, 14, 29, 58,212,112,247,238, 93, 88, 44, 22,212,245,100, 73, 36, 18,136, 68, 34,104,117,186, - 64, 66,136,192, 22, 78,201,145, 35,194, 6,214,106,212,226,113, 15,214, 95,113,222,255,109,104,212,131,101, 50,153, 16, 24, 24, -248, 72,233, 21, 6,131,241,200,171, 57, 43, 8, 41,165, 91, 9, 33, 71, 19, 19, 19,151,116,233,210,101,230,146, 37, 75,152,145, -145,145,144,201,100,112,117,117,133,151,151, 23,110,223,190,141,228,228,100,115,121,121,249, 6, 0, 43,108, 89, 10, 79, 41, 77, - 37,132, 12,107,219,182,109,210,130, 5, 11,156, 7, 14, 28,200, 14, 12, 12, 4,165, 20,233,233,233,216,187,119,175, 97,211,166, - 77,242, 26,113,101, 83, 80, 50,165,244, 24, 33,100,236,224,193,131,183, 79,157, 58,213,209,108, 54,179,243,243,243,161,211,233, - 96, 52, 26, 81, 88, 88,104, 72, 73, 73, 81,170,213,234,201,148,210, 99, 54,240, 93, 37,132, 68, 31, 63,126,124,234,185,115,231, - 86, 78,155, 54,205, 61, 33, 33,129, 99, 50,153,112,246,236,217,178,184,184, 56, 47,137, 68, 98,216,179,103, 79,133, 86,171, 93, -100, 54,155,109, 42,149, 67, 8,129, 92, 46,135,135,135, 7,116, 58, 29, 44, 22, 11,244,122, 61, 68, 34, 81,109,121, 35, 74, 41, -154, 19, 52, 95, 23, 38,147,137,105, 48, 24, 48,113,226, 68, 88, 44, 22,172, 93,187, 22, 38,147,169,217,100,206,206,206, 87, 50, - 50, 50,134,181,111, 95,157,160,157,201,100,214,142, 33, 30,143, 7, 15, 15, 15,184,187,187, 35, 37, 37, 5,108, 54,187,209,172, -248, 86,212,100,102,143, 35,132,116,187,113,227,198,115, 0,218, 27, 12, 6,127,179,217, 76, 24, 12, 70, 9,165,244,186, 92, 46, -255,222,214, 82, 57, 18,137,100,229,243,207, 63, 31,183, 99,199, 14, 17,139,245,191,159, 6,139,197, 2,143,199,131, 53,169, 37, -165, 20,122,189, 30,139, 23, 47,150,171, 84, 42,155,114, 55, 61, 13,136,239,216, 25,223,125,189, 78,116,242,212,209,178,155,185, - 56, 80, 55, 21,131, 8,192,185, 11, 51, 14, 72,171,190,107, 95,252,224,129, 40,190,227, 19, 90,168, 94,232,205,166,138,103, 38, -111, 8,172, 41,149,179, 50,255,222,253,207,119,108,126, 41, 15, 0, 62,253,108, 83,104,161,196, 48, 39,251, 86,206,200,111, 54, -156,238,172, 55,155, 42,108,225,252,159,104,217, 46, 3,133,150, 82,122,145, 16, 18, 18,217, 77,187, 40, 38,138, 51,162, 88,108, -124,168, 84,234, 95,167,148,214,187,244,189, 62,244,232,222, 27,167,142,253,132,109, 91,182,203,169,133,169,245,240,240,160, 0, -112,243,166, 7,189,121, 83, 74,255, 23, 47,236,162,242, 20,148,173, 88,180,112,230, 92,133, 66,241,249, 87, 31, 55,158,112,182, -109,187, 46,104,219,174, 11,102,189,254,174,115,116,155,168, 32, 0,216,181,139,154, 99, 34,200,193, 37,239, 45, 27,177, 98,197, - 50,200, 21, 58, 88,203,234,220,206,204,254,229,238, 93,106,219,234,158,255, 16,150,152, 76, 23, 49,119,110,132,186,178,210,179, -199, 59,239,120,176,222,122,139,209, 88,144,123,221,223,175, 45,156,151,175, 95,255,101,198, 75, 47, 61, 92,186,100, 73,226,134, -111,191,229,199,198,198,162,180,180, 20, 81, 81, 81,240,247,247,199,241,227,199,177,103,231, 78,149, 84,161, 88, 4,224, 27, 91, - 56,183, 30, 58,116, 59,178, 77,155,242,111,191,253,214,111,232,208,161, 68,165, 82, 65, 38,147, 65, 38,147, 65,167,211,161, 38, -145, 51,205,201,205,189,105, 52, 26, 55,216,194,217,227,157,119, 60,204,101,101, 14, 43, 58,119, 46,226, 88, 44, 31,141, 29, 51, -102,254,138,247,223,231,181,108,217,146,232,116,186, 90, 47,150,193, 96,128, 72, 36, 50,232,245,122,119, 0, 79,120,167,234,227, -228,109,218,100, 42, 43, 43,131,167,167,103,109,218,165,186,121, 5, 21, 10, 5, 40,181, 39,193,109, 14, 72, 67,247,112, 55, 55, -183, 43, 44, 22, 43, 0,104,188,182, 93,221,207,140, 70, 99, 81, 89, 89, 89,124,157, 54,253, 41,165,245,198, 59, 17, 66, 66, 1, -172,234,215,175,223,216,121,243,230,145,211,167, 79, 99,255,254,253, 52, 47, 47,111, 55,128, 69, 13, 93, 28,155,224,116,228,241, -120,111, 10,133,194,254,214, 84, 12, 2,129,224,134, 74,165, 58,161,211,233,214, 54,148,189,189, 9, 78, 39, 30,143, 55, 91, 40, - 20, 14, 80, 40, 20,237, 1,192,209,209, 49, 67,165, 82, 29,215,233,116,235,104, 3, 5,164,155,224,228, 59, 59, 59,175,244,240, -240,120,246,173,183,222,114, 79, 75, 75, 43, 57,117,234, 20, 71, 42,149,238,208,235,245, 13, 22,123,174,143,211,221,221,253, 10, -147,201, 12,248, 43,206, 17, 0,180,107,215, 46,101,248,240,225, 67, 39, 79,158, 12,163,209,136,111,190,249, 6,199,143, 31,255, - 37, 55, 55,119, 88, 67,219,212,199, 73, 8,241, 8, 8, 8, 56, 61,115,230,204,224,137, 19, 39, 10, 92, 93, 93,193, 98,177,160, - 82,169,112,231,206, 29,164,167,167,211, 3, 7, 14, 40,175, 94,189, 90,164, 86,171,251, 80, 74,203,155,226,252,163,168,143,147, -205,102,247, 14, 12, 12,252,121,233,210,165,142, 3, 6, 12,224,187,187,187,131,201,100,194,104, 52,162,164,164, 4,153,153,153, - 56,122,244,168,106,247,238,221,170,138,138,138,137,143,231,106,249,255,178,243,207,228,140,110, 69,222,123,172,128,115,131,217, -217, 27,107,107,139,157, 67,251,187, 14, 25, 59,182, 99,127, 0,216,179,231,242,137, 95, 78, 84, 53, 90,236,185, 49, 59,155,178, -213, 22,206,214, 17,204,165, 89,217,153,143, 36,162,108, 19, 29,147,211, 58,118,204, 7,182,112, 89, 51,185, 63,222,247, 58,217, -241,255,135,199,166, 83,173, 5,161,223, 93,180, 16,171, 86,126,136, 3,187,246,253,146,125,151,214,150,243,121, 26,199,210, 95, -201, 73, 72,117,113, 98,129,175,111,175,181, 22,203,194,107,153,153,162,186, 15,106, 86, 79,115,221,135, 73, 63, 63, 63, 73,113, -113,177,183, 45,156,195,190,248,194,160, 22, 10,121, 11, 63,250,168,183, 82,171,237,189, 98,197, 10,214,229,203,151,241,245,151, - 95,154,180, 69, 69,219,203,128,217,245,205,126, 52,198, 25, 60,123,182,195,219, 95,127,253, 66,104,120,184,215,115,207, 61,199, -102,179,217, 80,169, 84,120,240,224, 1,142, 29, 61,170,207,190,121, 51, 91, 46,151,143,160,148, 22,219,202, 57,236,139, 47, 12, - 46,161,161, 16,120,122,210,147,169,169,206, 51,222,124,115,102,139,144, 16,231,196, 65,131,216, 78, 78, 78,168,170,170, 66,126, -126, 62,246,237,219, 39, 81, 42,149,126,148, 82,179, 45,156,219,207,157,107,123,232,204,153,113, 31,124,240, 1, 55, 38, 38, 6, -206,206,206, 80, 40, 20,200,204,204,196,153, 51,103,116, 27, 54,108,144,201,100,178,153, 38,147, 41,185, 33, 59,237,120, 20, 13, - 10,172, 63,133,220,134, 19, 64, 8,137, 7,240, 94,205,191,239,211,166,107,250, 61,181, 23,136,122,218, 4,185,185,185,125,167, -213,106,169, 70,163,153, 65, 41, 45,252,167,217, 73, 8, 97,197,199,199,127, 45,145, 72,186, 81, 74,225,236,236,124, 62, 43, 43, -235, 85, 74,105,131,115,241, 13,113, 18, 66,152, 0,186,137, 68,162,206,142,142,142,189,117, 58, 93,235,154,105,182,155, 42,149, -234,140,193, 96,184, 8,224, 60,165,244,137,149, 16,255,159,125,175,177,115,128,159,159,223, 75, 22,139, 37,156, 16,226, 98, 54, -155, 97, 52, 26,165, 22,139,229,142, 76, 38,219, 4,224,248,223,109,231,159,197,217, 38,156,140,166, 12,180,174,253,178,145,184, -170,199,133, 3,177,224,102,214, 29,186,207, 86, 59, 9, 33,140, 81,131, 61, 63, 1,170, 87, 26,210, 38, 74, 14, 61, 34,176,108, - 16, 45,182,224, 17,206,112,214,243,148,208, 71, 56, 9, 37,133, 81,109, 71,111,179,133,171, 33,129,101, 43,218, 68,146,222,160, -232,102,161,184,120, 51,151,158,106,200,206, 63, 11,255, 6,206, 15, 9,113,251,210,213,245, 60,131,197,242, 1,192,168,241,182, - 88, 44,132,152, 41, 33,166,186,211, 88,117, 31, 40,155,226, 52, 0,177,108, 30, 47,208,108, 50,121,151, 2,162, 67,102,115, 7, - 45,165,202, 0,224,189,116, 74,111,255, 30, 59, 13, 64, 44,147,199, 11, 58, 68,233,200, 50,161,176,173, 68,163,241, 4, 64, 69, - 66,225, 77,185, 74,181, 69,171,213,126,245,248, 76,133, 45,156, 28, 30, 47,192,108, 50,121, 3, 0,131,197,146, 36,233,116,129, - 69, 78, 78,207,105,117,186, 96,145, 72,100,212,235,245,114,173, 86, 59,217,104, 52,158,108, 78,223,239,152, 76,209,231, 24,140, -158, 6,161,208,221, 64,136, 80,111, 50, 25,244, 6,195, 3,173, 86,123, 3,192,103,148,210,218, 52, 34,118,129,101, 3,172,171, -205,254,138, 23,128,254,118, 78, 59,167,157,211,206,105,231,180,115,218, 57,255,122, 78, 0, 2, 0, 65, 0,152,255,100, 59,255, - 43,175,166, 39,170,237,176,195, 14, 59,236,176,195,142,127, 60, 40,165,106,212, 19,115,101,199,223, 3, 2,160,222,149, 0,180, - 25,174,191,223,179,154,160, 41,126, 59,167,157,211,206,105,231,180,115,218, 57,237,156,255, 62,206,166,184,155,163, 63,254,209, -248, 43,221, 99,120, 74,220,146,118, 78, 59,167,157,211,206,105,231,180,115,218, 57,255, 94,206,127,219,235,143, 21, 16,252, 23, -131, 16,226, 77, 8,169,183,124,193, 31,105,107,199,211,135, 63,114,126, 9, 33,254,132, 16,255,102,182,127, 34,219,191, 29,118, -216, 97,135, 29, 79, 23,254,223, 5,150,173, 55,171, 63,120, 83,251, 67,130,135, 16,242, 33, 33, 40,174,126,145, 15,255,172,182, - 54,236,215,207,211,211,243,141, 54,109,218,108,247,241,241,153, 69, 8,241,106,230,246, 17, 66,161,112,157, 72, 36, 58, 45, 18, -137, 78, 11,133,194,117,132,144,136, 63, 98, 83, 29,110, 66, 8,153,225,224,224,144,234,231,231,247,144,199,227,165, 18, 66,102, - 18,210,140,154, 62,143,242,133, 17, 66,230, 18, 66,230, 17, 66, 34,155,222,226,127,240,142, 25,181,211, 43,102,212,117,175,152, - 81,153, 30,177, 35, 34,188, 98, 70,101,122,197,140,186,238, 29, 51,170,193, 50, 56,191, 23,127,228,252,214,108, 91, 88,253,106, -122, 91, 66,200,103, 4,120, 64, 8,138,254,232, 88,178,195, 14, 59,236,176,227,239, 69,179,130,220, 3, 2, 2, 6, 91, 44,150, - 73, 0,192, 96, 48,126, 42, 42, 42, 58,220,156,237,107,110, 56,111,215,188, 95, 67, 41, 93,248, 71,218,217,176,237,231,148,210, -249,205,180,209,155, 16,188,109,177, 80, 6, 0, 48, 24,228, 29,111,111,111, 1,147,201,124, 34,112,208,108, 54, 11, 8,193, 44, -139,165,186, 64, 37,131, 65,222, 38,132,172,163,148,138,155,179, 79,235,126,167, 76,153,242,249,186,117,235, 28, 4, 2, 1,238, -223,191, 63,112,230,204,153,221, 9, 33,115, 41,165, 37, 77,109,207,231,243, 39,117,234,220,109,238, 71, 31,127, 42,242,246,242, - 18,154,204, 22, 67,126, 65,129,112,241,194,249,157,249,124,254,186,198,138, 28, 63,102, 7, 1,240, 50,139,197,154,224,224,224, - 16,166,213,106,239,154, 76,166,221, 76, 38, 51,113,229,202,149, 49, 67,134, 12,113,144,203,229, 92,147,201, 20,190,109,219,182, -185, 63,252,240,195, 96, 66,200, 72,218,200,114,123,171, 7,135, 82,250,176,206,199,131, 11, 11, 11, 99,217,108, 54,194,194,194, - 8,128,219, 77,180,175, 5, 5, 34,178,206,238,138, 5,128, 54, 61,198,231,100,157,221,133,154,247,182,116,209,102,212, 55, 22, -248,124,254, 55, 26,141,230,129,245,251, 26, 59,159, 56,223,245,109, 75, 8, 89, 79,171,203,252,196, 0, 24, 83,211,116, 47,165, - 52,147, 16,226,227,192,227,189,169,209,106, 9, 0,242, 71,198,146, 29,118,216, 97,135, 29,127, 63,154, 37,176, 40,165,207,221, -185,115, 71, 96,177, 88, 16, 25, 25, 57, 5,128,205, 2,171,190, 27, 78, 66, 66, 66, 28,159,207,127, 36,107,177, 70,163,225, 18, -130,132,223, 35, 90,172,251,208,235,117, 12, 54,155, 11, 6,131,204,109,219,182,109,139,242,242,242, 52, 6,131,177,189,168,168, -168,170, 57,253,173,225,196,198,141, 27, 91,249,250,250, 62,145, 93,185,164,164,132, 59,114,228,136,102,241,189, 64, 8, 79,199, -227,117,230, 16,226,107, 54,153, 92, 0,128,197, 98, 85, 69, 58, 59,199,175,250,224, 3, 1, 33,196, 82, 81, 81, 1,141, 70,131, - 57,115,230,240,179,179,179, 71, 1,248,170, 9, 27, 91,117,233,218,125,206,209,163, 71, 90,203, 43,171,180, 27, 63,255, 46, 93, -195, 98,171, 90, 70,183,230,126,253,221, 22,151,151, 95,152,252, 58, 33, 36,131,214, 83, 54,228, 49, 30, 6,128,125,111,190,249, -102,155, 97,195,134,113, 21, 10,133,131, 70,163,105,177,125,251,246,197,241,241,241,162,246,237,219,115,127,254,249,103, 34,147, -201, 64, 41, 21, 68, 69, 69,209, 9, 19, 38,104,147,146,146,102, 1, 88,223, 0,231, 35,130,215,215,215,119, 9, 0, 48, 24,140, -186, 99,143,237,231,231,199, 7,128,146,146,146, 21,132, 96, 78, 77,251,122,197, 53, 1,114,219,244, 24, 15, 16,132,103,157,221, -229,208,166,231,120, 45, 40,238, 16, 32, 23, 0,252,253,253, 87, 0,117,242, 58, 61,138,155, 15, 31, 62,252, 93,181, 3,135, 13, - 27, 14, 74,233, 55,254,254,254, 41, 98,177, 56,134, 16,204,104,204,206, 71,108, 38, 4,238,238,238, 99, 1,124, 1,224,153, 91, -183,110,181, 1,128,168,168, 40, 54,128, 76, 23, 23,151, 14,186,106,113,101,135, 29,118,216, 97,199,191, 0,205, 21, 88, 28, 0, - 72, 75, 75, 3,165,148,251, 59,246, 87,123, 3, 33, 53, 69,138,125,125, 31, 13, 55, 41, 41, 41,193,233,211, 54, 85,179,177,105, - 31,239,191,255,190, 72, 42,149,246,255,254,251,239,123,249,251,251,127,242,240,225,195, 11,141,109, 76, 41, 21, 19, 66,214,212, -120, 28,192,227, 57,228,204,156, 57, 51,189,230,235, 22, 7, 15, 30, 20, 12, 31, 62, 92, 13,160, 0, 0,120, 60, 7,127, 38,147, -209,170, 58,168, 13,107, 26, 19,130,227, 9, 9,229,114,185,253,102,124,241,133,169,195,240,225, 44,161,167, 39, 1,128,130, 91, -183,220,215,124,252,113,247,170,188, 60,174,198,221,189,162, 66,165,210,228,228,228,128,199,227, 17, 38,147,217,161,169, 14, 11, -133,194, 55, 62, 88,181, 70, 40,175,148,106,116,114,165,158,105, 54,234, 28,249,124,115,105,169,184, 92, 36, 16,168, 23,190,183, -156,243,202,244,231,222, 0,240,106, 19, 84,179,230,206,157,219,186, 83,167, 78,254, 59,119,238, 36, 50,153, 12, 44, 22, 75,212, -190,125,123,196,199,199,155, 79,157, 58, 69, 66, 66, 66, 16, 19, 19,131,179,103,207,226,252,249,243, 36, 46, 46, 78,176,119,239, -222, 41,168, 71, 96,213, 35,170,231,118,237,218, 53, 80, 36, 18,105,229,114, 57,166, 77,155, 6, 0, 24, 48, 96, 64, 43,161, 80, -248,141, 82,169,116, 72, 78, 62, 48,182, 41,113, 45,206,220, 63, 1, 0,188, 98, 70, 93, 7, 16, 11,138, 59,146,204,253,109,235, - 52,105,125,251,246,237, 46, 85, 85, 85,181,193,134,214,194,226,189,122,245,106,234,112,214,194, 58, 22, 70,140, 24,254, 14, 64, -208,167, 79, 31,241,236,217,179,105,102,102,230,232,241,227,199, 37,228,230,222,105,208,206,199,199,209,164, 73,207,222,115,115, -115, 27,224,231,231,151, 11,128,197,102,179,173, 77,153,254,254,254,110, 49, 49, 49, 19, 69, 34, 81, 62,147,193, 8,161,160,180, -169,177,100,135, 29,118,216, 97,199, 63, 27, 44, 0, 32,132,212,102,146,165,148, 54,248, 20, 77, 8, 41,207,200,200,240,213,106, -181, 32,132,148, 55,212,174, 14,215,137, 58,239,197, 76, 38,243,107, 6,131,188, 74, 8, 65, 76, 76,236,189,181,107,215,214, 87, -115, 75, 31, 19, 19,123,143,201,100,180,164,148,130, 16,198, 55, 22,139, 89, 92, 31,103, 61,251, 19, 19, 66,214,112,185,188,183, - 1,192,199,199, 55,239,240,225,195,250,113,227,198,225,227,143, 63,230, 44, 88,176, 96,126,112,112,240,172,251,247,239,151, 54, -100,103,205,255, 11,189,189,189, 5, 27, 55,110,108, 53,115,230,204,244,226,226,226,133, 0,224,231,231,247, 33,128,104, 0, 5, -117, 62,195,134, 13, 73, 15,167, 79,159,158, 35, 22,139, 23, 54,196, 57,150,144,176,224,168,168,126, 43,210,210, 40, 67,167, 35, -229,191,254, 42, 47, 19,139,141,119,203,202, 4,155,175, 92, 25,182,248,195, 15,217,129, 65, 65, 56,157,156,236, 81,174, 86,151, -201,116, 58,173, 88, 44,166, 38,147,233,124, 67,156,117,208,198,203,211, 83,240,237,103,223, 92,118,100, 51, 45,222,254,254,132, -229,230,194,102, 8,156,185, 12, 22, 75,219, 50, 56,156, 3,160, 77, 3,199,172,150,147,195,225, 76, 25, 56,112,160, 32, 41, 41, -137,196,196,196,192,197,197, 5,191,254,250, 43, 50, 50, 50, 96, 52, 26, 25, 85, 85, 85,232,216,177, 35, 62,250,232, 35, 4, 5, - 5, 65, 42,149,162,176,176,208,131,203,229,122, 54,114, 60, 31, 17,188,243,231,207, 71, 96, 96, 32, 76, 38, 19, 42, 43, 43, 97, - 50,153, 32, 20, 10, 1, 0, 5, 5, 5, 56,120, 48,185,222, 14, 54,118,222, 27,104,143,174, 93,187, 42, 8, 33, 55, 31,251,234, -102,157, 54, 77,114,250,250,250,110,145, 72,202,226,250,246,237, 11,153, 76,166, 95,186,116, 41,218,182,109,139, 86,173,234, 15, - 27,123,108,204, 47,228,241,120,155,130,130,130,222,123,235,173,183,220,220,220,220,160,211,233, 94, 47, 41, 41,193,204,153, 51, - 1, 0, 67,135, 14,141, 98,177, 88,155,167, 77,155,134, 22, 45, 90,220, 82, 40, 20,183, 51, 50, 50, 22, 40,149,202,236,223,219, -119, 91, 96,231,180,115,218, 57,237,156,255, 52, 78, 91,181,200,211, 2, 22, 80,221, 17, 66, 8,109,170, 67,148,210, 42,127,127, -127, 95, 62,159, 15, 74,105,179,167,219,204,102,243, 44, 15, 15, 15,201,194,133, 11,123,180,106,213, 74, 63,107,214,172,204,252, -252,252, 69,117,219,132,132,132,172,252,242,203, 47,145,147,147, 83,240,225,135, 31,158, 45, 47, 47,111, 86,157, 49, 74,233, 2, - 66,200, 90, 0, 40, 41, 41, 41, 79, 78, 78,110,155,150,150,246,234,231,159,127,238,249,218,107,175,113,222,120,227,141,201, 0, - 62,110,138,135,201,100,170,235,155, 22,172, 15,190,190,190,250,250, 98,180,172, 24, 78, 8,223,137,203,237,187, 34, 45,141,234, - 11, 10,212, 63,124,250,169,227,183,151, 46, 45, 53, 82,234,237,229,229,133,158,221,187, 43, 29,152,204,114, 73,105,169,197, 43, - 44,140,153,127,248,176,135,134,203, 45, 78, 74, 74,146, 85, 84, 84,236,111,106,255,132, 16,185,217, 98, 49, 56,250, 7,154,198, -141, 30,216,230,242,197,140, 91,142,158, 30,140,248,184,152,216,236,156,130,171,212,108, 54, 18, 66,234,173,153, 88, 23,206,206, -206,173, 42, 42, 42, 32,151,203,225,233,233,137,181,107,215,194,199,199, 7,106,181, 26,191,253,246, 27, 13, 8, 8, 32,105,105, -105, 8, 8, 8, 64, 89, 89, 25,244,122, 61, 20, 10,133, 68,167,211,213, 91, 59,145, 82, 42,102,177, 88,155, 24, 12,242, 18, 0, -180,104, 17,114,243,155,111,190,209, 2, 64,235,214,173, 49,122,244,104,236,217,179, 7,217,217,217,176, 88, 44,160,148,106, 3, - 2, 2,111, 50, 24,164,117,245,230,191,223,139, 99, 45,193,243,240,225,195, 49, 77,183,126, 18,132, 16,226,227,227, 51, 58, 42, - 42,106,242,164, 73,147,244,108, 54, 27,106,181, 26,106,181, 26, 55,111,222,212, 15, 28, 56, 80, 60, 98,196,112,239,148,148,148, - 70,237,212,233,116,247,252,252,252,230,207,157, 59,119,237,134, 13, 27,156, 22, 47, 94, 12,179,217, 12,139,197, 82,251,215,250, -126,255,254,253,200,203,203, 91, 87, 87, 92,217, 97,135, 29,118,252, 87, 96,171, 22,121, 90,240,255,158,201,157,201,100,126,123, -236,216,177,246,189,122,245, 98, 37, 36, 36,196, 4, 4, 4,196, 20, 21, 21,101, 2, 64, 64, 64, 64,204,160, 65,131, 98,188,188, -188,176,110,221, 58, 53,147,201,252,246,247,236,227,177,155, 93,186,175,175,239, 39,123,247,238, 93, 51, 99,198, 12,248,248,248, - 68,255, 41, 29,105, 6,156,120,188,184,105,107,215,154,216, 70, 35,227,139, 79, 62,113,250, 52, 53,117,205,206, 93,187, 88, 93, -187,118, 37,148, 82,220,184,126,157,255,209,250,245,130,137,163, 70, 21,220,206,203, 51, 29, 56,122,212, 40,126,248,176,242, 97, - 89,217, 18, 74,105,101, 83,252, 70,163,241,183,220, 59,185,254, 61,250,118,243,251,245, 82, 86,198,152, 81, 67,250,177, 89, 12, -114,167,224,225, 21, 95, 31, 15,231,211,169,199,181, 70,163,241,183,166,120, 84, 42, 85,190,201,100,114,163,148,122,158, 62,125, - 26,158,158,158,168,170,170,130,209,104,132, 94,175,215,171,213,106,135,138,138, 10,104,181, 90,232,116, 58, 56, 57, 57,225,198, -141, 27, 98,147,201,116,170, 33, 78,147,201,244,178,131,131,195, 42, 74, 41, 91,167,211, 21,159, 56,113, 2, 28, 14, 39,208,217, -217,121,161,209,104, 68,113,113, 49,206,157, 59,247,161,193, 96,120, 96,221,134,203,229,121,234,116, 58, 83, 67, 65,238,182,128, -210,223, 95, 99, 51, 32, 32,192, 47, 36, 36,100,238,130, 5,111,135,183,109,219, 30,229,229,229,176, 88, 44, 16,137, 68, 80,171, -213,112,114,114, 66,183,110,221,210, 87,174, 92, 89, 73, 41, 22, 52, 37, 2,139,139,139, 43,130,130,130,150,204,156, 57,115,110, -120,120,120, 16, 0, 68, 68, 68, 96,224,192,129, 56,124,248, 48,114,114,114,160, 84, 42,205,151, 47, 95, 62, 88, 92, 92,252,239, - 72,176,103,135, 29,118,216,241, 31,199,255,187,192, 18,139,197,101, 1, 1, 1, 71,174, 94,189, 58,108,194,132, 9, 56,125,250, -244,243, 0,230, 2, 0,143,199,123,126,194,132, 9,184,122,245, 42,110,221,186,117, 68, 44, 22,151,253, 25,251,228,114,185, 90, -189,190,218, 25,229,224,224,224,208,204,205, 91,212, 76, 13, 2, 64,139, 70, 62,107, 16, 12, 22,203, 55,118,208, 32, 86, 85, 70, -134,124,227,197,139,239,111,223,190,157,213,163, 71, 15, 98, 52, 24, 96,182, 88, 16, 26, 26, 74, 18,250,247, 23,254,184,125,187, -155, 89,165, 74,251,224,157,119,126,253,110,218, 52,101, 14,165, 5,182, 24,168,211,233,214,191,254,234,203, 3, 78,166,166,249, - 69, 69,133,186, 31, 57,158,154,238,238,230, 44,104, 21, 17, 33,172,172,170, 50, 47, 90,240, 54, 75,167,211,125,209, 20,143, 70, -163,217,119,226,196,137, 81,129,129,129,158,153,153,153,208,235,245, 48,155,205, 72, 72, 72, 0,165,148, 7,192,194, 98,177,112, -235,214, 45, 24, 12, 6, 73,110,110,110,241,157, 59,119,120, 0, 86, 55,198,171,213,106,239,215,253, 63, 40, 40,168,199,208,161, - 67, 97, 50,153, 48,104,208, 32, 36, 39, 39,247, 40, 46, 46,222, 88,167,201, 35,237,127, 15,106, 98,175, 90,251,251,251,239,173, -249,200,166,224,118, 95, 95,223,200,136,136,136,149, 31,126,248, 33, 59, 48, 48, 16, 22,139, 5,110,110, 46, 80,169, 52,168,168, -168, 64,116,116, 52, 2, 3, 3,241,209, 71, 31, 1,213, 43, 0,109,242,176, 21, 22, 22,230, 3,152, 21, 29, 29,205, 81, 40, 20, - 49, 26,141,102,105, 66, 66, 2,210,211,211,241,219,111,191,189,174, 82,169, 42,133, 66,161,209,207,207,111, 18,131,193, 16, 26, - 12,134,100,137, 68, 34,249,253, 71,192, 14, 59,236,176,195,142,191, 19, 54, 11, 44,111,111,111,129,131,131,195,179, 47,189,244, -146,139,197, 98, 1,135,195,137,245,240,240, 88, 85, 94, 94,174,108,238, 78,213,106,245,206,237,219,183, 15,252,236,179,207, 56, - 67,134, 12, 9, 11, 8, 8,232, 4, 0, 99,198,140, 9,115,116,116,196,246,237,219, 13,106,181,250, 79,203,105,100, 52, 26,123, -117,236,216, 17,149,149,149, 40, 40, 40,200,108,206,182, 7, 15, 30, 20,160, 58,238,170,209,207, 26,131, 73,175,119,117,241,247, -103, 60, 76, 77, 53, 84,202,229,190,189,122,247, 38, 70,131, 1, 12, 6, 3, 21, 21, 21, 40, 44, 44,132,179,139, 11,185,149,155, - 43,218,244,246,219, 7, 91,180,107,199, 53,235,245,238,182,242, 83, 74, 85,132,144,231, 95,159,245,218,190, 29, 59,126,242,144, - 74,229,121, 14,124,190,158,199,101,123,191, 49,235, 53,115,101,101,229, 84, 74,169, 45,231,105,245,142, 29, 59, 6, 13, 26, 52, -232,122, 80, 80,144, 87, 89, 89,153,143, 84, 42, 53, 87, 86, 86, 50, 81, 29, 75, 69, 0, 32, 53, 53, 21,114,185,220,100, 54,155, -211, 0,172,160,148,218, 52,149, 10, 0,110,110,110,142,125,251,246,237,226,237,237, 13,185, 92, 14, 15, 15, 15,196,197,197,117, -113,115,115,219, 89, 89, 89,169,176,149,199, 22, 28, 63,126,220,145, 82,218,133, 82,138, 65,131, 6,217,180, 13, 33,100,220,208, -161, 67,217, 12, 6, 3, 26,141, 26, 60,158, 3, 68, 34, 39, 56, 58, 58,163, 85,171, 86, 40, 46, 46, 70, 98, 98,162, 33, 55, 55, -119, 91, 73, 73,201, 47,205,181, 73, 38,147, 13,232,218,181,235, 75,175,190,250, 42,204,102, 51, 70,142, 28,137, 7, 15, 30,188, -151,159,159,127,208,195,195, 99,212,139, 47,190,232,230,238,238,142,121,243,230,241, 1,172,109, 46,191, 29,118,216, 97,135, 29, -255, 12,212, 10,172,198,230, 60, 3,254,143,189,243, 14,143,162,248,255,248,123,118,175,230, 82, 46,189, 23, 66, 75, 66, 8, 1, -164,215,128,244, 34, 16,154, 8, 42, 22, 64, 44,136, 34, 32,126, 5,197, 66, 81, 1, 11, 29,145,222,130, 32, 2, 2, 65, 36,244, - 22, 33,144, 0,129, 4, 8,185,244,222,175,237,238,252,254, 72, 49,196, 36,119, 23,162, 63,197,125, 61,207, 61,119,187, 55,243, -222,217,107,251,190,207,124,102,198,219,187,163,179,179,243,155,182,182,182,246, 39, 78,156,176, 6,128, 30, 61,122, 64, 16,132, -181,158,158,158,171, 82, 83, 83,207, 90,114,208,188,188,188, 66, 15, 15,143,159,206,159, 63, 63, 54, 60, 60, 28,145,145,145, 47, - 0, 64,120,120, 56,206,159, 63,143,123,247,238,253,148,151,151,103, 50,103,200, 28,188,189,189, 7,135,133,133,133,119,236,216, - 17, 7, 15, 30, 4,207,243,231, 76,215,250,131,234, 35, 6, 81,203, 40,194,202,125,102,137,177, 44, 8, 33,224, 56, 14, 0,144, -157,149,133,248,219,183,145,155,151, 7,157, 86,139,146,210, 82, 62,192,223,191,172, 64,175,151, 18,192,162, 62, 46, 74,105,146, -141,141,205,195,210,210, 18, 87, 71,103,135, 50,107,165, 18,249,133, 5,178, 43,151, 47, 20, 81, 74, 19,204,212,208, 19, 66,122, -255,242,203, 47,243, 89,150, 29,103, 99, 99,131,233,211,167,179, 97, 97, 97,144,201,100,208,233,116,200,207,207,199,182,109,219, -178, 56,142,107, 10, 0,132, 16, 27,107,107,235,205, 44,203,106, 10, 11, 11,255,103,234, 24, 10,133, 34,236,153,103,158, 97,117, - 58, 29, 22, 46, 92,136,249,243,231, 99,208,160, 65,236,165, 75,151,194, 0,212,158,225,222, 0, 4, 65, 64,255,254,253,171, 39, -185,215, 76,118,175, 21,169, 84, 26,208,162, 69, 11,100,101,101, 33, 43, 43, 11, 46, 46, 46,240,244,244,132,155,155, 27,150, 47, - 95, 78, 87,172, 88, 17,197,243,252,214,244,244,116,147,131, 60,106,226,237,237, 61,225,197, 23, 95,124,118,236,216,177, 40, 41, - 41,193,137, 19, 39,208,189,123,119, 44, 89,178,196,229,244,233,211,175,116,236,216, 17, 82,169, 20, 81, 81, 81, 48, 24, 12,169, -150,234,139,136,136,136,252,219,121, 82,242,175, 0, 19, 17, 44, 7, 7, 7, 59,165, 82, 57,117,216,176, 97, 61, 70,142, 28,137, -207, 63,255,172,234, 57,134, 97,176,101,203, 22,155,125,251,246,205,241,241,241,233, 45, 8,194,234,148,148, 20,147,249, 66,149, - 8,130,176,111,251,246,237, 67,186,118,237,170,234,211,167, 79, 51, 0, 80, 40, 20,250,237,219,183,151, 10,130,176,207,210, 19, -169, 57,233,163,151,151, 87,168, 68, 34, 9, 31, 54,108, 88,232,228,201,147, 17, 27, 27,139,109,219,182,221, 13, 8, 8, 56, 99, -161,244, 3, 19,163, 8, 43,247,213, 9, 43,151,231,228,167,167,219,219,248,250, 74, 29,108,109,211, 14, 30, 60,232,211,175, 95, - 63,146,156,156,140,188,188, 60,104,181, 90, 92,190,124, 89,144, 0, 73, 18, 7, 7,146,116,254, 60, 97,229,242, 28, 75, 95, 3, - 31, 15,135,150, 31,206,157,214, 68,171,213,182, 46, 40, 40,224,164, 82,169,212,219,221, 62,217,116,205, 63,160,148,234,172,173, -173, 59, 0,144, 8,130, 80,234,232,232,168, 58,118,236, 24,228,114, 57, 8, 33,104,211,166, 13,148, 74,165,204,218,218,250, 33, - 0,184,187,187,203,215,174, 93,171,158, 56,113,226,105, 83,218, 97, 97, 97, 18, 63, 63,191, 1, 1, 1, 1, 56,119,238, 28,110, -222,188,153,114,225,194, 5,175, 14, 29, 58,192,203,203,107, 64, 88, 88,216,225,147, 39, 79,114,150,158,119, 29,231,209,160, 36, -119,158,231, 41, 33, 4, 12,195, 64, 16, 4,100,101,101,161,105,211,166, 88,185,114, 37,150, 47, 95,254,109, 67,115,164,130,131, -131,101,237,218,181, 11, 31, 59,118, 44, 18, 18, 18,176,104,209,162,188,204,204,204,115,199,142, 29, 27, 60,125,250,116,182,123, -247,238,200,201,201,193,198,141, 27,185,223,127,255, 61, 34, 35, 35,195,226,239,128,136,136,136,136,200, 63,135, 58, 13,150,151, -151,215, 80, 71, 71,199, 87,198,143, 31,207, 6, 6, 6, 34, 35, 35, 3, 69, 69,197,218,208,208, 16, 1, 96,168, 92, 46, 51, 88, - 91, 91, 99,202,148, 41,104,211,166, 77,167, 57,115,230,116,116,119,119,223,146,158,158,190,215,156, 3,103,100,100,148,122,120, -120, 68, 76,159, 62,125,241,213,171,191, 55, 5,128, 75,151, 46,221, 75, 77, 77,157,155,145,145, 81,231,136,188,218,168, 54,153, - 37,177,178,178,186,216,178,101,203,251,131, 7, 15,182, 27, 57,114, 36, 92, 92, 92, 16, 29, 29,141, 37, 75,150,220,209,235,245, -243, 27,235, 2,110, 9,156, 78,151,126,101,255,126,219,176,231,158,179,155, 49,116,232,151,175, 79,159,190,236,195, 15, 63,148, - 4, 6, 6,146,210,210, 82, 92,188,120,145,238,221,187,215,248,195, 39,159,172,128,181,181,244,252,222,189,114,189, 94,159,100, -201, 49,188,189,189,123, 15, 25,212, 59,240,203,101,223, 64, 91, 86,140,139,231, 14, 33, 47, 47, 11,107,215,253, 24,232,237,237, -221, 91,163,209, 68,153,171, 69, 8, 9,136,140,140,116,165,148, 66, 46,151, 99,225,194,133,240,244,244,132,157,157, 29,138,138, -138,240,206, 59,239,168,223,126,251,109, 53, 0,196,198,198,194,198,198,198, 44,221,219,183,111, 63, 53,109,218, 52, 21,207,243, - 56,114,228,136,129,101,217, 47, 35, 35, 35,151,182,109,219, 86, 22, 22, 22,166,250,232,240, 3, 78, 0, 0, 32, 0, 73, 68, 65, - 84,225,135, 31, 58, 0,168,119,158, 50,115,105,104,146, 59,207,243, 15,142, 29, 59,214,102,220,184,113, 84, 34,145,144,252,252, -124,168,213,106,172, 92,185,178, 52, 45, 45,173,193, 19,180,229,228,228, 72, 91,183,110, 45, 19, 4, 1, 17, 17, 17, 72, 73, 73, -121, 47, 35, 35, 35,203,211,211,243,200,172, 89,179,166, 6, 6, 6,122,223,186,117, 43,165,172,172,108, 77,106,106,170,166,161, -199, 17, 17, 17, 17, 17,249,103, 80, 95, 4,235,185, 35, 71,142,176,130, 32, 96,221,186,117,136,142,142,166,217,217,217,243, 9, - 33,155,237,236,236,248,236,236,236,231, 94,125,245,213,145,243,231,207, 39, 61,123,246,196,249,243,231, 73,211,166, 77,195, 1, - 84, 25, 44, 66, 72,191,250,230,202, 40, 40, 40,184,156,145,145,222,180,218,196,146, 77, 21, 10,229,229,250, 26, 92, 83,179,230, -100,150, 44,203,116, 94,184,112, 97,137,135,135,135,254,198,141, 27, 88,179,102,141,112,229,202,149,223,228,114,249,218,212,212, - 84,157, 57,154,141, 65,117, 77, 57,199, 69,111,157, 53,171,213, 83, 35, 70, 8,175,188,251,110,177,204,202,234,173, 47,191,249, -102,118,126, 81,145, 39, 8,161, 78,106,117,210,186,133, 11, 23, 13,122,230,153,226,216,168, 40,229,213,200, 72,169,139,209,120, -205,146,118,106, 52,154,168,150,205,125,177,105,253, 50, 24, 12, 58,164,165, 36, 1, 0,178,115, 10, 80,159,185,170, 77,147,227, -184,130,209,163, 71,203, 0, 88, 77,154, 52, 73,158,153,153,137,230,205,155, 3, 0, 10, 11, 11,113,232,208, 33, 4, 5, 5, 1, - 0,174, 95,191, 94,245,216, 84, 59,109,109,109,251,245,234,213, 11, 73, 73, 73,136,139,139, 59,151,146,146,146,239,229,229,117, -238,225,195,135, 97, 29, 59,118,196,222,189,123,159, 70, 29, 6,203,210,247,200, 28,131, 85,199,185, 47,222,183,111,223,216,243, -231,207, 15,123,247,221,119, 37,125,251,246, 5, 0,148,148,148,104, 41,165,124, 67, 52,171, 99, 52, 26, 43, 39, 61, 45, 5,128, - 10, 51, 85,111,215,234, 95,253,249, 20, 53, 69, 77, 81, 83,212,252, 39,104, 62,105,212,103,176, 56, 65, 16,112,242,228, 73,252, -248,227,143,188, 94,175,127, 63, 45, 45,237,118,181,231,127,240,241,241, 57, 29, 30, 30,254, 85,124,124, 60, 27, 23, 23, 7,115, - 46, 64,213,209,106,181,198,154, 75, 5,107,181, 90,163, 37, 26,181,177,105,211, 38,164,167,167, 27,146,147,147,143,115, 28,183, -239, 49, 71, 35, 62,246, 40,194, 31, 40,213, 61, 71,200,241, 5, 61,122,244,159, 31, 25,169,120,101,222, 60,221,139,147, 39,191, -199,235,245, 70, 86, 38, 19,228,214,214, 12,175, 80, 72, 99,163,162,148, 95,191,246,154, 99,153, 78,119,100,171, 5,137,227, 64, - 85, 4, 11, 47,190, 50, 19,101,213, 34, 88,231, 47,199,195,210, 8,150, 86,171,109, 13, 0, 86, 86, 86, 15, 1,184, 63,255,252, -243, 16, 4, 1,101,101,101, 40, 42, 42, 66,106,106,106,193,228,201,147,121, 0,176,182,182,150,132,135,135,219,153,163,219,164, - 73, 19,119,150,101,113,248,240, 97, 40, 20,138, 19, 0,160, 80, 40, 78, 68, 70, 70,134, 77,152, 48, 1, 62, 62, 62,190,149,147, -160,212,167,227, 22, 50,114, 55, 5, 90,130,160, 5, 0,128,160,133,107,200,200, 24, 2,220,169,152,229,253,102,251,246,237, 1, - 51,243,174,170,147,149,149, 85, 2, 96,163,155,155,219,161,247,222,123,239,249, 46, 93,186,244,156, 63,127, 62,161,148, 62,246, -194,232,148, 82,240,188, 69, 95, 17, 17, 17, 17, 17,145,127, 41,117, 26, 44, 66,200,206, 62,125,250, 60, 75, 41,101, 25,134,217, - 86,195, 92, 1, 0,146,147,147,239,121,123,123,175,243,247,247,175, 90, 0,218,146,131, 87,204,188,190,132, 97,200,236,242,109, -203, 39,150,172,182, 36,201,108, 0,132, 97,216,205,191,255,254,251,188,135, 15, 31,102, 89,106,248,106,163, 49, 70, 17, 2,192, -118, 74,239, 63, 75,200,209,119, 67, 66,250, 13,122,237, 53,132, 14, 26,100,231,233,231,199,151, 25, 12,194,245, 51,103,200,185, -136, 8,217,213,200, 72,105,153, 78,119,228, 71, 74, 31, 90,218, 78,141, 70, 19,213,188,153,247,177, 49,225, 67, 6, 52,243,247, - 4, 0, 36,222, 79, 69,118,110,193, 49, 75,204, 85,117,180, 90,237,136,149, 43, 87, 30,144,201,100,146,234, 75,206, 24, 12,134, -220, 74, 19, 70, 8,241, 92,183,110,221, 78,134, 97,146, 76,233,221,190,125,251,216,130, 5, 11, 6,221,187,119,239, 84,114,114, -178, 6, 0, 18, 19, 19, 53,158,158,158, 63,166,166,166, 14,126,248,240,225, 47,166,204, 21,240,167,197,158, 17,123,102,143, 18, - 64,155,202,197,158, 27,186,214, 96,117, 42, 76,249,151,222,222,222, 63, 13, 30, 60,248, 89, 66, 72,186,201, 74,245, 96, 99, 99, -195,149,149,149,113,130, 32, 72, 12, 6, 3,181,177,177,249,219,187,170, 69, 68, 68, 68,254,229,116, 4, 80,185,114, 72,101,224, -196,165,198, 99, 61,128,234, 75,249, 85,110,103, 1,184, 92, 77,163,250,126, 83,117, 1, 32, 27, 64, 76,197, 62,179,168,211, 96, -105, 52,154, 95, 96,198, 98,206,230,150,171, 11, 74,233,251,132,144,175, 43, 30, 55,104,214,238,234, 26, 28,199, 53,202,250,109, - 12,195,220, 31, 62,124,184, 69,229, 77,149,217, 73,105,210, 91,132,108, 57,248,237,183,237,142,172, 89,227,197,115,156, 19, 1, - 40, 43,151,231,232,245,250, 7, 46, 70,227, 53, 75, 35, 87,213, 73, 72,212, 12, 4,128,128,128, 0,122,231,206,157,199, 30,141, - 65, 41,189, 6,192,199, 68,153, 84, 0, 61,205,209, 75, 78, 78, 62,128, 90, 70, 10,166,166,166,254, 12,224,103,115,219, 85,181, -216, 51,192, 8, 68, 24,211,186,199,216, 8, 0, 66,229, 98,207,141,137, 70,163, 73, 4, 96,209,106, 2,181,145,144,144,160,247, -247,247,223,191,120,241,226,145, 49, 49, 49, 7,147,147,147, 27,252, 62,139,136,136,136,252, 7,233, 8,192,133, 16,114, 16, 0, - 40,165,195, 0,128, 16,114,176,230,227,202, 50,149,229,170,151,169,212,168,185,191,190,186, 0, 48,119,238,220,121,139, 22, 45, - 82, 1, 48, 59, 23,247,111,159,104,180, 54, 26,106,172, 26, 91,163, 58, 26,141,102,189,233, 82,150,243, 77,185,129,106,148, 68, -238,186,136,143,143,127, 98,134,185,214, 70,229, 98,207,213, 8,249,127,105,136,133,220,191,127,127, 75, 88, 88,216,142,228,228, -100, 49,122, 37, 34, 34, 34, 98, 25, 46,181, 25,162,218, 10,214, 98,170,234,164,182,114,181,109, 19, 66, 14, 46, 90,180,200,164, - 94,117, 30, 59,175, 68, 68, 68,196,124,254, 63, 70,177,138,136,136,136,136,212, 78,205,168, 21, 80,110,186,106,110,207,157, 59, -119, 30, 44,232, 30, 4,202,103,230,238, 87,199, 65,205, 30, 29, 64, 8,169, 85,163, 62, 76,233,139,154,162,166,168, 41,106,138, -154,162,166,168,249,228,105,154,210,174,163,254,208,186,186,244,234,235, 46,172,249,216, 84, 93, 51,202,154,191,130, 71,101,242, -242, 95,113, 3,208, 79,212, 20, 53, 69, 77, 81, 83,212, 20, 53, 69, 77, 81,243, 49,111, 29, 41,165, 67, 81,190,202, 9,165,148, - 14,165,148, 14,154, 59,119,238,251,149,251,230,206,157,251, 62,165,244,233,202,114, 21,101,170,234, 84,238,171,121, 95,115,159, -137,178,102,183,249, 31,145,131, 37, 34, 34, 34, 34, 34, 34, 34, 82, 15,151, 1,116,164,127, 68,151,178, 0, 92, 95,180,104, 81, - 94,181,220,168, 44, 0,215, 0,180,173, 40,151, 5,252, 41,167, 74, 95,177,173,175,165,140,222,156,178,230, 34, 26,172, 58,104, -231,193,126,226,235,237,218, 1,168,136,242,149, 79, 14, 9,161,220,185,131, 86, 88,120, 8, 2, 40,165, 72,205,204,143,142,201, -160, 31, 54,244,120,129, 94,196,209, 85,169, 92, 33, 80,218,163, 98, 87, 84, 65,142,110,230,141, 2,154,111,174, 70, 43,119,210, - 74,201,224, 61,129, 34, 20, 0, 24,130, 24,173,128, 47,110,166, 83,139,231,131,170, 9, 33,132,180,118,193, 20,185,149,106,188, -218,222,161, 69, 94, 94,246, 29,131, 86,183, 39, 46, 11,107,171, 94, 11, 11,104,238, 72,186, 8, 20,243, 0, 48, 82, 6, 95,197, -231,208, 6,207,146, 46, 34, 34, 34, 98, 33,236, 99,214,175,109, 10,160,199, 29, 92,212,176,229, 39,254, 91,212, 54, 17,249, 37, - 51,203,253,237, 88,100,176, 90,187,146,215, 64,240, 17, 0, 10,138,143, 99, 51,233,106,139,234,123,146,126, 74,150,221, 0,128, -213, 26,248,119,169,128, 83,181,149, 35, 12,122, 41,101,236, 87, 0, 4, 45,207,191, 28,155,106,126, 62, 88,136, 55, 25, 36, 17, -152,173, 2,165, 82, 94,160,155, 65,113,208, 70,134,179,231, 53, 84,107, 73, 91,125,189, 93, 59,236,191,148, 54,224,183,213, 51, -208, 57,180, 57, 40,207, 1,130, 17,170,158,239,225,215,229,207,163,115, 43, 95, 80,193, 8, 8, 28,108, 6,127,137,193, 33,234, - 6,127, 57, 2,189,136,163,159,179,235,141,245,235, 55,184,123, 54, 11, 38, 2,103,192,237, 75,199, 38,190, 61,123,126,223, 16, - 53, 9, 49,199,100,181,245, 36,175, 52,111, 26,248,222,204,143,150,177,158,158, 62,214, 60,167,227,210,239,221,108,255,205,210, -249,123,219,122,146,175,174,165,210, 13,230,180,133, 16, 66,130, 93, 48, 85,162,144,143,181, 82, 90,183, 40, 45, 45,186,203, 27, -140,123, 66, 60, 37,131,190,248,114, 69,187,176,254, 67,108,248,162,116,198, 40, 32,120,247,174,157,126,223,174, 92, 53,132, 16, -242, 12,165, 84,176,228,156, 5,138,217,241, 91,166, 12,145, 74, 88,210,234,165,245, 44, 44, 24,250, 90,157, 96, 55, 50,129, 80, -211,211, 68, 80,130,211,113, 25,212,162,121,218, 42,105,229, 70,190, 39, 20, 1, 32,136, 32, 20, 59, 99, 51,105,102, 67,116, 68, - 68, 68,254,185, 48, 12,243,155, 32, 8,125, 26, 83,147, 16,210,133, 82,250,151,142, 26, 23,249,231, 98, 89, 4,139,224,211,216, -132,100, 7,240, 6,180, 14,104,246, 9, 0,139, 12,150,146,101, 55, 95,190,147,225, 14,206,128,245,159, 77,223,165, 55, 2,156, -209, 0,158, 51,130,231,140,224, 56, 3,120,163, 17,212,168,195,252,141,191, 1,250, 34,116, 8,105,185, 25,128,135,185,199,144, - 82,102,107,244,153, 99,142, 68, 95,128, 29,171, 23,189,153,156, 85,252,230,241,152,212,236,214,110,228,253,184, 76,252, 96,137, - 17,248,109,205, 12,108,219,119, 72,243,245,247, 37,183, 4, 74,225,104,103, 21, 56,113, 88,172,207,150,159,126, 75, 94,177, 89, -123, 11, 0,212,214,242,192, 23, 98,238,248, 90,242, 58,212,196, 85,169, 92,177,118,213,183,238, 30, 78, 86,132, 59,183, 24, 28, -207,195,199,111, 40,251,254, 27, 19, 61, 62, 93,190, 97, 57,128, 23,235,171, 31,228, 70,130, 3,154,183,122,119,243,161,115,190, -165, 69,153,250, 99,219,230, 37, 80, 29,140,238, 94,173,164,159, 44, 90,198,126, 48,103,198, 59, 65,110,228,226,173, 12, 26, 87, -159, 14, 33,132,105,229,138,159, 22, 45,254, 50,180,239,224, 97, 54, 66,113, 22,171, 45, 41, 14, 88,191,113,195, 71, 65,161,157, - 84, 61, 67,188,101,153,123,166,145,178,162, 92, 24, 24,165,162,111,235,126,118,101,147,158, 53,174,223,180,237, 13, 0,223, 88, -114,206,124,181,238,105, 65,104,248,191, 73, 66,209,243,234,133,223,166,242,169,151, 65,121, 35,192, 27,170,238,193, 27, 65,133, -242,251,206,211, 54, 2, 64,131, 12, 22, 67, 49,224,248,153,203, 30, 25,233,105, 29,151,127,249,249,251,193,174,228, 23,240,216, -122, 51, 23, 81,150, 26, 75, 17, 17,145,127, 46,132, 16,142, 82,218,168, 61, 59,132,144, 33,148,210,195,143,169,241, 30,128, 87, - 42, 54, 55, 80, 74,191,104,132,118,121, 3,112,175,216, 76,167,148,138,107,160, 54, 50,150,126,144,148,160, 2, 16, 49, 18, 0, -172, 44, 61, 24, 5,148, 32, 44, 96, 44,193,136,193,253,225,236,234, 14, 24, 75, 1, 67, 41, 96, 44, 3,140, 37,128,177, 12,217, -105, 73,128,161, 4, 72,252, 5, 28,165, 10, 75,143, 3, 93, 1, 16,191, 7, 79,183,247,133,139, 90,137, 25, 35,130,157,215, 29, -137,223,176,225,216,237,126, 0,198,155,213, 86, 74,209,185, 77, 11,124,189,161,228,214,129,232,204,129, 0, 48,180,157,243,145, -206,193,126, 62, 43, 54,107,111, 29,138,201, 29, 4, 0,131, 67,212,191,116, 10,244,240, 21, 30, 35,186, 43, 80,218,211,179, 73, - 11,194, 95, 93, 11,161, 80,131,194,194, 50,104,238,111,129,131,215, 83, 12, 47,160,183,169,250, 86, 44,230,190,245,191, 37,210, -210,194, 12, 61,111,200,226,157,153, 60,137, 68, 33, 16,164, 70,233, 74,132,124,254,237, 87, 39,241,179,230,127, 62, 23,192,196, -250,116,130, 93,241,198, 87, 95,173,104,211,189, 67,144,107,250,222, 25,164, 56, 47, 3, 28,171, 82,140,232,218, 29,246, 45,131, -133,140,147, 95, 17,121,179,126,176,119,106,134,148,115,219,241,224,194,143,164, 71,251,112,197, 15, 59,100,147, 80,135,193,106, -233, 66,122, 12,236,213,105, 87, 51, 95, 79, 15, 74, 5, 8, 2, 5, 21,120,188, 52,102, 0,222,223,157, 8,158,231, 49,122, 96, -143,167,151, 76,237, 75, 5, 65, 0,165, 2,146,211,115, 74, 79, 92,188,245,116, 66, 46,189,104,234,220, 41,193,233,182, 93,250, -244,136,137,190, 16,100,140,255, 25, 29, 38, 46,186, 69,128, 51, 85,207, 3, 61,126, 63,250, 67, 16,176,209,148, 84,173, 16, 66, - 72, 43, 87,240, 15,142, 44,134,111,175, 41,236,218, 29, 71, 92, 10,178, 82, 94,216,187,101,213,152,213,107,215,110, 3, 48,173, - 65,194, 34, 34, 34,255, 56, 40,165,141,110,178, 18, 18, 18,210, 30,199,100,121,123,123,247, 2,176,180, 50, 19,131, 16,178,212, -223,223,191,106,181,138,138,181, 77, 43, 41,224,121,126,162, 70,163,169,181,119,168,146, 97,195,134,121, 2,240,175,166,233, 79, - 8,241,175,173,172,189,189, 61,223,173, 91,183, 7, 7, 15, 30, 76,109, 72,251,255,203, 88,250, 33,186,245,112,207,140,246,186, -180, 98, 0,184,101,170, 48,173, 49,212, 82,107,228, 23,111,250,232,249,197,173,155, 56,162,168, 68,143, 99, 87, 30,128,231,141, -224, 57,174, 34,146,197,129,231,140, 24,216,214, 25,221,180,211,240,205,193,219,224,120, 97, 81,125,154, 53, 49, 80, 97, 66,187, -126,227,118, 11, 2,149, 43,164, 76, 65,128,143,147,235,187,163,219, 50, 51, 70,180, 70,153,129, 27, 23,236, 70, 78,196,101,208, - 71, 38, 17,173, 83, 83,248,243,148, 69,180,182,125,124, 45,251,204, 28,166, 26,228, 70, 58, 63, 59,172,191, 29,213, 21,192,152, -157,136,162, 82, 35, 18,115,140, 72,215,230, 67, 65,210,204,210, 20, 40, 66,189, 60, 60,172,207,238,154,115,223, 73, 82, 40,113, -149,112, 82, 57,229,164,188, 64, 89,228,199,233,156,130,250, 75, 42,243,178,234,107,167,149,202,246,249, 94, 3,134,170, 31,110, -159, 66,172, 2, 6,194,181,189, 15,238,159,218,132,204, 43, 7, 81, 92, 92, 72, 20, 5,249,112,115,106,142,193, 19,199,227,139, -241, 29, 81, 84, 88, 4, 54, 45, 65, 45,151, 42,236,235,210,164, 60, 38,126,181,228, 51, 15, 9,203,148,191,158,149, 55,222,136, - 50,157, 14,224, 57, 40, 37, 2, 8,173,124,206, 8,222,104, 80,133,134,207,153, 14,224, 98,109,154,213,137,203,160, 59, 90,187, -146,158, 16,140, 65,212, 88, 6, 2,156,137,205,164, 85,166, 39,216,141, 76,120,106,224,228,158,148,224,116,125,231, 94, 23, 33, - 78, 24,214,193,223,198,218,186,240, 22, 52, 17,111, 34, 1, 74,234,214,253, 21, 76,120,233, 13,213,186,117,235,134, 19, 66, 94, -171,158,131,102,238,251,110, 9,162,166,168,249,111,213, 84,171,213, 77,155, 52,105, 50,223,104, 52,246,146,201,100,110, 6,131, - 1,130, 32,164,203,229,242,211, 15, 30, 60, 88, 88, 80, 80,112,239,159,208,206,234,196,196,196,152,109,178,204,209,148, 74,165, -184,125,251,246, 93,115, 77, 86, 77, 77,169, 84,186,245,204,153, 51,216,189,123, 55, 0, 32, 62, 62, 30, 45, 91,182,180,174,173, -238,253,251,247,173,195,194,194,182,162,198, 10, 28, 53, 53,175, 95,191,222,244,231,159,127, 70, 68, 68, 4, 0,224,246,237,219, - 8, 8, 8,168,181, 61,103,206,156, 97,159,123,238,185,166, 0, 30, 49, 88,127,197,123,244,164, 33, 1,128,138,245,117, 73,205, -199,181,144,232,235, 32,111, 15, 45, 15, 0,137,150, 30, 44, 46,157, 46,105,235, 33, 29,244,107,196,202, 94, 74, 25,131, 5,235, -223, 77,206,202, 45,234, 34, 33, 16, 0,128,163, 96, 28,108,228,231, 23,189,208,214, 55,175, 88,139, 3,151, 82, 78,197,102, 88, - 22, 10,141, 77,165,145, 0,170, 46,248, 33, 78, 36,224,133, 47, 34,119,238,156, 59, 40,116,230,136, 80,252,116,238,193, 76, 0, - 38,103,105,167,130, 0, 42,112, 85, 73,237, 0, 0, 65, 0, 4, 14,213,174,167, 16, 64,203,247, 9,150, 69,176,194, 8,145,228, -185, 98,176,163, 74,254,221,212,169,175,218, 25,179,238, 32, 87, 47, 67,114,158, 22,233,101, 82, 20, 75, 92,145,114,235, 58,207, - 16, 68,154,210, 34, 4,133,224,181,246,142,114, 27, 38,164,255,116,175,194,163,243,242,228,148, 99,237, 70,126,106,159,253,235, -178, 7, 92, 89, 86, 9, 33, 48,185,136,182, 90,109,223, 82,155,243,128, 45,200,203,134,189,123,107, 12, 26, 55, 12, 31, 15, 13, - 70, 81, 97, 9,178,206, 29,162, 45, 60,236, 72,210,233,109,248, 96,112, 43,228,100,164, 65,103, 4, 72,137, 46, 87,171,215, 22, -215,165, 73, 25,172,125,123,214,236, 9,126, 30, 46,214,149,131, 5,168,192,163,109,171,102,232,223,171, 51, 34,207,156,197,229, -235,241, 16, 42, 6, 11, 80, 65,128, 38, 51, 47, 67,107,224, 55, 89,244,130,242, 28,168,241,207,105,118, 21,121, 87, 22,119, 13, -182,113, 35, 42, 30,248,176, 75, 11,219,151,231, 14,243,179,181, 86, 16,104,141, 60,180,122, 35,138,206,126, 7,167, 38,109,160, - 82, 42, 73,123,148, 73, 0,211,175,173,136,200,127,137,177, 99,199, 42, 51, 50, 50, 78, 14, 29, 58, 52,184,127,255,254,170,158, - 61,123,162,164,164, 4,199,142, 29, 67, 73, 73,137,159,143,143,143,223,177, 99,199,194,187,116,233, 18,231,237,237, 29,182,103, -207, 30, 75,114,100, 37,248, 35, 73, 93, 0,192, 17, 66, 80,177,143, 0, 16,232, 99,172, 67, 43,151,203,145,148,148,212,104,145, - 44,153, 76, 6,173, 86,139,148,148, 20,179, 77, 86,117,138,139,139,101, 94, 94, 94,112,113,113, 1,207,243, 40, 41, 41,193,254, -253,251, 81, 80, 80, 0, 65, 16, 96,101,101,133, 79,191, 90,143, 91,191,159,196,197,139, 23, 81, 80, 80, 32, 51,165,169,209,104, - 72,219,182,109,161,211,233,192,113, 28,180, 90, 45,142, 31, 63, 94,181, 45,145, 72, 48,251,147,229,136,191,114, 18, 87,175, 94, -133, 70,163,249, 91, 86, 7,177,192,139,252, 43,248,219, 71, 17,242, 60,247,254,186,205, 59,207,191, 63,109, 60,222,120,182,159, -207,194,149, 63,246,139,203,162,155, 1, 32,216,133,188, 48,169, 79, 11, 95,123,149, 20, 31,111,191, 2, 80,250,254,227, 30,239, - 70, 14,141,111,237, 78,102,238,187,152,116,114,222,248,246,104,230, 97,215,178,121,115, 34, 79, 72, 48, 99,205, 63,129,131,131, -141, 34,112,104, 59,231, 35, 16, 4,216,219, 42,130,192,115,176,183, 81, 4, 14, 14, 81,255, 2, 0,246, 42, 89, 80,109,145,174, -186,232,232, 43,155,162, 82, 72,166, 88, 63,229,225,251,226,240,254, 86, 67,134,135, 91,217, 72, 57,228, 92, 60,134, 66,169, 55, -140,142,126,208, 25,115,161,185,151,192,255,122,225,102, 74,118,145,238, 93,147,205,164, 56,149,114,239,182, 75,211,208,254, 14, -217, 7, 63,200,108, 58,121,187, 63, 3,129, 41,218, 54, 42,195,218,181,147,213,165,187,247,138, 5,250,231, 8, 78, 77, 10, 11, - 10, 30, 24,121,120,148,241, 18,219,132,223,126,192,220,193,109,144,151,155, 9,173,129, 67, 65, 25,103,112,183, 87, 42,116,247, -110, 64,103,224,160, 55, 10,144,218,123,225,216,249,235,217,130,209, 88,231, 90,148, 9,217,244, 42, 0,155,234,251,154,187,144, -182,115,236,172,174,194, 88,134, 36, 77, 42, 54, 31, 58,223,190,162, 92,131,161, 2, 87,222,205, 92, 65,101,242,123, 67,146,219, - 91,185,145, 78, 86, 74,217,183, 75,103, 62, 23,220, 53,192, 81, 33,104,206,131, 8, 6, 88,243, 18,148,201,121,168,125,154, 65, -208, 23,209, 82,173, 54, 63, 22, 16,103,102, 23, 17,169, 70, 80, 80,144,187, 90,173,142,157, 53,107,150,227,168, 81,163,176,111, -223, 62, 20, 22, 22, 98,211,166, 77, 88,177, 98, 5, 62,250,232, 35, 24,141, 70,172, 91,183, 78,181,119,239,222, 78,171, 86,173, -210,248,249,249,181, 78, 74, 74, 50,181,160, 58, 1,160, 0, 32, 69,249,181,139, 0, 16, 14, 31, 62,140, 33, 67,134,224,240,225, -195, 66,197, 62,158, 16, 98,164,148,234, 26,210,126,185, 92, 14,185, 92,142,130,130,130, 70, 51, 89, 54, 54, 54,144,203,229, 40, - 42, 42,178,216,100,113, 28,199,106, 52, 26, 20, 20, 20,160,255,240,225, 88,190,104, 17,250,244,233,131,254,253,251,131, 82,138, -227,199,143,163, 95,247, 16,140,127, 38, 12, 55,111,222, 4,199,113,102,181, 55, 61, 61, 29, 25, 25, 25, 24, 52,124, 56,214,175, - 90,133,206,157, 59, 35, 48, 48, 16, 28,199,225,228,201,147, 24, 51,176, 59,148, 35,251, 33, 62, 62,190,225, 39,254, 31,231,111, - 55, 88, 55, 50,233,133, 96, 23,114,240,217,129,157,134, 13,239, 17,140,245,187,126,253, 44, 56,152,236, 4, 0, 39, 91,197,167, -207,247,105,134,184,135,121,248,245,106,234,193,184,172,198, 25,125, 33,240,112,118,178, 83, 1,172, 28,101, 6,129,179, 75,132, -201,196,100,129, 82,168,122,205,193,164,225,113, 62,157,131,125,124, 42, 71, 17,218, 12, 89,134, 23,174,223,245,237, 24,232,238, - 11,222, 8,240, 70,216,141,223, 14,124, 82,107,196,246, 17,122, 52, 85, 68,206,121,119,102,183,193, 35,199, 89,201, 85,106,240, -133,201, 48,166, 95, 71,206,157, 83, 40, 81,181, 68,122, 82, 34,118, 31,189, 88,112, 71,147, 83,200, 48, 56,150, 81,160,123, 47, - 33,151,214, 25, 29,170, 68,107,196,162,249, 31,188, 59,116,247,206, 93,182,138,102, 61, 72,194,119, 67, 10,228, 18, 78,225,210, -244, 41,166, 84,233, 76, 63,223,180,203,174, 68,143,197,166,116, 74, 75, 10,127, 60,126,236,200,248, 22, 77,123,216,222,191,124, - 8,101, 90, 29,116, 70,160,117,167, 48,240, 60,149, 19,134, 8,118, 44, 75, 50,115,242, 64,140,124,198,233,107,247,211,206, 92, - 75,100,117,182,166,181,171, 35, 33,236, 91,195,195,218, 1,198, 50, 60,211,171, 13,150,111,251,245, 77, 0,147, 45,209,248, 19, - 66,121, 4,139, 2, 61, 90,187,146, 53, 0,122, 92,217,191, 34,168,195,200,183, 1, 11, 34, 88, 33, 46,100,112, 72,115,207, 31, -150,127, 58,199,209,201,187, 37, 75, 4, 35,168,123, 40, 80,168,161, 68,115, 30,106,175,206,224, 61,187, 99,221, 55, 95, 22, 11, - 2,221,217,144, 41, 42, 68, 68,158,100,180, 90,237,143, 75,150, 44,113, 28, 54,172,124, 58,161,226,226, 98,156, 63,127, 30, 27, - 54,108,128,181,245,163,191,147, 67,134, 12, 1,165,212,113,193,130, 5, 63, 2,232, 90,151,102,151, 46, 93,134,175, 92,185, 50, -181, 93,187,118,137, 40, 55, 89, 50, 0,204,141, 27, 55,152,228,228,100,226,224,224, 64, 61, 61, 61,141,169,169,169, 2, 0,254, -165,151, 94, 98,109,108,108, 90, 20, 23, 23, 71, 89,218,254, 74,131, 37,151,203, 27, 37, 39, 75, 42,149, 86,233,202,100, 50, 80, - 74, 45, 50, 89, 60,207, 75, 14, 31, 62,140, 43, 87,174,224,163,118,237, 48,211,203, 11,142,142,142, 56,121,242, 36, 40,165,176, -182,182, 70,110,110, 46,118,238,220,137,190,125,251,130,227, 56,147, 17, 44, 0,136,136,136, 64,116,116, 52, 62,233,208, 1, 51, -213,106,216,216,216,224,248,241,242, 94, 63,133, 66,129,164,164, 36, 28, 63,126, 28, 97, 97, 97, 13, 61,245,255, 60,102,127,104, -194, 8,145, 16, 55,184, 27,244,101,160, 28, 5, 8, 60,131,131,137, 44, 46,142, 26, 44, 61, 40,195,224,131,111, 54, 31, 28,186, -236,237,225,100,202,136,246,158, 11,127,248,237, 53, 0,120,121,116,128,151, 74, 33,193,215, 63,197, 81,134,193, 7,150,234,214, - 70,112, 48,145, 49, 12, 94,235,223, 57, 16,169,249,122, 36,164,230,159,136,163,212,172, 46,157, 95,151, 77,194,150, 3, 39,147, - 87,108,209,222,162,148,194,222, 70, 17,248, 66, 76,130,239, 15,135,163, 31,126,181, 91,123,139, 10, 20,246, 42,105,208,228,155, -221, 77,142, 34,236,232, 43,155,242,254,156,247,186,143,152, 60, 75,201,221,218, 3,125,194, 81, 8,134, 50, 20, 26,100,200,103, -221,161,121,248, 16,159,175, 59,152, 92, 88,162, 31,127, 35,211, 50, 99, 25,159, 77,139,131, 93,200,168,207, 63,158, 23,185,232, -211, 5, 54,165,137, 39,139, 89,194,149,177,126,189, 37,159,126,180,140, 20,233,244,227, 18,114,105,145, 41, 29,157, 45, 22, 47, -249,234,155,161,175, 78, 12,191, 21,208,178,183, 19,159,122,207, 73, 91, 88,152,185,253, 72,180, 59,202,255, 25, 18, 0, 72,208, -228, 32,171,160,132,227, 57, 99,148,173, 20, 11, 99,205,137, 6, 86,208,204,141,184,140,234, 25,250,156,139,173, 12,101,197,249, -112,181,149, 98, 96,231,230,207, 53,115, 35,115, 18, 51,168, 69,147,184, 61,130, 96, 4, 53,150,225,194,226,190, 65,148, 55, 6, -129, 55,194, 16,179,213, 98, 25, 74, 48,243,141, 94, 54,118, 14,250,251, 12, 74,172, 1, 43,103, 16, 59, 63, 64,237, 79,164,173, -198, 33, 53, 49,150,123,243,185,137, 57,247, 30,104,190,119,182,194, 99,143,228, 17, 17,121,210, 72, 74, 74,122,254,253,247,223, - 63,211,185,115,103, 55,103,103,103,180,105,211, 6, 7, 14, 28,192,172, 89,179,170,202,180,107,215, 14,148, 82,228,230,230, 98, -201,146, 37,233,169,169,169,207,215,167,121,235,214,173,219, 91,182,108,233, 25, 28, 28,108,144,201,100,249, 0, 20,249,249,249, -202,220,220, 92,162,213,106, 33, 8,130,160, 86,171,249,212,212, 84,227,248,241,227,117,231,206,157,107, 94, 82, 82,242,176, 33, -237,175, 52, 87, 62, 62, 62, 55,114,114,114, 10, 8, 33,143, 53,133,131, 84, 42, 5,195, 48,144,201,100,112,118,118,118, 41, 46, - 46, 22, 0,228, 53,100, 10, 7,142,227,208,161, 67, 7, 28, 61,245, 59, 14,255,122, 14,133,169,183,241,218,171,207,163, 77,155, - 54, 56,122,244,104, 67,154, 7, 0,104,219,182, 45,142, 28, 63,131, 51, 87,174, 33, 41, 62, 6,111,190,246, 42, 90,183,110,141, - 35, 71,142, 52, 88, 83,228, 15,131, 21, 70, 8,169,252, 39,254, 39,187,218,202,133,180,245,108, 33,223,186, 96,112,243, 86,210, -254, 11, 64,164, 86,216,211,242, 72,247, 15, 62,255,238, 86, 27, 55, 50,241,122,134,233,209, 94,213,185,145, 65, 99, 91,187,146, - 29,215,110, 6, 61,247, 76,103, 31,172, 63,160,250, 16, 0,198,245,108,138, 75,119,178,112, 49, 62,115, 71,108, 38,141,125,188, - 83, 43,207,163, 1,197,142, 37,111,141, 8,243,243,118,199,134,125,103, 64, 8,126, 52,167, 46,165,148,118, 14,246,195,138, 45, - 53, 71, 12,186,251,126,181, 91,123,235,232,141,194,193, 0, 48,160,149,245, 47, 29,155, 59,248,154,138,100, 88,201, 37, 83, 7, -135, 79, 82,114,241, 7,128, 7,199, 65, 56, 29,202, 12, 2,210,178,139, 80,170,246,193,201,243,215,202, 10,180,250,183, 99, 45, - 52, 87,149,196,101,209,196,118, 30,228, 97, 73, 73,153,135,202,165,185, 86, 66, 4, 90,172, 21,112, 41,238, 65, 65,108, 26,189, -109,142, 70, 66, 2,213,119,245, 38, 61,215,108,222, 61, 95, 42,147,143, 99, 9,136,171,189,181,203,154,101,159,192,214,214, 6, -130,190, 24, 40,201,194,168,215, 63,207,186,158, 98,104, 10, 0, 1,206,196,166, 87, 51,217,102, 9, 67, 52, 39,238,234,255,103, -234, 24,196,136,105, 19, 7,182,147, 10,250, 18,188,181,100, 23,214,206, 25,129, 73, 79,183,146, 30, 58, 27, 63, 13,192,194,134, -156, 59, 80, 62,208,128, 26,203,208,117,222,169, 91, 4, 56, 67,129, 30, 87,118,127, 26, 4,252,110,182,198, 83,132, 72, 37, 30, -164, 85,168,175,181, 76,208,156,133,160, 57, 75, 89,159,238, 32,190,189, 8,113,239, 64,191, 93,250, 81,201,250,245, 27,142, 9, - 12, 62, 54, 53,229,133,136,200,127, 21, 74,105,162,189,189,253,160, 33, 67,134,252,122,244,232, 81,199,144,144, 16, 0,192,149, - 43, 87, 0, 0, 29, 58,116, 64, 64, 64, 0, 50, 50, 50,240,236,179,207,102,167,165,165, 13,162,148,214,155,211, 91, 84, 84,148, - 24, 17, 17,225, 90, 92, 92,220,254,195, 15, 63,204,240,243,243, 43,212,106,181, 36, 63, 63, 95,224, 56, 14, 14, 14, 14,242,118, -237,218,161, 91,183,110,197,231,206,157,243, 79, 78, 78, 46, 4,112,191, 33,237, 31, 49, 98, 4, 78,157, 42, 31,132,215, 24,243, - 98, 73,165, 82,132,132,132,120, 37, 38, 38,166, 0, 64, 67,230,197,170,126,121,185,118,237, 26,162,126,215, 64,162, 47,131, 60, - 43, 21, 23,246, 69, 96,248,212,233,224,184,134,103, 43, 92,187,118, 13,251,143, 95,128,181, 66,130,219,183, 99, 17, 17, 17,129, -215, 94,123,237,177, 52, 27, 72,189, 94,228,223,134, 4, 0, 40,165, 81,168,101, 22,218,230,205,137, 92, 81,140, 5, 3, 59,120, -205, 30,215,163, 57,107, 44, 76,133,192, 11, 96,165,128,171,179, 29,182,110,221,209,116,199,174, 93,231,219,122, 73,191, 17, 56, -238,131,235, 25,180,212,130, 99, 47, 88,182,235,204,184,173,239,134, 73, 94, 27, 28,228, 8, 0, 50, 9,131,175, 15,196,114, 0, - 22, 60,206, 73,117,245, 38,202, 98, 35,166,184, 59,169, 63,124,255,149,161,142, 97, 29, 2, 16,117,241, 6,190,137, 56,127, 74, -158,137, 45,230,234, 80,193,136,154,190,169,182, 81,132, 16, 76,231, 83,242, 60,117,151, 89, 59,192,240,224, 55,192,160,133, 86, -103, 64,114, 14,143,228, 92, 45, 36, 42, 25,174,196,107,202,156,210,113,208,164, 80, 29, 16, 66, 72,143,102, 74,207, 15, 63,251, -202, 91, 91, 86,204, 21,230,101,115, 50,249, 5,169,202, 74,145,102,186,246, 31,156,215, 80,109,239,166,178,167, 0,129,149, 43, -105,233,188,119, 94,180, 78,137, 59,138, 22, 76, 42, 8,165,176,106, 53, 20,182, 86,172,172,167,191,236, 33, 0,248,187,171,229, - 75, 62,158,165,126,123,206,199, 38,115,188,130, 9,145,181,233,232,254,118,136,159, 3, 78, 69,223,194,169,235, 73,177,167,174, -220,110,221,167,141, 39, 2,188,237,103, 4, 19,178, 56,142, 90, 30, 17, 5, 0, 80, 14, 48,106,171, 70, 17, 6,187,145, 9, 29, -199,253,175,214,209,131,117,225, 15, 8,241, 60, 5, 97, 89,128, 48,229, 35, 26,147,207, 66, 98,223,140,238,216,189,191,116,195, -134, 45,159,196,101, 61,254,252, 51, 34, 34, 79, 58,249,249,249, 49, 42,149,106, 96,104,104,232,166,183,222,122,203,118,226,196, -137,158,175,190,250, 42, 3, 0, 25, 25, 25,194,138, 21, 43, 82,191,253,246,219,130,236,236,236,201, 6,131,225,186, 41, 61, 74, - 41, 37,132,156,219,184,113, 99, 86, 84, 84, 84,235, 46, 93,186, 40, 59,116,232,192, 59, 56, 56, 72, 20, 10, 5,175,215,235,181, -241,241,241, 66, 98, 98,162,103,126,126,254, 29, 0, 9, 13,233,190,175,136, 86, 45,100, 89,118, 62,165, 52,164, 49,114,176, 84, - 42,149, 7,128,187,132,144, 22,150,118, 15,214, 68, 34,145, 32, 47, 47, 15,165,233,177, 80,106,238, 32,212,154, 65,176,131, 13, -236,236,236, 30,203, 12, 21, 20, 20, 0, 37, 41, 56,115,230, 26,192,113, 80,171,213, 80,171,213,127,187,193,170,203,139,252, 91, -169,243,131,211,218,149,188,230, 32,199,138,169, 67,155,203,252,125,189,161,211, 92,193,181,228, 98,124,208,165, 83, 28,171,176, -213, 78,125,126, 68,135,240, 49, 77, 16,214,173, 35,241,247, 80,207, 88,188,108,245,235,173,221,200,172,216, 12,250,181, 57, 7, -142,205,164,247, 90,185,146, 13,191,197,104,166,121,171,202, 32, 8, 20,191, 93, 79,195,245, 7,121, 27,110,102,210, 90,135,238, -214,217, 86, 79,210, 79, 2,102, 23,165, 84,169,182,182, 46,106,215, 54,200,185, 95,215,182,204,160,222, 29, 32, 99,129, 51,151, -174, 97,230,178, 31, 47, 8, 2, 29, 26,109,102,247, 96,249,136,193, 71,141, 83,249,136, 65,227, 35, 35, 6, 41,165,180,124, 20, - 97,253,105, 93, 44, 75,210, 75,147, 46,187, 75,157, 90,162, 44,225, 55, 60,200, 19,144,148, 89,132, 66,137, 59,116, 41, 41, 0, - 21, 30,158,164,180,193,159,102,103,103,103,215,166,193, 1,205,191,219, 28, 1, 67,105, 1,238,157,220,132,226,188, 52,124,186, -230, 64,115,111,111,239,222, 26,141, 38,202, 92, 45, 66, 72,192,175, 7,119,184,130, 2,172, 84,129, 67,171,118, 35,219,201, 10, -206, 42, 25,132,178, 44, 76,125,123,162,122,112,255,137,106, 0, 72,186,125, 21,126,170, 50, 83,146, 0, 0,131, 19,194,199,245, - 9,180,135,177, 12,155,143, 92,213, 50,192,160, 45,199, 98, 19,250, 4,217, 43,199,245,240,115, 88,152,154, 63, 26, 13,156, 12, -180, 50,130, 85, 73, 67, 70, 15,238,161,148,111,229, 66, 18,118,157,203,180, 30,211,255, 41,149, 76, 66, 8, 45, 78, 1,181,114, -198,234,205,123,138,229, 70,172,107, 72,219, 68, 68,254,139,148,150,150, 70, 19, 66,218,188,247,222,123, 19,230,205,155,215,203, -218,218,186, 41, 0,148,148,148,220, 51, 26,141,167, 0,236,176,100,180, 95,133, 97,186, 75, 8,185,119,255,254,125,247,237,219, -183,171,241,199,124,140,101, 0, 10, 80, 62, 97,102,131, 71, 16, 86,154, 41, 66,200,124, 83,101, 45,208, 60, 92,161,217,162, 33, -245, 25,134,225, 9, 33, 32,132, 64,161, 80,224,244,233,211, 24, 59,180, 63,110, 30,202, 71,136,189, 13, 58, 77,158,138, 93,145, -145, 96, 89, 22,132, 16,176, 44,107,209,117, 68, 34,145,224,204,153, 51,152,244,236, 24, 40, 36,128, 90,173,198,123,239,189,135, -159,126,250, 9, 18,137,184,154,222,227, 80,247,171, 71,176, 48,114,211,231, 50,240, 70,252,188,233, 75, 28,188, 81,172,191,157, -133, 15, 2,179,176, 34, 2, 69, 66,214,178, 45,211, 34,207,220,248,226,165,241,195, 84,125,251,244, 71,223,176, 62,146,214, 29, -123,127, 8,160,202, 96, 17, 66,250,213, 55, 87, 6, 47,224,147,117, 71,110, 77,221,117, 50,158,192, 80,132,241, 3, 58, 82, 94, -192, 39,245, 53,184, 54, 77,181,149,205,174, 51,231,207, 59,192, 80,140, 7, 87, 79, 40,155, 52,109, 14,240, 6,220,189,123, 7, -223,110,222, 39,156,188,116,123,171,158,195, 91, 9,185,180,196, 92, 77, 0,128,192, 65,109, 45, 15, 28, 28,162,254, 69, 0,133, -189, 74, 22, 68, 5, 30,246, 42,105,208,128, 86,214,191, 80, 74,169,173,149, 52,136,242,127,246,108, 53, 53,203,244,220,218,205, - 27, 55,124,245,242,203, 47, 91,103,107,210,145, 90,120, 3,197,114, 47, 24, 85, 62, 72,184,122,170,172, 84,199,153,188,120,215, -247,122,102,103,103,103, 70, 95,204,197,174, 53,139, 96,212,235,144,169, 41,247,168,169,217,133,176,115,246, 58,111,137,166,129, - 19, 10,194, 39, 78,145, 89,217,194,106, 82,248, 48,121, 66,142, 14,237, 61,109, 1, 0,180, 56, 11, 55,143,159, 65, 88, 73, 20, - 0, 32, 49,153,129, 95, 91, 79,179,218,105,171,148,189, 53,248, 41, 47,220,123,152,134,211,177, 41,155, 19,115,104,106, 51, 39, -178, 57, 33, 53,127,218,136, 46,190, 88,254, 83,220,155,168,195, 20,213,165, 25,236, 70, 38, 0,232, 81,158,228, 94, 6, 10,244, - 8,118, 35, 19,204, 25, 57, 88,155,166, 68,134,231,190,250, 37,233,127,123, 46,103,143,152,253, 92, 79,187,110,221,134,200,193, -233, 81, 84,166, 51,198,229,209,194,134,104, 62, 46,162,166,168,249,111,213,172, 48, 59, 91, 43,110,141,169,153, 82,113,107, 20, - 77,224,209,238, 64, 74,169,164, 34,122, 85,111,146,187, 41,205,234,221,129,148,210,195, 21,209,171,122,163, 88, 53, 53, 5, 65, - 72,237,208,161,131,227,240,225,195,193,243, 60,238,220,185,131,164,228,100,244,155,246, 38,236,237,237,113, 42, 38, 6,183,111, -223,198,252,249,243, 97, 52, 26,177,127,255,254, 63,205,200, 94, 83, 83, 34,145, 24,154, 55,111, 46, 27, 57,114, 36, 56,142, 67, - 98, 98, 34, 82, 82, 82, 48,115,230, 76,168,213,106, 68, 71, 71, 87,105,102,103,103, 67, 34,145,252,169,103,225,175,248, 44, 61, -105,212,103, 79,121,240, 70, 20, 68, 46,192,215,167, 97, 48, 24, 17, 20,155, 73,171,247,105,175, 14,117, 34, 63,199,220,184,117, - 47,250,108, 95, 57, 50,175,151,215,177,128,248,108,154,214,209, 71, 82, 4, 67,145, 29, 18,127,193,253,140,162,226,248,108,106, - 81,151, 22, 0, 80,129, 39, 48,148, 2,105, 87,112,238, 84, 20, 78, 94,184,134,203,215,111,241,231,162,227,119, 49, 2, 62,137, -203,166,119, 44,214,164, 20, 54, 67,151,227,197,235,119,125, 59, 6,184,249,130,231, 64, 5, 35,212,227,119, 96,114, 92, 55,223, -142,205,236,125,203, 35, 87, 70, 56,188,114, 2,248, 74, 89,175,222,229,135,134,117, 61,154, 42, 70, 23,229,231,116,121,186,119, - 87, 72, 90,177,166, 0, 0, 32, 0, 73, 68, 65, 84,107,117,171,193,200,190, 27,143, 59,215,206,148, 69,223, 72, 56,119,249,161, -225,177,162, 35, 94, 94, 94,189,158,238, 29,136,241, 83,223,135,161,180, 0,137, 39, 55,162, 56, 55, 29,167,207,219,224, 86, 97, - 97, 87, 0, 81,230,106,157, 75, 50,182, 6,128, 30,254,178,135,182,208,185, 63, 63,108, 56, 20, 68, 11, 65, 87, 8, 82,154,141, -132, 20,125,193,232, 53,201, 60, 0,168, 20, 68, 98, 77, 11,236,204,209, 13,246,115,106,169, 98,141,216, 18, 25, 11, 65, 40, 95, -102, 73, 16,176,122,203,137,132,105,159, 76,106,143, 96, 95,135,182,164, 98,242, 19,115,219, 74, 40,122, 94,222,245,113,144,246, -215, 15, 1,193,128, 51, 51, 28,131,122,126,157,219, 19, 13,140,132, 93, 79,161, 41, 0,166,181,242, 36,107,103,124,125,228,195, - 14,145,113, 61,222,125,101,132, 29,168,184, 48,186,136,136,200,223, 79,113,113,241,212,201,147, 39,175,149, 74,165, 46, 0,136, - 32, 8, 16, 4, 65,242,197, 23, 95, 72,121,158,103, 24,134,225, 89,150,229, 14, 31, 62,108,228,121, 62, 75,171,213, 78, 53,165, -201,113, 92,194,244,233,211,155,155, 26,113,184,115,231, 78, 72, 36, 18, 3,199,113, 9,141,118, 66,255, 33,234,190,104, 80,124, -220,125,210,130, 5, 0, 8, 40, 62,170, 97,174, 0, 0, 49, 57, 52,181,181, 43,153,217,186, 99,239, 5,149,117, 44,109,128,150, -231,199,116,108, 19,176, 19, 0,116,148,159,100,105,125, 0, 40,212,149,141,107,215,177,235, 46,129, 82, 9, 71,233, 6, 70,192, - 94, 45,135,155,230,140,156,171,139,212,204,252,232,202, 5,156, 5,208, 63,186, 5, 43,166, 99,160,148,210,170,110,193, 47,149, -200, 46,208,153,156,199,233,204, 61, 93,255,142,190,178, 41,199,206, 94,157,202,243,212,157,101, 73,122,153,158, 91,251,184,230, - 10, 0, 52, 26, 77, 84,176, 43, 57, 22,211,214,109,128,179,170,124, 95,118, 41,144, 93,138, 99,154,204,162,168,134,104,230,149, - 24, 71,204, 91,241,211, 1,185,148,149,128,210,242,137, 64, 41,133,214,192,231, 86,154,176, 80, 39,226,249,222,126,110, 39,203, -146, 36, 83,122, 23,111,167, 45, 31,191,248,248,172,216, 7,121, 27,238,231,209, 27, 0,112, 63,143,222,104,225, 68, 62, 76, 72, - 47,154,117, 35, 41,239, 75, 75,243, 38, 40,193,233,142,227, 23,252,105,159, 37, 26,181,113, 51,149, 94, 3, 48,170,181, 43,233, - 63,254,221,111,223, 37, 4,226, 50, 17, 34, 34,255, 33, 42,163, 88, 12,195, 52,120,240, 77, 45,154,135, 9, 33, 67, 0,220,181, -160,206, 69, 0,109, 26,171, 13, 21,154, 57, 0,114, 26, 83, 83,228,207,212,105,176, 98, 51,233,106,152,177,152,179,185,229,234, -172,159, 74,143, 3,112,106,104,253,106, 26,142,143,163, 81,147,152, 12,250, 97, 99,234, 85, 82, 97,166,254,146, 92,158,184, 76, - 58, 16, 0, 2, 2, 2,232,157, 59,119,240,184,179,224,222,204,162,215, 80, 99,201,133,154,196,228,208, 84, 0, 61,205,209,139, -207,166,159, 0,127,238, 2,190,155, 67, 63, 5,240,105, 67,218,216,208,153,218,205, 37, 54,147, 70, 2,166,103,211, 23, 17, 17, -121,242,104,140, 73, 70,107,209,124,172,133,159, 69,254, 61,136,221, 30, 79, 32,241,241,241, 79,204, 40, 12, 17, 17, 17,145,191, -128, 6, 39,194,215,131, 56,233,176,200, 35, 48,255,223, 13, 16, 17, 17, 17, 17, 17, 17, 17,121,210, 32, 0,250,213,246,132, 37, -163, 3, 8, 33,181,106,212,135, 41,125, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53,159, 60, 77, 83,218, 79,204,232, 68, 90, - 45,121,185,177,111, 0,250,137,154,162,166,168, 41,106,138,154,162,166,168, 41,106,254,215,110, 98, 23,161,136,136,136,136,136, -136,136, 72, 35, 35, 26, 44, 17, 17, 17, 17, 17, 17, 17,145, 70, 70, 52, 88, 34, 34, 34, 34, 34, 34, 34, 34,141,140,104,176, 68, - 68, 68, 68, 68, 68, 68, 68, 26, 25,209, 96,137,136,136,136,136,136,136,136, 52, 50,164, 98, 52,128,136,136,136,136,136,136,136, -136, 72, 35,193, 0, 0, 33,132, 86,191, 23, 17, 17, 17, 17, 17, 17, 17,249, 59,121,210,188,136,216, 69, 40, 34, 34, 34, 34, 34, - 34, 34,210,200,136, 6, 75, 68, 68, 68, 68, 68, 68, 68,164,145,169, 52, 88, 97, 21, 33,185,176,255,207,198,136,136,136,136,136, -136,136,252,103,121,162,188, 72, 85,146, 59, 33,132, 82, 74,201,255,115,123, 68, 68, 68, 68, 68, 68, 68,254,163, 60, 73, 94, 68, - 28, 69, 40, 34, 34, 34, 34, 34, 34, 34,210,200,136, 57, 88, 34, 34, 34, 34, 34, 34, 34, 34,141,204, 95,106,176, 8, 33,253, 68, - 77, 81, 83,212, 20, 53, 69, 77, 81, 83,212, 20, 53,255,107,136, 17, 44, 17, 17, 17, 17, 17, 17, 17,145, 70, 70, 52, 88, 34, 34, - 34, 34, 34, 34, 34, 34,141,140,104,176, 68, 68, 68, 68, 68, 68, 68, 68, 26, 25,209, 96,137,136,136,136,136,136,136,136, 52, 50, -162,193, 18, 17, 17, 17, 17, 17, 17, 17,105,100, 8,128, 90, 71, 2, 80, 74,143,155, 45,210,128,209, 4,166,244, 69, 77, 81, 83, -212, 20, 53, 69, 77, 81, 83,212,124,242, 52, 77,105, 91,226, 63,254,209, 80, 74,255,178, 27,128,126,162,166,168, 41,106,138,154, -162,166,168, 41,106,138,154,255,181,155,216, 69, 40, 98, 22,132, 16, 55, 66,136,219,255,119, 59, 68, 68, 68, 68, 68, 68,254, 13, - 72, 26, 83,172, 21, 33,125,167,135,186,237,121,253, 90,186,163,169,178,174,174,174,107, 85, 42,213,196,210,210,210, 18, 66,136, - 80,185,191,194, 25, 87, 95,191, 39, 49, 51, 51,179,167, 41, 61,133, 66,177,194,205,205,237,149,226,226,226, 82, 66, 8, 37,132, -128,144,242,229,140,106,222,243, 60,175,201,206,206,238, 96,201,185,253,211, 32, 0,235,236,230,118, 73,202,178, 94,150,214,229, - 5,225,126, 70,122,122, 87,179,143, 69,200, 34, 66, 48,187,226,241, 82, 74,233,251,150, 30,243, 31, 15, 33,172, 57,197, 66, 0, -219,120, 96, 60,207, 48,111, 74,129,149, 58, 65, 88, 3, 0,160,148,111,232,161,245,151, 72,115, 66,209,150, 16,168, 41, 69, 1, - 37,184, 38,239, 68, 19, 26,170,247, 56, 16, 66,186, 72,165,210,113, 14, 14, 14,182,153,153,153,191, 2, 56, 0,224, 25, 87, 87, -215,167,243,242,242,138,140, 70,227,110, 74,233,133,134,104,247,106, 71,230,200,101,210,151,180, 6,227,146, 51, 87,233,198,176, -167,136, 19, 39, 96,177, 82, 38,233,169,211,115, 75, 79, 95,163, 27, 44,108,235, 35,235,149,209,138, 31, 15, 75,136, 48,243,125, - 7,128,253, 14, 14, 1, 10, 23,187, 95,165,114,246,126,126, 70,241,196, 49,153,153,201, 99, 30,227,125,255, 39,226,226,226,242, - 34,195, 48,159, 81, 74,193,243,252, 7, 57, 57, 57,155, 26, 67,151, 16, 50, 1,128,117,197,102, 9,165,116,135, 5,117,147, 0, -248, 86,108, 62,164,148,250,213,183, 95,196, 50, 8, 33,171,247,237,219, 55,173, 79,159, 62, 88,190,124, 57, 86,175, 94,253, 32, - 43, 43,107, 49,128,205,148, 82,253,223,173,243, 36,209,104, 6, 43,152,144, 54, 47, 15,234,122,104,234,216, 65,114, 83,101, 93, - 92, 92,190, 31, 52,104,208,164,205,155, 55, 75,227,227,227,173,252,253,253,193, 48, 76,149, 1,170,254, 59,217,164, 73, 19,161, - 46,157, 74, 88,150,253,122,212,168, 81,147, 35, 34, 34, 84,209,209,209,170, 86,173, 90, 85,233, 9,130,128,154,191,187,254,254, -254,245,234,169,213,234, 43, 44,203,122, 3,127, 54,103,117, 61,230,121, 94,147,147,147, 99,210,180, 17, 66, 6, 2,152,107,170, - 28,128,197,148,210,163,245, 21,144,178,172, 87,106,106,170,171, 25, 90,143,224,227,227, 99, 48,183,108,121,228, 10,179, 5,129, - 50, 0,192, 48,100,142,149,149,213,234,178,178,178,228,202,231, 1,128, 82,154, 97, 73, 27,188,189,189, 7, 11,130, 48,161, 92, -147,217,161,209,104,126,177,164,190,157,157,221, 21,185, 92,238, 45,145, 72,170,222,140, 26,215,219, 71,182,121,158,167, 6,131, - 65,147,155,155,107,177,177,142, 2,200, 32,160, 23,199,178,111, 59, 57, 59,247,140, 62,118,204, 58, 36, 36,132, 97, 89,246,125, - 0,107, 44,213,171,142,254, 18,105,206, 27, 49,182,204,168, 24,166,240,251, 40, 64,151,244, 81,188,149, 84,119, 80,127,137,236, -249,187, 77, 22, 33,100,208, 11, 47,188,240,249,146, 37, 75,156,229,114, 57,179,123,247,238,174, 51,103,206,124,105,249,242,229, - 94,227,198,141,179,213,235,245,194,156, 57,115,122, 17, 66, 62,166,148,254,100,137,118,183,118,164, 75,160,191,199,252, 55, 38, -246,197,172, 69, 59,223,232,209,134,100, 91, 89,203, 86,143,238,217,220,190,117, 83, 7,124,188,246,220, 91, 0,204, 54, 88,132, - 16, 34,149, 74,219,185,187,187,251,235,116, 58, 30, 0, 92, 93, 93,171,190,232, 44, 91,238,155,116, 58,157, 33, 47, 47,239,176, - 37,109,173,141, 89, 74,101,231,206,246, 54,145, 11, 38,188, 96, 85,152,151,235,246,245,161, 3, 49, 17,112, 13, 29, 3, 60,120, - 92,237,127, 18, 12,195,124,150,146,146,226, 65, 41,133,135,135,199,103, 0, 54, 53,146,180,117,229,239, 48, 33,196,218, 68,217, -154,248, 86,171,235,107,198,126,139, 33,132, 40, 37, 12, 51, 93, 46,149, 14,224,121,190, 13, 0,176, 44,123, 93,111, 52, 70,114, -130,176,146, 82,170,125, 28,253,127, 56,179,167, 77,155,214,127,222,188,121,254,179,103,207,198,236,217,179,155,172, 95,191,126, -237,231,159,127, 62,135, 16, 18, 74, 41, 45,254,155,117,158, 24, 26,197, 96, 5, 19,226, 51,176, 93,192,201, 55, 95, 24, 43, 19, - 34, 86, 16,188,248,191, 58,203,186,184,184,124,223,181, 67,135,151, 54,111,222, 12, 0,152, 56, 98, 4, 6,116,234, 4, 91, 27, -107,200,229,229,205, 33,148, 64, 38,149, 97,228,204,119, 76, 30,155, 16,178, 52, 60, 60,252,185,136,136, 8, 27, 0, 88,189,122, - 53,194,195,195,225,232,232, 8,149, 74, 5,153, 76, 6,169, 84,250,200,189, 41, 88,150,245, 78, 73, 73,113, 85, 42,149, 0,202, - 13,159, 32, 8,143,220,170,245, 67,131,227, 56,180,108,217,210,164,110, 5,115, 11, 10, 10,122,149,148,148,212,219,119,219,180, -105, 83, 0,168,215, 96, 85,242,217,167,159, 64,224, 74, 32,145, 0, 28, 7,232, 12, 12,132, 90,254,203,123,122,122, 98,250,244, -233,127, 50,156,150, 48,108,216,112, 80, 74, 87,123,121,121, 29,204,200,200, 8, 33, 4, 83, 1,203, 35, 91,148,210,231,239,222, -189,171, 18, 4, 1,129,129,129,147, 0, 88,100,176, 36, 18,137,119, 76, 76,140,171, 66,161,168, 51, 82, 89,205,252,194, 96, 48, -160,125,251,246,156, 37,199,112, 3,124,115, 25,230,213,118, 79, 61, 53,101,254,136, 17, 86, 87,174, 92, 81, 48, 12, 3,142,227, -240,197, 23, 95,112,148, 82,251, 96,192, 46, 14, 40,172, 75,131, 16, 50, 15,192,139, 40,143,202,110,160,148,126,241,200,243, 20, -109,203,140,138, 97,137,197, 35, 59,117,110, 50, 7,113,177,215, 59, 53,179,217, 15, 91,137, 46, 1,192,223,106,176,212,106,245, -152,229,203,151,187,108,216,176,161,240,246,237,219,134, 53,107,214,184, 76,157, 58, 53,200, 96, 48, 96,218,180,105, 89,129,129, -129,178,229,203,151,187,236,219,183,111, 32, 0,139, 12,150,132,224,147,103, 71, 12,128,214,200,192,104,228, 92, 60, 92,108,183, -206,120, 33, 76, 74,169, 30, 91,126,138,134,145, 19, 54,154,171, 85, 17,185,106, 55,122,244,104,191, 29, 59,118, 72,110,222,188, - 41,105,213,170, 21,120,158,175,186, 9,130, 0,158,231, 17, 16, 16, 96,233,203,240, 39, 94, 2, 2,156,221, 28, 35,187, 14, 25, -108,229,161, 84,192, 49, 47, 11, 47,203, 36,182,155, 84,186,109, 0,186, 61,246, 1,254, 65, 80, 74, 33,145, 72,144,156,156, 12, - 87, 87, 87, 43, 71, 71,199, 52, 0, 31,229,230,230,174,251, 43,142,247, 56,145,173, 70,108, 67, 39,185, 68,178,119,203,198,175, -221, 59,119,235,198,186,121,184, 34,254,206, 67, 72, 8,223, 47,230,114,116,216, 75,175,189, 59,131, 16, 50,154, 82,122,233,239, -110,219, 95,141, 71,247,215, 71,121,244,120,115, 53,161, 2, 62,254,238, 64,209,162,165, 43, 84,211, 94,125,129,157, 57,115, 38, -124,124,124,252, 71,141, 26,181, 20,192,107, 38,117,186,188, 62,202,189,219, 27,171, 65, 41, 22,124,123,160,232,243,165, 43, 84, -175, 53, 64,231, 73,227,177, 13, 86, 8, 33,246,161,126,110, 81,159,206,158,106, 67,127,249,129, 41,205,201, 68, 93, 22,198,213, -213,117,237,224,193,131, 39,110,218,180,169,106, 95,215,144, 16,140,234,219, 3,174, 78,106,168,172,229,229,151, 33,129,224,218, -237,251,102, 25, 1, 31, 31,159,105,123,247,238,181,169,220,246,244,244,132, 76, 38,171,186, 85, 55, 87,149,183,154,145,142,218, - 80, 42,149, 56,126,252, 56, 36, 18, 9, 88,150,133, 68, 34,169,186, 85,223,102, 89, 22,110,110, 22,165, 38, 45, 86,171,213,161, - 69, 69, 69,118,249,249,249,240,245,245, 45, 4, 16, 83,237,249,208,172,172, 44, 59, 75, 4, 5,174, 4, 51, 95,110, 5,169,254, - 2,244,210, 78, 40,147,116,199,185,203, 55,113,240,104, 20, 82, 82,211,209,163, 75, 59, 60, 63, 97, 12, 34, 35, 35,193,243,150, -245,104, 80, 74, 51, 8, 33, 75,159,121,102,248, 28,128, 32, 44, 44, 44, 99,198,140, 25,244,198,141, 27,163,198,142, 29,243,244, -157, 59,119, 9, 0, 48, 12,153, 77, 8,249,218,220, 72, 22,165, 84, 6, 0,167, 78,157, 2,165,212,100,212,179, 54, 20, 10, 5, -206,159, 63,143,202,238, 96,134, 97,192, 48, 12, 88,150,197,207,119,157, 81,162,103, 80,154,113, 3,111, 14,243, 69,211,166, 77, -193, 48,166, 83, 14,195, 0,229, 57, 96, 20,145, 74,103,122,120,122,250,247,110,214, 76,117,252,248,113, 22, 0,252,252,252,104, - 90, 90, 90,254,254,253,251,139, 36,192,106, 63, 74, 55,215,103,174,124,125,125,187, 51, 12,243, 89,229,107, 78, 8, 89,234,239, -239, 63,191,242,121, 65, 16, 48,161,191,163,116,198,140,183,101,157,195,202,255,148,116, 30,190, 3,133,137,139, 90,145,220,121, -234,134,188, 38,143, 67, 65, 65,193,214,128,128, 0, 54, 43, 43,235, 4,128,123, 70,163,241,187,173, 91,183,186,190,252,242,203, -153,219,182,109,123, 3,128,207, 23, 95,124, 49,176,184,184,120,151, 37,186, 61,219,146, 33, 29,218,133,116,241,245,241, 65,212, -185, 75,144,201,165,246,211, 95, 28, 6, 27, 27, 9,190,220,112, 72, 72,210,228,190,113,250, 26,221,108,142, 86,133,185, 10, 29, - 51,102,140,207,142, 29, 59,100, 0,112,227,198, 13,100,102,102,194,201,201, 9, 74,165,178,234, 59, 95, 25,197,122, 28, 94, 2, - 2,212, 62, 78, 23,247,239,255,201,202,209,209, 30,223,189, 51, 3,207,167,106, 96,199, 50, 48, 26, 81,127, 40,252, 95, 6, 33, - 36, 96,244,232,209, 74,158,231, 81, 82, 82,130,147, 39, 79,170,173,172,172,212,222,222,222, 11, 0,152,109,176,172,172,172, 50, -180, 90,173, 43, 0, 40,149,202,204,178,178, 50, 55, 0,165, 74,165,210,170,162, 72, 89,181,226,230, 68,182, 30, 86,139, 80, 61, - 52, 99,191,217, 16, 66, 58,118,234, 24,122,252,199,136,237, 54, 5, 69,233,176,119,200, 4,131, 2,172, 91,183, 18, 86, 86,118, - 88,176, 96,158,228,126,191,190, 94, 3,135,140, 62, 78, 8,233,247,196,153, 44, 74,214,245, 27, 62,209,209, 74,101, 11, 0, 16, - 56, 35, 54,173,159, 1,134, 97, 48,127,254,124,180,110,221,122, 10, 33,228,127,148,210,220,250,101,176,174, 77,175,113,142,114, -101,249,165, 88,224,141, 88,179,115, 86,185,206,251, 83,241,236,240,166, 83,174,109, 35, 71, 90, 55, 67, 17, 0, 80,138, 50, 41, -131,135,232, 68, 51, 43, 53, 8, 33,189, 41,165, 81,117,109,255, 27,145, 16, 66, 40,165,180,122, 55,203, 35,219,245,209,132, 16, - 69, 75, 7,155,163,171, 62,154,225,201,158, 63, 36, 41,123,120, 23,169, 90, 30,246, 21,207,211, 26, 67, 45, 85, 42,213,196, 77, -155, 54, 61,226,191,124,221, 92, 33,147, 73, 33,149, 17,216,247, 28, 6, 0,200, 63,125, 16,132,212,110,174,106,106,150,148,148, -104,175, 94,189,106,179, 97,195, 6,184,186,186,194,223,223, 31, 42,149,170,234,135,182,250,173,210,104,213, 52, 88, 53, 53, 43, -159,151, 72, 36, 96, 24, 6,145,145,145,224, 56, 14, 99,198,140,249,147,185,146, 72, 36,181, 26,182,154,154,213,246, 31, 37,132, -196, 80, 74,123, 85, 92,120, 99, 40,165,189,171, 29,123,160,139,139,203, 92, 0,139,205,213,100, 89, 10, 86,123, 14,130,247, 10, - 72,146,103, 64, 47,109,139,223,206, 68, 99,211,218,229, 0, 0,255,160,142, 24, 59,106, 88, 85,244,205, 28,205,234,120,120,120, -108,206,204,204,106,223,167, 79, 31, 20, 20, 20,232, 23, 44, 88,128,208,208, 80, 4, 4, 4,214, 90,222, 28, 77, 66, 72,246,181, -107,215, 60,180, 90, 45, 8, 33,217,166,202,215,166, 73, 8,193,214,173, 91,161,213,254, 57,122,239,208,251,115,204, 10,247,195, -228, 55, 55, 99,233,237,221, 88,181,106, 85,189,231,174, 2, 66,181,234, 22, 95,203, 89, 46,116,201, 7,111, 40, 38, 77,154,196, - 78,158, 60, 25, 15, 31, 62,196,203, 47,191,172,141,140,140,212,167,167,165,253, 36, 23,132,239, 12,143, 26,226, 58, 53, 21, 10, -197,150,163, 71,143, 98,247,238,221, 0,128,248,248,120,180,108,217,242,145,139,136,144,187, 7, 69, 73,223,225,226,207,183,208, -121,248, 14, 92,252,121, 2,248,252, 67,210, 14, 45, 81, 80,223,185, 63, 46,181,105, 82, 74, 79, 2, 56, 89,185, 77, 8,249,223, -182,109,219,198, 2,248,145, 82,122, 14,192, 57, 0, 59, 45,209, 44, 23,194,228,113,225, 35, 33,145,217,226,214, 93, 13,122,119, -109, 15, 55, 87, 87,196,220, 76, 64, 82, 74,110, 6, 33,120,113, 80,119,197,226,178, 50,253,255, 78, 93,165,223,155,210,244,241, -241,105,186,103,207, 30,105,229, 54,203,178, 96, 89,246,145, 63, 84,149,251, 44,106,103, 13, 94, 2, 2,108,189,109, 46,126,178, -178,187,245,197,235,219,208,210,111, 8,236, 6, 14,193,178,157, 59,160,201, 46,208,114,165,220,211,150,106, 90,194,223,169, 73, - 8, 9, 8, 15, 15, 63,183,125,251,118,251,228,228,100,156, 58,117, 10,254,254,254, 40, 45, 45, 53,249, 71,183,166,166, 86,171, -117,173,102,154, 42, 83, 24,118,234,116,186,202, 31, 74,147,255,156,171,107,214,149, 91,101,105,206, 85, 45,191,243,114,165, 76, -182,103,255,143, 59,109,226,110,157, 66,187,182, 93, 96,163, 14,134,192,167, 35, 39,183, 24,121,119, 83,241,233,167, 75,177,224, -163, 15,112, 96, 95,132, 77, 96,171,182,123, 9, 33, 45,170,119, 23,254,219,223,119, 16, 58,229,248,207,219, 86, 19, 42,160, 44, -227,150, 66, 90,114, 79, 53,113,194,104,118,252,248,241, 56,112,224, 0, 98, 99, 99, 87,215,101,174,170,107, 18,138, 41, 55, 78, -237, 94, 13, 74, 81,150,121, 75, 33, 43,187,167,122,225,185,177,236,243,207, 14,192,133, 19, 95, 99, 64,187,123, 55, 60, 93, 49, - 42,175,162,147, 80,194, 34, 71,161,196, 89,171, 75,228, 66, 53,147,117, 18,229,255,161, 42,141,213, 73,148, 79, 37,245,175,165, - 42,130,101,137,177,170, 40,207, 62, 37,151,252,184,113,193,235, 33,202, 7, 55,100,186, 27,231,145,170, 19,232,134,135, 92,222, -138, 58,234,148,150,150,150, 36, 36, 36, 88,189, 56,106, 20,186,133,132,192,195,201, 9, 45,188,189, 97,165,144, 67, 46,147,254, -161,109,193, 9, 16, 66,104, 96, 96, 32,134, 15, 31, 14,169, 84, 10,149, 74, 5, 27, 27, 27,200,229,242, 90,163, 87, 82,169,212, -180, 40,202, 67,229, 44,203,226,198,141, 27, 72, 74, 74,130,189,189, 61,206,158, 61,139,167,159,126,250, 79, 81,172,138,118, 88, -208,234, 63,186, 29,107,217,127, 20,102,118, 13, 86,194,243, 4,197,180, 45,148, 15,222, 64, 41,105, 15,157,142,131, 78,167,195, -247,103, 12,184,148, 80, 2,131, 65, 15,157, 78, 87,231, 49,235,130, 16, 66,220,221,221, 71, 5, 5, 5, 77,156, 48, 97,130, 94, - 42,149,162,180,180, 20,165,165,165,184,121,243,166,126,192,128, 1, 25,207, 60, 51,220,237,224,193,131,148, 82, 44,181, 36, 15, -139, 82,154,231,233,233,233,161, 84, 42, 65, 41,205,179,228,124,171,181,175,202,188,212,228,197,101,113,144,176,229,239,201,234, -213,171,193,243, 60,234,251,124,107, 9,249,245,163,207,191, 82, 47, 89,177, 17,106, 71, 55, 68, 69, 69,241, 71,142, 28, 41, 34, - 64,252,157,216,216,101,207, 0,135,247, 0,102,231,174, 1, 64, 94, 94,158,149,191,191, 63,188,189,189, 33, 8, 2,140, 70, 35, - 98, 98, 98,144,158,158,142,156,156, 28,148,149,149,193,209, 58, 31,205,157,188,193, 21,157, 68,218,141,143,225, 97,115, 11,155, -143,234,141, 79, 5,224,154, 37,199,250, 43,160,148, 30, 6,240,216,249, 75,160,240,114,117,247, 1, 67,141, 72,205,204,193,200, -161, 3,192,202,108,112, 63, 57, 27,109,131,155,121, 60,247, 76,119, 15,150,112,152,189,120,199,116, 0,223,155,146, 43, 45, 45, -229,111,222,188, 41,189,118,237, 26, 88,150,133,157,157, 93, 85, 58, 64,117,115,101, 78, 58, 64, 93, 84,154,171,207, 87, 63,109, -205, 72, 75, 80,200, 31,199,154, 31, 46,160,165,239,211,216,116,235,142, 86,146, 95,220,239, 75,173, 54,190,193, 7,248, 7,224, -225,225, 49, 85, 16,132, 5,148,210,252,240,240,112,183, 29, 59,118, 56,164,164,164, 32, 58, 58, 26,243,231,207,207,226,121,158, -163,148, 18, 74,233,199,143,123, 44, 74,169, 80, 61,178,101,101,101, 85, 25,217, 42,169, 22,185, 42,177, 84,151, 16, 34, 85, 41, -241,166,179, 29, 25, 33, 97,236,252,185,194,226,251,217,122,250, 83, 41, 39,124, 75, 41, 53,214, 87,151, 97,152, 87, 34,118,173, -246,116,118, 17, 16,230,210, 23,105, 25, 6,124,254,206, 11,200,201, 41,194,247,235, 23, 1,144,195,192,177,232, 21, 54, 26,174, -174, 94,152,242,234, 20,247,213,107,215,188, 14,224, 75, 75,219,249, 79, 37,237,236,202,125,132,144,227, 46, 46, 46,177,175, 79, -153,226,226,239, 63, 9, 74,165, 18, 59,119,238,196,142,239,190,227, 87, 0, 99,215, 18,242,219, 84, 74,247,213,171,115,225, 15, -157, 25,211,166,185,180,106, 53, 13, 10,133, 2, 39,142,252, 0,109,250,214,162,161,221, 96, 40,213, 98,104,147,225,212,241,193, -207, 36, 87, 42,197, 93, 0,144, 42,145, 38, 5, 50,107,200,253,235,141, 85, 37, 13,238, 34,108, 38, 83,157, 91,255,206,184,246, - 46, 66,153, 68,127,230,103,164,232, 4,238,139,187, 6,195,149,124, 58,177,174, 58, 12,195, 8,190,190,190,232,219,161, 3, 70, -245,236, 9,137, 68, 2,165, 92, 6, 91,165, 21, 40, 95, 30,185,170,236, 34, 52,215,235, 85, 26, 27, 39, 39, 39,200,100,178, 42, - 99,101,110,244,170, 46, 77, 65, 16, 32,145, 72, 16, 19, 19,131, 30, 61,122,192,199,199, 7,187,119,239,198,192,129, 3,255,212, -101,104,169,185, 2,202, 13, 86,245,238,186,106,201,239, 38,147,219,107,162,213, 19,100,235,219,130,144, 16,112, 28,192, 83, 64, -167,213,130, 82,128, 82,192,104,208, 67,171,213, 86, 29,211,156,174, 87,111,111,111, 79,127,127,255,119,230,206,157,221, 34, 52, -180, 29,178,179,179, 33, 8, 2,108,108,108, 80, 90, 90, 10, 59, 59, 59,116,235,214,237,247,207, 62,251, 44,151, 82,204,181, 52, -201,253,113,169,124,205,143, 29, 59,246, 72,247, 96,229,173, 36, 77,131,201,111,109,131, 92, 2,196,196,196, 32, 40, 40,200,148, -185,100,250,244,234,142,115,191,199,115, 47,191,183, 66, 39,205,137, 94,236, 46, 8,155, 52, 64,131,207,139, 82,138,236,236,108, -100,100,100, 96,196,200,145,216,177,125, 59, 30, 60,120,128,224,224, 96,244,233,211, 7,174,174,174,120,240,224, 1, 46,157,214, - 65,151,151,139, 92,125, 52, 84,182,157,177, 63, 42, 65,247,225, 42,253,255,203, 40, 66,160,188,219, 4,192,203,106,181,186, 73, -105,105,105,186,209,104,220,141,114,211, 63, 80, 42,149,142, 83,169, 84,238, 5, 5, 5, 15, 0,124, 79, 41,189,108, 74,207, 74, -169,116, 82, 40,237, 32,112, 58, 72, 36, 18,248,248,248,131,242,122,228, 21,150,225,197,241,195,241,123,204, 77, 28,249,237, 2, -103, 52, 10,223,152,219,198,128,128, 0,228,228,228,128,101, 89,168, 84, 42, 88, 91, 91, 35, 48, 48, 16,201,201,201, 85,230,170, -161, 93,132, 47, 1, 1,118,190, 54, 23, 62, 91, 89,110,174,210, 83,211,144,242,128, 66, 33,151, 99,237,186,213, 37,165,233,121, -157, 55, 2,255,106,115, 5, 0,130, 32,124,156,146,146,226, 42,145, 72,220, 57,142, 67,114,114, 50,174, 92,185,130, 55,222,120, - 35, 35, 39, 39, 39,140, 82,218,160,115, 84, 42,149,153,149,145, 43,165, 82, 89,117,241,172, 45,178,245, 56, 57, 87,132,144,102, -254,222,182,145,235,151,207,244,237,216,185, 27,163,146,216,229, 21,223, 77,239,113,230, 84, 84,183, 55,150,127,255, 58, 33,100, - 0,165, 52,177,174,250, 10,169,116,112,151,238,221, 37,160, 25,144,200,123, 96,233,146,241,200,202, 46, 68, 94,110, 17,100, 50, -107,232,141, 44,120,129,160, 91,143,158,248, 97,243, 46,180,126,245,101, 86, 46,149,246,199, 19,100,176, 42, 88,244,237,183,223, -250, 6, 6, 6, 98,211,166, 77,248,109,203, 22, 60, 95, 80,128, 40,134, 97,141, 82,169,243, 97,163,113, 29,128,122, 13, 86,117, -157,214,173, 91, 99,227,198,141,216,186,117,235,195,137, 79,103,238,157, 57, 17,174, 6, 3, 6, 69,223,134, 99,147,225, 64,244, -109, 56, 62, 21,136, 22,156, 4,119, 9,129, 85,117, 1, 66, 72,239,234,247,255,118, 36, 0,194, 72,121,127, 92,213,189,169, 74, -214,110,129, 19,182, 79,234,223, 33,184,169, 55, 99,220,253, 53, 82, 74, 57,237,252,219, 6,225,118, 17, 29, 29, 87,143, 57, 96, - 24,134,178, 44, 11, 91, 43, 43,184,216,219,151,255,211,100, 24, 64, 0, 4, 35, 64,248,242, 47, 31, 21, 8, 44, 25,252, 44, 8, - 2,228,114,121,173, 9,237,150,230, 94, 85,215, 44, 42, 42,194,253,251,247, 49,101,202, 20,168, 84, 42, 0, 64,122,122, 58,252, -252,252, 32,145, 72,144,146,146,130, 19, 39, 78,160,105,211,166, 80, 40, 20, 22,185,172,106,209,164, 80, 66, 72, 20,128,208,180, -180, 52, 59, 15, 15, 15,192,210, 8,150, 64, 81,170, 35,208,235,121,220,185,115, 7,169,169,169,184,127,239, 46, 58,150, 20,130, -130, 5,165,212,162, 8,150,135,135, 71, 96,203,150, 45, 63, 91,180,104,145,212,199,199, 7,130, 32,192,209,209, 30, 37, 37,101, -200,201,201, 65,112,112, 48,124,124,124,176,116,233, 82,160,188,251,232,111, 53, 87,213,169, 28, 45, 90,253,158, 97, 24,188,245, -140, 47,114,115,109,192,178,127,140, 38, 53,145,131, 37, 3,128,176, 1,225,146,200, 35,135,173, 57, 96, 97, 58,203, 46, 52,245, - 15,132, 82,106,228, 5, 65, 85,215,243,201,201,201,144, 74,165,136,216,179, 7,185, 25, 25,104,219,182, 45, 58,117,234,132,187, -119,239,226,247,223,127,135,147,147, 19, 92,188,187, 34,234,158, 1,113,169,101, 80,171,213, 72,208, 48,255,111, 67,255, 9, 33, -195,250,245,235,247,221,178,101,203,220,221,221,221,165, 89, 89, 89,220,202,149, 43, 7,174, 92,185, 50,238,245,215, 95, 15,126, -253,245,215, 29, 92, 92, 92, 36,233,233,233,198,119,222,121,103, 32, 33,100, 46,165,180,206,110, 67, 0,176,182,182,117,100,101, -214, 32, 68, 2,123,181, 3, 36,114,107, 8,156, 4,188, 0,216,169, 93,112,238,247, 8,156,189, 94, 52, 53, 51, 7,123, 76,181, -143, 82, 74,157,156,156, 40,203,178,112,114,114,122,164,107, 16, 0,220,220,220, 80, 88, 88, 8,150,101, 33,149, 74, 45, 54, 89, -149,230,234,243,149, 79,219,144,106,230,170, 56,219, 9,191, 29,189,153, 95,154,158,215,227, 73, 48, 87, 0,170, 6,235,220,187, -119, 15,165,165,165, 56,125,250, 52, 62,254,248,227,172,154,230,202,205,205,237, 85, 59, 59,187,143,138,139,139,151,166,165,165, -125,109, 74,183, 34, 50,213,104,212, 54, 29, 3, 33, 68,234,227,161, 60,250,251,233,109,126,106,122,141, 32,105, 10,112,167, 48, -214,246,162,107,175, 33, 29,135, 50,237, 87,125,210,164,211,212,247,143, 18, 66, 2,235,138,100, 9, 60,223,222,218,198, 22, 64, - 38,162,175,156,172, 50, 87, 57,185, 5,208, 25, 88,232,244, 4, 90, 3,131,190,253, 6,225,187, 53, 91,145,146,153,139,202, 17, -134, 79, 10,132, 16,199,144,144,144,105, 99,199,142,197,194,133, 11,113,124,217, 50,253,107,132, 20, 74, 0,122,136,231, 33, 80, - 74, 24, 51,146,211,107,234,124,249,229,151,251, 0, 60,187,248, 13,116,205, 43,198,139,158,195,169, 99,147,225,229,101,199,204, -161, 0,224,152,117,252, 79,169, 58,164,178, 39,205,210, 30,181,127, 42, 18, 74,105, 20, 33, 4,213,239,235,171, 96,239, 30,216, -251,127,115,102,172,232, 62,162, 31,147,254, 90, 15,228, 23,234,244,115,110, 26, 25, 77, 41, 29, 85,159,185,170,206,123, 43, 87, -226,247,248,242,239,175,183,171, 43,102, 63,247, 28, 40, 7,156,141,141,195,174,227,199, 49,190, 95, 63, 88, 87,140,224, 51, 69, -229,197,179,182,168, 85,245,232,149,165, 81,166,252,252,124,236,217,179, 7,157, 58,117,130, 74,165,130, 68, 34, 65,104,104, 40, -110,222,188,137,102,205,154,129, 16,130,253,251,247, 99,212,168, 81, 72, 76, 76, 68,215,174, 93,109, 76,171,254, 65,165,217,137, -139,139,179,163,148,246,170,140,118, 52, 20,157, 78,135, 91,183,110, 97,248,240,225,112,112,112,128,151,215, 14, 28, 63,186, 13, -170,144,231, 65, 8, 44, 50, 88,132,144, 49, 67,135, 14,149, 50, 12,131,178,178, 82, 40, 20, 74,216,216,216,193,214, 86,141,128, -128, 0,164,166,166, 98,224,192,129,134, 59,119,238,108, 77, 75, 75, 59,100,105, 91,221,220,220, 84, 69, 69, 69, 51,252,253,253, -149, 0,160, 84, 42,251, 58, 59, 59,127,158,157,157,109,209, 48,222,234,198,138, 16, 2,150,101,171, 12,150,132, 97,224,225,238, - 90,181, 93,145,127, 86,231,135,128, 16, 82,152,146,163, 83, 0,128,175,175, 47,190, 91,123,128, 25, 58,116, 40,102,204,152, 1, -163,209,136, 85,171, 86, 1, 0, 38, 76,152, 0,131,193,128,189,123,247, 2, 0, 36, 18, 73,189,125,206, 87,174, 92, 65,116,116, - 52,140, 70, 35, 10, 10, 10,240,203, 47,191, 32,234,212, 41,236,220,255, 43, 30,220,187,139,208, 64, 63,188,252,242, 75,144, 74, -165,216,188,121, 51,122,244,232, 97,201, 75,208,232,200,100,178, 23,214,175, 95,239,181,105,211,166,252,159,126,250,169,160,115, -231,206,214, 43, 86,172,112,253,238,187,239,250,232,245,122,188,253,246,219,153, 23, 47, 94, 44, 25, 49, 98,132,122,221,186,117, - 94, 45, 90,180,120, 6,181,228,101, 85,116,251,140, 7, 48, 41,172,147, 90,146, 95, 84, 6,129,211,227,222,131,251, 40, 40,214, - 67,224, 13,120,168, 73, 69,177,150, 71, 78,110, 17, 66,219, 15,248,246,228,201,147, 31, 16, 66,230, 81, 74, 15,154,106, 39,207, -243,184,112,225, 2,206,158, 61,139, 83,167, 78, 33, 41, 41,169,234, 57, 59, 59, 59, 68, 70, 70,162, 79,159, 62, 22,157,123, 93, -230,170, 40,171,220, 92,229, 63,204,125, 98,204, 21, 0, 80, 74, 23,120,120,120, 44,240,240,240, 80, 30, 59,118, 76,221,164, 73, - 19,112, 28,167,175, 25,185, 10, 11, 11,251,223,250,245,235, 61,154, 53,107,246, 6, 0,147, 6,171, 46,234,138,108,153,129,111, -181,200,151, 47, 0, 48, 12, 94, 93,186,122,154,179,173,252, 97, 42,238,124, 85, 49, 23, 32, 11,148, 22, 2, 39,183, 67,210,253, -195,251,111,140,156,227, 48,119,211,194, 87, 1,172,170, 75, 56, 33, 49, 25,171, 87,127,135,153,111,191,136, 31,190, 95, 10, 65, -144, 64,103,100,225,235,223, 5, 58,131, 0,194, 72,208,182,125, 7,252,118,242, 52,164, 12,176,103,211,234, 6,158,253, 63, 19, - 74,105, 46, 33,100,213,254,253,251,223,156, 49, 99, 6, 4, 65,144,127,180,122,117, 89, 86, 86,214, 34, 88, 48,127, 85, 45, 58, -163, 86,175, 94, 29, 63,247,187,172,125, 51, 39,130,125,240, 51,201,141,190, 13,199, 49,115, 40, 34,150, 16, 60, 21,136, 92, 85, -237,151,248, 83, 53,238,255,213, 72, 0, 84,229,166,212,231, 24,159, 10,104,246,137,218,209,225,165,110, 29, 91, 57,189,243,198, -171,210,196,116, 45,142,118,120,167,224,192,242, 15,109, 30, 10,214,111, 39,209, 66,139,162, 46,187, 78,156,168,122,252,197,142, - 29,181, 62,151, 54,102,140, 89, 90,130, 32,212, 25,181,178, 52,114, 5, 0, 42,149,202,190,127,255,254,120,250,233,167, 49,122, -244,232,170,156,171,118,237,218, 97,231,206,157, 8, 15, 15,199,213,171, 87,225,225,225,129,160,160, 32, 4, 5, 5,225,240, 97, -203, 82, 85, 42,187,235, 66, 66, 66, 42, 71, 17,134,106, 52, 26,139, 70, 15, 86, 71,167,211, 33, 39, 39, 7,142,142,142,144,203, -229,232,220,185, 19,222,124,171, 51,156, 61, 54, 34,164, 85, 32, 74, 74, 74,170,134,174,155, 66, 42,149, 6,180,104,209, 2, 89, - 89, 89,200,202,202,130,139,139, 11, 60, 61, 61,225,230,230,134,229,203,151,211, 21, 43, 86, 68,241, 60,191, 53, 61, 61,221, 98, - 71,232,237,237,221,209,217,217,249,205,204,204, 76,101,181, 31, 77,101,219,182,109,215,122,122,122,174, 74, 77, 77, 61,107,174, - 22, 33, 4, 6,131, 1,132, 16, 28,186,231,137, 18, 61, 65,161,230,255,216,187,238,176, 40,206,245,123,190,153,109,148,165,151, -165, 44, 32,168,160, 40, 24,187, 81,136, 93, 52,154,168,216, 80,115, 19, 75,162, 73,140, 53,118,141,137, 49,106, 98, 55,106,108, - 55,137, 92,187, 98,140,196, 94,176,199, 46, 32, 32,138,133, 14,178,244,133,173, 51,243,253,254,160, 4,145,178,152,114,111,242, -243, 60,207, 62,176, 51,179,103,190, 25,150,153, 51,239,247,190,231,189,133, 41,111,123, 61, 39,184,196, 98,177, 41,137,186, 37, - 97, 97, 97,206, 30, 30, 74,164, 38,221,195,129, 3, 20,171, 87,175,198,133, 11,101,255,231,137,229, 15, 4, 21,239,187,119,239, - 14,111,111,239, 6,153, 91, 10,130,128,232,232,104,236, 62,124, 30,174, 94,254, 72,121,144,128,219, 71,143,160,145,147, 61, 90, -182,105, 7,163,209,248,187, 44, 52,254, 8, 24, 12,134,173,190,190,190,208,235,245,103, 0,108,139,142,142, 30,156,153,153,185, -230,231,159,127,118, 27, 54,108, 88,198,145, 35, 71,166, 1, 56, 20, 29, 29, 61,230,171,175,190,234,105, 44,155, 62,120, 1, 44, -203,254, 48,125,250,244,110,195,134, 13, 35, 18,198,168, 63,121, 98,135,136,227,140,100,230,188,237,124,212,165,243, 12,199, 25, -201,144,176,233,194,209,179, 49,204,132,201, 43,248,214,157,250, 35, 54, 54,214,101,192,128, 1, 75, 0,212, 41,176, 88,150, 5, -207,243, 16,139,197,149, 2,186,166,109, 26, 18,189, 26, 7, 52,182,246,146,255,186,116, 99, 47, 57, 17,169,255,241,226, 10, 0, - 84, 42,213, 22, 0, 91,236,237,237,179, 45, 45, 45, 81, 92, 92,252,194,247,143, 16, 98,214,172, 89, 51, 51,169, 84,138, 62,125, -250,216,187,186,186, 38, 50, 12,179, 46, 61, 61,189,193, 74,163,166,200,214,203,218, 52,216, 57, 97, 64,199,224, 54, 86,247,109, - 22, 91,153,137,180,119, 26, 37,154, 89, 19, 0,133, 58,197,227, 43,201, 35,138,200, 51, 89,235,118,221,219,194, 90,100, 57, 0, -181, 8, 44,134,101,111, 23,230, 23,244, 43, 42,214,227,210,229, 88,132,141,104, 10,157,129, 64, 16, 24,168, 75,116, 0, 43, 6, - 3, 96,228,168,119, 65,137, 8,121,217, 25, 96, 89, 54,166,161,199,253, 55,192,220,137, 19, 39,246,155, 55,111,158, 79,185,127, -149, 87,185,127,213, 44, 66, 72, 32,165,180,244, 37,121, 26, 29,217,179,112,198,225,139,155, 11,251,119,214, 60,104, 91, 86, 19, -101,223,182, 25,242,196, 98, 60, 20,177,200,165,244,185,138, 82, 84, 20,124, 85, 45,252,250, 59,195,164, 28, 44,223,198,202,190, - 93,219,183,155, 60,127,222,124,171, 7,215, 47, 96,254,146,111,133,166,237, 66, 10, 87, 29, 58, 94, 92,104,221,168, 71,105, 70, -194, 29, 19,247, 71, 1, 32,164,123, 40, 90,181,232,240,194,202,160,238,101, 30,144,151,206,221, 68,118, 78,186, 73,132, 21,226, -169,182,156, 43, 83, 74,243,171, 67,163,209, 20,196,198,198, 58,167,165,165, 61,151,208,238,237,237, 13, 66, 8,174, 93,187,134, - 95,127,253, 21, 97, 97, 97, 16,137, 68, 16,139,197, 56,127,254,124,113, 67,246, 81, 37,154, 20, 77, 41,237, 74, 8, 9, 81, 42, -149, 53, 86, 15,154,194,165,209,104, 80, 88, 88,136, 19, 39, 78,160,105,211,166, 88,186,116, 41,220, 92, 21,152, 63,127, 6, 4, - 65, 64, 81, 81, 81,165, 63, 80,125,224,121,158, 86, 68,135, 4, 65, 64, 78, 78, 14,124,124,124,176,113,227, 70,172, 89,179,230, -219,140,140,140, 6, 87,185,216,217,217, 89,155,153,153, 77, 24, 48, 96, 64,208,160, 65,131, 16, 18, 18,242,220,250,157, 59,119, -202, 15, 29, 58, 52,219,195,195,163,171, 32, 8,223,165,167,167,215, 89, 22, 92,129,239,191, 47,179, 79,178,232,180, 8,115,134, - 53,194, 59, 31,237,192,170, 85, 17,144,201,100,149,122,237,222, 71, 0, 0, 32, 0, 73, 68, 65, 84,219,176, 44,139,197,139, 23, -215, 41, 94, 4, 74,125, 37,170, 43, 25, 51,102,175,116, 94,182,236, 52, 78,159,126, 6,134, 97,224,234,234, 10,134, 97,240,228, -201, 19, 48, 12, 3, 47, 47, 47, 48, 12,131,244,244,244,138,156,191,124,212, 80,197, 88, 19, 24,134,129, 86,171, 69,106,202, 83, -164, 37, 37, 66, 94,148, 5, 39,107, 11,228,223,139, 70,171,113,239,195,104,172, 51, 39,247, 47, 1,165,244, 20,128, 83, 85, 22, - 29, 32,132, 24, 9, 33,163, 0,236,165,148, 70,148, 47,223,142, 58,140, 65, 59,117,234,212,122,222,188,121,226, 10,219, 12, 55, -207,175, 56,131,193, 32, 0, 64,179, 86,111, 60,167,242, 31, 62,124,136, 85,171, 86,161,164,164, 4,146, 6,100,166,247,234,213, -171, 50, 39, 82, 34,145,192,209,209, 17, 6,131, 1, 28,199, 53,120,106,208,193, 75,249,237,181, 91,231,249,187, 73,155, 53, 49, -247,143,153,167, 61, 17,160, 86, 57,254, 99,197, 85, 85, 80, 74, 23, 41,149,202, 69,130, 32, 80, 74,233,194,138,229,132, 16,153, -167,167,231,197,147, 39, 79, 58,112, 28,135,245,235,215,219,102,101,101,217,190,241,198, 27,115, 0,212, 42,176,106,177,105,168, - 13, 47,101,211,192,243,240,179,182,178, 69, 62,210,160,115, 52,182, 46,112,224,242, 78,101,190,127,199, 45,185, 77, 11, 75,222, -232,195, 20,233,225,110, 97, 11,129,210, 90,141,208,116, 70,227,177, 59,183,110,247,241,244,104,202,254, 28,121, 1, 3, 7, 15, -131, 78,199, 64,107, 36, 32,172, 24,132,149, 32,176, 85, 27, 52,111,217, 10, 20,192,205,235, 87, 56,189,209,120,170, 54,190,191, - 35,220,130, 38,135,185, 5,125,178, 14, 84,160, 53,248, 96,249, 12, 30, 60,120, 25,128,201,245,241, 40, 94,159, 28,230,210,185, -140,167,170, 15,214,244, 79, 38,226,222,117,177,205,133, 91, 95, 75, 66, 58,225,151,156,211, 4, 22,102,191, 85, 17,138,153,151, -179,215,248,187,160, 94,129,229,233,233,105,235, 44,183,248,254,227,113, 99,173,146,239, 94, 69, 90,244, 85, 92,190,148,152,191, -235,224,225,244,162,194,156,113, 13, 16, 87,149,211,121,142,174,141,224, 83,131,192, 50,183,114, 2, 0,248,180,232, 0, 81, 74, -195,108,128,106,138, 94,189,140,184,170, 64,133,168,170,158,208, 62, 97,194, 4,108,219,182, 13, 93,186,116,129,175,175,111,229, -147,114, 67,163,100,213,163, 73, 47, 83, 61, 88, 21,197,197,197,240,242,242,194,214,173, 91, 17, 19, 19, 3, 43, 43, 43,132,133, -133,161,184,184,184, 82, 88,153,154,228,206,243,252,211,147, 39, 79, 6, 14, 31, 62,156,138, 68, 34, 82, 80, 80, 0, 27, 27, 27, -108,220,184,177, 52, 51, 51,243, 92, 67,199,230,238,238,222,223,222,222,126,252,136, 17, 35,216,102,205,154, 33, 59, 59, 27,214, -214, 86,122, 66,136, 20, 0,108,108,108,244,150,150,150,248,224,131, 15, 16, 24, 24,216, 97,246,236,217,237, 93, 92, 92,194,179, -178,178, 14,214,198, 89, 49, 45,184,103, 79,217,236,212,184,117, 9,208,235,203, 4,202,166, 77,155, 80,158,203, 86,137,164,164, - 36,192,132,202, 20,185, 92, 14, 95, 95,223, 26,255,246,193,193,193,184,121,243,102,217, 20,164, 72, 4,103,103,103, 92,190,124, -217,164,178, 76, 90,110,224, 24, 27, 27, 11,127,111, 71,196,156, 62, 9, 71, 11, 49, 94,115,115,129, 50,184, 43, 18, 19, 19,255, -171,209, 43, 66,200, 64, 0, 3, 0, 28,165,148, 30, 34,132, 12, 5, 16, 82,241, 30, 13, 52, 22,229, 56,142, 50, 12, 67, 82, 83, - 83, 13, 22, 22, 22,196,222,222, 94, 36,147,201,160,211,233, 42,133,214,195,135, 15, 17, 25, 25,137,180,180, 52,216,219,219, 51, - 54, 54, 54, 48, 24, 12, 38, 85,148,242, 60,255,130, 61, 67,249,126, 27, 44,174,222, 3, 2,182,125,181,188,145,140, 97,109,252, - 29,251,226,209,189,135, 26,181,170,192,252,255,131,184, 2,128,252,252,252, 45, 0,182, 84,188,119,114,114, 26,195,178,236,124, - 27, 27, 27,155,243,231,207,219, 58, 57, 57,145, 29, 59,118, 24, 23, 46, 92, 88,192,178,108, 62, 33,100, 77, 93,124,181,216, 52, -188, 52,106,178, 99,160, 20,113,170,194, 36, 47,177,157,155,112, 87, 75,175, 76, 77,157,211, 60, 95,220,212,137,180, 12,192,224, -103,241,151,198,112, 73,157,179, 51,179, 24, 10, 33,174, 54, 94, 65, 16,182,207,153,183,120,102, 98,194,109, 79, 51,107, 51, 76, -152, 56, 15,191, 28, 63, 7,194,136,113,241,202, 53,232, 13, 60, 84,121,133, 24, 49,114, 52,148,174,142,136,251,245, 68, 14, 39, - 8, 27,127,239,241,252, 47,129, 82, 97, 67,159,129, 99,236,100,230,101,105,164,130,192,227, 63,255,158, 1,134, 89,135,207, 62, -251, 12, 1, 1, 1, 31,145,178,206, 13,117, 62,240, 18, 34,108, 8,236, 58,210, 78, 34, 43,227,161, 2,143,173,251,231,148,251, - 96, 77,195,198, 45, 7, 3, 91,122, 63,254,188, 46, 31,172,127, 34,106, 21, 88,141, 26, 53,146, 89,138,241,129,189,185,100,214, -199,163, 6, 57, 61, 75,186,135,180,248,219, 0, 0,157, 78, 99,204, 76, 60,255, 90,125,228,229,198,108, 85,163, 29,180,174, 41, - 42,173,182,254, 39,248,234,156, 21, 55,218,234,209,171,134,136,171,154, 56, 1,188,112,131,101, 89, 22, 30, 30, 30, 88,182,108, - 89,189, 62, 88, 53, 28,123,197,242, 16, 0,173, 0, 84, 77,114, 15, 49,165,114,176, 54, 78, 39, 39, 39,228,230,230, 2, 0,186, -117,235,134,110,221,126,171, 83, 48, 24, 12,149, 81, 43, 43, 43,171, 23, 34, 88, 53,113,114, 28,183,252,208,161, 67,195,174, 94, -189, 58, 96,198,140, 25,162, 30, 61,122, 0, 40,243, 28,163, 38,244, 94,171,129,115,212,241,227,199, 89, 65, 16,176,117,235, 86, -220,186,117,139, 90, 90,202,167,202,229, 86, 59,172,173,173,249,130,130,130, 81,239,191,255,254,160,207, 63,255,156, 4, 7, 7, -227,234,213,171,196,199,199, 39, 20,192,193, 58, 56, 1, 0,215,174, 93, 3,195, 48,224,242, 82,240,209,156,189,176, 52, 23, 33, - 33, 33, 1,121,121,121, 47,152,143,154,114, 62, 5, 65,168,188,113, 87,188,130,131,131, 43,167, 27, 59,118,236, 8,150,101,113, -231,206,157, 26,167, 91,171,113, 82, 7, 7,135,202,239,135, 68, 34,193,185,115,231,240,229,151, 95,194,211,222, 22,249,241, 49, -112,233,214, 3,189,199,190,143,176,176, 48,176, 44, 11,123,123,123,160,154, 79, 80,109,199,254,123, 80,149,147, 16,242,150,191, -191,255,220,184,184, 56,101, 96, 96, 96, 11, 66, 72,183,128,128,128,246, 49, 49, 49, 21,239,197,148,210,154,253, 48,106,225,188, -113,227,198,129, 13, 27, 54, 76,124,239,189,247, 36,130, 32,240,201,201,201, 70, 0,196,197,197,133,189,113,227,134,240,243,207, - 63, 67,163,209, 64,169, 84, 50,238,238,238,228,212,169, 83, 66,124,124,252, 53, 74,233, 60, 83,143,189,162, 82,176, 34,153, 93, -163,209,152, 36,174,170,115, 54,106,238,183,180,231, 27,205, 60, 84, 25,119,144,153,158, 4,109,158,157,241,220,137,203, 13, 18, - 87,127,246,223,232, 47,230, 92,252,224,193, 3,119,157, 78, 7,169, 84,138, 77,155, 54, 25,150, 45, 91, 22,167, 82,169,130, 40, -165,154,234, 27,155, 58,206,134, 24,144,214,199, 89,152,139, 95,126, 58,124,163,189,124,240,118,124,148,145, 83,153,184, 72, 9, -177,143, 80,180, 8,178,232, 16,152,206, 28, 93,196, 20,243,165,149, 57,162,213, 57, 41,165,122, 66,200,176,193,161, 35,207,236, -217,179, 91,190,112,209, 34, 92,190, 22,131,220, 2, 53, 4,202, 66, 32, 4,243,231, 47,132,139,163, 61,138, 50, 30,148,234, 12, -134,193,180, 90,203,156,191,251,223,157, 16,102,210,169,159,119,172, 99, 8,132,146,236,251, 50,182, 56,201,226,157,176,193,162, - 97,195,134, 33, 34, 34, 2,177,177,177,155,107, 19, 87, 85, 57, 41,101, 38,197,156,223,187,142, 0,130, 38,231,190, 76,164,126, -108,241,238,168,193,162,176,176, 48, 28,138,188,130, 61, 71, 30,127,183,251,103,122,228,143, 60,166,191, 3,106, 21, 88, 86, 34, -196, 6,181,104,236, 30,220,166,165,153,136,215, 32, 45, 62, 9,121, 37, 90,156,186,151, 92,192, 80,230,135,151,221, 97, 89,238, -132, 4, 41, 41, 15, 94, 88, 87, 80, 80,150,245, 86, 92,220,176,182, 79, 12,195, 60, 23,189,250, 61,145,171,170,227, 84, 40, 20, -149, 55,199, 10, 33, 87,113,195,174,200,241,121, 9,139,134, 57, 41, 41, 41,214, 41, 41, 41,160,148,226,218,181,107,214, 29, 59, -118,156,131,223, 17,189,154, 49, 99,198,115,237, 65,170,254,172,105, 89,125,200,201,201, 41, 1,240,189, 66,161,248,101,230,204, -153,255,234,212,169, 83,240,103,159,125, 70, 40,165, 47,123, 98, 57, 65, 16, 16, 21, 21,133,136,136, 8, 94,175,215,207,205,204, -204,188, 95,101,253, 15, 30, 30, 30, 23, 7, 13, 26,180, 42, 49, 49,145,141,139,139,131, 41, 66, 78,163,209,192,215,215, 23, 28, -199,225,235,143, 60, 80, 92, 28, 8,142,227,192,243, 60, 44, 45, 45,159,235, 67,105,202,223,137, 97,152,231, 34, 35, 21,175,107, -215,174,129,101, 89, 4, 5, 5,225,246,237,219,149, 17,172,250, 34, 78, 6,131, 33, 69,161, 80, 40, 22, 47, 94, 92, 57,174,156, -156, 28,156, 60,121, 18,157, 94,239,140, 22, 31, 76, 64, 70, 70, 6,214,172, 89, 3, 55, 55, 55, 44, 93,186, 20,121,121,121,224, - 56,238,175, 14,155,247,141,139,139, 83,142, 26, 53,234, 89, 76, 76,140, 50, 50, 50,210,118,192,128, 1,150, 35, 71,142,124, 22, - 19, 19,163, 36,132,188, 1,160, 94,129, 85, 21, 60,207,207, 37,132, 28, 95,186,116,233,156,201,147, 39,119,124,239,189,247,196, - 98,177, 88, 72, 79, 79,231,118,239,222, 77,124,125,125, 25,137, 68, 66, 78,156, 56, 33, 92,191,126,253, 87,142,227,190,166,148, - 94,108,200, 62,170,138,171,134,230, 92, 85, 96,170,179,236, 93, 43, 38, 39,104,195,166,101, 76, 51,111,165, 33,124,247,201,212, -139, 87, 31, 60, 98,117,220,212,239,129, 90, 75,252,255,201, 96, 89,118,159,191,191,255,152, 73,147, 38,153,135,132,132,200, 62, -255,252,243,194,226,226,226, 26,197, 85, 77,104,136, 77, 3, 26,104, 64, 90, 5,255,158,251,105,228,212,233,129, 99, 26,143,119, -105,132,211, 37,207,144, 47, 98, 25,107, 91, 6,109,188, 88, 20,171, 30, 58, 29, 57,243,227, 19,212,227,171, 70, 41,189, 65, 8, -233,213, 50,176,245,193,175,151,126,237,188, 96,246, 44,241,193,200, 99,160,156, 1,215,206,159,135, 92,194,211,248, 91,167,179, -117, 6,253, 32,250, 79,115,113, 7,144,113,105,253, 30, 66,200, 97,123,123,251,187, 99,223,123,207,215,223,127, 36, 44, 44, 44, -112,224,192, 1,252,103,253,122,126, 45, 48,124, 11, 33,183, 39, 80, 90,231, 61, 63,251,106, 37,207,157,247,199,142,245,107,211, -102, 60, 44, 44, 44,176,127,255,126,236, 88,187,214,100,158,127, 26,106,159, 34,100, 72,241,175, 15,146,213,215, 30, 36,171, 33, - 80, 42, 80,170, 99, 24,164,150, 24, 12, 75, 19, 31,165,189,148, 24,168,152, 34, 92,242,213,164,151, 30,112, 77,156, 21,162,231, -101,202,178,107, 2,207,243,105, 77,155, 54,125,110, 31,245,253,110, 52, 26,211, 76,164, 95,238,233,249, 66, 95,210, 6,231, 93, - 85,160, 98,218,207, 84,113,101,170, 15, 22, 0,100,103,103,231, 0, 88,169, 84, 42, 15,247,235,215, 47,140, 16,146,245, 50, 99, - 36,132,236,233,222,189,123, 24,165,148,101, 24,102,103, 53,113, 5, 0, 72, 77, 77,125,172, 84, 42,183,122,123,123, 87, 54,128, -174,139, 83, 16,132,199,129,129,129,149,198,159,213, 5, 84, 77,239, 5, 65,168,247,111, 84, 80, 80,128, 14, 29, 58,188,208,115, -146, 82,138,228,228,228,138, 8, 19,128,178,115, 95,151,112, 83,171,213, 19, 62,249,228,147, 45, 98,177,216, 19, 0,169, 16,183, - 60,207,179,223,126,251,173, 25,207,243, 44, 0,194, 48, 12, 39, 22,139,181, 17, 17, 17, 28,199,113, 41, 58,157,110, 66,125,227, -252,131,177,151, 16, 34, 6,144, 31, 23, 23,247, 70,121,228, 42, 45, 54, 54,246,244,158, 61,123, 20, 64,253,246, 9, 53,161, 92, - 48, 93, 36,132, 4,111,218,180,105,238,132, 9, 19, 58,132,133,133,137,186,117,235,134, 95,126,249,133,143,138,138,186,166,209, -104,150, 55, 84, 88, 17, 66,212, 94, 94, 94, 0, 80,105,244, 91, 27, 56,142,171,243,105,205,193, 75,182, 97,244,135,110,102, 91, -151,159, 84,171, 50,244, 87,140,106,253,188, 31,129,216,134,140,231,159,134,172,172,172, 79, 9, 33, 11,215,172, 89,147,241,218, -107,175,201, 36, 18,137,222, 84,113, 5, 52,204,166,129, 82,106,186,243,241,243,159,227, 8, 33,111,174,238, 61,244,112,215,249, -159,120,247,238, 30,100,225,209,200,217, 61, 62, 41, 27, 15,175,254, 82,114,247,200, 87, 79,169, 46,127, 32,165,180,222,254,163, -148,210,235,132,144,166, 51,102,205,168,104,246,220,170,231,169,159,232,255,163,102,207, 75, 86,172, 88,225,235,239,239,143, 3, - 7, 14,224,212,206,157, 24,161, 82,225, 28,203,178,140, 68,226,112,196, 96, 88, 9,192, 20, 97,180,100,213,170, 85,126, 1, 1, - 1,216,183,111, 31, 78,236,216,129,225, 47,199, 83, 27,218, 3,112, 42,255, 93, 5,224, 62,128,182, 0,204, 1,232, 0,168, 1, - 56, 86,217, 62,183,124, 93,197,250, 11, 0,254,210, 68,215, 90,175, 78, 49, 15,158,180,253,163,119,166,209,104,242,124,125,125, - 77,179, 82, 47,135,209,104,172,115,142,150,227,184,180,198,141, 27, 3, 48,221, 77,189, 62, 49,148,155,155,219,206,212,241, 53, - 20,191, 55,215,170, 42,120, 65,120,234,234,234, 42,148,243,214,180,175, 26,151, 81,224, 73, 67,246,147,150,150,246, 8,192,151, - 47, 57, 76,164,165,165, 29,131, 9,205,156, 77,221, 14, 0,242,242,242,254,240, 38,187,132,210,244,207, 63,255,252,183,247, 38, - 8,107, 80, 90,107, 53, 6,165, 52, 6, 64,199, 63,116,144,127, 2, 40,165, 23, 80, 94, 22, 77, 8, 25, 76, 8,121, 19,192, 9, - 74,233,129, 63,136,191, 82,104,109,221,186,117, 42,165, 20, 69, 69, 69,107, 27, 42,172, 42,144,157,157,125,182,254,173, 76, 67, - 94,182,254,236,238,205,105, 61, 52, 5,134,169,219,212,122,147,250, 33,254,127, 0,165, 84,235,236,236,252,195, 59,239,188,211, - 9,192,143,127, 4,231,239,176,105,168, 17,148,210, 39,132,144,215,206,205,248,114,236, 57, 91,171,254,224, 69,205,160,103,142, - 64,159,251, 11,128,239, 77,137,130, 87,225,210, 2, 88, 85,254,250,127,131,114,255,170,169, 99,198,140,193,194,133, 11,113, 98, -229, 74,195,135,132, 20,138, 1,122,188,236, 1,147, 33,192,108, 83,121,222,125,247, 93, 44, 92,184, 16, 71,191,254,250,165,120, -234,129, 19, 33, 36, 18, 0,230,204,153, 51,111,217,178,101,118,115,231,206,109,181,124,249,242,165,229,239,239, 85,172, 7, 0, - 74,233,128,185,115,231,182,172,178,190, 24, 64,189,198,200,127, 40,170, 62,161,255,209, 47, 0,189, 94,113,190,226,124,197,249, -138,243, 21,231, 43,206, 87,156,175, 56,127,231,171,127,153,100,169,253,103,109,191, 87, 89,246, 87,142, 23,191, 63, 89,233, 21, - 94,225, 21, 94,225, 21, 94,225, 21, 94,225,191,128,170, 81,171,151, 89,255,103,130, 0,232, 85,211, 10,218,128, 42, 6, 66, 72, -141, 28,117,161, 62,254, 87,156,175, 56, 95,113,190,226,124,197,249,138,243, 21,231, 63,143,179, 62,238, 90, 62,223,159, 16, 18, - 73, 41, 29, 80,219,207,114,206, 23,126,175,178,172,193,157, 71,126, 23,254,204,240, 24,254, 38, 97,201, 87,156,175, 56, 95,113, -190,226,124,197,249,138,243, 21,231,127,151,179,158, 87,127,148, 85,154,210, 57,115,230,204,165,127,131, 41,194, 58, 74,112, 14, -176,233,233,176,150, 74, 45, 36, 0,160,215,151, 26,220,221, 81, 4, 12,253,175, 53,162,125,133,191, 39, 8, 33, 10, 0,160, 38, - 52,133,110,200,182,175,240, 10,175,240, 10,175,240,255, 6, 57,180, 60, 50, 5, 32, 7, 0, 41,127,175, 47,255,153, 3,148, 37, -183, 87,251,253,185,245,127, 37,106, 17, 88, 7, 88,149,202,194, 81, 36,202,247,227,121,109,115, 0, 16,137,152, 4,149,202, 46, -209,209,241,128,234,101, 68,150,147, 66,113, 75,204,178,238,166,108,107,228,249,116, 85,118,246,115, 86,239, 20,248,219, 11, 59, - 83,197,195,239, 17, 25,127,133, 64,113,114,114, 82, 40, 20,138,183,173,173,173, 95, 47, 40, 40,184,158,147,147,115, 40, 39, 39, -167,198,253, 17, 66,150, 17,130, 89,229,191,127, 67, 41,157, 91, 27,111, 67,182,173,225,179,190, 22, 22, 22, 31, 17, 66, 2, 0, -128, 82, 26, 91, 90, 90,186,137, 82,250,162,225,218, 63, 28,132, 16,115, 0,131, 68, 34,209,187,142,142,142, 29,178,178,178, 62, -167,148,214,233,190, 93, 7,151, 8,192, 12, 91, 91,219, 48, 91, 91, 91,159,188,188,188, 71, 69, 69, 69,251, 0,172,162,148,214, - 91,242,252,197, 20,183,215,187,133,116, 91, 16,117, 34,106,201,162,117, 25, 87, 95, 88,255,169,155, 67,159,222, 93, 22, 70, 29, -185,178,120,238, 6,211,218, 35, 85, 25, 27, 3, 84,230,145, 10, 40,123, 74,253,239, 54,115,172, 3,132,144, 78, 0,230,161,108, -204,171, 40,165, 13,238,138,240, 87,130, 16, 98,169, 80, 40,190, 6,240,150, 72, 36,138, 75, 79, 79,255,128, 82,106,170, 29, 77, -125,220, 98, 0,246, 0,242, 76,249, 30, 85,249,156, 8,101,229,250, 1, 40,179,211,184, 65, 77,176, 98,248,167, 65, 38,147,173, -117,113,113, 25,175,209,104, 74, 9, 33,180,170, 95, 35,199,113,105, 57, 57, 57,127, 90, 37,252,127, 17,127,109, 5,224, 31,128, - 26, 5, 86,122, 58,172, 69,162,124,191,103, 89, 49, 35, 50, 50,163,135, 3,128,155,107,171,125,206, 46,129,123,211,211,165,134, -246,189, 67,229, 98, 11,209, 38,150, 21,183,214,234,117,142, 98,145, 88,101,224,140,119, 24, 61,253, 40, 51, 33,162, 70,147, 68, - 49,203,186, 63, 77, 60,231,204, 25,242, 32, 54,115,131,216,252, 5, 47,168, 74,184,185,185,189,212,193,216,219, 55,177, 50,200, -204,166,138,197,108,111,129,114, 1, 84, 0, 24, 34,142,229,120,227, 25,137, 78,183, 58, 47, 47,169, 65,253, 2,171,162,185, 35, -113,161, 64, 24, 8,122,131,226, 20, 1,246, 36,168,168,201,190, 80,166,138,135,223, 41, 50,170,126,118, 13,165,244, 83, 83, 63, -107, 42,148, 74,165,221,144, 33, 67,214,126,249,229,151,230,114,185,156,164,164,164,132,204,158, 61,251, 13,165, 82, 57, 61, 45, - 45, 45,163,218,120, 20,132, 96,150, 32,148, 25,148, 50, 12,153,173, 80, 40, 44, 88,150,125,161,121, 40,207,243, 22,132, 96,146, - 32,148, 53, 28,103, 24, 50,139, 16,178,206, 20,161,104,110,110, 62,178, 67,199,206,211,191, 94,177, 74,174,112,118,182,228,120, -193,240,228,233, 83,203, 5,115, 63,237,104,110,110,190, 78,163,209,152,212, 64,182,218,216, 9,203,178, 35,100, 50,217, 0, 0, -254,229,139,227,117, 58, 93, 36,207,243,123, 77,189,145,187,184,184, 92, 96, 89,182, 81, 67,246,205,243,124, 74, 86, 86, 86, 80, -253, 91,190, 8, 66,200, 48, 79, 79,207,239,187,118,237,106,209,161, 67, 7, 72,165, 82, 44, 92,184,112, 6,128, 58, 5, 86,133, -144,178,176,176, 24, 97,105,105,217, 88,173, 86, 39,105, 52,154,131, 82,169,180,215,186,117,235, 60,186,116,233, 98,149,157,157, - 77, 88,150, 85, 68, 70, 70,254,107,253,250,245, 33,132,144,158,245,221,220, 10,147,232, 2,217, 91,254,193,133, 73,231, 22, 0, -232, 87,125, 61,167, 53,123,151,178, 30, 3, 52,244,118, 42, 26, 80, 34, 79, 8, 97,196, 98,241, 58, 23, 23,151, 49, 90,173, 86, - 11,128, 18, 66,168, 66,161,168, 88, 15, 0,208,235,245,249,249,249,249,205,234,226,106,222,188,249, 77,150,101,149,181,173,231, -121, 62, 45, 33, 33,225,143,184, 97,205,202,202,202,122, 83, 44, 22, 19, 15, 15, 15, 22,128,201, 2,139, 16,226, 7, 96, 62,202, -110, 50,155, 40,165, 60, 33,164, 59, 80,246,255, 14,224,155, 10,193,198,178,236,166,102,205,154,189, 29, 31, 31,255, 29,165,116, -201,203, 14,214,197,197,101,203,198,141, 27,135, 15, 28, 56,144,205,201,201,113,127,237,181,215,118, 1, 8,126, 89,190,242,227, -144, 2,152,235,226,226,242,113, 80, 80,144,195,237,219,183,243, 8, 33, 27, 1, 44,167,117,120, 77, 17, 66,148, 0,122,217,218, -218,246,156, 63,127,190,124,192,128, 1,216,186,117,235,155,219,182,109, 83, 19, 66,206, 0, 56,253, 71,137,191,255,117,176, 44, -187,110,196,136, 17, 99,118,237,218,101,241,244,233, 83, 11,119,119,247, 74,211,107, 66,200, 75,223, 63, 95,225,143, 71,141, 2, - 75, 42,181,144,240,188,182,121, 70,102,244,240, 55,186,126,107, 3, 0, 23,206,127, 50,220,217,165,101,172, 84,106,145, 40,179, - 54,139, 8,125,171, 87,235,161, 3,186, 18,165,171, 51,210, 50,159, 41,254,189,231, 68,223,200, 19,231, 34, 80,102,252, 85, 35, - 56, 67, 30,204, 13,167,113,255,210,122, 56,118,203,192,134,163,105,184,122,247, 9, 74, 11, 85,104,228, 98,142, 21, 83,251,192, -197,206,226,165, 14, 68,174,240,235,206,152, 89,236, 29, 53,242, 29,155,183, 7,249,139,189, 92, 92, 64,169, 12,137, 73,234,206, -199, 78,158,107,127,112,255,238,143,228, 10,191, 17,234,236, 68,147, 47,106,109,221,136,121,137, 1,131, 68, 44,249, 87,112,199, -150, 61, 71,190, 25,204,180,240,111,138,184,123,241,125, 14,159,189,182,162,133,130, 57,195,241, 52,220, 82,130,159,110,101,212, -110,196, 87,147,208,232,217,179,103, 27,115,115,115,125,213,237, 52, 26,141,148, 16,244,124, 25,145, 81,177, 15,189, 94,199,136, -197, 82, 48, 12,153,222,170, 85,171, 70, 42,149,234, 2,195, 48, 59,211,210,210, 76,234,241, 86,129,201,132, 72,243, 69,162,182, -140, 76,230,202,235,245, 14, 0, 64,164,210,124,165,157, 93,224,252,121,243,228, 44,203, 10,185,185,185, 40, 45, 45, 37,239,191, -255,190, 89, 82, 82, 82, 40,128,245,245,140, 17,219,182,109,243,115,117,117,213, 87, 95,151,153,153, 41, 29, 56,240,237,134, 12, -177,130,211,175,211,235, 93,166,157, 56,113,220,191, 40, 47, 95,187,109,205,214,219, 70, 51,115,173,119,115, 63,201,166,173, 59, -172, 63, 24, 51,250, 19, 66,200, 29, 74,169,201,253,228, 8, 33,158,230,230,230, 17, 43, 87,174, 12,232,222,189,187,216,217,217, - 25,217,217,217,136,143,143, 15, 56,123,246,236,160, 29, 59,118,204, 32,132,132, 82, 74, 77,113, 92,247, 61, 19,254,189,179,165, -189, 3,120,163, 17,110,173,218, 84,228, 47,224,225,217,147,224, 12, 6, 8, 70, 35,252, 7, 12, 2, 80,214,170,167, 69,139, 22, - 47,229,150, 75, 8,113,107,217,178,229,127,150, 46, 93, 42,209,233,116,184,118,237, 26,206,157, 59, 39,100,102,102,214,105,100, - 75, 8, 17, 17, 66, 78, 46, 90,180, 72, 25, 20, 20,100,165, 82,169,192,243,188,227, 79, 63,253,244, 81,155, 54,109,172, 61, 60, - 60,164,225,225,225, 80,171,213,224, 56,206,190,113,227,198,246, 35, 71,142,212,135,135,135,207, 0,240,117, 77,156, 95, 76,113, -123,189, 40,137, 46,200, 34,141,251, 54,107,251, 46,178,200,241,190,211,251,185, 30,179,110, 66, 42, 35, 89,253,154, 52,177,106, -220,220,114,182,220, 58,208,190, 40,253,244,236,126, 77,154,108, 59,150, 84,255, 67, 16, 33,132, 97, 24,102, 93,104,104,232,168, - 61,123,246, 88,196,199,199, 91,248,251,251, 67, 16,132, 74,199,252, 10,163, 88, 95, 95,223,122,207, 27,203,178,202, 51,103,206, - 56,155,155,155,191, 96,202, 91, 82, 82,130,129, 3, 7,214,203, 97, 34,170, 94,111, 27,250, 55,254,226,241,227,199,195, 34, 34, - 34, 70,207,154, 53,203, 23,192, 36, 0, 11,115,115,115,187, 2,128,131,131,131, 20,192, 57, 66,200,216,153, 51,103,126, 56,103, -206, 28,188,249,230,155, 11, 9, 33, 95,189, 76, 84,143, 16,194, 58, 58, 58,190, 57,112,224, 64,214,104, 52,194,210,210, 18, 70, -163,177, 73, 67,121,170,113,202, 36, 18,201,207, 43, 87,174,236, 61,114,228, 72,136, 68, 34, 8,130, 96,127,242,228,201,207,198, -140, 25, 19, 76, 8,233, 87,147,200, 34,132,188,251,225,135, 31, 14,121,231,157,119,208,174, 93,187, 74,115,217,149, 43, 87, 98, -241,226,197,242,147, 39, 79, 14, 10, 15, 15, 31, 68, 8, 57, 72, 41,253, 71,123,153, 17, 66,190, 25, 49, 98,196,168, 93,187,118, -201, 1, 96,197,138, 21,152, 54,109, 26, 20, 10, 5,228,114,249,127,123,120,175, 80, 13,245, 54,123,174, 9,165,165,165,109,230, - 78,254, 23, 24,166,236, 41,177,169,143, 39,150,205,251,128, 28,142, 60,209,166,174,207,137,205,220,112,255,210,122,200, 60,166, - 66,103,228,240,235,221,199, 56,181, 34, 4, 0,224,215,111, 62,116,134,158, 0, 0, 74,169,189,212,220,252, 27, 61,207, 95,134, -139,203, 53, 36, 39,215, 57,119, 42, 87,248,117,119,114, 81, 68,110,222,252,181,121, 64,147,102, 48,112, 70,164, 63, 75, 7, 33, - 50, 40,221,173, 48,246,221,126,226,174, 93,221, 28,191,248, 98,203, 47,150, 78,126,131, 75,114, 18,235, 53,250,108,230, 68,126, - 12,110,227, 59,124,100,255, 32, 89, 96, 64, 75, 72,100,230,149,235,218,182,107,135,182,237,218, 49,115,212,197,189,175,223,184, -213,251,192,201, 95,117,205,156,200,190,251, 57,244,189, 58, 40, 43,221, 41, 9, 33,152, 50,101,202, 11, 13,137, 51, 51, 51, 17, - 21,245,187,102, 13,158,219,199,151, 95,126, 41, 47, 40, 40,232,245,239,127,255,251, 13,119,119,247,149,233,233,233,191,154, 66, -242, 47, 66, 26, 65, 38,235, 57,102,213, 42,161,245,219,111,179,182, 46, 46,140,192,243, 36,227,209, 35,135, 53,235,215,119,203, -123,248,208,188,196,222, 62, 47, 95,163, 41, 77, 76, 76,132,153,153, 25, 17,137, 68,237,171,243, 80, 74,179, 9, 33,223, 48, 12, -153, 77, 8,129, 76,102,150, 56,113,226,196,219,229,171, 27, 29, 57,114,196,226,173,183,222, 42, 5,240, 20, 0,100, 50, 51,119, -150,101,252,202, 18, 4,241,141, 41,194,210,210,210,114,242,146,165,223, 88, 22,229, 21,104, 12, 37, 37, 70,103,107, 57,129, 92, -206, 22, 23,169,139, 50,178,114,180,243, 63, 95, 44,154, 48,246,157,201, 0, 62, 50,233, 4, 18,226,249,218,107,175, 93,143,136, -136,112,118,112,112, 64, 65, 65, 1,114,115,115,113,253,250,117, 8,130,128,208,208, 80, 89,231,142, 29,218,204,155,191,224, 42, - 33,228,117, 83, 68,150,165,189, 35, 86, 4,181, 6, 0,124,246, 52,183, 98, 63,216, 58,108, 64,229, 54,139,211, 10, 1, 0,102, -102,102,191,167,213,211,235, 61,123,246,148, 0,192,184,113,227,138,138,139,139,151, 1,216, 69,235, 48, 67, 45,199,140, 5, 11, - 22,184,251,248,248,120,237,218,181, 11,106,181, 26, 0,156,125,124,124,208,172, 89, 51, 62, 42, 42, 10,126,126,126,176,178,178, -194,133, 11, 23,240,235,175,191,162,109,219,182, 86, 18,137,100, 56,106, 17, 88,221, 66,186, 45,144,189,229, 31,220,172,237,187, -144, 91,187, 98,219,238,189,184,127,107, 71,176,206, 16,191, 96,217, 36,247,119, 52, 84,246,158,210,215,106, 78,163,118, 93, 29, -154,182,124, 27, 94,109,111, 59,106,249,139,143, 23,126,220,120,185,200, 76,187, 99,209,202,140,220,154,120,203,167, 5, 87,132, -134,134, 14,219,179,103,143, 45, 0,196,196,196, 32, 59, 59, 27, 78, 78, 78, 48, 51, 51,131, 88, 44,174,236, 31,106, 42,204,205, -205,145,153,153, 9,131,161,172, 57, 0,207,243, 40, 46, 46,134,139,139, 11, 0,224,139, 47, 8,179,104,145,105,174,227,132,144, -160,142, 29, 59,238,244,242,242,242,168,186,188,127,255,254, 8, 11, 11, 3, 0,116,237,218,181,231,208,161, 67,105,133, 16,204, -204,204, 84,223,184,113,163, 55,165,244, 90, 77,156, 12,195,104,210,211,211, 49,115,230, 76, 60,121,242,228, 99, 66, 72, 50, 0, - 51,169, 84, 90,177,137,148, 16,226,215,178,101,203,117,211,166, 77, 67, 82, 82, 18,226,226,226,174,191,236,148, 41,165,148,247, -246,246,126,104, 52, 26,219,113, 28, 7,141, 70,131,193,131, 7,155,217,219,219,103,179, 44,155,160, 82,169, 70, 83, 74, 51, 77, - 60, 31, 82, 0, 94, 34,145,104,195,204,153, 51,123,246,234,213, 11,209,209,209,136,136,136,192,200,145, 35,209,183,111, 95,172, - 92,185,178,235,164, 73,147,230, 0, 88, 84, 3, 69,207, 77,155, 54,129,231,249, 23,254, 55,204,204,204, 16, 20, 20,132, 22, 45, - 90,224,240,225,195, 61, 1,252,163, 5,150,151,151,215,196, 61,123,246, 84, 42, 41, 55, 55, 55,200,100, 50, 84,249, 30,188,194, -255, 16,106,188, 2,233,245,165, 6,145,136, 73,112,115,109,181,239,194,249, 79, 42,167, 8, 1, 38, 65,175, 47, 53, 0, 0, 47, - 80, 20,149,114, 48,151, 49,120,154, 85,140,123,143, 84, 47,240,208,106,165,150, 98,115, 79,200, 58, 60, 5,165, 20,122, 3, 15, - 93, 97, 22,150,253, 82,138,248, 52, 45,244, 37,249,208, 27,202,210,172, 28, 29, 29, 69, 39, 78, 28,155,118,250,244,217, 15,127, -248,225, 7, 54,205,198, 38, 14,133,133,109,106,226,180,183,111, 98, 37,178, 52,223,247,221,230,133,230,148,125,132,196,148, 18, - 52, 85,118,128,163,173, 7,178, 84, 37,184, 28,119, 20, 9, 15, 34,225,227,234,133,169,147,251,154, 45, 89,186,107,175,157,157, -143,103,126,254,227,162,218,198, 89,142,119,183, 28, 79, 4,151,247, 8,124,110, 18,248,226,140, 23, 54,144, 59,121,162,109,119, -119, 56,121, 52,145,189, 55,117,241,187, 0,222,171,137,147, 82,154,205,178,236, 38,134, 33, 31, 17, 66, 16, 16, 16,248,120,237, -218,181, 47, 68,113, 0,232, 3, 2, 2, 31,179, 44,227, 67, 41, 5, 33,204,119,130,192,103,215,196, 89,195,185,206, 38,132,124, - 35,149,202,102, 1,128,139,139,235,163, 99,199,142,233,135, 14, 29,138, 21, 43, 86, 72,230,204,153,243,169,151,151,215,164,228, -228,228,172,106,159,123,142, 51,148, 16, 79,247, 38, 77,250,124,117,249, 50, 21, 27,141, 36,239,250,245,162,130,204, 76, 46,171, -184, 88,186, 63, 33,225,205,241,159,126, 42,245,240,240,192,165,200, 72,135,156,146, 18, 90,160,211,105, 10, 10, 10, 40,199,113, -215,107,226,164,148,206, 85, 40, 20, 22,219,182,109,243,155, 56,113,226,237,140,140,140,185, 0,224,230,230,182, 12, 64, 11, 0, - 79,171, 44,195,230,205,123,211,223,127,255,253,196,236,236,236,231,166, 70,235, 56,246,150,206, 78, 78, 22,187,183,132, 71,219, - 91,153, 51,142, 74, 87, 70,108, 99, 35,230,100, 22, 18, 74,161,245,241,105, 98, 1,160,101, 45,231,236, 57, 78, 66, 8, 49, 55, - 55,143,248,249,231,159,157,197, 98, 49,120,158,135,147,147, 19,158, 60,121,130,130,130, 2, 20, 23, 23,227,113, 66, 60,188, 61, - 60,240,197,156,217,174,147,102,207,137, 32,132,180,171,122, 19,171,105,156,188,209,128,106,251,169,177,235, 64,213, 60, 10, 19, -143,189, 58,158,164,164,164, 64, 46,151, 35, 32, 32, 64,126,249,242,229,139,181,137,171,170,156,102,102,102,195,187,116,233, 98, -181,123,247,110,180,109,219, 22, 54, 54, 54,136,138,138, 66, 76, 76, 12, 12, 6, 3,163, 86,171, 97,101,101,133,229,203,151,195, -203,203, 11, 69, 69, 69, 72, 73, 73,113, 16,139,197,142,181,113, 70,157,136, 90, 82,152,116,110, 65, 22, 57,222,119,219,238,189, -120,127,228, 8,184,208, 71, 23,109,154,144, 37,125,222,234,242, 25,101, 61, 6, 88, 90,181,178,243, 13,120, 11, 18,169, 28,147, -102, 45, 70, 98,236, 17,187,210,226,232,143, 9,159,234, 1, 96, 74,117, 78, 82,118, 98, 24, 15, 15,143,241,251,247,239,183,170, - 88, 94,209,147,176,170,176,170,120,213,116,158,107,252, 27,241, 60, 12, 6, 3, 12, 6, 3,120,158,135, 74,165, 66,113,113, 49, -108,109,109,203, 54, 88, 4, 16, 16, 66, 81,179, 96,169,198, 57,250,244,233,211, 30,150,150,150,213,183,129, 74,165, 2,199,113, -176,176,176,168,220,167,209,104,132, 86,171,149,183,104,209,226, 35, 0,215,106,226, 20, 4, 97,250,240,225,195,187, 92,187,118, -173,241,250,245,235,161,215,235, 87,100,101,101, 97,200,144, 33, 16, 4, 1, 61,123,246,236, 68, 41,189, 63,127,254,124, 0,192, -180,105,211,140, 37, 37, 37, 19, 77, 57,246,154, 64, 8,105, 49,116,232,208,198,103,206,156, 65,112,112, 48,116, 58, 29, 86,174, - 92,105,189,121,243,102,235,240,240,112,167, 89,179,102,125, 15, 32,164, 46,206,114, 97, 53,175,111,223,190,211, 7, 14, 28,104, -153,158,158, 14, 91, 91, 91,236,221,187, 23,203,151, 47,191,160,215,235,231,133,135,135, 47,139,136,136, 8, 30, 57,114, 36, 86, -174, 92,249, 49, 33,100, 9,165,212, 88, 19,231,227,199,143,225,228,228, 4,107,107,107, 0,101,141,236,239,220,185,131, 83,167, - 78,161,121,243,230,245, 30, 83, 3,254,143, 76,198, 95,205,169,209,104,180, 41, 41, 41,242,175,191,254, 26,174,174,174,240,242, -242,130,153,153, 25, 8, 33, 48, 26,141,160,181,232,105, 83,198,217,173, 27, 17,169,210,237, 6,218,216,218,125, 76, 41, 21, 21, - 22,230,111, 49,160,224, 64, 82, 18,173,233, 94,245,167, 28,251, 63, 13, 34, 0, 32,132, 80, 74, 41,169,248,233,238,142, 34,149, -202, 46,209,217, 37,112,175,179, 75,203,242,190, 92, 76, 2,203,218, 37, 42, 20,165, 69, 0, 96,224, 40,174, 36, 20, 32,250, 97, - 22, 98, 30,102,193, 82,102, 90,155, 26,157,129, 43,171,179,164, 20, 90,245,111, 15,169,134,210,124,232, 12,101,233, 28,122, 93, - 41, 10,115,226,200,176,193,189,205, 62,252,112, 2, 92, 93,221,157,106,161,131, 65,102, 54,117,210,180, 55,109,237,109,197,136, -188,124, 28,157,154, 15,134,153, 76,140,220, 66, 45, 64,128, 7,143, 78, 1,130, 21, 98, 19, 83,208,177,165, 5, 66,250,248,203, - 15, 29,184,255, 41,128,133,166,140,151, 75,187, 14,137,111, 63,136,121, 35,140,170,251, 16, 10,146, 1, 75, 23,104,136, 28,185, -153,201, 72,184,120,208,164, 22,165, 60,207, 79,114,116,116,124, 54,119,238,220, 32, 63, 63, 63,253,164, 73,147, 98,159, 60,121, - 50,191,234, 54,222,222,222, 95,109,216,176, 1,137,137,137, 79,151, 45, 91,118, 73,165, 82, 53,168, 61, 13,165,116, 14, 33,100, - 45, 0,100,102,102,170,126,254,249,231, 86, 23, 46, 92,248,104,205,154, 53, 78, 31,127,252,177,100,242,228,201,163, 1,172,168, -237,243,147, 9,145, 90,202,100,189,190,186,112,129,114,105,105,186,255,124,251,173,116,227,149, 43,243, 13,130,224,230,232,236, - 76, 58,119,236, 88, 98,193, 48,170,220,236,108,206,169,113, 99,246,201,169, 83, 14,212,220, 60,227,216,177, 99, 69,106,181,250, - 96,109,188, 44,203,150,214, 52, 45, 88, 19, 92, 93, 93,245, 53,229,104,213, 6, 66, 72,145, 64,169,193,206,199, 27,125,122,118, -110,250,240,254,163, 71, 50, 27, 91,214,215,183, 81,179,184,132,167,215, 4,142,211, 17, 66,138,234,103, 2, 88,150, 29,177,118, -237,218, 64,107,107,107, 8,130, 0, 27, 27, 27,228,228,228, 64,175,215,163,168,168, 8,250,226, 66,232, 11, 11, 17,147,252, 4, - 93,186,117,195,176,190,125,252,195,127,250,121, 4,128, 61,117,241,186,181,106, 83, 25,185, 90,220,200,161,114,249, 23,169, 5, -149, 98,235,235, 54,190,144,200,229,232, 61,125,142,169,135,254, 2, 40,165,183,165, 82,233,209,208,208,208, 55, 63,253,244, 83, - 38, 51, 51,243, 56, 33,164, 11,165, 52,174,174,207,201,229,242, 38, 21,130,194,198,198, 6,107,215,174,133, 66,161, 64,105,105, - 41,110,220,184, 65,149, 74, 37, 57,119,238, 28,148, 74, 37, 84, 42, 21, 12, 6, 3, 74, 74, 74,178,244,122,125,173,211,226,229, -211,128,253,166,247,115, 61,118,255,214,142, 96,119,242,248,198,240, 25, 93, 31,222,143, 73, 72, 57,121,234,242,151,156,214, 44, -181, 32,237,244,108,159,246,183, 29, 63,158,249, 5, 54,172, 88,132,251,215, 46,228, 41, 60,139, 54,154, 19,221,143, 29,123,215, - 62,222,146,146, 18,109,124,124,188, 85,116,116, 52, 8, 33,176,177,177,129,133,133, 69,141, 34,203, 84,240, 60, 95,249, 83,165, - 82, 33, 39, 39, 7,137,137,137,216,177, 99, 7, 50, 50, 50, 28,215,216, 88,103, 57, 74, 37,209,146, 2, 50,207, 96,160,183,235, -161,219,210,187,119,239, 17,158,158,158, 86, 85, 23,182,111,223, 30, 19, 38, 76,192,119,223,125,135, 43, 87,174, 60,215,239, 50, - 43, 43, 43,211,104, 52,254, 88, 27, 33,165,180,128, 16,210,119,240,224,193,183, 46, 94,188,104,189,125,251,118,112, 28, 87,227, -107,219,182,109,248,245,215, 95, 23, 82, 74, 19, 76, 62, 1, 85, 64, 8,105, 62,100,200,144, 11, 59,119,238,180,205,201,201,129, - 74,165,130, 90,173, 70, 73, 73, 9,120,158, 71,179,102,205, 8,199,113,117,230,181, 17, 66,100, 78, 78, 78, 71,207,159, 63,223, -189, 89,179,178, 77,141, 70, 35, 46, 95,190,140,183,223,126,187, 72,175,215, 15,161,148,230, 18, 66,230, 30, 56,112,224, 74,199, -142, 29,209,190,125,123,251,228,228,100,123, 0, 53, 70,174,213,106, 53,212,106, 53,196, 98, 49, 92, 83, 65, 51,158, 0, 0, 32, - 0, 73, 68, 65, 84, 92, 92,176,100,201, 18,232,245,101,151, 21, 63, 63,191,138,253, 50, 0,214, 52,111,222,124,112, 66, 66,194, -114, 74,233,198,151, 57, 7,255,171, 32,132, 16,177, 88,140,113,227,198, 65, 36, 18,193,220,220, 28, 90,173, 22, 70, 99, 89,157, - 64,185,192,106,208,244,179,175,175,149,131, 8,146,247,253,252,222,152, 58,108,202, 0, 39, 87, 55,119,216, 90,203, 16, 31, 31, -215,229,236,153, 83,223,182,104,230,180, 89,208, 27, 55, 39, 60, 41,248,211,155,208, 87,215, 34,127,246,254,254,108,212,114, 5, - 26,202, 59, 58, 30, 80,165,167, 75, 13, 82,169, 69, 34, 80, 22,213, 42, 19, 87, 67,121, 96, 55, 56,131,177,252, 2, 65,203, 95, - 38, 10, 44, 35,143,135,247, 99,113,241,228,207,112, 44, 77,135,234,113,107, 64, 18, 8,189,166, 16, 90,125,217,147,190, 32,240, -184,123,235, 12,138, 10,243, 16,208,110, 0,192, 48,181, 78,109,217, 56,144, 1,157,219,182, 98, 31,166,196,162,189,223, 80, 52, - 86, 6, 35, 57,179, 8, 5,106, 29,242,139,180,104, 29, 48, 7, 57,249, 26, 20,149,106, 17,247, 48, 28,238,110,141, 25, 34,122, -212, 19, 38, 10, 44, 93, 92, 4,116, 9,135, 33,241,234, 2,105,179,183,193,122, 5, 33, 37,250, 28,238, 30, 91,131,180,123,151, - 64, 5, 30,174,126, 29,234, 39, 2,192,178,236,150,147, 39, 79,182,126,227,141, 55, 68, 61,123,246, 12, 80, 42,149, 1,105,105, -105,177, 0,160, 84, 42, 3,250,246,237, 27,224,236,236,140,117,235,214,149,178, 44,187,197, 36,210,106,168, 54,173,118,219,213, -213,117,101, 68, 68,196, 55, 19, 38, 76,128,139,139, 75,139,186, 62,155, 35, 22,191,246,222,210,165, 84,204,178,116,207,134, 13, -146, 47,142, 31, 95,245,195,143, 63, 74,122,116,239, 78, 40,165,184,115,231,142,197,215, 27, 54, 88,140, 26, 56,240,105,242,179, -103,220,249, 43, 87, 12,153,105,105,197,207, 74, 74,190,200,200,200,120,169, 70,208,191, 23, 70,163,241,234,147,199,143,148,109, - 58,180,118,186, 29,247, 56, 46,164,103,231,215, 25,134, 97, 18, 30, 37, 95,117,114,178,182, 56,115,242,180,193,104, 52,190, 80, -189, 86, 19,100, 50,217,128, 30, 61,122,136,242,243,243,225,230,230,134,156,156, 28,164,167,167,151, 69, 24, 10,243, 97, 40, 44, -132,177,168, 0,124,137, 26,143,111, 92, 71,235,198, 62,178,253,101, 73,240,117, 10,172,138,167,202,234,209,148,170,145, 44,169, -149, 21,164,114, 57, 72, 3,167, 7, 9, 33, 3,109,109,109,103, 23, 20, 20, 28,165,148, 46, 49, 24, 12,147,102,207,158,221,126, -253,250,245,142, 95,125,245,149,245, 7, 31,124,176,159, 16,210,154, 82,170,171,141, 67,173, 86, 39,113, 28,231, 8,192,249,204, -153, 51,112,118,118, 70, 97, 97, 97, 69,100, 69, 95, 90, 90,106,150,155,155, 11,157, 78, 7,189, 94, 15,107,107,107,220,188,121, - 51,159,227,184,159,235, 27,159,117, 19,178, 68,103,136, 95,224,224,111,153, 97,224,236,186, 62,203, 19,242, 23,173,204, 88, 12, - 96, 85,191, 38, 77,182, 25,132, 11,143, 31,196, 30,177,123,114, 35, 42, 47,227, 65, 73,227,109,191, 60,170, 53, 7,171,252,202, - 43, 16, 66,104,179,102,205,160, 82,169,192,178, 44, 44, 44, 44, 32,151,203,209,188,121,115,164,166,166,190,180,192,226, 56,174, - 82, 92, 69, 70, 70, 34, 51, 51, 19,187,119,239,134,135,135, 7, 3,192, 41, 53, 53,181,247,176, 97,195, 58, 58, 56,216, 45,203, -205,205,175, 53,175,141, 82,122, 7,128,117,213,101,132,144,238,142,142,142,103,117, 58, 29, 30, 61,122,132,159,126,250,169, 27, -165,244,188,201, 3, 44,227,125, 68, 8,233, 27, 20, 20,180,163,109,219,182, 77, 40,165, 8, 12, 12, 68, 88, 88, 24,194,195,195, -113,247,238, 93, 20, 22, 22, 10,167, 78,157,250, 1,192,202,134,112,147,223,238,108,205,134, 12, 25,114,105,215,174, 93,118,185, -185,185,208,104, 52, 40, 41, 41,193,254,253,251,209,165, 75, 23, 56, 58, 58, 98,231,206,157, 28,165,244, 72, 29, 92,102,182,182, -182, 71, 47, 93,186,212,173,105,211,166,136,139,139,195,153, 51,103,208,168, 81, 35, 72,165, 82,140, 30, 61,218,250,187,239,190, -251,132, 16,178, 92, 44, 22, 47, 25, 50,100, 8,120,158,199,229,203,151,115, 1,212, 91, 73,106, 52, 26, 81, 80, 80,128,130,130, - 2,152,155,155, 87,156, 27,160, 44, 69, 98,251,154, 53,107,198, 76,157, 58, 21, 77,154, 52, 89, 66, 8,249,142,190,100, 67,233, -255, 37, 52,107,102,215, 82,202,202,166, 72, 36, 98,135,252,252,252,202,107,135, 94,175,135, 78,167,123, 46,114, 37,145,136, 29, - 58,180,241,250, 69, 83, 90, 60,239, 94, 98,126,173,141,203, 91, 52,181,109,101, 97,105, 51,181,127,223, 97,163,251,244, 29,196, -114, 70, 35, 78,156, 56,130,127,255,123, 19,186, 7,249,161,113,211, 64,124, 50,121,138,141, 78,207,205, 57,117,234,248,236,206, - 29,124,142, 23, 23, 21,204,173,139,243, 21,158,135, 8, 0,106, 86,140, 67,121,119,119,228, 3, 0, 33,196,209,206,206,110, 3, -207,243,221,129,247, 33,150,187, 32,238,230, 53,228,229,139,161,211,240, 16,104,153,200, 50, 5, 58,157, 30, 23, 78, 28,198,218, - 53,171,144,155,155,139,160, 55,186, 65, 45,242,128,167,135, 39,180,154,178,192, 5,165,128, 65,111,132,147,194, 11,183,111,223, - 53, 22,149,148,156,175,141, 79, 98,102,240,247, 84,248, 65,103,120, 29,102, 82, 41, 10,139,245,200, 47, 23, 87, 59, 15, 12,135, -174, 84, 3, 78,111, 0,167, 55,194,201,115, 8,154, 43,122, 64,224,143,212, 56,101, 84, 43, 4, 30,134, 39, 23, 96,120,114, 1, -230,175, 79,198,207,203, 70, 62,183,218,212,255,223,236,236,236, 28,165, 82,121,252,214,173, 91, 3,134, 15, 31,142,168,168,168, -247, 0, 76, 7, 0,153, 76,246,222,240,225,195,113,235,214, 45, 36, 36, 36, 28,207,206,206,254, 67, 60, 59,164, 82,169,182,226, - 41,207,204,204,204,172,158,109,221,219,135,134, 50,133,183,111, 23,173,185,124,121,209,182,237,219, 37,189,122,246, 36, 70,142, -131,192,243,104,234,235, 75,250,244,233, 99, 25,190,111,159, 3,107, 52,254, 58,115,210,164, 51,223,189,243, 78,241, 53,181,218, -212, 4,242, 70,229, 83,131, 0,208,168,142,101, 38, 67,167,211,173,159, 56, 97,124,239,115, 81,231, 61, 26,121,185, 91,157, 60, -115,225,174, 84, 38, 97, 26,123, 55,102, 11, 10, 10, 68,159, 47,154,107,174,211,233,190, 53,145,206,223,209,209, 17, 89, 89, 89, -120,248,240, 33,116, 58, 29,140, 70, 35,132,210, 18,232,243, 11,160, 47,204, 3,209,106, 32,227,121,104, 85,217,104,212,216, 7, -248,173,194,176, 78,212, 52, 45, 88,117, 74,208,204,218, 26, 18, 75, 57, 24,177,184,198,105,173, 90, 56,219,118,232,208, 97,223, -193,131, 7, 37, 99,199,142,237, 72, 8,217, 64, 41, 77, 38,132,244, 92,184,112,225,245, 13, 27, 54,200, 38, 76,152,208,108,229, -202,149,239, 2,168, 85,176,107,181,218,125,191,252,242,203, 40, 47, 47, 47,231,152,152, 24,104,181, 90, 8,130,128,126,253,250, - 1, 64,229,119,230,254,253,251, 26,173, 86,251, 44, 54, 54,182, 40, 57, 57, 89, 15, 19,170,254, 22,173,203,184, 58,125,152, 50, - 84,225,226,254,171,153,121, 35,111,170,190, 61,120,250, 48,229,138,213,251,211,180,199,146,146,138, 23,126,220,120,121, 73,113, -244,199,182, 74,245,198, 99, 71,106, 23, 87, 85, 64, 43,202,210, 29, 28, 28, 32, 18,137, 32, 22,139, 33,145, 72, 0, 0, 10,133, - 2,133,133,133,117, 78, 17,214, 4,158,231, 81, 84, 84,132,194,194, 66, 36, 36, 36, 32, 51, 51, 19, 87,175, 94, 5,207,243, 40, - 43, 82, 4,148, 74, 37,174, 95,191,110,213,190,125,251,121, 68, 66,206, 81, 3, 53,185,108,156,101,217,169,239,188,243, 14,244, -122, 61,194,194,194,176,109,219,182,169, 0,206,155,250,249,202,131,167,244, 87, 66,136,239,221,187,119,173, 1,188, 61, 98,196, -136, 31,135, 12, 25,130,243,231,207,227,200,145, 35,221, 0, 36, 2,208, 0, 88, 70,202, 26, 43, 47,171,171,192,131,148, 89, 49, -108,114,114,114,122,187,101,203,150,119,135, 12, 25, 18,176,107,215, 46,219,103,207,158, 85, 20, 53,224,201,147, 39,248,254,251, -239, 51,183,111,223, 94,196,243,188, 3,195, 48,191, 20, 20, 20,212, 86, 5,109,102,105,105,121,236,210,165, 75, 93,155, 54,109, -138,211,167, 79, 99,222,188,121,232,218,181, 43,118,239,222,141,230,205,155, 35, 48, 48, 16,206,206,206, 31,231,229,229,117,222, -186,117,107,183, 78,157, 58, 97,231,206,157,200,204,204,220, 84,155,101, 67,125,169,100, 70,163,145, 0,232,184,102,205, 26,159, -169, 83,167,226,224,193,131,104,211,166,141,205,163, 71,143, 86,162,252, 26,251,119, 69,115, 95,135,229, 29,218,119,157,237,234, -222, 20, 59,119,237, 70, 94, 94,153, 6,165,191, 25,126,130, 82,138,226,226, 98,100,101,101,193,198,218, 10, 43, 86, 46,121,243, -163, 15,198,120,160,204,206,226, 5,248, 55,177, 95, 57, 52,108,252,140,176, 81, 99, 16,115,247, 22,194,127,220,130,216,152, 59, -149,124,156,209,128,196,248,155, 72,140,191, 9,133,139, 23,250,244,234, 70, 70,142, 28,217,239,157, 81, 35,156, 0,252,105, 22, - 16,255,164,232, 21, 80,203, 20, 97,213, 13,202,197,213,189,189,123,247, 58, 4, 5, 5,177, 28,199,225,248,137, 19,248,248,195, -127,225,221,119,230,192, 0, 59,112,122, 9, 4, 73,157,247,238, 74,104, 52,165,160,160, 40, 41, 41,193,149, 43, 87, 64, 5, 14, -225, 91, 87,129, 82,161, 82, 96, 1, 20,122,131, 1,238,158,205,176,105,219, 87, 28,196,226, 90, 47,100, 69,185, 44,111,228, 40, -210,159,165, 32, 37, 51, 22, 54, 86,158, 16,137, 61,145, 91, 80, 10, 17,227, 2,163,246, 62,248,242,240,105,105, 73, 26, 52,134, -223,247,119,227, 11, 95,140,146, 82,193,244, 7,164,210,210,210,125, 59,119,238,236,179,122,245,106,201,155,111,190,217, 68,169, - 84,118, 0,128,208,208,208, 38, 86, 86, 86,216,185,115,167,161,180,180,116,223,239, 26,100, 21, 24,141,198, 55,218,183,111,143, -188,188, 60, 60,125,250,180,206, 39, 15, 94,175,119,144, 59, 59,179,207,206,157, 51,230,228,231,123,244,232,209,131, 24, 57, 14, - 12, 33,200, 43, 44, 68,242,211,167,176,181,181, 37,247,238,223,151,127,251,201, 39,135,252, 2, 2, 68, 21, 21,134,166,224,200, -145, 35, 22, 40,203,187,170,115, 89, 67, 64, 41, 45, 33,132,188,247,201, 39,159, 28,250,207,127,118,218,100,101,103, 63,144, 73, -101,156, 92,110,238,250,206,232, 17,162,130,130,130, 81,148, 82,181,169,124,249,249,249,120,252,248, 49,204,205,205, 33, 17,139, - 33,104, 74,193,151,168,161,205,203, 1,107,208, 67,202,243,176,183,144,193, 67,161,128,167,147, 99,253,132, 40,171, 22,172, 72, -104,175, 58, 45,184,162,131, 63,164,150,114, 72,173,228,248, 40, 50, 10, 0,202,132,194,194,250,103,134, 9, 33,142,238,238,238, - 63,239,218,181, 75,146,147,147,131, 59,119,238,220,165,148, 22, 18, 66,172, 0, 8,241,241,241,167, 99, 99, 99, 7,148, 87,209, -213, 87,253,181, 42, 34, 34,162,119, 80, 80, 16,231,237,237,109,153,157,157,237,153,155,155, 75, 50, 51,159,207, 97, 62,122,244, -168,153, 70,163, 41, 17, 4,225, 16,202,124,156,234,245, 31,154, 62, 76,105,118,229, 54, 38,119, 13,105, 20,104,237,216, 10,121, -220,237,192, 95,239,102, 78,158, 62, 76,185,126,245,254, 52,173, 57,209,253, 72,248, 84, 15,145,153,214,164,228,100, 74, 41,117, -116,116, 4,165, 20,215,175, 95,199,165, 75,151,112,225,194, 5, 36, 39, 39, 87,110, 99, 99, 99,131, 83,167, 78,161,123,247,238, -166, 80, 2, 0, 74, 75, 75,225,234,234, 10, 59, 59, 59,132,135,135, 99,247,238,221,149,137,238, 21, 80,169, 84,176,176,176,192, -234,213,171,229, 67,135, 14,253, 18, 64, 31, 83,184, 9, 33, 62,189,123,247,238,239,234,234,138,220,220, 92,184,184,184, 32, 40, - 40,232, 45, 66,136, 55,165,244,137,201,131,124, 30, 31,133,132,132, 44,249,226,139, 47, 96, 52, 26, 49,110,220, 56, 60,120,240, - 96,223,131, 7, 15,214,122,122,122, 78,158, 53,107,150, 66,161, 80, 96,248,240,225,150, 0, 66,107, 35,177,183,183, 95,182,101, -203,150, 81,253,251,247,103, 12, 6,195, 27,103,207,158,197,211,167, 79,161,215,235,193,113, 28,146,146,146, 48,105,210,164,204, -220,220,220,174,148,210, 36, 19,198, 53,231,228,201,147, 93,253,253,253, 17, 25, 25,137,208,208,208,115,182,182,182,126,173, 90, -181,114,117,115,115,195,254,253,251, 97,109,109, 13, 79, 79, 79,251,175,190,250,170,199,160, 65,131, 16, 25, 25,137,105,211,166, - 69, 1,168,179,218,181, 54, 8,130, 64,214,172, 89, 19,176,102,205, 26,101,133,184, 98, 24, 6,123,247,238,197,221,187,119, 7, -226,111, 46,176, 88,134,188,183,116,241, 76,220,184,125, 31, 17, 17, 18,220,184,113, 3, 10,133, 2, 50,153, 12,148, 82,232,116, - 58,228,228,228,192,104,208, 33,176,165, 15,118,108, 95,142,103,207,114, 0,134,212,154, 90, 67, 24, 50,122,204,191, 6,227,226, -165, 19,248,238,187, 45, 80,171, 75,106,220, 78, 42, 53, 67, 83, 63,127,184,187, 57, 35, 53, 45, 21,132,129,105, 23,189,151,196, -255,147, 41,194,223, 96,107,107,187,118,207,158, 61, 14,221,187,119,103, 75, 74, 74, 32, 8, 2,130,131,130, 48,121,234, 84, 28, -217,181, 11,190, 29,195, 64,244,114,112, 22,166, 85, 49,104, 53,165,104,209,166, 51,134, 13, 31,129,148,228,100,132, 12, 24, 2, -173,182,180, 50, 23, 1, 40,139, 96,233,245, 6, 56, 58,123,224,228,201,147, 44,198,141,187, 87, 27, 31,111,144, 70, 39, 38,105, -187, 20,104,110,227,202,141,112, 24,116, 6, 4, 6, 46,132, 65,112,128,179,242, 3, 24,141, 63,161, 40,231, 44, 0,192,218,161, - 59,210, 82, 82,192,176,146, 90,249,234,131, 80,242, 98, 96,169, 33,133, 58,249,249,249, 69,174,174,174,135,175, 94,189, 58, 44, - 52, 52, 20,167, 78,157,122, 23, 0, 66, 67, 67,113,245,234, 85, 60,126,252,248,112,126,126,190, 73, 57, 67,245, 65,169, 84,246, -235,214,173, 91,104,251,246,237, 17, 25, 25, 9,158,231,175,152,242, 57, 86, 44,166, 12,195, 64, 16, 4, 16, 0,185, 5, 5,120, -240,224, 1,114, 85, 42, 24,141, 70,148,168,213,130,191,159,159,154, 10,130, 85,189,100, 85, 80,181, 98, 16, 53, 84, 17, 86, 44, -107, 8, 39, 0, 80, 74,147,229,114,121, 74,177, 90,237,100,109,103, 95,108, 38,149,242,133, 5,133,133,113,247, 98,244, 38,222, - 20, 42, 16, 31, 27, 27, 27,144,145,145,129,148,148, 20,112, 37,197, 96,117,122, 48,186, 82,244,236,252, 58,204, 65, 97, 6, 1, - 98,193, 8, 49, 43, 70,113, 89,181, 93,124,125,164, 21, 2, 31,248, 45,146, 69, 8, 41,155, 22,180,180,132, 84,110, 85,185,174, -252,120,234, 29,168, 76, 38,219,181,127,255,126, 87,119,119,119, 44, 94,188, 24, 74,165,178,121, 96, 96, 96,105,112,112,176,185, - 66,161, 64,139, 22, 45,208,185,115,103, 28, 59,118, 12, 0,234, 60, 7,148, 82,142, 16,210,231,226,197,139, 51, 46, 95,190, 60, -140, 16, 66,230,204,153,131,190,125,251,194,204,204, 12,165,165,165,200,207,207,199,214,173, 91, 9,165,180, 77,249, 88,189,204, -204,204,118, 19, 66,210, 52, 26,205,240,234,156,225,107, 90,185, 61,203, 19,198, 41, 92,220, 7,119, 13,105, 20,216, 35,164, 23, -124,124,123,160, 71, 72, 10, 0, 44,183, 23, 61, 13, 91,177, 32,224,144,163,135,253,247, 39,143,159, 90, 20,212,181,199,252, 57, - 19,236,150, 44,223, 82,255,119,159, 16, 2,158,231, 33, 18,137,192, 48, 76,141, 81, 42,145, 72, 4,150, 53, 45, 21,133,231,249, -180, 65,131, 6, 85,190,207,200,200,112,244,240,240, 96, 42, 34, 87, 0, 80, 88, 88,136,212,212, 84, 24,141, 70, 56, 56, 56,192, - 96, 48,180, 50,137,188, 12,147,199,142, 29, 75, 52, 26, 13,198,143, 31,143,109,219,182, 33, 44, 44,140,156, 63,127,126, 50,128, -169, 13,224, 1, 0, 48, 12,179, 98,214,172, 89, 51, 38, 77,154,132,188,188, 60, 28, 61,122, 20,253,250,245,195,222,189,123,157, -142, 30, 61,186,180,123,247,238, 96, 89, 22,145,145,145,224, 56,238,126, 93, 92, 18,137,228,237,254,253,251, 51,169,169,169,144, - 72, 36,104,215,174, 29,210,210,210, 80, 90, 90,138,244,244,116, 76,153, 50, 37, 43, 55, 55,183,155, 41,255, 71,132, 16,113,211, -166, 77, 39, 53,111,222, 28,167, 78,157,194,208,161, 67,207, 27,141,198,254, 57, 57, 57,147,242,243,243,191, 25, 61,122, 52, 2, - 2, 2,144,152,152,136,222,189,123,163, 75,151, 46, 56,122,244, 40,198,143, 31, 31,101, 52, 26,251,215,100,209, 80,142,226,103, -207,158,217, 52,105,210, 4,217,217,217, 80,171,213,184,122,245,170,117, 84, 84,148,183,155,155,155,237,163, 71,143,232,130, 5, - 11, 44,166, 78,157,138,181,107,215,226,206,157, 59, 8, 15, 15, 71,143, 30, 61,140, 15, 31, 62, 52,217, 91,237,127, 21, 2, 47, - 0, 16,224,237, 33,199,137, 35,219,113,235,238, 35,220,186, 27, 11,169,172, 44,185, 93,163, 41, 69,155,192,166,232,216,174, 3, - 50, 50,211,241,159,240,237,176,119,116,175,243, 58, 66, 41,133, 68,196,195,223,207, 5,187,194,183, 32,242,232, 25,132,255,103, -119,101, 78,155, 72, 36, 70,235, 54, 29,209,174, 93, 16, 30, 61, 78,194,246,237,223,193,201,217,163, 86,190, 87,168, 25,149, 83, -132, 85,127, 86,133, 32, 8, 61,130,130,130, 88,181, 90, 13,173, 86,139,172,172, 44, 60,125,250, 20,182,118,182,120,148,241, 4, -221, 44, 12,200, 18,138, 16,127,247, 30, 79, 88,241,157,250,118,216,191,107,107,160,107,107,124, 60, 54,172,214,109, 40, 40, 44, -173, 29,161,211,233, 96, 48, 26, 31, 98,253,250, 90,159,148, 57,222,120,250,196,169,179, 29,198,190,251,182,248,228,217,109, 48, -234, 5,104,140, 54, 40,209,234, 81, 98, 16,131,177,233, 7,168,206,131, 21,201,208,233,181,166, 56, 20,113,204, 64, 57,227, 25, -147,206, 14, 0,145, 34, 0, 92,246,111,129, 31,161,228,217,115,235,205,172,236, 77,158, 34,172,228, 16,132, 67,187,118,237,122, -243,245,215, 95,183,232,222,189,123, 99, 0,144,201,100,250, 93,187,118,149,150, 71, 7, 26, 4, 82,205,189,221,221,221,189,149, - 72, 36, 10, 29, 48, 96, 64,171, 49, 99,198,224,222,189,123,216,185,115,231, 67, 63, 63,191, 75,117,241,176, 82,105,174,250,217, - 51, 91,185,183,183,200,206,202, 42,227,216,209,163, 94,189,122,247, 38, 41, 41, 41,200,205,205,133, 86,171,197,157,187,119,169, -152,101,211,136,181, 53,115,255,246,109,134,149, 74,107, 44,167,175, 5, 79,235,169, 34,172, 88,214, 96,120,184,218, 53, 89, 52, -119,162,143, 86,171, 13, 40, 42, 42,226, 68, 98,177, 88,233, 98,155,220, 16, 14,157, 78, 23,121,250,244,233, 65,189,122,245,146, - 37, 70,223, 1, 87, 88, 8,125, 97, 62, 36, 2, 15,251, 54,175,129, 53,232, 0,189, 17,238,254, 20,218, 2, 11,156,191,118,223, -168,211,233,234,237,212, 94, 33,176,152, 42,102,128, 0, 32,149,203, 33,179,178,134, 76, 46,175, 62,133, 88,231,147, 27, 33,196, -226,237,183,223,238,217,169, 83, 39, 80, 74,177,117,235, 86, 24, 12, 6,169,193, 96,128, 94,175,135,193, 96, 64, 81, 81, 17,194, -195,195,177,105,211,166,203, 0,126,168,111,140,148, 82, 78, 44, 22, 79,226, 56,206, 89, 38,147, 25,156,156,156, 36,251,246,237, -171,180,141,104,221,186, 53, 44, 45, 45,117,132, 16, 3, 0,184,184,184, 24,127,252,241, 71,209,192,129, 3, 37, 53,241, 53, 11, -108, 62,211,135,179,235,106,102,222,200,219,218,177, 21,124,124,123, 0, 0,122, 15, 24, 11,159,166,158, 40, 82, 69,123,107, 53, - 79, 7, 75, 68,249,118,247,214,167,199,153,247, 15, 24, 83,242, 44,234, 1,128,237,245,141, 21, 40,243, 11,235,213,171, 23, 66, - 66, 66, 42,167, 3,157,157,157,161,215,235,107, 44,231,175, 11, 21, 38,162, 95,124, 65, 24, 44, 2,214,216, 88,103, 1,168,124, -250, 47, 44, 44, 68, 74, 74, 10, 82, 82,202,162,215,229, 9,197, 38, 61, 93, 19, 66,204,125,125,125,223,107,211,166, 13,142, 30, - 61,138, 27, 55,110,164,159, 56,113,194, 61, 40, 40, 8,222,222,222, 99, 8, 33,243, 40,173,221, 67,175, 6, 62,203, 55,222,120, -227,147, 73,147, 38, 33, 54, 54, 22, 19, 39, 78,204, 77, 77, 77, 61,180,111,223,190,241,139, 22, 45, 98, 66, 66, 66,144,153,153, -137, 21, 43, 86,240,151, 46, 93, 90, 9, 96,113, 93,124,148,210,132,212,212, 84,165, 86,171, 69, 94, 94, 30, 56,142, 67,105,105, - 41,142, 29, 59,134,240,240,240,236,114,113,245,208,196,225,217, 7, 5, 5,217, 61,120,240, 0,219,183,111,135, 94,175,159, 79, - 41,213, 18, 66,126,152, 61,123,246, 60,133, 66, 97,211,187,119,111,180,105, 83,230, 5,183,119,239, 94, 76,153, 50, 37, 74,175, -215,247,175,231, 28,172,118,113,113,249, 96,226,196,137,205,167, 79,159,142,228,228,100,235,163, 71,143,118,185,114,229, 10,241, -240,240, 64,110,110, 46, 28, 28, 28,176,118,237, 90, 76,155, 54,237, 7, 0,217,215,174, 93,123, 47, 41, 41,233, 75, 74,233,119, -166,158,219,255,101, 80,202,163, 52, 63, 22,188,206, 14,173, 3,155,161,117, 64, 35,156, 56,123, 11, 0,208,115, 72, 16, 74, 75, -138,241,227,143, 91,241,240,225, 3,136,196, 98,216,218,187,212,203, 41, 8, 2,244, 69, 9, 40, 48,100,162, 87,247,118,232, 23, -210, 13, 63,236,216, 11,206,104,192,248,177,163,144, 95, 80,128, 29, 59,182,227,209,227, 36,136,196, 98, 56, 56,254,249, 6,166, -117,105,145,191, 35, 76,202, 2, 53, 26,203, 18,218,211,211,211,113,243,230, 77, 60,121,242, 4, 22, 22, 22,208,112,188,240,221, -233, 75, 2, 33,146, 52,129,210,203,148,171,116, 21,126,145,131,231,211,171, 56,204,218,216,217,217, 73,117, 58, 13, 56,206, 88, -229, 74, 69, 0, 2, 72, 68,128,171,155, 15, 82, 83, 82,169, 70,171,141,170,107,108, 18,157,118,237,225, 67,251, 39,117,238, 18, -228,216,175,231, 23, 56,244,211, 66,228, 23, 21, 65,107, 16,163, 68,107, 64,169, 22,176,181,247, 67,251,192, 86,200,200,200, 69, -244,141,243,106,145,174,212,148, 4,208, 7,223,206, 31,235, 59,246,227,153, 48,247,234, 2, 93,252, 33, 8,234,236,202, 8,150, -153,220, 14,246,158,254, 40, 40,209, 97,255,153, 91, 0, 96,114, 75,150,236,236,236, 82, 87, 87,215, 3, 31,125,244,209,242, 59, -119,110,251, 0,192,245,235,215, 31,103,100,100,204,201,206,206, 54,185,130, 14,120,206,189,157,152,155,155, 95,243,245,245,125, -210,175, 95, 63,235, 65,131, 6,193,201,201, 9,183,110,221,194,215, 95,127,253, 64,175,215,127, 22, 21, 21, 85,231,148,142, 94, -175, 79,191,245,211, 79,214,221,254,245, 47,219,153,111,189,181, 98,210,164, 73,107, 23, 47, 94, 44,246,245,245, 37, 70,131, 1, - 49, 49, 49,116,215,206,157,198, 77,115,231,174,145, 90, 90,138,174, 31, 62, 44,230,116,186,250, 60,150,254,116, 40,149,202,174, -111,246,237,234,191,114,245,122,104, 53,106, 92,187,242, 11,242,243,115,176,101,107,132,191, 82,169,236,154,150,150,118,222, 20, - 30,158,231,247,126,255,253,247, 51, 58,182,105,211,166,177,135, 7, 98,146,159, 64, 42,240,144,112, 28, 88,131, 14, 12,167,133, - 71, 0, 5, 97,172,144,153, 85,132,175,246, 28,136,229,121,126,111,125,188,205,223,124, 27,139,211, 10, 65, 8,193,170,215, 3, - 32,181,146, 67, 98, 41,199, 71, 63,159,173, 20, 85,145,139,231, 66, 42,151,163, 73,199,250, 13,220, 41,165,165, 86, 86, 86, 55, - 99, 98, 98,218, 7, 4, 4, 96,198,140, 25,120,250,244, 41, 4, 65, 64,118,118,182, 54, 51, 51, 51, 61, 39, 39,231, 41,128, 67, - 0,182,153,154,228,203,113,156,243,173, 91,183, 0, 64, 2, 0,103,206,156,129,155,155, 27,108,108,108, 80, 84, 84,132,153, 51, -103,202, 62,251,236, 51, 0,192,205,155, 55,197, 21, 9,198, 53, 33,230, 86,252,202,130, 98,154, 79,213,183, 7,231,113,183, 3, -123,132,164,162,247,128, 49, 56, 21,249, 3,206,158, 56, 13,123,209,211, 39,176, 44, 62,166,122,162, 42, 74, 43,241,221,236,223, -118, 60,155, 89,114, 98,243,228,129,118,172,171,171,176,127,206,166,194,130,122,206, 1, 88,150,173,204,193,170, 72,104,111,168, -184,170,138, 69,139,168, 64, 64,136,163, 84, 18,157,154,154,218, 91,169, 84, 34, 59, 59, 27,169,169,169, 72, 73, 73, 65,106,106, - 42,154, 54,109,138, 71,143, 30, 65, 34,145,212,251, 48, 89,142, 81,195,135, 15,183,210,235,245,216,189,123, 55, 7, 96,192,254, -253,251,111,182,111,223, 94,212,183,111, 95,171,141, 27, 55,142, 2,176,173, 1,195,180,180,182,182,150, 24, 12, 6,108,220,184, - 17,169,169,169, 93, 41,165,241,132,144,205,195,135, 15,223, 20, 16, 16,208, 52, 54, 54,246,129, 90,173,254,136, 82, 26, 93, 31, - 89,118,118,246,216,118,237,218,237, 23, 4,193,171, 87,175, 94,150,171, 87,175,182,190,127,255, 62,148, 74, 37, 4, 65,136,161, - 13,107, 53,149,119,250,244,233,252,206,157, 59,219,149, 39,180,127, 69, 8,249,146,101,217,229,161,161,161, 54,187,118,237,194, -209,163, 71,161,215,235,145,144,144,144, 19, 27, 27,251, 45,128,149,117, 21, 96, 0, 0,165,244, 49,128,217,132,144, 86,155, 55, -111, 14,115,119,119, 31,117,229,202, 21,114,241,226, 69,172, 90,181,138, 91,184,112,161, 40, 56, 56, 24, 51,102,204,120, 12, 96, -124,249,247,125, 94, 3,198,253,191, 14,163,193,160,135,181,189, 15,212, 5, 41,200, 73,189, 2, 11, 43, 23,132,244,120, 13,165, - 26, 61,142, 28, 62,136,232,152,187, 96, 24, 6, 10, 23, 15,216,218, 57, 34, 49,241, 1, 0,212, 85, 61,108, 52, 24, 12,176,178, -107, 4,117, 97, 42,244,207,110,193, 92,238,140, 49,255, 26,140, 82,141, 1, 17,135, 14, 34, 54, 54, 26, 44,203,194,197,213, 3, - 54,182,101,156,132,214,201,249, 10,213, 80,175,192, 98, 89,246,220,241,227,199,135,118,236,216, 81,244,240,225, 67, 60,124, 88, -246, 48,147,159,159,207, 17,240, 7,178,163,127, 26, 89,219,103, 9, 33,189, 42,188, 50,170,246, 22,148, 91, 89,165,223, 79,136, - 87,228,231,101,227,238,237, 75,120,152, 24,131, 39,143,226, 97, 48,104,193, 50, 12, 24,150, 65, 35,159,150,184,116,249,138, 94, -207,243, 87,107,227, 4,128,188,188,164, 98,185,194,111,196,146,197,243, 34,167,205,252,220,124,216,208,239, 16,125, 63, 14,106, -206, 5,148, 2, 46, 14,150,104,221,120, 22,210, 51,114,176,231,135,141,165,130,193, 48,186,170, 7, 86, 77,156, 0,160, 80,161, -197,166,173, 63,140,219, 22,190,235,243,153,159, 76, 80, 12, 12, 29, 13,105, 94, 28,140, 25,183,224,211,190, 31,136,204, 22, 71, - 79,158,197,249,155,113,217, 2, 79, 63, 87,228,226,223,245,113, 86, 69, 97, 97,225,141,236,236, 44,159, 42,174,237, 62, 50,153, - 89,157, 73,179,213, 57, 73, 53,135,120,150,101, 58, 46, 94,188,184,196,213,213, 85, 31, 27, 27,139,205,155, 55, 11, 55,111,222, - 60, 39,149, 74,183,100,100,100,212,120, 17,171,202,233,100, 52,222,221, 53,103, 78,139, 14,161,161,116,228, 39,159,148, 66, 38, -155,188, 98,213,170, 57, 57,249,249,110, 84, 16,224,100,111,159,182, 98,238,220,101, 67,135, 15,207,191,119,233,146,249,149,159, -126, 50,151,114,220,173,250,198,249, 71,160, 46,206,180,180,180,243,190, 77, 60,241,227,182,213, 48, 24,116,200, 76, 79, 6, 0, -168,114, 11, 81,151,184,170,206, 89, 62,249, 31,186,224,179,207,126, 93, 48,109,170,203, 27, 61,123, 33,229,238, 29, 24,242,114, - 64,140, 28,196, 68,132,146,103, 22,120,150,173,198,236,255,236,123,166, 46, 45, 13,165,213,226,240,181,141,179, 34, 66, 37,179, -182,130,196, 82, 14,169,220,234,185,168,149,153,181, 53,164,150,114,136,164,210,154,146,225, 95,224, 84,171,213, 67,134, 14, 29, - 26,125,253,250,117,187,241,227,199,163,115,231,206,183, 53, 26, 77,119, 74,169, 73,237,160,106,226, 20,137, 68,207,218,182,109, -235, 44, 22,139,185,113,227,198,137, 84, 42, 85,165, 19,186, 90,173,198,177, 99,199, 80, 81,114,127,239,222, 61,180,108,217,178, - 86,206,241,179, 98,210, 1, 44,158, 62, 76,185,226,215,187,153,147, 1, 44,247,105,234,129,179, 39, 78,227,226,217, 43,115, 58, - 5, 8,235,223, 28,221,254, 75,139,238,195,103,250,183, 29,207,202,173, 93,177, 35,226, 32, 27,127,107,251, 87,165,165, 49, 77, - 0,124, 90,219, 56, 9, 33,160,148,190, 96,201,160,209,104, 76, 18, 87,117,125,151, 40, 40,149, 20,144,121,195,134, 13,235,120, -237,218, 53, 43,185, 92, 14,131,193, 0, 74, 41,154, 52,105, 2,145, 72,132,111,191,253,182, 68,165, 82, 45, 52,133,211,210,210, -114, 82, 72, 72, 8, 18, 18, 18,112,227,198,141,131,148,210,104, 66,200,193,135, 15, 31,142, 8, 14, 14,198, 15, 63,252, 48, 9, -181, 8,172,218, 56, 5, 65,168,234,121,148, 7, 0,148,210,187, 0, 58, 53,244,216,105,153, 89,104, 23, 0,112,112,112, 72, 85, - 40, 20,214,119,239,222,133,167,167, 39, 12, 6, 67,199,250,248,170,114, 82, 74,141,132,144, 13, 81, 81, 81,159,117,233,210, 5, -147, 38, 77,234, 26, 21, 21,213,181, 75,151, 46,240,247,247,199,217,179,103,177,115,231,206, 3, 60,207,127, 4,160,128, 82, 90, -107,127,217,154,142,189, 92, 48, 70, 7, 6, 6,142,242,240,240,192,170, 85,171, 12,209,209,209, 83,150, 44, 89,178,230,206,157, - 59,178,150, 45, 91, 50,209,209,209,181, 62, 76,252,213,215,165, 63,138,147, 18, 50,127,252,251,147, 55,191, 63,126,148, 89,187, -182,173, 81, 90,148, 6,141, 58, 27,165,197, 89,248,118,219, 73, 16,194,192,201,201, 21,206, 46, 74, 36, 39,167,224,242, 47, 71, -245, 37,165,154,181, 82,163,176,188,110,206, 79,202, 56,219,148,113,150,150, 60,131, 70,253,172,146,211,217,217,173,156, 51, 25, -151,174, 28,213,106, 74, 74, 86,235, 41,249,230,207, 60,246,127, 26,234, 21, 88,249,249,249, 83, 38, 76,152,208,125,246,236,217, - 14, 28,199,177,246,246,246, 72, 78, 78,230, 14, 28, 56,144,167, 86,171,167,188,212, 78,197,226,104, 95,191,102,221, 7, 14, 28, -200,189,253,246, 91,146,119,198,246, 21, 57, 57, 59,163,176, 32, 23,137, 9,119,112, 63,238, 22,124,155,189,134, 69,139,215, 0, -182,182,245, 86,234,168,179, 19,207,201, 21,126, 3,190, 88,240,233,222, 46, 93,251, 88, 55,107,249,154,164,117, 19, 27, 24,140, - 28,210,210,210,112,248,167,187,134,216,155, 23,139, 4, 78, 63,162, 36,199,180, 86, 57, 81,101, 9,188, 91, 2, 21,100,231,210, - 21,223,206,216,184,229,199,153,179, 39,143,183, 12, 14,234,141,152,211, 63,224, 96,228,222, 18,173, 78,191, 66,194, 98, 85,140, -138, 54, 40,234, 4, 0, 90,173,214, 88, 61,117, 68,171,213,154,220,244,180, 54,252,248,227,143,200,202,202, 50,164,166,166,158, -230, 56,238, 80, 67,170, 17,215, 83,170, 15, 37,228,244,130,160,160,190, 11, 78,156, 48,123,111,214, 44,253,232,119,222,249, 20, - 58,157, 1, 82, 41, 21, 89, 90, 50,144,201,196,247, 46, 93, 50, 95,247,225,135,246, 68,175, 63,245, 67, 61, 79,159,213,240,135, - 87, 17, 2,149, 17, 44,188, 55,126, 26, 52, 85, 34, 88, 87,111, 36,162, 33, 17, 44, 0,160,148,166, 16, 66, 58, 77,158,191, 32, - 98, 68, 72, 79,255, 0,175, 70, 50, 39,239, 70,144,187,184, 32, 55, 39, 7,151,110,220, 55, 46,222, 27, 17, 91, 46,174, 76,242, -133, 17, 4,161,178,202,173,231,148,217, 32, 44, 11,148, 11,129,138, 74, 32,239,246,157, 65, 68, 34,240, 84,128, 78,167,171, 55, - 9,139, 82,154, 70, 8, 25, 50,122,244,232, 51,145,145,145, 76, 72, 72, 72,235, 67,135, 14,253,174,114,116,163,209,168, 4, 0, -145, 72, 84,100, 97, 97, 33, 26, 51,102, 12,140, 70, 35, 74, 75, 75, 81, 88, 88,136,248,248,120,221,176, 97,195,100, 0, 96,105, -105,105, 28, 49, 98, 68,189,215,143,213,251,211,180,211,135, 41,215,219,139,158,134, 21,169,162,189,237, 69, 79,159,116, 10, 16, -214,175,222,159,166,253, 98,154,237, 18,213,211,243,137,153, 37, 39, 54,239,136, 56,200,190, 59,120, 8,175,148, 63,152, 99,230, - 76, 15,244,120,171,110, 94, 66,200, 11,166,162,191,195, 1,255, 57, 24, 12,244,182,131,131,221,178, 14, 29, 58,204, 91,189,122, -181,220,201,201, 9, 28,199,225,241,227,199,216,176, 97, 67, 73,126,126,254, 87,148,210,155,166,112,249,249,249,121,139, 68, 34, -236,217,179, 7, 0, 54,148, 47,222,112,232,208,161, 17,227,199,143, 71,163, 70,141, 90, 16, 66,100,245, 69,113,170,130, 82, 90, - 57,171,240, 71,130, 16,242,104,221,186,117,238, 46, 46, 46,228,216,177, 99, 28,203,178,181, 90, 49,212,129,101, 59,119,238,124, - 93, 16,132,158,193,193,193,104,218,180, 41, 0,224,230,205,155,248,233,167,159,246,242, 60, 63,186, 46, 97,101, 10,226,227,227, - 47,166,166,166,134,205,152, 49, 67,178,122,245,234, 53,211,167, 79,151,165,166,166, 34, 46, 46,174, 70, 23,252,191, 59, 18, 30, -228,134, 7, 54, 86,156, 88,188,100,245,103, 77, 26,123, 79, 28, 55,102, 56,235,231,219, 18, 37,133,105,112,112, 84, 64,233,225, -131,156,103, 42, 28, 63,126,140, 87,169, 10,190,231, 25,242,197,131, 7,185, 47, 58, 99, 55,128,211, 93,233,131,103,207,158,225, -232,209,163,124, 65,126,209, 86, 24,153,197,113, 79,243,235,237,172,241, 10,207,131,152,146, 80, 91, 94, 73,184,174,204,166,161, - 44,170,149,159,159, 63,133, 82,250,162,125,251,243,159,171, 84,184,164,186,249,217,176, 97, 18,252,242, 75, 43, 24,141,157,108, -173,172,122, 82, 65,104,255,218,107,175,201,135, 15, 31, 46, 4, 5,117,150, 90, 91, 91,147, 22, 45, 2,138, 11, 11, 10,236, 0, -128, 2,124,117,206,234,168,104,246, 44, 98,197,189,120,222, 16, 88, 54,214,250,155, 61,155,162,196, 27, 43,136,147, 72,192, 34, -134,144, 49, 2,165, 63,112, 12,190,120,148, 77,107, 21, 47,166,112, 86,153,222,171,104, 13, 83,103, 99,231, 90,158,230, 43,167, - 8, 25,134,221,225,238,238, 62, 47, 37, 37, 37,199,212,139, 88, 77,156, 21,173,114, 6, 76,157,106,108,219,167, 15,103,239,225, - 33, 80, 74,249, 39,183,110,145,171,135, 15,139,175, 30, 62,108,102,212,233,206,237,167,244,145, 41,156,110,110,110,203,142, 28, - 57, 98,114,110,213, 91,111,189, 21, 87,145,151, 85,215, 56,171,162, 73, 99,229,137,198,222,238,125, 26,123,151, 77, 67, 63,122, -146,129, 71, 79,210, 79, 38, 61, 74, 11,169,237, 51,117,113, 18,242, 91,179,103, 82,110,197, 64, 77,104,246, 92,157,211,209,209, -241,166, 72, 36,170,181,145,112, 77,224,121, 62, 35, 39, 39,167,178,237, 84, 61,227, 28,233,237,237,189, 60, 57, 57, 57,130,231, -249,105,166,238,163, 30,206,206, 44,203, 30,229,121,254,185, 57, 64,145, 72,244,172, 66,132, 17, 66,188,100, 50,217,115, 73,238, -117,113,174, 88, 16,240,217,235,193,193,131,175, 94,188,120,104,230,146,216,231,242,130, 38, 15,182, 31, 59,242,227, 41,223,236, -222,184,110,214,250, 67,121,223,215, 55, 78,133, 66, 17, 5,192,183,124,125,157,199, 89,126, 46,159, 43, 43, 55,245,201,155, 72, - 72,123, 71, 27,199, 47, 13, 6,195,107, 0,168, 68, 34,185,171, 82,169, 22,214, 36,174,106,227,100, 89,118,121,243,230,205,167, -220,191,127,127, 55,199,113,227,170,108,191,178, 73,147, 38, 31, 63,125,250,116,131,209,104,156, 89,227,254,107,254,127,183, 14, - 14, 14,254, 63,246,206, 59, 60,138,170,109,227,247,153,221,157, 45,217, 84, 66,218,210, 91,128, 4, 72, 32,161,132,150, 4, 65, - 81, 64,169, 74,143,162, 32, 77,144, 38,132, 23, 41, 10,137,160, 52, 17, 1, 1, 1, 5, 4, 4, 20,164, 23, 3,210,139, 36, 16, - 66, 11,144, 66, 66, 8,233,101,251,206,249,254, 72,118,217, 36,187,155, 77,136,239,231,171,243,187,174,185,118,103,230,204, 61, -103,102,118,103,158,121,206,115,158,147,179,106,213, 42,230,227,143, 63, 70, 76, 76, 76, 45, 74,169,221,227,140, 86,114,221,189, -221,220,220, 54, 25, 12, 6, 63, 74,233,129,130,130,130, 57,148, 82,203,221,203,108,104, 18, 66, 88, 0,211,154, 52,105, 50,165, -110,221,186, 94,169,169,169, 41,137,137,137, 75, 1,216,157,147,170,146,122, 6, 13, 28, 56,240,194,242,229,203, 69,245,234,213, - 67, 74, 74, 10,166, 77,155,166,219,187,119,111, 8,165,180,130, 71,221, 30,205,234,242,223,214,244,111,226,209,132, 10, 12,139, - 3, 91,251, 13, 30, 53, 98, 0,185,112,229, 30, 46, 94, 56,143,212,180,180,125, 28,195, 68,222,189,251,220, 98,147,110, 85, 52, -207, 95,185,139,139,231,207,211,244,180,244,221,160,130,255,196, 39,102,218,117,159,231,169,136, 93, 6, 86,181,197,109, 25, 88, -150, 80, 40, 20,200,180,134, 88,153, 0, 0, 32, 0, 73, 68, 65, 84,202,234, 40, 21, 10,187, 74, 36,146,112,134, 97,206,100, 63, -127, 62, 25,176,207,192,170,137,122, 86, 70,211,166, 68,108,109,232,128,234,104,150, 15, 80,175,142,102, 85, 52,236,213,180, 54, -216, 51,167, 86,167,185,235,245, 87, 87, 83,235,231,160,188,102,221,186,117, 63,224, 56,174,145,189,117, 98, 24,230, 81,106,106, -106,153,102, 19,123,207,103,243,230,205,233,189,123,247,236, 10,146,252,255,254, 45,253,155, 52,183,173, 8, 80,180,104,211,114, -102,220,181,219, 95,150, 54, 31,154, 88,248, 81, 45,167,174, 61,194,230,253,113,234,247,207,230,175,206, 46,243, 18,244, 79, 56, -118, 66, 8, 99,201,176, 32,164,164, 47,122, 85, 53, 89,150, 93,215,161, 67,135, 15, 46, 94,188,184, 73,175,215,143,173,169,122, - 86, 23, 27,247, 37, 2, 64, 92, 21,239, 92,101,154,102,235,131, 4, 2,193, 52,127,127,255,142,241,241,241,151, 12, 6,195,114, - 91,198,149, 61,154,213,225,255, 75,211,223,215, 61,152, 82, 83,178,236,197,183,239,103, 93,182, 85,190, 74,154,148, 51,112, 84, -240,249,157,196,231, 54, 71, 44,224, 13,172,202,169,214, 96,207,213,193,104, 32,217, 36, 45, 45, 5, 64, 10,128,221,127,121,133, -170,137, 61,198, 85, 85,168,142, 81,244, 87,104,148,167,212,128,178, 43,173, 67,101,148, 55,150,254, 74,238,222,189,251,143,232, -125,242, 79, 99,212,199,177,105, 0,166, 6, 91, 72, 77, 85,106, 84,205, 12,127,243,191, 93,171,255, 14,214,188, 54,182,140, 43, - 91,104,181,218, 15, 9, 33,211,104, 21,122, 31,254,127, 80,122,124, 85, 54,174,236,212,190, 6,192,106,252,239, 63,157,248,123, - 89, 87, 1, 84,210,144,254,255,175,249,111,167,102,130, 22,120,120,120,120,120,254,107,252,221,141, 43, 30, 30,158,146, 92, 46, - 61, 45,173,168,138,235,143, 16, 98, 81,195, 22,118,196, 39,241,154,188, 38,175,201,107,242,154,188, 38,175,249, 15,211,252,215, - 96,236,197,244, 87, 76, 0,122,242,154,188, 38,175,201,107,242,154,188, 38,175,201,107,254,219, 38,190,137,144,231, 47,231,235, -129,164,206,215, 3, 73,157,191,170, 60, 15, 15, 15, 15, 15,207,223,141,255, 90,144,187, 53, 8, 33, 10,148, 36,200,107, 10,224, - 14,128,179,180, 10,221,142, 45,232,213, 6,240, 54, 33,100, 8, 0, 80, 74,119, 3,216, 69, 43, 73, 41, 97, 68, 38,147,101,168, - 84, 42, 79, 0,144, 74,165,207, 84, 42,149,249,152, 3,196,108, 2, 0,106,156,104,169, 73,111,137,198,141, 27,103,168,213,106, - 79, 59,118,159, 71, 41,141,101, 24, 38,206,209,209,241,212,157, 59,119, 42, 29,134,197,156, 30, 61,122, 68, 8, 4,130,197, 0, - 96, 48, 24,230,158, 58,117,106, 75, 85,182,175, 10,132,144,142,245, 20,222,223,107,117, 90,125, 70,102,246, 60, 74,233, 47,150, -202,173,237, 71,162,132, 4, 51, 75,191, 47,155,112,192,118, 42,138,170,150,183, 81,191, 96,145, 72, 52,201,203,203,235,245,212, -212,212,171, 0,102, 81, 74, 43,205, 66, 92,191,126,253, 81, 66,161,112,132,193, 96,104, 34, 16, 8, 18,245,122,253,143,201,201, -201,219,170, 83, 7, 30, 30, 30, 30,158,127, 47, 85, 50,176, 90,214, 38,222, 20, 24, 10,130, 94,160, 56, 78,128,157, 9,207,233, - 83,123,183,239,211,146,232,116,250,146,125,178, 12, 12,135, 31, 48, 27,250,244,233, 83,119,242,228,201,232,220,185, 51, 46, 94, -188, 24,178,121,243,230,247, 4, 2, 65, 44,199,113,167, 1, 92,164, 54,210, 1, 24, 33,132,200, 1,188, 5, 96,248,235,175,191, -222,115,241,226,197,130, 86,173, 90, 65,169, 84,226,247,223,127,239,186,108,217,178,149,132,144, 19, 0,182, 3,248,133,218,200, -237,162, 82,169, 60,141,182, 18, 33,196,115,208,160, 65, 87,204,114,237, 16, 66, 8, 24,134, 1,165,244, 2,128, 11, 28,199, 93, -216,189,123,119, 74, 75, 66, 58,142,107,196,238,153,242, 80, 83, 33,231,145, 90,173,246,220,191,116, 9,132, 18, 9,212, 5,249, - 8,121,247, 69,207,234,227,159,206, 4,225,244, 16,128,230,132,127,190, 50, 22, 64, 92, 90, 90, 90,108,104,104,232, 35, 59, 79, -171, 9,129, 64,176,248,200,145, 35, 62,148, 82,188,246,218,107,139, 1,108,169,170,134, 61, 16, 66, 36,157,130, 3, 79, 31,248, -121,135,180, 48, 59, 3,189,223,122,231, 71, 66, 72, 4,165,244,103,243,114,107,223, 32, 94, 68,136,153,227,151,108, 23, 0,192, -218,200,225,179, 86,190, 70, 86, 79, 61, 74,159, 18, 66,194, 1,211,208, 74, 75, 41,165,167,215,190, 65,188, 32,192, 39,227,151, -108, 39, 0,240,109,228,240,153,107,223, 32,171, 38, 28,170, 90, 47, 73, 66,200,132,136,136,136,213,139, 23, 47, 22,248,248,248, -224,201,147, 39,189,253,253,253,155, 19, 66,252,169,141,224,224, 70,141, 26,253, 20,254,106,255, 38, 3,135, 12,149,213,118,119, -195,147,244, 76,151, 93, 59, 54,143,107,212,168,209,235,143, 30, 61,122,167,106,103,137,135,135,135,135,231,223, 76,165, 6, 86, -144,130,200,138,180,232, 47, 20,144, 81,221, 58,182,122,101,216, 27,221, 24,127,191,102,136,191,117,251,213, 95, 78, 93, 90,230, -239,197,156,212, 27,232, 54, 57,139,253,215,210,108,247,108,209,233, 33, 60,182,127, 59, 0, 96,194,123,195, 5,151, 47, 95,110, - 22, 20, 20,100, 26, 65,253,149, 87, 94,193, 43,175,188, 66,214,174, 93, 27,120,236,216,177,192,141, 27, 55,106, 9, 33,223, 83, - 74,127,179,166, 73, 8,153,212,180,105,211,101,171, 87,175,150,132,134,134, 66, 34,145,152,214, 57, 58, 58,162, 95,191,126,232, -215,175,159, 32, 45, 45,237,181, 3, 7, 14,188,182,116,233, 82, 13, 33,100, 6,165,116,141, 53, 77,115, 62,253,244,211, 32, 11, -139,143, 16, 66, 30,232,245,250,235, 1, 1, 1, 41, 45, 8,105,246,225, 27,157,143, 79,232,226, 43,183,166, 35, 20,139,177, 53, -162,228, 25,109,110, 96, 61, 58,117, 24,142,206, 78, 89, 14, 78, 78,177, 0,226, 0,196, 82, 74,227, 30, 60,120,112,219,143,144, -192, 78,110,204,247, 27,179, 13, 1,246,212, 21, 0, 4, 2, 1, 82, 82, 82,224,226,226, 34, 11, 11, 11, 75, 39,132, 44, 56,125, -250,244, 6,123,183,183,147,142, 11,102, 78, 96,115, 30,199,226,105,194, 5, 76, 27,210,213, 97,234,215,191,126, 6,224,103, 91, - 27, 17,194, 48, 75,207,115,179,167, 2, 83, 0,204,203,202,202, 10, 5, 0,119,119,119, 49,128,211, 43, 46,225,141,143,187, 84, -146, 57,210,166, 62, 97, 5, 2,193, 55, 91,183,110,125,127,212,168, 81, 37, 67, 60,252,241, 7, 28, 29, 29,177,104,209,162,134, -211,167, 79,143, 66,201,190, 43, 80,191,126,253, 81, 97,189,250, 55, 94,185,236, 51,191,130,236, 60,245,250,111,118, 93,169,211, -186,133,224,195, 73,211,157,214,232, 52,222,245,235,215, 31,197,123,178,120,120,120,120,120,236,197,166,129,213,194,131,108,233, -214,206,247,237, 97,125,186, 74,218,180,110, 5, 86,242, 34,177,115, 80,112, 48,130,130,131,153,217,133, 5,189, 46, 95,185,214, -107,207,177,139,234, 22, 30,100,215,157, 76, 26, 97,239,206,141,131,197, 46,126,203,171, 71, 81,238, 51, 41, 0,200, 93, 61, 85, -145,251,159,158,234,210,165, 11,234,214,173,203,158, 60,121,114, 12, 0,171, 6, 22,128,200, 59,119,238, 72, 4, 2,219,121, 76, - 21, 10, 5, 6, 15, 30,140, 22, 45, 90,136,195,194,194, 34,241, 98,216,138, 50, 72,165,210,103,132, 16, 79, 0,168, 85,171,150, - 97,193,130, 5, 55,104, 41, 0,192,113,220, 5,129, 64,112,129,227,184, 75,191,252,242, 75,106, 43, 66, 60,251, 6,181, 56, 59, - 97,228, 96, 7,186,103,165, 85,227, 64,149,159,111,113,185,131,163, 60, 83, 38,151,199, 74, 28,164,113, 0, 98, 1,196,213,169, - 83,231,118, 43, 66,234,118,106,209,232,216,218,143,135, 59,217, 60,176, 82,130,130,130,154,135,135,135, 75, 13, 6, 3,138,138, -138,240,237,183,223,186,200,100, 50,151,215, 95,127,125, 62, 0,147,129,229, 79, 72,155, 65, 10,193,216, 5, 79,244, 19,237,209, - 53,135, 16,226,218, 45, 36,248,241,215,209,243,157,131, 59,117,195,189,211, 63, 32, 59,187, 0,121,185,133,224, 56,174,194,200, -191, 19, 14,209,140,181,253,200,178,181,115,134,127, 66, 24,134, 4, 14,152,133, 55,189,243, 62, 34,132,220, 2, 32, 18,139,197, -198,162, 66, 66,136,162,117,235,214,203,154,189,218, 13,223,206, 29, 9,202,113, 20,192, 50,123,189, 87,132, 16, 79, 39, 39,167, - 95,142, 29, 59,214,177,125,251,246,184,120,241, 34, 30, 62,124,136, 9, 19, 38,104, 38, 78,156,200,142, 30, 61,154, 76,155, 54, -109, 50, 33,100, 15,165,244, 92,249,237,133, 66,225,136,183, 6,190, 35, 46,204,205, 87,105, 53, 90,141,187,187, 11, 85, 21,169, - 10,178,114,242,149,111, 15,125, 95, 27,119,237,226, 8, 0, 21, 12,172,151, 57,159, 60, 60, 60, 60, 60,118,211, 30,128, 7,128, - 76, 0, 87,202,205,163,244, 59, 44,204, 63, 71, 73, 88,143,187,153,214,115,148,132,247,120,160, 36, 71,231,101, 0,213, 14, 77, -178, 6,161,148,162, 52,161,176, 49,177,176,201, 72,104,225, 65,232,157, 76, 10,125,118, 34, 12, 89, 15, 96, 40,168, 56,188, 17, -145,186, 34, 79,105, 64, 74,226,109, 68, 76, 93,132, 59,153,214, 51,104,247,105, 73,116, 46, 98, 8,157, 88,128,117,112, 85, 15, -139, 62,122, 62, 56, 56, 88, 21, 25,202,244,137, 90, 91,226,217,154, 54,118, 56, 66, 62,222,115, 52, 49, 49, 81,175, 80, 40, 48, -106,212, 40, 80, 74,251, 90, 61, 0, 66, 50, 10,174,156,247, 76,232,219, 25, 29, 50, 44,135, 65,221,189,123, 23,103,206,156, 65, -114,114, 50,154, 52,105,130, 49, 99,198, 60,163,148,122, 89,211,236,221,187,119,204,210,165, 75,187,127,245,213, 87,177, 91,183, -110,237, 66,169,229,177, 6,253, 9,145, 7, 54,244,190,178, 49,234,147, 38,228,240,247,162,226,228,251,112,141, 81, 86, 56,126, -133, 66, 65,211,210, 94,156,187, 47,154,251, 64,238,226, 4,185,179, 99,198,232, 99, 87, 77,158,171,210,207, 59, 65,132, 56,215, -245,113,191,186,115,197,188, 58,204,169,159,164,236,250, 11, 54,189, 58, 65, 65, 65,205,195,194,194,206, 47, 94,188,216, 45, 45, - 45, 13, 39, 78,156, 64,195,134, 13, 81, 92, 92,140,229,203,151,167,159, 61,123, 86, 81, 90, 95,175, 14, 45, 26,196,126, 59,253, - 93, 23,118,204,167, 18, 91,154,150, 96,133,194, 53,231,143,252, 52,209, 69, 66,145,155,246, 16, 15,110,223,194,229,248, 71,186, -109,199, 99, 13,249, 74,117, 31, 74,233, 41, 75,219, 77,234, 74,154,157, 78,243, 56,112,228,247, 43,190, 62, 62, 62, 24, 55,110, - 28,158, 62,125, 10, 74, 41, 56,142, 51,245,184,136,140,140, 68,243,230,205, 17, 49,244,205, 98, 73,246,181,176, 3,241,246,141, -247, 70, 8,105,221,160, 65,131, 99,167, 79,159,246,170, 83,167, 14,206,158, 61,139,167, 79,159,194,219,219, 27, 39, 79,158, 68, -116,116,244,214,241,227,199, 15, 89,188,120,177,116,216,176, 97, 79,142, 30, 61, 90,175,124,204, 92,195,134, 13,111, 31, 56,122, -214,241,228,190,163,137,110, 78,114, 56,122,213,130,192,201, 77, 9, 10,165,151,135, 11,251, 78,255,158, 77, 31, 63,126,236,103, -190,205,203,158, 79, 30, 30, 30, 30,158, 23, 88,179, 69, 74,233, 67, 8, 57, 88,106, 15,104, 0,136,205,230, 65, 8, 57, 8, 0, -229,231,103,207,158, 29, 25, 21, 21,117,203, 56,111, 44, 51,103,206,156, 86,209,209,209, 75, 66, 66, 66,118,158, 63,127,126, 1, -128,251, 53,125, 60,118,197, 96,233, 83, 47,131,245,125, 29, 34,131, 14,186,231,119,192,229, 38, 1,114,111, 40,137, 35,178,210, -147,144,112,246,231, 18, 91,176, 18,126, 75,160, 34, 66,200,201,219,183,111, 35, 33, 33, 1, 41, 41, 41,112,112,112,168, 80,238, -143, 63,254,128, 76, 38,131,143,143,143, 93, 7, 65, 53,101,147, 5,199, 6, 53,128, 99, 72, 40,158, 15,251, 16, 39, 79,158,196, -179,103,207,192,178, 44,196, 98, 49,244,122,125,165,122, 12,195, 16,192,148,137,216, 98, 22,230, 48, 66,132,117,107, 57, 30, 88, - 59,127, 74, 35,230,194, 65,145, 50,249, 62,210, 84, 6,184,218, 81, 95,153,163, 28, 14,114,135,116,153,204,161,188,113,117, 47, -136, 16,145,220, 81,122,224,251,207,167,121, 11,174,159,148, 42,239,199,130,181,160,209,171, 87,175,113, 0,230, 83, 74,115,195, -194,194,188, 22, 47, 94,236,246,228,201, 19,196,199,199, 99,215,174, 93,153,250,146, 3, 37,148,210,133, 0, 16, 66,136,180,190, -135,235,209, 53,159, 78,113,194,233,159,196, 24,243,169, 29, 53, 45,139,139, 95,191,223, 6,141, 30, 63,113,245,148,126, 40, 42, - 80, 98,251,241,235, 56,114,237,193,155, 0,254,176, 21,215,182,230, 15,122,159, 16,242,202,192,129, 3,255, 60,115,230, 76,237, -141, 27, 55, 66,175,215, 91,156, 54,110,220,136, 19,103,175,125, 68,237, 28, 76,151, 16,162,104,212,168,209,137, 75,151, 46,121, - 56, 56, 56,224,248,241,227,200,205,205, 53,121,174, 34, 34, 34, 72,110,110,238,208,111,191,253,118,208,227,199,143,191, 60,123, -246,108, 22, 74,134,109, 42,243, 67, 16, 8, 4, 15,244,122,109, 75,133,159,175, 96, 72,191,110,221, 10,179, 98,225,232, 30,128, -139,127, 62, 56,152,151,155,173, 20, 8, 4, 15,204,203,215,196,249,228,225,225,225,225,169, 26, 70,163,202,220, 96, 42,111,104, - 25,191, 27,203, 69, 69, 69,153,230,141,219, 68, 71, 71, 47, 49,155,183,232, 68,121, 89,140, 6, 86, 24, 33,132, 2, 8,179, 84, - 72, 29,191, 23,234,132, 95,192, 54,232, 2,113,139, 55, 33,104,208, 21,201,177,167,113,227,240, 10,164,222,250, 3,148, 51,192, -167,121, 7,123,247,169,106,217,178, 37, 84,170,146,208, 43,181, 90, 13, 86,238,166,154, 54,118,184, 20, 0, 56,161,212,100, 45, -217,232,152, 87, 6,167, 46,225,232,144, 65,113,217,171,196,224, 53,122,178, 62,127,247, 93,176, 44, 11,150,101, 77,131,194,218, - 99, 96,149,142,161,101, 28,173,190, 66, 37, 8, 33, 36, 88, 34,218,190,115,254,164, 14,146,199,113, 98,245,205, 11, 72, 83,115, -244, 64,134,225, 55,123, 70, 52,118,144, 59, 60,145, 57, 56,196,201, 28,229,230, 6,214, 3, 0,160, 34,209,182, 31, 22, 78, 10, -144,103, 36,202, 85, 87, 78, 34, 93,197,105,157, 45,203, 44, 60,124,248,176,167, 80, 40,244, 54, 24, 12, 72, 78, 78,198,173, 91, -183,176,106,213,170,140,130,130,130,176,107,215,174,221, 53,171, 47,211, 94, 38,222,181,109,209,148,198,194,216, 24,169,250,193, - 77,139, 70,155, 45, 60,218, 12,120,237,205,176,192,223,198,141,156,139,254,111,188,138,209, 97,254,244, 81, 90,182, 10,192,113, -106,199,192,210,148,210, 39,132,144, 94,221,187,119,255,177,109,219,182,126,148, 82,180,105,211, 6, 67,135, 14,197,182,109,219, -112,227,198, 13,228,231,231,107,143, 29, 59,182,146, 82,186,185, 50,189,210,227,114,112,115,115, 59,114,234,212, 41, 15, 7, 7, - 7, 28, 59,118, 12, 74,165, 18, 62, 62, 62,152, 56,113,162, 56, 58, 58,122,107,126,126,254,144,168,168, 40,233,163, 71,143,214, - 28, 61,122,180, 33, 0,134, 82, 90,225, 71,160,209,104, 54,108,223,182,101,245,196, 73,147,235,156,186, 24,127, 82, 93, 84,224, - 82,175,126, 74, 65,237, 90,142,142, 43,150, 46,172,167,209,104,198,153,237,215,236,124,254, 94,173,243,201,195,195,195,195, 83, - 1,155,182, 8,240,194,104, 42,111,100,217,131,153,241,165,156, 61,123,118, 36, 33,228, 96,169,135, 75, 9,160, 98, 19,221, 75, - 34, 44,173,112, 12, 33, 4,148,210, 24,171, 37, 57, 3,180,143,206, 64,251,232, 12,100, 33, 31,225,215,168,178,195, 64,217, 57, - 72,186, 69,250, 45, 58,126, 74,173, 86, 11,183,108,217, 98,138,203, 2, 0,131,161,242,225, 11,171,138, 61, 6, 22, 74,135, 16, - 42, 53,176, 42, 84,162,145,196, 49,102,195,199, 67, 58,185, 27,138, 69,154, 63, 14,224,137,154,211,127,121, 95, 91,124, 37,151, - 46,141,180, 34,184,127,234, 56,164,156, 61, 1, 7, 71,199,148,247,207,196,153,123,173, 98, 1, 60, 4,128, 70, 82,231,147,187, -166, 13,235,234,205,130,213,252,182, 27,105,106, 78,189,238,177,110,243, 42, 11,122,198,102,181,135, 15, 31,162,184,184, 24,231, -207,159,199,207, 63,255,156, 89,222,184, 42,173,239,239,155,102,141,232,232, 92,240,148,213, 92, 57,129, 52, 53,167,110,110,199, - 73,240, 8, 24,208,133,101,200, 49,194, 8,100,111,116,243,199,212, 15, 6, 96,197,166, 95,245, 26,207,110,125, 87,255,114,232, -237, 66,181, 54,210, 30,227,202,172,206,177, 0,252, 9, 33, 18, 0,225, 67,135, 14, 61, 52,104,208, 32,196,196,196,224,192,129, - 3,190, 0,210, 1,128, 16,178, 8,128, 23, 74,122, 23, 90, 27,201,157, 97, 89,118,231,137, 19, 39, 90, 41, 20, 10,156, 56,113, - 2, 74,165, 18,227,199,143,215, 76,154, 52,137,141,136,136, 32,121,121,121, 38,207,213,249,243,231,179, 96,197,184, 2,128,212, -212,212,195, 13, 27, 54,236,210,189,123,247,254,141,125, 91, 56, 39, 22,228, 63,115,116,144,202,206,198,156,102,175, 93,185,176, - 38, 53, 53,213, 52,152,106,217,243,121,210,238,243,201,195,195,195,195, 99, 29,187,108, 17,192,102,216,144,157,219,137,162,162, -162,110, 69, 69, 69,149,241,112,213, 52,213,202,131,101,200, 75,174,176,140,114,246, 27, 88,150, 60, 83,110,110,110,122,153, 76, - 86,198,192,226,236,212,204,222,183, 3,137, 19,134,155, 60, 87, 70, 79, 22,122, 71, 84, 40, 91, 21, 15, 86,105, 48,116,153, 74, -200,189, 90, 12,219, 57,178, 87, 23,255,198,117, 24,221,174, 85, 72, 45,214,171,230,223,209,170, 18, 10,232,155,241, 22,130,167, - 77,154,122, 29,164,114, 89,146,204, 81, 94,222,184,122, 12, 0,142,222,205, 7,109, 29, 22, 30, 22,216,162, 41,163,255,105, 57, -158, 20,235, 10,103,223,214,106, 19,139,232, 94, 75,122,148,210,249,175,190,250,234,124,119,119,119,233,234,213,171, 93, 26, 52, -104, 0,189, 94,175, 41,111, 92,201,189, 90, 12,251, 41,162,119,151,230,222,110,140,110,207,215, 72, 81, 26,138, 87, 37,234,182, -174,171,228, 28,120, 4, 12,232, 82,219,197,241,232,186, 37, 19,100, 14, 18, 17, 84, 42, 21,162,215,238,193,177,115, 55,251,102, -198,237, 59, 10,224,104, 37, 18,182,120,191,111,223,190, 43, 22, 45, 90, 4,157, 78,135, 49, 99,198,224,193,131, 7,199,238,220, -185,179,170,126,253,250, 51,102,205,154,165,240,246,246,198,219,111,191,205, 2,136,176,162,241,197,246,237,219,251, 6, 6, 6, - 34, 38, 38, 6,185,185,185,240,241,241,193,164, 73,147,196, 81, 81, 81, 91,243,243,243,135, 44, 89,178, 68,250,240,225, 67,155, -158, 43,115,244,122,253,103,235, 87, 76,152,222,190, 83, 87,230,254,253,187,250,228, 14,161,204,233, 19, 7,206,184,185,185,109, - 53,150,145,123,181, 24,246,211,187,175, 87,249,124,242,240,240,240,240,212, 24,191, 1,232, 99,156, 49,247,102,153, 27, 95, 70, - 15,149,249,124,249,242,165,235,255,146, 65,201, 77, 6,150,133,128, 50,171,112, 69,153, 21,150,217,211,156,215,167, 37,209,141, -107, 15, 97,100, 40, 3, 86,238,166,234,183,232,184,197,160,104, 0,144,203,229,118,123,176, 56,181,202,230,122,179, 60, 86,118, - 25, 88, 2,129,128, 0, 56,194,113,220, 5,152, 25, 88,174,222, 45, 66,255,243,201,148,149, 93, 7,245,102, 50, 62, 8, 65,110, -161, 90, 61, 43, 94,207,165, 22,219, 54,174, 0, 0, 6,221, 35, 7,185, 99,156, 84, 94, 38,238, 42, 25, 0,100, 94,205, 58,204, -254,120,242,218, 30,195,250,145,204,241, 93,145,147,171, 84,207,184,165, 39, 79,148,116, 72, 60,165,167, 45,201,157, 60,121,114, - 61,128,245, 97, 97, 97, 25,114,185, 28,133,133,133, 21,174,129,177,190, 93, 6,245,102, 50,222,239,136,236, 34,173,122,214, 45, - 61,210,148,220, 78, 91, 85,245, 8, 24,208,197,195,213,233,232,186,197, 19, 28,210, 82, 31,131,101, 89, 56, 58, 58,226,248, 31, -113,200,188,185,255,101, 12, 43, 8, 4,130, 5,145,145,145,243, 39, 78,156,136,172,172, 44, 28, 56,112, 0,111,188,241, 6,118, -236,216,209,224,208,161, 67, 43,194,195,195, 33, 16, 8,112,240,224, 65,232,116,186,123,150, 52, 8, 33, 3,198,142, 29, 59, 99, -208,160, 65,184,124,249, 50,210,211,211,203,120,174,114,115,115,135,174, 93,187,118,208,163, 71,143, 42,245, 92,149,163, 67,163, -166,237,216, 57,243,190,130,186,248,153, 48,243,201,197,152,147,199,153, 11,217,217,217, 14, 0,242,170,123, 62,121,120,120,120, -120,236,195,134, 45,146, 89,106, 60,101, 90,154, 55, 51,172, 44,205,147,114, 94, 47, 77,185,245, 55,106,170,254,230,216,229,193, - 18,122,181,134, 62,227,166,105,158, 43,122, 86,102,189,212,169,150, 93, 77,132, 58, 61,132,235, 54,155,242, 96, 73,179,178,178, -164,181,107,215, 86,153, 27, 6, 14, 14, 14, 80, 40, 20,200,201,201,193,134, 13, 27, 0,160,178, 96,103,189,243,160,145,232, 48, -108, 12,174,212, 21,131,234,180, 38, 79,214,186,119,223, 53, 21, 34,132,128,101, 89, 99,236, 87,101, 15,219, 75,132,144,199, 28, -199, 93,160,148,210,160,230, 77, 62,147,202,229,239, 6, 7, 52,173, 61,117,194,251,162, 71,207,212, 56,213,117, 78,238,158, 47, - 62,113, 76,161,142, 19,147,104,174,109,227, 10, 72,124,235,219, 31,202,123,174, 82,219, 53,111, 50, 87,234, 32,253,160, 83,235, -230,222,179,167, 77, 16, 61,202, 80,147, 83, 29,102,229,255,188,116,150,195, 67, 56,205, 72,161, 57, 22,141,171,114,204,127,227, -141, 55,230, 83, 74, 41,199,113,243, 0,192,188,190,211, 38,125, 32, 74,124,170,194,201,174,115,115,126,254,226, 19,167, 20,216, -174,175, 71,192,128, 46, 94,110,206, 71,215, 45,153,232,144,254, 36, 9, 18,137, 4, 78, 78, 78, 72,201,200,131, 72, 40,176,153, -231,172, 50, 8, 33,146,208,208,208, 79, 38, 76,152,128,184,184, 56,140, 31, 63, 62, 61, 57, 57,121,239, 79, 63,253, 52,254,211, - 79, 63, 21,190,246,218,107, 72, 79, 79,199,178,101,203,116,127,252,241,199, 18, 0,203, 44,233, 8,133,194,247, 63,251,236, 51, -154,150,150, 70, 30, 62,124, 8, 31, 31, 31, 76,158, 60, 89,188,100,201, 18, 83,204, 85, 85, 60, 87, 70, 82, 83, 83, 99,124,155, -214,199,155,135, 87, 66,175, 83,199,228,102, 37,159, 73, 72,204,137,169, 37, 22, 79,239, 26, 20, 80,173,243,201,195,195,195,195, - 83, 35, 92,169,100,254,111, 71,101, 6,214,189,175,231,190,231,251,222,196,153,144, 53,232, 2,245,237,125,224, 10, 51, 76, 30, - 44,169,163, 27,106,213,247, 67,110,145, 26,187, 79, 94, 3, 0,139, 30, 7,107, 20, 20, 20, 32, 40, 40, 8,223, 68, 52,239,161, - 42,200,146,202, 0,168, 37,206,170,253,226,110,167, 14, 29, 58, 84,204,113,220, 78, 0,135, 42,145, 89,208,170, 85,171, 53, 95, -125,245,149,216,111,216,123, 40,188,120,182,204, 74,134, 97, 32,147,201, 32,145, 72, 16, 27, 27,139, 83,167, 78,105, 0, 44,176, - 37, 72, 8,185,164,215,235,111,236,222,189, 59,197,183, 73,221,222, 97,237, 59,124, 20, 57,103,182, 83,252,217, 99,152,183,100, - 13,215, 44,248,181,188,232, 29,251, 11,242, 28,235,191, 82,156,150,240,167, 29,135,122, 3,101,141,171, 52,191,198,245,123,132, -180,107, 59,115,222,188,185,206,183,206, 30,199,167, 75,215, 81,223,192,158,121, 75,127,254, 37,255,185, 67,195, 87,149, 25,183, - 47,219,150, 44,225,247,223,127, 95, 15, 96,189,113,190,124,125,103, 47, 90,197, 53,111,223, 59, 39,122,199,207, 69,249, 78,245, -123,218,170,175,167,255,192,206,245,124,106, 29,253,250,243, 15, 29,158, 62, 73,134, 68, 34,129,163,163, 35,146,211,115, 49,127, -229,174, 34, 45,199,245,182,167, 78, 54,144, 56, 57, 57, 73,180, 90, 45,190,249,230, 27, 36, 39, 39,135, 80, 74,147, 9, 33,235, -222,121,231,157,213,109,218,180,105,121,235,214,173,123,133,133,133, 19, 41,165, 9,214, 68, 92, 93, 93, 67, 60, 60, 60,200,133, - 11, 23,240,225,135, 31,106, 38, 79,158,204,142, 30, 61,154,228,228,228, 84,215,115, 5, 0,168, 91,183,110,232, 91,125, 58,163, - 75,175,241, 49, 26, 85,238,153, 71, 9, 91, 99, 24,122, 78, 26,212, 54,160, 90,231,147,135,135,135,135,231, 95,140,173,145,160, - 67, 1, 97,115,119,140,107, 85,135,125,186,237,139,201,180, 32,241, 60, 85, 94, 94, 79,243,247,125, 64,127, 91, 54,154, 30,250, -122, 42, 29,223,167, 21,109,233, 73,158, 54,119,199,184, 80, 64,104,190, 61,202,141,182,253, 70, 11,232,122, 53, 5,237,213, 20, -180, 79,115,232, 0, 68,182,107,215,110,255,164, 14,160, 52,126, 59,165,241,219,233,164, 14,160, 0, 62, 4,224,104,169, 78,229, - 53, 75,151,249, 0,216, 16, 20, 20,164, 63,125,250, 52,189, 51,164, 39,189,222,178, 54,157, 56,113, 34,253,244,211, 79,233,240, -225,195,169,135,135,135, 30, 37, 9, 55,125, 42,211,124,243,205, 55,235, 82, 74, 81,175, 94, 61,215, 96,191,102, 79, 99, 79, 30, -160,103,182,173,166,155, 38, 13,164, 29,219,248, 61,247,110,217,253,134,204,167, 69, 91, 91,231,206, 92,211,219,219,123, 14,165, -180, 55,165,212,135, 82, 10, 95, 95,119,199,118, 45,155,165,221, 56,113,128,158,253, 97, 13,221, 52,105, 32,237, 20,224,159, 85, -215, 47, 60, 65,234,217,178,131, 61,154,150, 38,139,245,109,221,242,185, 87,179,206,127, 90,171,175,185,102,227, 14,111,255,146, -154,150, 65, 47, 93,186, 68, 15, 29, 58, 68,207,158, 61, 75,183,253,244, 11,173,223,126, 72, 97,237, 54,253,187,216,218,183, 61, -245, 4,224,210,167, 79, 31,122,239,222, 61,250,250,235,175, 83, 0, 46,213,209, 4,176,255,209,163, 71,244,230,205,155, 52, 50, - 50,146, 2,216, 50, 97,194, 4,101, 94, 94, 30,237,217,179,103, 50, 74, 58, 41, 8,171, 83,207, 38,141,234, 68, 15,232,215,109, -193,164, 15, 7,133,190,236,249,172,169,137,215,228, 53,121, 77, 94,243,223,160,249, 79,155,108,122,176,126, 47,121,251, 95,223, -198,139,252,184,100,217,215,211,191, 89,191,101,230, 39, 31,189, 47,239,214,181, 23,226, 78,124,143,159, 15,254, 84,164, 82,107, -150,177, 2,124, 21,247,220,114, 50, 78,115,126, 75,160,162,242,203, 8, 33, 14,181,154,194,148, 67,233,126, 14, 64, 41,173, 82, -204, 48,165, 52, 29,192, 88, 66,200, 87,225,225,225,139, 63,232,210, 97,224,164,206, 61,160,211,233,176,109,219, 54, 36, 37, 37, -237, 5, 48,151, 82,106,151,135, 45, 46, 46,238,121,171,102, 13,167,212,146,177, 51, 39, 14, 31,224,145,249, 32, 30,169,183,175, - 3, 0,212,106,165, 46,253,110, 76, 96, 85,234, 39,147,201, 46,121,120,120,220,241,240,240,200, 49,168, 11,199, 74,133,206,243, -198, 15,125,203, 51,235, 81, 2, 82,110,149,180,128,170, 85,197,218,148,187,167, 90, 86, 69,215, 72,195,134, 13, 37,114, 17,198, - 89,172,175, 70,165,123,122,239,118, 91,123,116,138,213,154, 37, 11, 87,108,123,245,243,153,239, 74,156,157,157,113,237,230,125, -204, 91,190,163, 72,169,209,245,206,140,221, 87, 35,205, 96,148, 82,232,116, 58,187, 59, 48, 88,225,147,192,192,192, 22,139, 23, - 47,246,141,136,136,192,203,122,174,204,121,240, 48,117,118, 88, 88,152,255,253, 59,215,194,107,201,216, 31, 95,230,124,242,240, -240,240,240,252,123,177, 43, 6, 43, 46,131, 22, 3, 88,212,196,139,172,155,179,120,197,124,134,172,124,151,163,244,123, 61,131, -133,137,207,105,197,136,247, 42, 64, 41, 45,238,211,146,232, 95,237, 63, 92, 8, 0, 34, 97,165,241, 81,182,180,238, 1, 24, 68, - 8,105,255,221,185,203,255, 41, 93,252, 57,165,180, 74,109,181, 78, 66,220,236,234,223,164, 78,183,118,173,164, 2,131, 18,169, -183, 31, 32,187, 72,133,227,183,146,114, 25,202,124, 95,213,122, 37, 38, 38,254, 14, 0,173,155, 53,188,221,205,191,105,253,238, - 65,173, 28, 68, 68,131,212,248,107,200, 83,106,112,236, 86, 82, 30, 8,169,118,160,116, 77,213,247,105,236,254, 43, 30, 1, 3, -122, 18, 66, 78, 68, 78, 26, 38,153,191,124,103,141, 26, 87, 0,138,159, 60,121,146, 85, 92, 92,236,158,150,150,166, 65, 53,147, -187, 81, 74,239, 19, 66,218, 76,157, 58,117,209,140, 25, 51,102,126,241,197, 23,108,117, 98,174,172,145,243, 36,105, 95,247, 86, - 53,119,253,121,120,120,120,120,254,125, 84, 41, 77, 67, 98, 6,205, 4, 48,177,105, 83, 50,237,193, 3,170,169,169, 74, 88,242, -108,189, 12,165, 6, 85,191,106, 11, 48,164,224,226,189,164,194, 75,247,146, 10,193, 81,202, 81,170,102, 24,164, 20,105,181, 75, -238, 38,166, 86,191, 23, 29, 33,134, 43,247,147,149, 87, 31,164,168, 40,199, 81,142, 82, 13, 33,120,170,211,113, 75,110, 38, 62, -254,229,239, 80,223,204,216,125,231,188,253, 7,118, 59,119,233,230,180,162, 34,237,154,204,248,125,231,171, 93,175,114, 80, 74, -117,132,144, 17, 33, 33, 33,239, 25, 12,134,117,148, 82,221, 75,104,105, 0,124, 66, 8,217, 27, 23, 23,183,235,252,249,243,233, -168, 1,227, 10,192, 95,119,253,121,120,120,120,120,254, 53, 84, 43, 15, 86, 77, 26, 87,127, 71,226,238, 61, 10,250, 43,116,111, -222,123,212,250,175,208,173,233,250, 62,141,223,123, 21,192,208,154,212, 52, 66, 41, 61, 6,224, 88, 13,234, 93, 33,132, 52, 2, - 32,168, 17,227, 10,127,221,245,231,225,225,225,225,249,247, 80, 45, 3,139,135,231,239, 4, 45,137,184,172, 17,227,138,135,135, -135,135,135,167, 38, 32, 0,122, 90, 90, 65, 41, 61, 97,183, 8, 33, 22, 53,108, 81,153, 62,175,201,107,242,154,188, 38,175,201, -107,242,154,255, 60,205,127, 13,127,101, 23, 69,252,143,116, 13,229, 53,121, 77, 94,147,215,228, 53,121, 77, 94,243,255, 87,243, -159, 54, 49, 53,109,176,241,240,240,240,240,240, 24, 33,132, 72, 74, 7,120,175,214,122, 30,158,255, 85,170, 28,131, 69, 8,105, - 6,148,116,149,175,249,234,152,246, 49,201,199,199,103,108, 64, 64,128, 31,203,178, 76, 65, 65,193,194, 83,167, 78, 45, 40, 95, -174,123, 43,209, 85, 1,131,186,102, 91, 2, 68, 0, 48, 12, 12, 20,169,103,110, 20, 7,255, 85,117,228,121,121, 8, 33, 13,100, -206, 30,191, 18, 70, 32, 54,232,181, 48,232,180, 0, 94, 12,155,196,113,250, 36,189, 70,245,154,181,237,125,218, 14,172,175, 55, -208,104,128, 91, 75,192,140,167,224,190, 37,148, 25, 79, 25,172, 37, 28, 62,132, 80,183, 12,122,209, 12, 33, 43,156,155,118,109, -119,202,127,227,152,254,106,246,236,217, 35,120,153,237, 7, 15, 30,108,113,128,207, 58,117,234, 28,116,112,112,104,106,109,187, -162,162,162,244,180,180,180,240,151,217,247,223, 29, 66, 72,119, 0, 95, 3,104, 85,110, 85, 2,128, 41,148,210,147, 47,187,143, - 48, 66,132, 94,192, 56, 22,152, 5, 0, 90, 96,105, 6,176,254,247, 26,234,160, 81, 19,120,122,122,158, 17, 10,133,190, 69, 69, - 69, 69,249,249,249, 77,156,157,157, 19,229,114,185, 92,175,215,223,123,246,236, 89,247,170,104, 17, 66, 38,160,116,200, 43, 66, -200, 76, 74,233,218,170,172,231,225,249, 95,166, 82, 3,139, 16,210, 28, 64,104,233,212,189,125,251,246, 94, 69, 69, 69, 32,132, -100, 0, 56, 3, 32, 6, 64, 12,165,244,110, 77, 84, 72, 32, 16,124,185,106,213,170,233,147, 39, 79, 54, 13,210, 28, 27, 27,107, -185, 44,131,186,167, 15,158,244,188, 18,123, 7,237,123, 14, 70,137,129,197, 0,197, 79, 17,222,179,125,181,246, 79, 8,113,114, -115,115, 91, 72, 8, 25,194, 48, 76,165, 15, 51,142,227, 12,148,210,221, 57, 57, 57,243, 41,165, 5, 85,217,151,163, 92,170,211, - 27, 12, 22,247, 33, 20, 8, 12,133, 69, 42,171,233, 43,220,221,221,207, 51, 12,211,216,124, 32,235,210,250, 91,252,110, 62,175, -215,235, 83, 51, 51, 51, 43, 53, 62, 9, 33, 82, 70,200, 78, 33,132,237, 5,134,107, 14, 16, 16, 48,119, 57,131,230, 56,167,215, -174,162,148,218, 30,101,219,182,118, 3,159,122, 77,206,126, 60, 55,186,238,205,219, 9,136,156, 52, 28, 95,124,189, 5,115,166, -188,135, 85, 27,118, 96,202,216, 97,240,247, 47,255,156, 43,139,129,146,133,243,166,140, 8, 95,188,106,123,251,185, 83,134,203, - 23,175,218,222,126,238,212,225,142,139, 87,111, 15,158, 59,117,132,227,231,171,127, 12,254,207,212, 17,206,139, 87,111,215, 2, - 24, 83,157,122,142,104, 94,167, 8,122,189,229,183,107,161, 80,253,227,221, 39,242,234,232,190, 44, 17, 17, 17, 1, 74,165,242, -218,240, 94,237,162,219, 54,175,243,196, 82,153,172,167, 79,234, 36,222,185, 62, 91,196,202,130,222,154,189,197,242,159,168, 20, -137, 68,210, 56, 33, 33,193,151,227, 56, 24, 12, 6,232,245,122,211,167, 70,163, 65,247,238,221,107,164, 67, 12, 33,164, 31,128, -133, 40,137,255,140,162,148,238,122, 9, 45, 71,161, 80,248,177, 88, 44, 14,213,235,245,126, 0, 32, 18,137,110,171,213,234, 24, -189, 94,191,130, 82, 90, 88, 69,201,149, 79,158, 60,241,119,116,116,132, 86,171, 53, 13, 12, 47, 16, 8, 90,214,175, 95,255, 27, - 0,190,213,173,171, 17, 47, 96, 92,231,174, 93, 87,141,158, 62, 93,160, 60,115, 6,171, 54,111, 94,137,252,124, 0,248,166,178, -109, 37, 18,201, 81,134, 97, 26, 84,101,127, 28,199, 37,169,213,106,171, 47, 41,150, 16, 10,133,190,105,105,105,158, 10,133, 2, - 0, 32,151,203,229,230,243,246, 82,234,149, 90, 70, 41,149, 1, 0,195, 48,171, 58,119,238, 28, 66, 8,209, 3,160, 28,199, 49, -132,144, 97, 28,199, 9, 75,203, 47, 35,132,108,166,148,170,171,180, 35, 30,158,191, 41, 86,111,154,132,144, 67, 0, 66,219,183, -111, 47, 27, 58,116, 40, 66, 67, 67,225,235,235, 11,169, 84, 10, 0,200,202,202,242,250,243,207, 63,223, 62,115,230,204,219, 7, - 14, 28, 0, 33, 68, 9,224, 15, 74,169,197, 63,115,207,126,221, 38, 75, 29, 37,171, 1, 32, 51, 53, 43, 61,245,225,179,213,233, -233,233,203,168,217, 40,209,132,144, 38,163, 71,143,158,246,209, 71, 31,225,224,193,131,216,177, 99, 7,212,106, 53, 10, 10, 10, -112,234,212, 41,203, 21, 45,122,134,156, 83,209,128,252, 49,144,252, 59,224,224, 9,200,189,170,125, 66,220,220,220, 22, 78,153, - 50,101,170,191,191, 63, 40, 45,201, 58,174,211,233,160,215,235,161,211,233,144,147,147,131,105,211,166, 1, 40,137, 95,227, 56, - 14,135, 15, 31,158, 60,118,236, 88, 0,248,216,146,102, 72,112,253,171, 12, 97,234, 26,125, 51,212, 96, 72,189,112, 61, 37, 88, -111, 48, 8, 84, 42,173,197,145,195,165, 82,214,166,113, 39, 18,137,234,198,255,250,171, 39, 35, 22,131, 26, 12, 0,199,129,114, - 28, 0,179,137,150, 44,163, 6, 14, 84,103, 0,167,231,160, 87,170,209, 97,194,132, 74,207, 3, 33,164,179, 72, 44,219, 49,226, -131,233,222, 29, 59,117, 18, 53,172,167,128,222,192,225,193,163, 84,239,107, 87, 47,118,217,189,245,155,241,132,144, 97,148,210, -106,229,201, 18, 59, 56, 31, 91,243,237,119,117,175,252,121, 19, 39, 79,159,193,137, 83, 49, 0,128,163,167, 75,228, 24,198,118, -235, 53, 33,196,205,221, 55, 60, 96,242,123,253,229,159,127,181, 81, 50,249,189,254,194, 23,159,223, 73, 38,191,247,150,112,241, -138,239, 36,147,223,123, 75,244,217,210, 53,109, 9, 33,110,148,210, 28,107,122,214,174, 17,244,122,201,143,137, 25, 2, 0,200, - 92,183, 14,186,103,207,160,152, 63, 31, 0, 48,162,137,151,221,205, 26, 30, 30, 30, 87, 69, 34, 81,221,202,202,233,116,186, 74, -141,223,136,136,136, 64,165, 82,121, 85,175,215, 83,161, 80, 56,123,248,128, 87,247,247,238, 22,152,101, 94, 38, 54,246,134,251, -146, 37,191,246,223,117,173,128,190, 29,228,116,237,224,151, 17,193,125,103,108,177, 58, 98, 60,199,113,140, 90,173,198,189,123, -247,140,241, 21,229,177,232,249,170, 12, 66, 8, 3, 96,149,187,187,123,199,172,172,172, 17, 0, 34,243,243,243, 3, 4, 2, 1, -106,213,170, 21, 73, 8,121,224,226,226,178, 49, 47, 47,239, 60, 74,188, 68,118,165,248, 39,132,116,119,118,118,222,182,111,223, - 62,183,118,237,218, 49,153,153,153,104,220,184, 49,178,179,179, 59,156, 57,115, 38,104,204,152, 49, 99, 8, 33,163, 40,165,103, -170, 80,221, 22, 14, 14, 14,116,244,232,209,196, 96,120,113,184,155, 54,109,194,107,173,245, 77, 63,236, 45, 47, 86,105,104,222, -201,123, 46, 31,178, 44,251,199,227,199,143,243,170,116, 50, 0,176,192,172,209,211,167, 11, 28, 31, 63,134,227,141, 27, 24,145, -159, 47,252,162,196,155, 85,169,129,197, 48, 76,131,109, 59,191,247, 21,139,197,166,251,146,181,201, 96, 48, 64,171,209, 34,250, -115,139,227,165,219,133,131,131,131,131, 66,161,200,112,112,112,112,168,182,136, 25, 18,137, 68,184,117,235,214, 97, 98,177, 24, - 0,160,209,104,208,186,117,107,139,247, 63, 30,158,127, 2,182,222,221, 69, 37,160, 0, 0, 32, 0, 73, 68, 65, 84, 74, 95,207, -207,207,135,193, 96,128,147,147, 19, 4,130,178,207,123,119,119,119,244,234,213, 11,221,187,119,199,208,161, 67, 17, 31, 31, 47, - 27, 58,116,104, 47,107, 98,195,167,247, 69, 61,223, 18,195, 71,167,227,124,206,253,246,103,244,166,207,246,120, 0,152,110, 86, -108,204,184,113,227, 72, 86, 86, 22,134, 12, 25,114, 70,173, 86,191, 73, 41,205,183,166,105,224,144, 26, 62,116, 56, 56, 74,100, - 43, 46,109, 32, 26,149,146, 50, 12,163, 52, 54, 17,218,117, 6,202, 65, 8, 25,162, 80, 40,176,115,231, 78,104, 52, 21,211,125, - 57, 59, 59,227,214,173, 91,166,121,129, 64,128, 78,157, 58, 9, 8, 33, 67, 96,197,192, 34,132,169,123,238,202, 99, 79,227,124, -223, 94,173,216,144,224, 6, 25, 30,238, 78, 20, 0,153, 59,119, 46, 0,152, 30,108, 11, 23, 46,180,167,158, 96, 68, 34,100,198, -196,152,150, 49, 66, 6, 12, 75, 64, 68, 0, 35, 44,105, 45, 5, 5,168, 1,224,244, 0,167, 3,164, 62,245,236,209,238, 80,167, -190,239,193, 37,203,215,186,170,117, 20, 59,127, 57,137, 71,143, 30, 66,192, 48,104,210,212, 23,175,134,117, 19, 5,181, 15,169, -183,116,193,244, 3,132,144,215, 41,165,118, 13, 76, 93, 6,142, 74,155,214,175,141,141,155,174,193,195,205, 17, 67,250,191, 1, -153, 84,130, 47,190,254, 30,159,207,153, 4,223, 38, 13,176,126,229, 98,171,155,187,184,184, 44,106,215,166,101,147,239,119, 29, - 65,104,247,206,194, 45,187,142, 34,172,123, 23,225,247,187,142, 32, 44,180,155,112,203,174, 35, 8,235,222, 85,180,101,215, 17, -116, 10,110,211,244,124, 86,236, 34, 0,147,172, 31,115,185,107,244,106,201, 53,242, 21,178,166, 7,192,227,241,227, 1,192,100, - 96, 85, 5,145, 72, 84, 55, 45, 45,205,179,178,114,149,121, 9, 74, 61, 87, 87,245,122, 61,158, 61,123, 70,114,115,115,169,171, -171,107,255, 35,235, 35,247,189,214, 53, 48, 27, 0,110,220,184, 81, 43, 42,106, 73,255,159,174,230, 67,121,113, 13,249,241,215, - 24,110,196,155,161, 87,127,137,142, 8, 26, 60,120,240,117, 75,186,106,181,250, 81,219,182,109,105,233,247, 58, 18,137,132, 53, - 95, 79, 8, 81,248,250,250, 86,240, 82,219,209,116,184,234,194,133, 11,147,252,253,253,209,178,101,203,243, 29, 59,118,116,150, -203,229, 56,114,228, 8,252,252,252, 90, 57, 59, 59, 95,218,189,123,183,232,147, 79, 62, 9,220,188,121, 51, 0, 76,182,125,134, - 74,122, 53,133,135,135,239, 60,120,240,160,148,101, 89, 40,149, 74,220,186,117, 11,174,174,174, 16,139,197,120,235,173,183, 4, - 93,186,116,113, 15, 11, 11,251,185,244, 37,192,238, 30, 77, 42,149,138, 70, 70, 70,194,193,193, 1, 14, 14, 14,144,203,229,144, -203,229,112,148,130,172,155, 82, 95,246,209,134, 92,217,199,243,215, 69,111, 91,187,224,116,253,250,245, 63, 77, 78, 78,206,181, - 87,219,136,242,204, 25, 56,222,184, 1,152,253,119,237,197,197,161, 22,102,207,158,109,179,140, 80, 40, 4,203,178,232,220,185, -115,165,122,238,238,238,123,133, 66, 97,153, 55, 82, 74,169,116,246,236,217,134,187,119,239,202, 25,134,145,115, 28,135,217,179, -103, 27,244,122,189,212,203,203,235, 60,199,113, 25,153,153,153, 3, 43,211,166,148,170, 9, 33, 51, 25,134, 89, 37,145, 72,132, - 13, 27, 54, 76,154, 55,111,222, 5,148,120, 47, 65, 41,101, 26, 54,108,216, 65, 38,147, 53, 80,171,213,122, 0, 51,121,239, 21, -143, 13,130, 0,152,255, 86, 53, 0,196,165,223,179, 80, 18, 95, 82,187,220,114, 0,120,142,146, 23, 68, 47, 43,243, 89, 0,226, - 1,180, 0,224, 89,186,238, 10,128,236,151,173,176,209, 53,107,122,101,165,148,154, 30, 40, 78, 78, 78,184,114,229, 10, 8, 33, -112,114,114,130,179,179, 51, 92, 92, 92,144,159,159,143,248,248,120, 36, 36, 36,224,241,227,199, 32,132,160, 73,147, 38, 64,233, - 31,199, 76,203,116, 99,219,254,213, 65, 72, 29, 37, 32, 4,104,215, 35, 0, 1,221, 91,163,253,229,196, 41, 10,133, 98, 67, 90, - 90,218, 61, 66,136,176,117,235,214, 99, 58,117,234,132,229,203,151, 67,173, 86, 47,183,100, 92,153,107,158,185,165, 11, 6, 0, -133, 66, 49,227,135, 35, 15, 28, 70,246,110, 90,156,150,150,246,101, 85, 79, 66,249, 27,240,243,231,207,237, 30, 43,143,227, 56, -228,228, 84,116,140,152,107,150,247, 8,172, 88,181,198,181, 32, 47, 3,159,125,241, 3,116, 58, 29,166, 79,159, 14,142,227, 76, - 83,110,174,229,123,118,249,122, 82, 67, 57,167, 2, 83, 50, 17, 6, 32, 66,160,254, 59, 37,246, 68,242,206, 53, 32, 20, 32, 6, - 0,229,142,171,188, 38, 33, 68, 42, 96,101, 63, 45,248, 98,181,235,245,132, 84,252,114,242, 58,180,249, 79,144,126, 99, 31, 0, -160, 73,231, 97,216,165, 22,160, 99, 64, 83, 76,157,187,212,237, 63, 83, 71,253, 68, 8,105,105,222, 92,104,207, 3,141, 82, 3, - 62, 91,180, 8, 27, 86, 47,199,210,229,171,145,159,151, 11,145,168, 54, 0, 64,175, 55,192, 80,238,216, 42, 28, 59,165,189,255, - 51, 99, 28, 89,245,221,207,104,221,204, 27, 7,142,159, 71,112,171, 6, 56,124,234, 50, 58,181,105,132,163, 49,215,208, 41,160, - 49, 98, 46,222,194,244,137,163,201,185,195, 91,122,219, 58,159,229,175,209,202,149,107, 92, 11,242, 51,112,112,241, 86, 60,251, -230, 27, 36, 77,154,132, 14,165,101, 46, 19, 2,182,110, 93,128, 69, 5, 42, 59,246,219,183,111, 67,173,174,248, 12,145, 72, 36, -240,243,243,179,184,141,185,166, 82,169,188,166,215,235,105, 70, 70, 6,201,200,200,128, 92, 46, 39,183,110,221, 52,180,106,213, -122, 0, 77,216,243, 29, 0, 68, 69, 45, 25,176,235, 90, 62,138,207,175,134,242,194,215, 96, 27,197, 50, 27, 22,142,211,142,157, -191,254, 26, 94, 60,220,202,212, 51, 61, 61,253,117,227,247, 38, 77,154, 36,220,189,123,183,133,177, 73,185,180,169,144,213,235, -245,190,198,102, 67,189, 94, 15,181, 90,141,158, 61,123,154,222,188, 44, 29,187,155,155, 91, 39, 63, 63, 63, 92,191,126, 29,171, - 87,175,174, 21, 30, 30,142,251,247,239,131, 16,130, 37, 75,150, 16,127,127,127,209,243,231,207,241,218,107,175, 97,239,222,189, - 21, 44, 2, 11,191, 79, 39,185, 92,190,249,192,129, 3, 82,134, 97, 80, 80, 80, 0,142,227,208,181,107, 87, 48, 12,131,155, 55, -111, 98,238,220,185,216,187,119, 47,246,239,223, 47, 11, 10, 10,218, 76, 8,241, 51,111,190,183,113,141,168, 74,165,162, 18,137, - 4, 18,137, 4, 82,169, 20, 82,169, 20, 98,177, 24,133, 42, 96,236,138, 36,181, 64, 90,155,107,213,182,107,211,119, 63, 90,194, -124, 57,239,189, 83, 0,126,169, 68,179, 12, 90, 96,233,170,239,191, 95, 61, 34, 47,143, 1,128,141,132,112, 90, 74,151, 90,172, -140, 5,205, 2, 85, 46, 26, 52,173,139,159,119,238,199,160,161,253, 43,108, 35, 20, 10, 33, 18,177, 96, 69, 34, 56,213,170,232, -120, 42,175,201,178,172, 87, 66, 66,130,187, 72, 36, 50,121,228,117, 58, 93,198,188,121,243, 60,250,244,233,227,116,248,240, 97, -166, 79,159, 62, 92,237,218,181,139,174, 95,191,254, 76,171,213,186,119,233,210,165,210,122,154,173, 91,219,182,109,219,118,251, -246,237,123,111,246,236,217, 87,103,204,152,241,153,249,250,101,203,150, 45, 58,116,232, 80,131, 1, 3, 6,108,251,243,207, 63, -215,154,109, 87,227,221,252,121,205,191,191,166, 53, 91,164, 20, 47, 66,200, 65,179,245,125,141,243,179,103,207,142,140,138,138, -186, 69, 8, 57,104,190,220, 88,174, 84,251,160,165,249,210,109,107,205,153, 51,167,117,116,116,244,146,144,144,144,157,231,207, -159,127,136,154, 50,176,140, 7, 98,126,112,230, 80, 74,145,159,159,143,252,252,124,164,164,164, 96,221,186,117,165,127,100, 17, -132, 66, 33,132, 66,161, 41, 94,193, 26, 39, 14,156,253, 26,192,215, 65, 65, 65,162,184, 11,187, 15,207,218,240,209, 43,193, 61, -219, 9,174,157,140, 27, 12,224,115, 0,175,143, 30, 61,186, 54, 0,108,221,186,245, 57,128,195, 47,123,112,213,129, 82,186,251, -222,189,123, 83,125,124,124, 76, 49, 40,230,205,132,122,189, 30, 82,169, 20,198, 88, 21,149, 74,133,117,235,214,233, 41,165,187, -109,104,226,238,173, 83,184,119,235,116,201,118, 28, 7,206,240, 98,251, 5, 11, 22,152,119,125,197,248, 82, 79, 73,101,112,150, -206, 57, 45,247, 89,110,121, 5,163,172, 28, 12,195,126, 52,120,212, 36, 31,142, 8,241,235,169, 63, 33, 18,137,192,153,121, 47, - 69,130,146,183,227, 91,247,211,160,240,106,133, 55,135,141,243,222,183,109,205, 71, 0,190,176,171,210,102,180, 12, 12,193,148, -169, 83,241,221,134, 13,152, 59,127,145,201, 58,215, 27, 12,208, 87, 90, 79,134,233, 18,236,143,194,172, 84, 8, 4, 2,116,110, -219, 20, 2,129, 0,221,130,155, 67, 32, 16,160,107,251, 22, 16, 10,133, 8,235,228,143,102,205,154, 65, 40, 20,218,108,115, 44, -185, 70, 39,113,239,214,239,102,198,110,201, 53,209,166,167, 87, 40,175, 75, 79, 7,173,239, 94,165,227,165,148, 98,204,152, 49, -185, 41, 41, 41,218,242,235,234,213,171,199,158, 57,115,198,213, 74,243,156, 9,153, 76, 22, 36, 20, 10,175,101,103,103,115, 14, - 14, 14, 12,199, 25,184, 86,173, 90, 11,142,172,143,220,103, 44, 51,103, 78,228,190,183,131,156, 7,252,176,251, 32,101, 27,118, - 37, 68, 36,209,127, 48,127, 61, 43, 98,101,118,101,168, 55, 54, 23,222,185,115,199, 90,115,161,249, 49,217,108,226,201,201,201, - 25,237,231,231,119,230,235,175,191,174, 69, 8,193,217,179,103, 33, 16, 8, 76, 83, 98, 98, 34, 24,134,193,172, 89,179,180,249, -249,249,239, 87, 86, 55,161, 80, 56,245,231,159,127,118, 17,139,197, 40, 40, 40, 48,253,111, 4, 2, 1, 18, 18, 18,240,229,151, - 95, 98,244,232,209, 72, 78, 78,134, 66,161,192,244,233,211, 29,163,163,163,167, 2, 88,100,199,161,199,106, 52,154, 96, 7, 7, - 7, 72,165, 82, 24, 13, 45, 0, 56,118, 75,116,179,184,184,184, 77,237,218,181,189, 61, 98, 14,254,218, 57,252,205, 64,119, 15, -159, 16,148, 26, 88,246,242, 0,216,240, 80,175,255,207,235,251,246,121,158,219,183,143,187,240,235,175,169,210,194,194,245,118, - 11,232, 4, 72,122,144,138,160,160, 32, 92,187,118, 13, 65, 65, 47, 46, 41,203,178, 16,139,197, 96, 89, 22, 44,203,162,182,171, - 93,161, 18,148, 97, 24,156, 59, 87,118,184,209,110,221,186,101,159, 62,125,218, 17, 0,146,146,146,104,223,190,125,115,227,227, -227,225,235,107, 59, 12,205,219,219,251,140, 64, 32,104,104,190,140, 97, 24,183,129, 3, 7, 34, 39, 39,231,141,129, 3, 7,118, - 45, 93,246,100,207,158, 61, 35, 1, 64, 44, 22,131, 97,152,106, 53, 65,243,252,179,168,204, 22, 41, 45,211,183,252, 60, 33,228, - 96, 84, 84, 84,223,242,203,204,141, 41, 75,223,205,183,141,142,142, 94, 98,166,173,172,137,227, 49, 53, 17, 18, 66,104,101, 55, - 75, 91, 84,102, 96, 25,185,118,237,154,174, 78,157, 58,223,221,251,243,241, 43, 77, 3,154, 64, 38,151,188, 74, 8,249, 90, 34, -145, 76, 27, 53,106, 20, 46, 94,188,136,155, 55,111,110,162, 47,217,171,166, 77,155, 54, 71, 37, 18, 73, 3, 75,235,212,106,117, - 82, 92, 92,156,197, 88,177,156,156,156,249,165, 49,101, 86,131,220,205,227,193,204,131,220,173,213,133,114, 20, 58,173, 14, 69, -197,202, 23, 15,239, 82, 3,171,168,168, 8,239,188,243, 78, 25, 15,214,179,103,207, 42, 61, 62, 66, 8,190,252,229, 23, 28,223, -189, 27,111, 4, 6, 98,239,229,203,136, 30, 53, 28, 45, 27,212, 1, 53, 16, 80, 2, 36,239, 88,131,172,252, 66,108, 63,121, 14, -217, 5,197, 24,209,173, 27,124,157,107,219,214, 21,177,189, 58,116, 10, 97, 79,156,143,135, 72, 36, 4, 3, 14, 84, 87, 12,133, - 95, 24, 4, 12, 3, 23,175, 70, 96, 69, 34,136, 68, 66, 36,166, 60,135, 95,235,246,226,131, 98,105, 47, 84,195,192,170,223,160, - 49, 56,131, 1,163, 71,143,198,206,157, 59,225,238,221, 0, 46,245, 90,227,243,229, 27,240, 70,207,110,149, 30, 63, 0,147,129, - 47, 16, 8, 42,124, 26,191,219,227,141,164, 28,133,182,252, 53,226, 40, 40,128,186,139, 23,163,238,226,197,184, 92,186, 79,255, -162, 34, 40,149, 74,160,163,237, 32,252, 50,250,148, 66,163,209, 32, 37, 37, 69,155,158,158, 94,225,201,231,237,237,157,161,209, -104, 42, 53,104,182,108,217, 18, 27, 17, 17, 17, 92,171, 86,173,171,177, 55,110,232, 2, 2, 3, 69,135,215, 69,238, 55, 54, 15, - 2, 64, 96, 96, 96,118,100,100,228,254,145, 67,250,246, 95, 59,123,168, 97,194,162,109, 66,137, 76, 22,220,119,134,237, 64,119, - 35,106,181,250, 81, 64, 64,128,237,138,148, 82, 92, 92,252,212,218, 58, 99, 64,123,187,118,237,156,195,195,195,113,230,204, 25, - 12, 26, 52, 72,173,213,106,239, 1, 64,159, 62,125,154,111,223,190, 93, 28, 31, 31, 15, 15, 15, 15, 81, 82, 82,210,102, 66,136, -205,192,119,177, 88, 28,214,190,125,123, 70,173, 86, 87, 48,174,162,163,163, 49,108,216, 48, 52,111,222, 28, 28,199,161,176,176, - 16,225,225,225,162,213,171, 87,135,193, 62, 3,107, 74,203,150, 45,191, 68, 73, 47, 66,243,123,225,109, 0, 51, 1,224,249,243, -231, 79,251, 14, 26,125,171, 91,207,129,193, 13,155,181,246,169, 76,208,203,203,107, 14,195, 48,111,115, 28, 39,200,207,207, 79, -209, 16,210,204,191, 97, 67,175, 46,253,251, 35, 79, 36, 18,172, 58,121,146,201, 40, 44,116, 4, 96, 87, 83,163, 82, 87,136, 6, - 77, 75, 66,249, 6, 13,237,143,107,215,174, 97,240,176, 1, 96, 89, 22, 66,161,168,228,191,201,150,120,176, 92,107, 59,217, 35, - 9,157,174,236,144,160,198,243,234,236,236, 12,160,164, 37,195,184, 76,167,211,217,124,248, 1,240,221,181,104,158,167,204,217, - 5, 6,157, 14,173,250, 15, 54,253,166, 47,109, 92, 43, 3,199,201,114,147, 30, 97,242,238, 3, 53, 58,254, 44,207, 63,135,202, -108, 17,115, 3,169, 6,246,117,112,246,236,217,145, 0,232,236,217,179, 35,141,243, 81, 81, 81, 74, 0, 22, 59, 15, 85, 5, 83, - 19,225,203, 24, 87, 0, 42, 52,233,148,167, 71,143, 30,147,157,156,156, 86, 3, 64,112,112, 48, 82, 46, 62, 65,202,197, 39,240, -107,209,170, 75,187,192,224,188, 97,195,134,193,221,221, 29, 51,102,204,160, 0, 54, 85,117,255,137,119,111, 57, 2,160, 10,133, - 98, 6, 0, 40, 20,138,192,203,151, 47,123, 92,185,114, 5,237,219,191,232, 81,168,213,106,209,181,107, 87,171, 58,165, 77, 9, - 31,195, 74, 60, 85,117,160,148,131, 86,171, 69,113,177, 18, 26,141, 22,122, 29, 7,189, 94,143,160, 86, 78,216,182, 97,118,201, - 50,189,209, 91, 86,226, 37,171,235,237,132,160, 54,222, 58,134, 33,202, 43, 55,210,157, 45,233,106, 52, 26,196, 38, 37,225,198, -227,199, 0,128, 55,163, 44,182, 52,152,216,118,242, 12,252,253,253, 43,171,109,211,186, 10,111,164, 29,143, 45,185,105, 43, 83, -112,229,143, 93,112,114,114, 4, 0,180, 10, 29, 1,150, 45, 49,176,138,148, 90,212,110, 81, 15,132, 82,171,221,251,229,181,124, -142, 10, 89,105, 3,106,224, 64, 41, 7,202, 25, 64, 41, 7,137,147,187,195,164, 15,223, 5,199, 25,208,161, 67, 7, 16,129, 0, - 6,157, 26, 67,250,245, 66, 78, 94, 1,220, 93, 45, 30,114, 5, 88,150, 69,104,104,168,204,218,250,251,247,239, 43,129,138, 61, - 42, 43, 28, 53,229, 74, 12,172, 34, 37,212,106, 53,180, 26, 61,180, 58, 61,184,198, 44, 62,251,207,112,232,181,122, 20, 15, 13, - 41, 89, 54,117, 0,180, 26, 29,146, 29, 24, 38,208,223, 67,199,128, 40,175,199, 63,179, 89, 97, 74, 41,140, 70,129, 53, 44,197, -252, 89, 98,203,150, 45, 55, 34, 34, 34,130, 2, 2, 3,175,189,221, 51,240,171,184,155,183,210,226,110,222,170, 80,174, 65,243, -192, 71, 19,162,119, 78, 23,177,178, 32,123,141, 43,160,108,115,225, 75, 18, 89, 80, 80, 16,224,232,232,136,187,119,239, 66, 32, - 16,128, 16,114,159, 82, 26, 0, 0,227,198,141,123, 32, 20, 10,155, 8, 4, 2,124,243,205, 55, 68, 40, 20,182, 9, 9, 9,137, - 4, 96,213,192,210,235,245,126, 78, 78, 78,101,188, 87, 44,203, 98,246,236,217, 24, 57,114,164,201,184, 98, 89, 22, 91,182,108, - 65,112,112, 48, 52, 26,141,229,182,215,114,208,146, 65,226,109, 91,246, 0, 56,142, 43,105,102,229, 42,177,134, 75,234, 27,145, -245,246,219,205, 16, 19,131, 46, 77,154,248, 7, 5, 5, 65,171,125,225,192,108,220,184,113,189,130,130,130,167,132,144, 31, 1, -172,165,148,254,105, 83, 79, 69,145,244,160, 36,188,244,218,181,107,232,208,161,131,201, 99,101,238,189, 98, 89, 22, 50,214,177, -178,234, 1, 40,107, 96, 81, 74, 81, 84, 84,196, 28, 57,114,164,182,159,159, 31, 1, 0,127,127,127,114,241,226,197, 90, 50,153, -236,185, 66,161,168,244,197, 87,230,236,130, 45, 17,239, 0, 0, 62,237, 89,210, 50, 79, 8,193,145,133,145, 16,137, 68,120,101, - 70,100,153,242, 26,141, 6, 28,199,189, 84,250, 17,158,127, 6,246,216, 34, 53,101, 92, 25,181,140, 30,172,168,168,168, 91, 81, - 81, 81, 21,188, 97, 47, 67, 25, 15, 86,233, 14,171,101,104,149,127, 11, 42,207,242,229,203,209,166, 77, 27,171,235, 41,165, 88, -189,122, 53,126,248,225,135,229,148,210,196,170,238,191,239, 43,237, 90, 97,197,190, 91, 77,154,183, 34, 0,176,104,106, 63,166, -168,168, 8,231,206,157,131,139,139, 11,238,223,183, 47,109, 23, 33,196,201,197,197,101, 33,195, 48, 67, 4,229, 35,251, 45, 96, - 48, 24, 12, 28,199,237,206,203,203,179,154,166,129, 82, 64,171,211,163,168, 88, 5,141, 70,131,169,179,214, 84, 90,143, 40,128, -104, 53, 5,194,208,238, 33, 22,141, 7, 66, 8, 58,180, 14,197,196,145,242, 10, 15,109, 65, 73, 42, 48,180,237, 80, 50,182,244, -245, 75, 55, 65, 41, 96, 48, 0,181, 61,107, 97,211,206,175,108,237,154,232, 13, 92,233,219,176, 1,133,106, 3,252, 58,245, 69, -234,237, 24, 0, 37, 30, 35, 49, 91,210, 52,204,138, 68,224, 40, 41,201,222, 96, 5, 86, 44,107,144,147,158,232,187,225, 96, 28, -198,246,109,131, 61, 39, 98, 49,184,103, 0, 78, 95,138, 71,120, 71,127,220,186,247, 24,173,124, 27,226,155,205,187, 65, 41, 10, -190, 93,241,185,201, 35,194,113,250, 36,171,149, 52,243, 96, 93,188,120, 81, 89,222,107,101,254, 89,153, 87, 8, 40,249,253, 25, - 61, 88, 74,149, 26, 51,230,216,149,142,167,228, 26,117,235,100,213,192, 51,199,150,135,202, 30, 3,204,156, 45, 91,182,196,162, -146, 52, 43,141, 1, 4, 3,159,216, 37,248, 23, 97, 48, 24,240,219,111,191,153,174, 71,121, 8, 33,101, 60,142,149,193,113, 28, -146,146,146,112,243,230, 77,132,132,132, 32, 47, 47, 15, 34,134,193,244,184, 56,248,143, 26, 5, 13,203,130,227, 56,136,197, 98, -140, 27, 55,206,238,243, 89, 37, 74,239,145,148, 26,108,138, 19, 66,190,234,219,183,111,179,187, 69, 69,184,149,144,128,158, 11, - 22, 0, 0,126,251,237, 55, 83, 25,141, 70,131,105,211,166,137,227,227,227,199, 92,189,122,117, 12, 33,100, 57,165,116,186, 21, - 73,104,169,202, 20,131,245,246,136, 65,104,230,215, 24, 63,108,222, 97, 90, 63,109,214, 20,136, 68, 44, 68, 34, 17, 92, 93, 93, -237, 58, 26,243,123,119,113,113, 49,179,103,207,158,186, 97, 97, 97,236,216,177, 99, 9, 0,108,216,176,129,217,184,113,163,252, -216,177, 99,172,139,139, 75,197,246,242,114,232,181,101, 91,192, 9, 33, 32,132, 64, 36, 18,129, 21,179, 0,199,129, 16, 34, 95, -182,108,217,162, 91,183,110,181,111,217,178, 37,212,106,245, 40, 66,200,117,202,231,193,250,215, 83,153, 45, 98, 41,150,170,212, - 11,101,141, 76,243,184, 44,107, 6,154,121, 76, 22,128, 26,233,108, 81, 38, 6,203, 18, 2,129,160, 82,239, 20,195, 48,149, 54, - 17, 78,155, 54, 13, 78, 78,150, 93,214, 26,141,134,198,197,197,197,167,167,167,111,160,148, 86,110,125, 88,224,224,201,235,183, - 22,126, 60,160, 0,165,109,167,174,174,174,207,123,244,232, 81, 8, 64,187,107, 87,217, 23, 98,181, 90,157,100, 77,199,197,197, -101,225,198,141, 27, 63,234,223,191, 63, 83, 62, 85,128,121, 51,158,113,210,233,116,216,181,107,215, 71,159,124,242, 9, 96,197, -235,101,124,120, 23, 23, 41,161, 44, 13,112,126,112,115,143,125, 7,102,227, 1,225,232,166, 64,221, 38, 6,171, 15, 17,134, 45, -137, 17,242,110, 16,104, 90,230,228, 36,133,193,134, 38, 33, 76,226,227,228,180, 58,245,188,107,225, 65, 74, 38,188, 26,182, 65, -206,147, 23,231, 65, 40, 20, 64, 84,218, 68,232,234, 44, 71,230,179,103, 96, 24,129, 77,131,248,243,237,215,113,233,230, 99,252, -124,226, 79,104, 85, 69, 88,177,245, 8,180,234, 66,104, 85, 69,208,170, 74, 62,151,124,242, 1, 8,193, 83,173,170,176,185, 45, -173,242, 8,133, 66,116,236,216,209,170,129,243,228,201, 19, 59, 61, 88,212,228,193, 82,170,170,120,141,236,192,216, 68, 88,217, -250,234, 26, 4,198,212, 13, 50,153, 44,120,203, 22,235,233, 24, 44,225,227,227,115,216,209,209,177,145,189,229,171,144,116,116, -137,171,171,235,194,150, 45, 91,250,173, 88,177, 66, 36, 16, 8,240,202, 43,175, 52,255,224,131, 15,146, 0,160, 77,155, 54, 10, -160,228, 30, 51, 97,194, 4,122,241,226,197,155, 0,162,108, 9,138,197,226, 4, 23, 23,151,224, 30, 61,122, 32, 47, 47, 15, 41, - 41, 41,144,203,229,240,255,234, 43,196, 77,152,128,192,117,235,192,244,232, 1, 66, 8,196, 98, 49,226,226,226, 32,147,201, 18, -172,233, 17, 66, 58, 2, 88, 10,160, 11, 94, 52, 11, 82, 0,231, 0,204,162,148, 94, 42,191,141,241,198, 96,224,184,202, 46,214, -240, 25, 51,102, 32, 87, 36, 2,250,244, 1,155,152, 8,173, 86,139,144,144, 16, 4, 7,151,100,226, 8, 9, 9,129, 80, 40, 68, - 64, 64, 0, 20, 10, 5,190,249,230,155,225, 40,219,179,186, 12,234, 66, 29,146, 30,164, 34, 36, 36,196,228,169,234,211,167,143, -201,131, 37, 18,137, 76,158, 44, 98, 57,197, 94,249,227, 47, 99, 96,233,116, 58,194,178,172,240,195, 15, 63, 36,239,191,255, 62, -213,233,116, 28,203,178,204,119,223,125, 71, 46, 94,188, 40, 84, 42,149,149,190,128,183, 30, 48, 4,159,246, 42,113,130,126,222, -200, 3, 34, 86, 4, 49,203, 98, 70, 66,170,233,186, 56,111,217, 41,142,142,142, 30,220,178,101,203,146,230,118, 64,200,231,193, -226,169,196,193,147, 89,206, 56,210,152,205,103, 2, 32,165,243,153,165, 90,198,239, 87, 0,180, 47, 87,214,184, 94, 83,238,211, -184,190, 74,247, 80,107,216,122, 3,190,119,225,194, 5,223,160,160, 32, 36, 39, 39, 87,232,217,102,124, 96,201,229,114,200,100, - 50,156, 63,127, 30, 0,238, 89, 19, 59,117,234,212,215, 40,201,146, 12, 0, 80, 40, 20, 33,225,111,135,157,239,208,187, 61,182, - 71,237,200, 75, 79, 79, 15,160,165, 57,112, 8, 33, 68,161, 80,140, 20,137,133,239, 52,105, 93, 63, 20, 28,183,244,196,175,127, - 44,176,117, 32, 77,154,183, 42, 4,160, 52,235, 69, 88,229,222,132, 0,192, 48,204,144,254,253,251, 51,241,241,241,120,231,157, -119,240,195, 15, 63, 88, 45, 59,114,228, 72,236,220,185, 19,253,251,247,103,230,204,153, 99, 53, 77, 67, 89,239,136,125,205, 64, -246,112,247,222, 13,108,219,241,157,213, 24, 35, 79, 79, 15, 0,192,179,103,153,166,101,193,193,182, 19, 49,115,122,205,241,235, - 87, 47,135,116,238,254, 10,155,146,145, 11, 78,175,134,170,224,185,105,125,113,110, 6,168, 94, 5,214,161, 22,188,107,187,224, -218,133, 99, 26,173, 70,117,220,150,230, 71,253, 91, 97, 66, 63, 63,128,114, 24, 48,125, 19, 14,174,153,108,106,222,233, 58,104, - 10, 78,238, 90,101,119, 12, 95,121, 68, 34, 17,226,226,226,148,214,188, 87, 2,129,160,210,156, 90,128,209,203,168, 67,113,177, - 18,197,202,106,231, 79,173, 0, 33,196,195,203,203,235,219, 90,181,106, 73, 45, 25, 80,132, 16, 15, 15, 15,143,111,221,221,221, -165,246, 54, 17,150,167, 92, 94,172,171, 17, 17, 17, 85, 50,178, 36, 18, 73,163,123,247,238,153,146,140,218,250,212,104, 52, 8, - 15, 15,183, 43,233, 40,165,244, 0, 33,228,161,143,143,207, 57,127,127,127,151, 7, 15, 30, 96,199,142, 29,172, 72, 36,170,111, -188,127, 20, 20, 20, 64, 32, 16,224,217,179,103, 58, 0,239, 85,214, 68,166, 86,171, 99, 98, 98, 98,218,246,235,215, 79,144,144, -144, 0,129, 64, 80, 82,175,144, 16, 4,174, 91,135,155, 31,127,140,208,199,143,161,210,106, 33,149, 74,113,244,232, 81,109,113, -113,113,140, 53, 61,153, 76,182,225,209,163, 71,173,164, 82, 41,180, 90, 45, 56,142, 3,195, 48, 68, 40, 20,118,117,117,117, 93, - 13,160, 76,198, 98, 79, 79, 79,207,113,211,190,104, 97,208,235, 13,233,201, 15, 50,173,200,154,200,202,202,194,129, 3, 7,208, -169, 83, 39,132,134,134,226,201,147, 39, 72, 76, 76, 68,159, 62,125, 76,101,110,220,184,129,235,215,175,163,105, 83,171, 45,237, - 38, 56,129, 14, 77, 91, 54, 2, 43, 98, 33, 98, 69, 37,159, 34, 81,233, 84,242,221,184,204,152,179,176, 18,104,249,214, 7, 71, -199,146,166, 69,137, 68,194, 53,106,212, 40, 61, 61, 61,221, 7,128,192,152,128,213,158,151, 21,160,228, 25, 97, 52,174, 88, 49, -107,242,100, 1, 64,110,110,174,170,127,255,254, 63,170,213,234,119, 81,141, 17, 69,120,254,149, 92,249,127,218,182,218,216,250, - 97,191,209,185,115,231,117,195,134, 13,123,101,229,202,149,112,116,116, 68,122,122,186,233, 65, 40, 22,139, 81,175, 94, 61,100, -103,103, 99,253,250,245, 72, 77, 77, 61, 5, 96,156,189, 59, 78, 79, 79,191,120,255,207,123, 89,225,131, 59,187,183,234,220,194, - 53,229, 94,106, 39, 0,231, 75,141,171, 77,195,166,189,241,110,248,192, 14, 96,197, 34,164,220,183, 26, 71, 91,227, 8, 4, 2, - 1, 33, 4,239,188,243,142, 93,229,135, 14, 29,138,152,152, 24,216,106, 78,228,140, 30,172, 98, 21,138,148, 53,247,114, 54,241, -163,145,152,248,209, 72,147, 17, 97, 79, 19, 11, 0, 40, 20, 63, 89, 93,199,233,181, 43, 15,254,180,126,108,187, 14, 33, 13,130, - 91, 53,194,165,171,127, 98,251,186, 23, 78,133,205, 95, 47,194, 23,155, 79,161,158,151, 27,180,234, 34, 28,222,243,221, 83,173, -186,120,165,173,253, 85,230,148, 97, 8,129,157,249, 37, 95,108, 83,106, 52,137, 68, 34,180,110,221,218,170, 7, 43, 59, 59, 91, - 89,217, 3, 1, 40,189, 70, 26, 29, 10,139,148, 80, 22,215,140,129, 69, 8, 9,236,218,181,235,241,221,187,119,187,123,122,122, - 34, 45, 45,173,140,129, 69, 8, 9,236,210,165,203,241,221,187,119,187,123,121,121, 33, 37, 37,197,238,244, 32, 70,204,140, 43, -100,102,102,146,156,156, 28,206,205,205,173, 74, 70, 22,195, 48, 80,171,213,184,125,251,182,189,187,181,187,199,151,139,139,203, -150,157, 59,119,186, 60,127,254, 28, 2,129, 0,183,111,223, 46,211,139,208, 56,109,218,180,137, 29, 48, 96,192, 70, 0,109,109, -233,233,245,250,229, 35, 71,142, 28,243,228,201, 19, 55, 79, 79, 79,164,167,167, 67, 44, 22,131, 82, 10, 18, 30,142,110, 15, 31, - 66,107, 48, 64, 38,147,225,238,221,187,216,176, 97, 67,145, 90,173, 94,110, 73,139, 16, 34,118,112,112,240,101, 89, 22, 35, 70, -140, 40,179,110,235,214,173,120, 51, 88, 16, 60,182,151,164, 80, 15,169, 58, 67,246,250, 97,129, 64, 64,198,205, 88,218,188, 99, -247, 62,173,239,220,188,244, 32, 51, 35,245,156, 37, 93, 51,116, 26,141, 6, 45, 91,182,196,149, 43, 87,112,226,196, 9,244,232, -209, 3,161,161,161,136,141,141,197,177, 99,199,112,253,250,117, 16, 66,224,238,238,110, 12,179,176, 25,107,161, 41,210,227,217, -147,172, 10,222,170,242,243, 44,203, 66, 45,174,208, 89,213, 34, 9, 9, 9,184,114,165,228,249, 83, 92, 92, 12,161, 80,168,159, - 49, 99, 6, 24,134,161, 55,111,222,132,167,167, 39,157, 53,107,150, 65, 40, 20,234,147,147,147,237,210, 52, 26, 83, 70,227, 74, -200,138,202, 24,102, 28,199, 21,220,184,113, 99, 44, 33, 36,150, 16, 98,204,134,202,231,193,226,249, 71, 97,213,192,162,148, 62, - 4,208,147, 16, 50,124,255,254,253,203, 87,175, 94,237,209,183,111, 95,228,228,228,160, 65,131, 6,240,241,241,193,193,131, 7, -113,232,208,161,231, 6,131, 97, 58,165,180,130,171,135, 16,210,211, 90,174, 12, 74, 41, 85, 40, 20,187,213,133,133, 19,130, 66, -253,112,106,215,217, 40, 31, 31,159,113,117,234,212,153, 26, 17,249,214,187, 97,253,219,227,238,245, 71,184,120, 44, 14, 25,201, -207, 17,209,109,150, 77,205,242, 65,238,174,174,174, 99, 28, 28, 28,196, 0, 42,220,101,202,247, 34, 52,215, 52, 24, 12, 6,141, - 70,131,159,126,250,201, 46, 35,107,199,142, 29, 80,169, 84, 48,148,107, 71, 53,215,164, 28, 37, 66,145, 4,138,122, 45,161,213, - 22,129,227,170,231,173, 49,215, 36,132,128, 97, 24, 60, 16,139,225,249,252, 57, 46, 93,170,208,146, 97, 17,243, 55,231,242,154, - 0, 64, 41, 85, 17, 66, 70,172, 90, 60,227,224,164,217, 75, 93,123,116,110,139, 79,191,218, 10,173,118, 51, 24, 1, 3,153,132, - 69, 80,135, 46, 16, 64,141,111,163,103,230, 22,231,231,140,160,229,134,204,169,160,105,171, 37,133, 2, 6,142,195,137, 51,182, -115,149, 90,186,238, 6,131, 1, 66,161, 16,247,239,223, 87, 90,234, 61, 40, 16,148, 52,103, 50, 12, 99,241,173,187,236, 53,226, -136,136,149,162, 94, 3,127,104,212,133, 53,114,141, 60, 61, 61,103,238,219,183,207,221,152,242, 32, 54, 54, 22,132, 16,147, 21, - 99, 92,175, 84, 42,113,243,230, 77,227,144, 80, 21,172, 28, 91,255, 35,163,231, 42, 51, 51,147,164,167,167,195,193,193,129,137, -141,141, 85, 7, 4, 4, 92,133,237,145, 26, 76,154, 42,149,234,177,181,248, 72,149, 74, 85, 71, 42,149,138,202,109,171,240,245, -245,189, 91,190,169,208, 82, 61,243,242,242, 46,125,242,201, 39, 65,189,123,247,198,204,153, 51,179,221,220,220,156,190,253,246, - 91,161, 64, 32, 32,147, 38, 77, 50, 60,123,246,172,240,187,239,190,115,217,191,127, 63,114,115,115, 43,140, 10, 96,225,247, 89, - 64, 8, 25,219,185,115,231,173, 71,142, 28,113,240,245,245, 69,126,126, 62, 40,165,216,178,101, 11, 38, 77,154, 4,169, 84,138, -187,119,239,226,205, 55,223, 44, 46, 46, 46, 30, 91, 62, 54,210, 76,147, 16, 66, 40,199,113,152, 55,111,158, 41,169,168, 49,201, -168,147,140, 96,195,180,198,242, 41,223,229,201,135,127,250,221, 40, 0, 48,232,245,134, 59, 55, 47, 61,216,178,230,211,211, 44, -203,158,177, 86,207, 82,230, 78,153, 50,229,219, 62,125,250,200, 28, 29, 29,145,157,157,141,115,231,206,225,194,133, 11,184,120, -241, 34, 52, 26, 13,220,221,221,225,230,230,134,244,244,116, 36, 36, 36, 40, 1,204,181,165, 41,150,139,208,164,133,177, 39,239, - 11,239,149,105,158, 21, 65, 36,124,209,147,176,178,243, 9, 0,221,187,119, 71,199,142, 29, 1,148,244,138, 78, 74, 74, 74, 87, -171,213,196,204,216,127, 2,148, 24,226,245,235,215,215,111,218,180,137,218,210,188,184,225, 27, 28,249,108, 46,196, 44,139,233, -183, 83, 76,198,214,214, 30,237, 32, 18,179,240,235, 55,200,180, 45,165,116, 45, 33,100,115,233,119,181, 53,205,154,128,215,252, -251,107,254,211,168,212, 53, 75, 41,221, 78, 8, 57,252,193, 7, 31, 68, 7, 6, 6,126,176, 98,197, 10,194,178, 44, 22, 44, 88, - 64,211,210,210,190, 71,201, 91,135,213, 33, 72, 42,209,254,254,247,189,231,199,143,158,221,159, 76, 91, 25,209,245,234,201,155, - 9,109, 58,251,162, 77,103, 95, 92, 61, 21,143, 53,145, 59,126, 48,232, 12,243,210,211,211, 43,123,109, 82,247,236,210,162,124, -144,187,123,204,233,147,238, 85,237, 69,200,113,220,238, 29, 59,118,124, 52,112,224, 64,230,242,229,203, 21, 98,174,104,105, 50, - 62,142,227,112,252,248,113,104,181, 90,124,255,253,247, 28,199,113,214,243, 96,129,254,178,106,101,244,232,239,183,253, 34, 22, -179, 4, 23,206,252,140,188, 28,219, 94, 57,150, 21, 97,211,150,189, 90,150, 21,221,177,180, 94,171,213,166,156, 60,121,210,235, - 53,131, 65,196, 48, 76, 5,195,201, 26,187,119,239,214,113, 28,151,100,171, 12,165,244, 60, 33,162,126,159,207,124,111, 71,159, -183, 63,240,234,220,185,171,168,182,167, 23, 8, 33,120,150,241, 12,119,111, 94,214, 29,254,121, 99, 70, 81,113,129, 93, 67,229, -188,247,229,239,166,152, 43, 0,232, 59,105,181, 41,254, 10, 0,250, 69,124,130,240, 78,173, 64,236,113, 53,149, 98, 48, 24, 56, -189, 94, 15,185, 92, 14,189, 94,111, 49, 85,131,139,139,139, 76,165, 82, 41, 41,165, 48, 24, 12, 54, 93, 67, 20,168,241,107,100, - 48, 24,252,114,114,114, 80, 84, 84,132, 11, 23, 46,208,197,139, 23,103,102,102,102,154,130, 49,117, 58,157, 95,118,118, 54, 10, - 11, 11,113,254,252,121, 26, 29, 29,157,153,149,149,101, 43, 88,179, 2, 50,153, 44, 88, 40, 20, 94,205,201,201,225, 28, 28, 28, - 24,157, 78,167, 11, 8, 8,144,200,100, 50,187, 7, 58, 79, 75, 75,171,144,132,213, 72,211,166, 77,239,221,187,119,175,153,193, - 96, 48, 31,163,144, 85,169, 84,190,157, 59,119,182,167,105,103,202,230,205,155,177,119,239,222, 14,249,249,249, 35,147,146,146, -182, 2,232, 32, 20, 10,241,231,159,127,222, 86,169, 84,195, 6, 14, 28,184, 37, 39, 39,231, 18,128, 41,246,212,151, 82,122,132, - 16, 50,194,207,207,111,243,194,133, 11, 29, 67, 67, 67,133, 10,133, 2,237,219,183,199,221,187,119,241,219,111,191,233,214,174, - 93, 91, 84, 92, 92,252, 30,165,212, 86,243, 53, 5, 64,244,122, 61,196, 98,177,105,146, 72, 36, 96, 89, 22, 5, 74,138,247,191, - 74, 84,234, 33, 83, 46, 95, 48,246, 55, 10,144,167, 41,137,207,159, 61, 77,185, 68, 8, 57,147,150,150,102,113,168,156,166, 77, -155,138, 85, 42, 85, 91, 31, 31, 31, 33, 33,100,165, 86,171,125,119,242,228,201,222, 75,150, 44, 65,139, 22, 45,240,252,249,115, -200,229,114,248,250,250, 34, 51, 51, 19,151, 47, 95, 54, 20, 23, 23,175, 3,176,136, 82,106,179,217, 49, 55, 51, 31,117,189,234, -151,241,116, 82, 74, 65,245,128,206, 96,128, 65, 75,161, 33, 58,136, 68, 58,176,172,133, 76,184,229, 48, 26,152, 57, 62, 62,120, -114,244, 40, 74, 71,149,176,234, 69, 59,120,240,160,181, 85, 47,160, 28,196, 18,113,153,102, 65, 66, 8, 88,177, 24, 34, 49, 91, -161, 71, 12,239,181,226,249,167, 98,111, 44, 69, 46,128,113,132,144,173, 97, 97, 97, 7, 41,165, 34, 0,125, 40,165,103, 95,102, -231,233,233,233,215, 20, 10,197, 28,175,186,110,209,175,143,236,138, 22,109, 27,192,160, 55,224,220,161, 63,241,253,146,253, 59, -159,164, 60,137,160,118,180, 29,113, 28,119,186, 75,112, 11, 6,102,185,181, 21, 10, 5, 87,157, 94,132,121,121,121,243,167, 79, -159,142,153, 51,103, 86,185, 23,161,181, 50,177,183,159,141, 11,244,243,168,219,239,245,110,175,129, 48, 84,163,177,126, 63, 33, - 4,166,140,163, 44, 43,186,115,249, 70, 90,128,165,114,153,153,153,175,189,251,238,187,199,133, 66,161,221,193,201, 64,201,224, -175, 25, 25, 25,175, 84, 86,142, 82,221, 57, 66,136,239,129,157,235, 63, 62,178,119,243,107, 28,103,104, 74, 0, 8,132,236, 3, -157, 86,123, 84,173,204, 95, 81,222,115,101,141,101,227, 66, 48,101,213, 49,124, 51,179, 31, 38, 71,239,194,198,121,239, 99,206, - 87, 59,176,116,230, 20, 44, 94,253, 35, 62,157, 50, 2,131,135,191,203, 81,194,252, 97,239,113, 8, 4,130, 35,235,215,175, 31, -253,254,251,239,155, 58, 35, 80, 74,203,220,208,117, 58,157,146,227, 56,172, 91,183,142, 3,112,196,150, 94,217,107, 68,168,173, -120, 40,123,175, 81,126,126,254,123, 33, 33, 33, 91, 0, 72, 40,165,247,115,114,114, 62,164,148,154,134,112, 42, 44, 44,124,175, -115,231,206, 91, 40,165, 18, 66, 72,133,245,246, 80,154,178, 33,216,205,205,237,106,169,231, 74, 82,157, 64,119, 27, 8,108, 52, - 31, 86,218, 84, 88,250,255, 53, 13,127, 67, 8, 89,210,161, 67, 7,243,193,158,111, 3,176,219, 24, 52,211, 61, 78, 8,105, 53, -111,222,188,143,165, 82,105,120,113,113,113,115, 0,144,203,229,119,213,106,245,105,165, 82,185,162,244,190,101, 75, 67,227,224, -224,112, 87,175,215,183,246,240,240, 40,233, 33, 91,106,100, 1,192,175, 87, 13, 87, 41,213, 87,121,212,248, 67,135, 14, 53,116, -115,115,123,149, 16, 50,152, 82,218,178,160,160, 64,253,159,255,252,231,194,222,189,123,115, 27, 52,104,240,122,159, 62,125, 72, -173, 90,181,112,229,202, 21,154,149,149,245, 51,128, 72,123,122, 78,115, 28,151,180,108, 89,213,198, 22,172,236,101, 57, 55, 16, -215, 0, 0, 32, 0, 73, 68, 65, 84, 74,171,213, 62, 61,116,232, 80,237,222,207,158, 9,107,113, 92,153, 30,142,150, 58, 92,220, -185,115, 7,106,181,218,102, 18, 70,117, 94, 14,122,124,252, 9, 80,218,155,211, 72,137,231,138,130,218,184,255,241,240,252,147, - 32,127, 73, 55,102,163,184,157, 46, 68,133, 66,241,142, 84, 46,153,216,160,185, 79, 64, 90,226,179,248,130,188,226, 31,210,211, -211,215, 83, 74, 43,220,192,237,213,172, 74,162,209,255, 21,247,233,255,162,230,139, 60, 88, 6, 80,106, 0,229, 40, 40,229,192, -113,134,146,129,168, 41, 7,106, 48, 16, 66,240,135,186, 56,207,106, 38,239,242,245, 36,132,184,213,174, 93,123, 17,165,180,183, - 64, 32, 96,204,157, 95,230,223, 75, 61, 87, 71, 50, 51, 51, 63, 45,239,105,253, 95, 60,159,123,246,236,177,104,244,219,219,139, -112,240,224,193,134,170,212, 83,161, 80,156,150,203,229, 22, 19,106, 22, 21, 21, 37,167,165,165,189,106,169,158, 53,133,189,154, - 70,239, 39,181,227,134, 86,174,169,189,202,189, 8, 43,211,108,216,176,161, 68,171,213,182, 3,208, 28,128, 43,128,108,157, 78, -119, 36, 51, 51, 51,131, 16, 18, 12, 96, 94,233,102,159, 81, 74,175,218,163, 89, 83, 88,248, 31,201,106,215,174,189,153, 97,152, - 74, 7, 34, 7, 0,189, 94,175,201,206,206, 30,109,254, 34, 96,174, 89,187,118,237,171, 66,161,176, 82, 45,189, 94,159,250,252, -249,115,171,134,245,255,226,127,147,215,228, 41,207,223,162,247, 70, 90, 90,218, 79, 0,172, 71, 94, 87, 3,107,153,218,121,254, -187, 20,101,167,255, 37,215,161,212, 88,178, 58,120,243, 63, 21,163,129,100, 97,185,105,156,193,154,196,206,116, 12,255,239,216, - 99, 88, 89,217,238, 18,236, 72, 46, 90, 21, 30, 63,126,172, 6,112,190,116, 42,191,191,171, 0,250,213,228,254, 94, 6, 74,169, - 18,128,125, 61,122,236,192,150,209,196,195,243,111,163,242,254,235, 60, 60, 60, 60, 60, 60, 60, 60, 60, 85,130, 0,232,105,105, - 69, 85, 92,127,132, 16,139, 26,182,168, 76,159,215,228, 53,121, 77, 94,147,215,228, 53,121,205,127,158,230,191, 6, 90,154,240, -241,175,152, 0,244,228, 53,121, 77, 94,147,215,228, 53,121, 77, 94,147,215,252,183, 77,124, 19, 33, 15, 15, 15, 15, 15, 15, 15, - 79, 13, 99,183,129,229,232,237,231,231,209, 48,112, 75,173,122, 1,177,181,234, 5,196,122, 52, 12,220,226,232,237,103,215, 40, -245,255, 52, 8, 33, 50, 66,200,112,145, 72,116,220,199,199, 39,159, 16, 98,113,136,156,255,117, 8, 33,206,132,144,193,132,144, - 69,132,144, 1,132, 16,135,154,212, 15, 35, 68, 56,148,144,137,163, 9, 73, 30, 77, 72,242, 80, 66, 38,134, 17,242,183,232,120, - 81,147, 44,156,162, 8, 57,123,100,196,225,133, 83, 20, 33, 22,215,207, 80,184, 95, 58,254,246,170,168, 73,117,106,213,196,254, - 8, 33, 78, 94, 94, 94, 27,188,189,189, 31,123,121,121, 37,121,121,121,109, 38,132,184,212,132, 54, 15, 15, 15, 15,143,125, 8, - 1,128, 16, 18, 10,224,119, 0, 97,148,210,152,242,133,106, 53,104,243,190, 95,203, 22, 51, 63, 95, 48,151,120,212,118,147,233, -116, 6,109, 74,106,186,255,252,207,163,246,212,106,208,102,121,118, 82,220,198,170,238,152, 16, 66, 4, 2,193, 59, 18,137,164, - 47, 0,163,161,118, 91,173, 86, 31, 52, 24, 12, 63,209, 82, 31,100,101,120,123,123,159, 17, 8, 4, 13,171,178,111,131,193,144, -252,244,233, 83,235,217, 70,109, 64, 8, 25, 82,191,126,253,205,161,161,161, 14, 29, 58,116,128, 88, 44,198,188,121,243,166, 3, - 88, 97,175, 70,173, 90, 77,157,180, 18,233, 84,161, 88,220,139,254, 31,123,223, 29, 22,213,181,189,253,238, 51,125,152,161, 13, -189,216, 0, 65,154,130,189,247, 18,149,216, 34, 26, 99,143,137,122, 53, 38,150,196,222,141, 26, 91,212,104,172,177,107,108,216, -107, 20,123, 55, 88, 16,176,128, 32, 8, 2, 67, 25, 6,152, 62,103,246,247, 7, 37, 72, 40,131,201,253,238,239,230,206,251, 60, -243,204, 41,251,188,103,157, 51,195,225,157,181,214, 94,203,160, 11,166,160, 0, 35,140, 54, 25,181,151,249, 90,237,154,156,156, -248,252,234, 89, 0, 66,200, 44, 0, 35, 81, 52,173,124, 59,165,180,102, 69,114,202, 97,100, 99, 98, 48,176, 69,223, 9, 62, 23, -172,173,173,237,213,217,179,103,115,195,194,194,176,125,251,246,182, 91,183,110,253,146, 16,114, 25,192, 73, 74,105,252, 95, 57, - 23, 0,184, 0, 99, 91,183,109,187,110,196,212,169, 28,245,245,235, 88,183, 99,199, 90, 40,149, 0,176,177, 38, 60,132, 16,194, -231, 99,160,163, 35, 47,140, 82, 52, 38, 0, 33,192, 35,121,182,233,172, 94,207, 30,164, 53,237,195,243, 62,247,103,120,127, 90, -253,254,154,114,228,197,211, 57,194,143, 3,218,229,197, 95,153, 3,160,103,249,253, 70,141,104, 4,229,212, 10, 83,211,168, 20, - 0,171, 63,212,214, 98,123,173,156,156,156,158,156, 56,113,194,179,121,243,230, 92, 0,120,248,240,225,240,176,176,176,206,132, -144, 96, 74,169,242,175,240,255, 5,187, 68, 92,134,153, 32,224,241,186,177, 44,219, 16, 0, 56, 28,206, 83,157,193,240,155,209, -100,218, 72,205,172,169,102,129, 5, 22,252,115, 81,157, 22,249,111, 67,137,183,224, 42,165,148, 16, 66, 40,202, 77,245,150,186, -248, 7, 6, 5, 5, 76, 61,127,108,119,173,188, 28,133,230,167,213,123,162, 10, 56,252, 66,191, 0, 95,193, 79, 63,174,180,155, -240,245,148,111,164, 46,254,247, 10, 50,226, 98,204, 61, 41, 33,164,182, 88, 44,142, 88,181,106, 85,112,167, 78,157,120,206,206, -206,200,200,200, 64,108,108,108,112,100,100,100,191,221,187,119, 79, 37,132, 12,160,148,154,211,248,202,247,242,158, 29,206, 18, -153, 3, 88,131, 1,238,141, 26,151,196,135,241, 42,242, 34,140,122, 61, 76, 6, 3, 2,194,250, 1, 0, 76, 38, 19, 2, 3, 3, -205,107,218,247,103,187,221,131,130,130,246, 46, 93,186,148,175,213,106,113,239,222, 61, 92,185,114,197,244,238,221,187,229,230, -114, 72, 93,252, 58, 49, 98,201,193,193, 67,191,176,237, 27,230,197,171,237,226, 4,192, 10,207, 19,141,173,207, 93,140,108,118, -236,224,206,127, 73, 93,252, 6, 23,100,188,184, 82, 21,143, 76, 38,107, 73, 8,249,190,164,162, 51, 33,100, 69,189,122,245,230, -149, 29, 83,190,175, 29,165, 20, 92, 46, 55, 35, 63, 63,127,112, 86, 86, 86, 84,121, 78, 3, 11,238,254,253, 69,250, 97,206,132, -207, 56, 55,111,222,148, 4, 6, 6,106, 1, 96,229,202,149, 88,180,104,145,224,194,133, 11,189,246,236,217,211,139, 16,178,150, - 82,122,210,220,235,174, 8,124,224,187, 17, 83,167,114,164, 73, 73,144, 62,126,140,161, 74, 37,247, 7,224, 59,212, 64, 96, 17, - 66,188, 92, 93,121, 71,166, 78, 25, 21,224,237,211,146,207,231, 59,130, 82, 10,189, 46,203, 47, 57, 57,106,224,242, 31,182,206, - 32,132,124, 66, 41, 53,171,210, 44, 41,242,160, 45, 4, 32, 2, 48, 7,192, 92,185, 92,238,203,178, 44, 92, 93, 93,231, 18, 66, -142, 3, 88,226,228,228, 68,229,114,249,116, 74,105,165, 61,117, 22,126,237,222, 74, 25, 79,231,164, 19,239,143, 26, 52, 25,129, -116,114,254,163, 41, 61,221,206,217,248,144, 37,243,215,165,221, 1,128,158, 62, 62,214,222,254,146,233, 82,155,134, 50,101,234, -165,233, 61,125,124,182,157,139, 55, 79, 96,151,179,155, 0,128,187,187,251,202, 61,123,246,212,106,209,162, 69,233,119, 60, 52, - 52,148,179,114,229, 74,143,201,147, 39,175, 5, 48,202, 76, 62, 63, 39, 39,167, 11, 44,203,106,179,179,179,253, 74,182, 59,135, - 12,104,237, 96, 45,233, 34,207,205,191,158,245,236,248, 53, 51,185,154,139,248,252,163, 39,247,174,115, 11,109,209,138,145, 58, - 58, 67,147,154,134, 2,131,190,235,149, 91,119, 59,126, 57,225,187,175,139, 63,163,170,251, 37, 89, 96,129, 5,255,116, 84,170, - 69,254, 27, 81, 26,142, 41,190,160, 63, 65, 40, 20,204,152, 63,123, 58, 81,100, 43,212,218,252, 2,157, 81,163, 81, 51, 60,147, -230, 73,236,235, 76,134,203, 81, 76,153, 52,201,122,250,172,217, 51, 0, 12,173,232,248,242, 32,132,212, 14, 9, 9,185, 31, 17, - 17,225, 44,147,201,144,151,151,135,236,236,108,220,191,127, 31,148, 82, 12, 24, 48, 64,216,162, 89,179,198,115,230,206,189, 67, - 8,105,101,142,200,146,200, 28,177,178,109, 81,143,216,121, 73,217, 37,231,193,214,240,176,210, 49,139,222, 22,117,181, 16,137, - 68,165,141,130, 63, 0,173,186,116,233,194, 7,128,207, 63,255, 92,153,159,159,191, 12,192,126, 74,105,170, 57, 7, 75, 93,252, - 58, 57,186,185,159,222,180,121,165,184,161,143, 47,244, 6, 35,222,164,167,129,203,179,131,167, 39, 31,163,134,118,227,181,111, - 45,115,252,126,241,214, 51, 18, 39,191,254,133,242, 23, 23, 42,227,178,179,179,219,125,240,224, 65, 28, 58,116, 8, 0,240,226, -197, 11,248,250,250, 74,170,179, 33, 58, 58,218,187, 79,159, 62,191, 2,168, 95,221,216,242,133,236,133, 66, 33,218,182,109,139, -192,192, 64,156, 56,113,162, 35,128,191, 36,176, 0, 64,125,253, 58,164,143, 31, 3,215,174,213,248, 88, 66,136, 87,147, 38,117, -238,158, 61,179,215,241,204,217, 88,172, 94,189, 3,241,241, 69,142, 53,111,111,111,124, 54, 36,156,247,244,233,237,160,129, 3, - 63,187, 77, 8,105, 75, 41,125, 97, 6,237,194,109,219,182,205,170, 87,175, 30, 6, 14, 28, 24, 30, 20, 20,228,106, 99, 99,131, - 45, 91,182,192,205,205,205, 91,167,211,189, 58,113,226,132,123,122,122, 58, 38, 77,154, 4, 0, 83, 43, 35,234,216,163,227, 28, -225,199, 1,237, 26, 52, 25, 1,169,141, 27,182, 29, 56,136,231,191,239,110,167,213,199,206, 89, 54,209, 99,152,154, 10, 71,122, -250, 90,207,168,219,180,131, 67,253,160, 62,168,211, 36,202, 81,195,222,120, 61,119,130,247,114,174, 72,179,123,254,170,180,236, - 63, 93,115,248, 17, 78,176, 50, 78, 22,253, 27,178, 41,157,111, 42, 22, 86,165, 15, 34,150,162, 79,251,246,237, 75, 63,184,164, -164, 36,104,181, 90, 4, 4, 4, 48, 58,157,206,172,154, 86,132, 16,191,238,221,187,223, 60,123,246,172,131,159,159,223,123,173, - 91, 92, 29,236,122, 92,139, 88, 59,233,251,117,251,252,157, 3,251, 43, 50, 99,142, 61,173,134,171,121,155,150, 77, 46,157,139, -216, 43, 37, 5, 41, 16,216,101, 1,166,108, 36,252,250, 11,136,149, 12,131,199, 79,225,118,234,210,217,163, 91,207, 79, 46, 17, - 66,186, 80, 74,255, 35, 93,239, 45,176,192,130,255, 27,168, 76,139,252, 55,162, 84, 96,149, 81,141,239,193, 68, 77,141, 92,157, - 29,196,107, 87,237,122,192,209,235,116, 86,118, 54,122, 91, 27, 91, 10,107, 27,142,222,160, 47,168,237, 91,143,111,162,166, 10, - 91,133,208,114, 83, 53, 9, 33, 68, 44, 22, 71,156, 60,121,210,153,199,227,193,100, 50,193,201,201, 9,137,137,137, 80, 40, 20, -200,207,207, 71,124,108, 44,234,213,174,133, 5, 51,166,187, 77,154, 62, 35,130, 16,210,180,108,184,176, 60, 39, 0,176,134,247, -251, 57,151,180, 74, 41,143,146,109,229,247, 85,196, 89, 9, 18,147,147,147, 33,149, 74, 17, 28, 28, 44,189,117,235,214,141,202, -196, 85,121, 78,153,204,199,154, 43, 21, 31,250,121,211, 92,177,222, 16,141,152,132, 28, 52,168,215, 14, 46, 14,181,145,150,163, -195,221,251, 39, 17,253,100, 63,124, 60,106, 99,226,248,206,162,229, 43,143, 28,180,183,247,170,157,155,251, 90, 89, 17,167, 82, -169,148,122,121,121,161,118,237,162,190,100, 44,203, 34, 38, 38, 6, 44,203,150,174,151,125,223,117, 52, 18, 70,229, 27,140, 24, - 62, 28,217,217,217,210,138, 56,121, 28, 24,167,124,249, 25, 87,204, 3, 4, 18,153,174,160,160,160,212, 27,168,215,235,241,232, -209, 35,180,106,213,170,195,225,195,135,175, 85,117,147,204,189,159,122, 96,197,186,157, 59,215, 15,205,203, 99, 0, 96, 59, 33, - 38, 61,165, 43,204,225, 36,132, 16,103,103,222,209,243,231,246, 56,114,152, 56,200,108,127,192,253,251,111,160,215, 23,217,155, -157,157,137,175, 38, 40,193,231, 89,227,196,137,125, 14, 1, 1,109,143, 22,135,200, 76,149,113, 22, 67,116,238,220, 57,124,245, -213, 87,136,137,137,113,231,112, 56,184,119,239, 30,196, 98, 49, 86,173, 90,197, 9, 8, 8,112,151, 72, 36, 56,127,254, 60, 50, - 50, 50,254,244, 37, 43,203,121,245,194,213, 37,121,241, 87,230,164,147,243, 31,109, 59,112, 16, 95, 12, 25, 12, 87,154,112,195, -214,135, 44,233,254,113,155,121,148, 83, 43, 76, 98,221,200,222, 55,248, 99,240, 5, 82, 76,252,110, 17, 94, 68,159,178, 87,229, - 63,153, 64,216,148, 90, 40,238,205, 87,150,147, 30, 30,200,174, 63,112,187,201,111,181, 31,212,113,111, 50,246, 30,128, 39, 40, - 21, 88,222, 92,194,176,182,197,199,224,213,171, 87,136,143,143, 7,151,203,133, 90,173,134,209,104,172,208, 78, 15, 15,143,177, - 70,163,113, 30, 0,232,245,250, 93,110,110,110,163,247,238,221,235, 80, 86, 96,151,120,174,114, 20,202,220,219, 15,158, 61,159, - 50,118, 96,199,235,119,163, 83,236, 66,250, 37, 43, 30, 31,207,171,228, 51, 18,137, 5,130,163,231,143,237,147, 26, 94, 71, 66, - 18,208, 17, 60,169, 47, 88, 67, 42, 84,185,133,200,143,127, 7,237,166, 13, 8,157, 48, 25,167,142, 31,145, 6, 53,108,122,152, - 16,226, 75, 41, 45,237, 83, 84,131,191, 77,179, 97,225,180,112, 90, 56,255,111,114, 22,243, 86,168, 69, 0, 52, 1,224, 82,188, -156,141,162,212, 24, 71, 0, 89, 40,106,219,229, 2, 64, 7, 64, 80,230,152,242,235,101,199,150, 95, 47,187,156, 93,188,236, 92, -252,254, 0, 64, 78, 77,175,165,218,132, 98, 66, 24,165,209,100, 18, 10,156,156,180,163, 7,117, 13,190,120,233,225, 35,137,131, - 45,183,123,167, 38, 29,238, 63,141,191,195,128, 49, 16,194,152,149,215,193,225,112, 6,175, 93,187,182,161,141,141, 13, 76, 38, - 19,108,109,109, 33,151,203,161,211,233,144,151,151, 7,109,190, 18,250,124, 37, 30,167, 36,161, 77,135,142,248,228,163,238, 1, -251,142,159, 28, 12,224,215,170,120,221, 27, 53, 46,245, 92, 45,170,235, 80,186,125, 97,138,162, 84,108,253,208,216, 23,124,169, - 20,221,166,204, 48,199,212, 10, 65, 41,141, 18, 8, 4,231, 6, 12, 24,208,115,218,180,105,204,187,119,239,206, 19, 66,218, 80, - 74,171, 13,143,234,133,162,111,254,245, 77,152,189,189,148,226,240,111, 39,209,190,241, 16, 88, 9, 56,200, 86,234, 65, 8, 16, -251, 44, 2,132,200,240,228,197, 59,180, 11,181, 65,247, 30, 1,210,227, 71, 98,167,225,143,252,159,242, 32,185,185,185,200,204, -204,132,193, 96,128,193, 96,192,192,240,112,236,217,189, 27,133,133,133, 80,171,213,208,233,116, 96, 89, 22, 12,195,224,183,211, -135,145,242, 58, 22,173, 91,181, 2, 42,113,189,238,138,162, 60, 66,200,221,231,207,159, 35, 54, 54, 22,111,223,190,133, 72, 36, -130,171,171, 43, 22, 45, 90, 4,173,182,168,135, 88,120,120,120, 7, 0, 85,122, 46,204, 65, 60,176,245,181,209, 56,167,231,177, - 99,206,183,142, 29, 51,221, 57,121,242,173,168,160, 96,139, 57,199,242,249, 24,184,114,197,248, 6, 18,137, 4,111,147,215,194, -223,159,143,169,147, 29,176,236,135, 44, 0,192,164,175, 60,209,172,169, 35,148,138, 35,112,116,158,133,245,235,191,246, 25, 57, -114,205,112, 0,187,170,161,158,115,242,228,201, 79,124,125,125, 61,162,162,162,136, 64, 32,128, 88, 44,134, 88, 44,134, 72, 36, - 66,102,102, 38, 18, 19, 19,233,202,149, 43, 83, 81, 20, 66,172, 20,197, 97,192,158, 83,122,186,157,123,254,251,238,118, 30,156, -215,143, 63,153,216, 54,233,201,221,168,252,139,191,221, 90,108,212,136, 82, 20,111, 47, 77,247,106, 22,229, 56,225,219,133,216, -176,114, 62,158,223,187,158,227, 82, 91,185, 81, 76,180,187, 90,116,251, 51,103,199,142, 11,185, 19,230, 14, 50,142, 29,249,137, -221, 41,151,219, 99,207,114,137, 60, 61,235,247, 85, 72,140, 82, 11,235, 55, 30,230,231,205,232, 34, 35, 35,197,237,219,183,135, - 70, 83,148,214,196,225,112,176,119,239, 94,147,209,104,172, 48,236,172,215,235,231,165,166,166,186,169,213,106,124,244,209, 71, -147, 86,173, 90, 37, 41,233, 33,199,178, 69,133,227, 75, 60, 87, 75,126,220,115,225,155,121, 27,175, 92,248,245, 7,247, 37, 51, - 70,119, 28, 58,241,251, 43,168,164,207, 35,151, 97, 38,156, 58,182,195, 85,100,111,128, 88,214, 29,154, 12, 53,158,111,253, 2, - 42,165, 6,205,150, 44, 4, 32,128,206,192, 96,203,199, 3,193,115,112,199,252, 49,163,221,103,111,217, 54, 30,192,218,106, 62, - 35, 11, 44,176,224,127, 15, 46,132,144,211, 0, 48, 99,198,140, 89,203,150, 45,123, 70, 8, 57, 77, 41, 13, 3,128,146,229,146, - 49, 0, 80,209,122,201,216,242,235,229,151,103,206,156, 25,180,124,249,242,165,173, 90,181,250,245,246,237,219,175,241, 1, 2, -139, 41, 62, 9, 41,251, 94, 22, 38,147,233,250,171,132, 36, 85,143,110, 45, 61, 78, 93,125,250,112,212,168,222, 93, 6,245,105, -215,253,117, 74,102,156, 79, 29, 87,199,232,103,143,109, 76, 38,211,117,115, 78, 38, 20, 10,195, 58,119,238,204,205,205,205,133, -149,149, 21,228,114, 57, 82, 83, 83,161,215,235,161,201, 83, 64,155,167,128, 70,145, 11,125, 94, 46,226, 31,222, 71, 35, 31,111, - 97,113, 18,124,149, 40,241,178,148,247, 76,149,245,100, 9,172,173, 33,180,182, 6,169, 97,120,144, 16,210,215,222,222,254, 46, - 33,100, 14, 0,232,245,250, 9,211,167, 79,207, 50,153, 76,248,254,251,239,109,164, 82,233, 97, 66,136,176, 58, 30,107, 39, 78, - 88,171,208, 96, 38, 46,241, 9,218,134,140,128,159, 87, 47, 36,102,168,145,149,175, 71,166, 66,143,102,237,127, 66,221,144,133, -168, 21,186, 12,177,111,114,224,238,225,203,128, 43,172,178, 41,115, 70, 70,198,123,235,191, 30, 56, 0,149, 74, 5, 31, 31, 31, - 12, 25, 50, 4,211,167, 79,199,144, 33, 67,224,238,238,142,161,131,250, 96,254,252,249,200,204,204,172,206, 84,173,159,159,159, -182, 78,157, 58,218, 58,117,234,104,245,122, 61, 10, 10, 10,160, 80,252,209, 55,183,248,126,127, 93, 29, 81,121,184,184,184,204, -116,115,115,123,226,226,226,242, 76, 36, 18,157,125, 68, 72,156,182,110, 93,151, 54,253,250,145,192, 65,131, 56,201, 86, 86,228, - 26, 32,173,150, 8,128,163,140,215,187, 83,231,158, 2, 69,238, 14, 0, 69, 78,169,209,163,156,112,243, 90, 16,110,221,104,138, -175, 38,248,128, 48, 34, 16, 70, 0, 85, 97, 36, 90, 52,111,197,183,179, 35, 85,126,151,138, 19,218, 31,181,105,211,198,125,226, -196,137, 68, 40, 20, 98,210,164, 73,250, 49, 99,198,188, 28, 50,100,200,203,203,151, 47,179,117,234,212, 65,173, 90,181, 72,173, - 90,181,220, 0, 60, 42, 62,166, 74,216,248,144, 37, 90,125,236, 13, 59, 95,201,107, 22,142,173, 11, 12,194,129,243, 87,165,101, - 47,222,152,176, 58,241,185,202,251,249,189,235,217, 47,163, 79,153, 18, 31, 92,205, 74,123,153,239,189,120, 99,194,234,153, 27, - 82, 43,252, 99,190,118, 13,166,136,211,215,244,170, 66, 21,183,223,199,157, 84, 99, 63, 31,236, 39,147, 6,237,133, 71,247,144, -186,181, 61,135,206, 95,186, 94, 63,102,252, 55,250,237,191,236,160,249,249,249, 80, 42,149, 88,191,126,189,241,212,169, 83,169, - 44,203,126, 83,137,137, 28, 0, 48, 24, 12, 24, 59,118,172,196,198,198, 6, 41, 41, 41,165, 30, 80, 0,120, 39,207,126,122,235, - 65,116,220,148,113,225, 29, 10,181, 90,237,133,171, 15, 99, 3,125,235,120, 18, 66, 43,157, 96, 34,224,241,186, 53,109,209,130, - 67,169, 2,132, 91, 27,241,187, 87, 66,153,158, 3,101,102, 14, 56, 60, 9,140, 16,194, 96, 18,192,174, 81,115,188,120, 16, 5, - 15, 39, 23,174,144,199,179,180,184,178,192,130,255, 81, 84,165, 69,202,140, 9, 91,190,124,249,210,170,246,151,121,215,149, 91, - 47, 21, 80,229,197, 87,217,101, 0, 88,190,124,249, 82, 74,105,216,237,219,183, 15, 0,168,178,193,121,101,168, 86,109,112, 52, -186,101,211,166,207,129,173,141,216,182, 69, 99, 95,215,227,231,175,254,126,253,246,195,216,186,158,142, 78,212,160,179, 95,177, -102,131, 39, 81,169,205, 77,242, 14,112,116,116,132, 94,175,199,171, 87,175,240,246,237, 91,232,245,122, 24, 11, 11,161, 85, 40, -160,201,205, 5, 91,152, 15, 62,203, 66, 45,207,132,131,149, 8,248, 99,134, 97,149,168, 40, 44, 88, 54, 36, 40,178,177,129,208, -218, 6, 12,143, 87, 97,248,176, 18,206, 38,205,155, 55, 63, 20, 29, 29,221,162,107,215,174,139, 9, 33,182,148,210, 55,169,169, -169, 93,230,206,157,171,117,113,113,193,216,177, 99, 27, 0, 24, 81, 29,151, 80,160, 11,168,227,218, 0,126,222, 35, 80,183, 86, -103, 40, 10, 13,144, 43, 13,200, 84,232,177,229,167, 86, 56,186,189, 57,110, 30,109,135,232, 11,221,160, 48,184, 66,234,222, 23, -148,213, 5, 85,197,121,251,246,109,108,222,188, 25,155, 55,111,198,166, 77,155,176, 97,195, 6,228,230,230, 34, 56, 56, 24,201, -201,201, 56,119,238, 28,222,189,123, 7, 71, 71, 71, 60,122,244, 8, 91,182,108,193,253,251,213,231, 17,155, 51,129,147, 82, 90, -227, 88,185,209,104, 28,249,174, 95,191,134, 25, 50, 89, 96,227,198,141,123, 78,154, 52,201,187, 77,155, 54,165,251,189,188,188, -106,139,197,226,116, 66,200,118, 66, 72,104, 85, 92, 38,160,177,147, 83, 48,116,218, 56, 0, 0, 33, 60, 16, 34, 66,231,110,177, -104,211,238, 33,244, 6, 62, 24, 34, 4,195,136, 96, 52,102,195,222,222, 29,148,146,224,106, 76,156, 43,151,203,125, 47, 93,186, -196, 36, 38, 38, 66, 36, 18, 1, 64,210,130, 5, 11, 54,172, 94,189, 58,198,193,193,129, 61,125,250, 52,142, 31, 63,142,176,176, - 48,206,152, 49, 99,124,107,213,170,181,185,186,235,158,191, 46,237,206,254, 53,231, 62,229, 25,236, 67, 69,226,186,245, 80, 40, -237, 59,161,163,147, 4, 0,206,197,199,231, 59,215, 86, 46, 47,204,127,146,108,231, 89,240, 67,117, 9,238,148,206, 55,253,254, - 50,238,238,254, 99,231,243, 50, 51,114,121,141, 27, 6,169,151, 45,250,150, 95,183, 94,253, 21,243,167,143,115, 77, 85,138, 20, -221, 38,157,139,139, 56,127,191, 96,216,168, 47,140,159,127, 57, 81,115,238,252,111,199, 76, 38, 83,195,202,102, 16,154, 76, 38, -188,123,247, 14,207,158, 61, 67, 66, 66, 2,228,114, 57,178,178,178,144,159,159, 95, 26, 86,180,202, 87,158,217,176,243,212, 99, -137, 88,108,213,162,161,111,237,123, 81, 49,153, 18,177,216,202,183, 94,109, 63, 66, 22, 86,248, 28, 97, 89,182,161,200, 74, 12, -128, 64, 17,125, 29, 5,185, 5, 40, 80, 20, 32, 63,167, 0, 90, 61, 7, 26, 45, 3,181,142, 65,157, 14,221, 81, 80,168, 65, 65, -118, 30, 76, 44, 27, 82,221,253,180,192, 2, 11,254,119, 65, 8, 57, 61, 99,198,140, 89,102, 14, 55, 59,140, 89, 94,112,205,152, - 49, 99, 22, 33,228,244,204,153, 51,131, 96, 70,206,114, 69,168,182, 76, 67, 86,214,139, 2, 27,167,192, 1,147,191,155,119,238, -192, 47, 27,157,116, 58,117,178,163,189,148,181,182, 18,218,143, 25,251, 61,242, 11,114,251, 23,152, 89, 86, 0, 0,114,115,115, -241,250,245,107,136,197, 98,240,121, 60,176,106, 53, 88,117, 33,212,185,217, 96,244, 90,240, 89, 22, 50, 43, 49,234,184,187,162, -174,139,171, 89,156,175, 34, 47,150, 38,180,151, 13, 11,174,108, 30, 0,129, 68, 10,129,181, 20,255, 58,125, 21, 0,192,231,243, -129,185,139,171,229, 36,132, 56,122,120,120,156,220,191,127, 63, 95, 46,151,227,209,163, 71,143, 41,165,121,132, 16,107, 0,166, -216,216,216, 75,209,209,209, 97,190,190,190, 0,224, 83, 29,159, 50,139, 97, 13, 70,138,148,244, 36, 36,190,141,130,204,214, 11, - 60, 43, 63,100, 42,244, 16,138,189, 96,208,254, 17,101,212, 40,223, 64,173, 55,111,162,163, 94,175,135, 94,175,135,193, 96,128, - 86,171,197,176, 97,195,112,235,246,109,252,122,252, 50, 94,199,191, 64,131,122,174, 24, 62,124, 24, 66, 67, 67,241,224, 65,213, -249,195, 35, 27, 19,195,236,246,224,174,233,201, 64, 32,117,208,182,156,126,225, 94, 85,227, 75, 68, 86, 85,191, 54, 74, 64, 8, - 89, 29, 22, 22, 86,255, 69, 97, 33,158,197,197,161,235,130, 5, 0,128, 51,103,206,148,142,209,233,116,152, 50,101,138, 32, 38, - 38,230,243,135, 15, 31,126, 78, 8, 89, 67, 41,173, 56,137,156, 2,103,206,220,193,184,113, 49,144,203,139,242,176, 15, 30,248, - 67,143, 38,190,214,227,163,222, 69,145, 43, 59, 59, 59,172, 89, 83,157,182, 42, 2,203,178,216,186,117,107,105, 88, 16, 0,184, - 92,110,155, 41, 83,166, 12,168,104,124,253,250,245,249,213,113, 78, 9,247, 20, 61,122, 35,158, 96, 91,191,110,144,141, 99, 35, -100, 27,162,130,163, 82,223,125, 53, 37,220,115,237,154,195,111, 53, 98,162,221, 69,216,148, 90, 92,145,102,183, 57, 54,198,159, - 91,175,179,171, 59,106,119,186, 92, 57,123,226, 23,159, 57,216,216, 57, 23,110,223,176,204,158,225, 48,244,228, 67,189, 34,200, -219,193,174,111,203,117, 5,227, 38,207,141,210, 25, 83, 38, 34,229,228,139,170, 74, 85,176, 44,139,180,180, 52,200,229,114, 36, - 39, 39, 35, 43,171, 40,204,154,149,149,245,167,153,168, 53, 1, 33, 4,234,228,100,188, 57,182, 29,117,135, 13, 67,179,197,139, -192,154,184, 80,171, 88,172,105,221, 5,185,121,106,104, 77, 4,238, 77, 90,227,139,179, 55,192, 80, 22,216, 82,163, 10, 29, 22, - 88, 96,193, 63, 8,230,148,105, 40, 17, 66,203,150, 45,171, 54,186, 85, 83,148, 21, 89,203,150, 45,123,182,108,217,178,191,116, -174,106,203, 52, 0,128, 82, 30,147,224, 80,167, 81, 90,161,186,192,202,217,197, 81, 39, 21, 9, 77,121,202, 66, 78,212,211,199, -250,130,119,175,158,215,224,124,177,209,209,209,193,105,105,105, 72,126,243, 6, 70,117, 33, 24,173, 14, 84,163, 66,215,182,173, - 33, 2, 32, 98, 8,248, 38, 61,184, 28, 1,242, 11,148, 0, 16, 91, 29, 41,107, 48,148, 46,151,136, 43, 66, 8, 4,214,214, 16, - 72, 36, 16, 72,173, 75,247, 1,230,121,104,132, 66,225,254,195,135, 15,187,121,120,120, 96,209,162, 69,240,244,244,244,111,216, -176,161,170, 93,187,118, 98, 23, 23, 23, 4, 6, 6,162,117,235,214, 56,119,238, 28, 0, 84, 91, 19,202, 96, 20, 61,121,158,132, - 54, 89, 57,183,113,227,234, 38,232,212, 90, 52,238,176, 9,122,110, 93, 56, 5, 45,132,233,213, 94,168,210, 79, 0, 0,172, 92, - 63,198,219,228, 36, 16,142,224, 89,181,134,150, 1,165, 20, 79,158, 60,193,129, 19,215,224, 86, 39, 0,201, 47,227, 16,119,229, - 18,110, 57, 57,160,110, 96, 16, 12, 6, 67,149,215,110, 96,193, 93,178,177,180, 76,131, 48, 39, 39, 71, 40,147,201,180, 64,209, -189,115,115,115,171,240,156,102,138,172,207,166, 77,155, 6, 5,143, 7,244,238, 13,126, 66, 2,244,122, 61, 90,181,106,133,166, - 77,155, 2, 0, 90,181,106, 5, 46,151,139, 70,141, 26,193,221,221, 29, 27, 55,110,252, 12,149,204,210, 99, 8, 30, 25,141,217, -254,222,222,222,165, 2,107,247, 30, 57,162, 30,118, 3,129, 0,235, 55,252, 81,149,161,118,237,218, 72,127,151, 0, 66,104,116, - 53, 54, 46,118,117,117,157,235,230,230,230,189,122,245,106,142, 72, 36,194,248,241,227,189, 10, 10, 10,234, 2,192,242,229,203, - 49,115,230, 76, 0,192,252,249,243,177, 96,193, 2,104,181, 90, 85,101,100,123,126,108,228,158,153, 99,250,220,197,213,163,127, - 39,199,186, 13, 59,247,232, 10, 47,223,206,232,220, 35, 25, 0,150,202,184, 73,131, 86,206, 9, 62,230, 88, 75,182,227,226,249, -223,230,183,237,208,121,246,140,177,246, 75,150,111,201,173, 54,167, 49,239,205,174,252,231,130,193, 63,254,180,121,207,143,243, -102,126, 45, 74,150,235,114, 83,115,105,129, 84,200,149,250,184, 16,233, 87,223, 45,126,157,150,150, 48, 21, 41,231,171,157, 57, -105, 50,153,144,144,144, 80,154,179,167,209,104, 80, 88, 88,136,148,148,148,210, 16,161, 90, 98,243,209,196, 81, 31,135, 20,170, -213,170,123, 79, 95, 38,207,153, 52,180, 85,161, 90,173,122,153,152,252,130,210,117, 21,170, 48,134, 97,158,170,242, 85, 93, 85, - 10, 13,228,143,158,195,179, 75, 29, 24,140, 4, 58, 35, 11,121,118, 62,180, 70,128,101,120, 8, 26, 52, 28, 44,225, 34, 43, 45, - 21, 12,135,243,184, 58,123, 45,176,192,130,127, 44,170, 45,211, 64, 8, 57,221,170, 85,171, 95,129, 63,188, 76, 37,203, 0,180, - 0,170, 74,217,145,151, 21, 81, 37, 97,195,202,206, 83,142,183,198,168,182, 76, 67,241, 62, 18,210,176,142,251,202,249,159,121, -154,140,198, 6,153, 89, 25, 70, 46, 87,200,171,101,171,126, 87,147,147,105,181,218,211,151, 46, 93,234,215,173, 91, 55,225,203, -167,143,161,203,203,131, 46, 79, 1,158,201, 8,153,184, 41, 24,189, 22, 68,167,131,135,191, 9,154,124, 49,174,221,138, 54,104, -181,218,211,213,241,150, 8, 44,134,195,121, 63,239, 74, 42,133,208,218, 6, 66,169,180,124, 8,177, 74, 49, 64, 8,177,234,211, -167, 79,151,150, 45, 91,130, 82,138,173, 91,183, 66,175,215, 11,244,122, 61,116, 58, 29,244,122, 61,148, 74, 37,246,236,217,131, -159,127,254,249, 22,128,157,213,217,104, 50,234, 46, 93,248, 45,178,249,232,161, 97,188,179,167,215,192,168, 99,161, 38,158, 40, - 44, 52,160, 64,103, 5,214, 97, 24,144,113, 6, 28,174, 8,173, 26,121,225,196,145, 8, 61,140,218,203,213,241,150, 23, 76, 26, -141, 6, 41,201, 73,120, 27,255, 2, 82,101, 58,156,108,172,160, 74,120,129,208,225, 35,160,211,233, 42, 97,169, 28,181,106,213, -130,201,100, 66,167, 78,157, 74,147,166, 43,178,193, 28,145,149,157,157,141, 83,167, 78,161,101,203,150,232,208,161, 3, 82, 83, - 83,145,144,144,128,222,189,123,151,142,121,252,248, 49,162,162,162,224,227, 83,181, 83, 48, 43,199,112,246,109,202,163,240,190, -125,251,242,239,222,189, 11, 74, 41,124,125,109, 96, 99, 45, 1, 97,132, 8, 8,112, 6, 80,164,253, 59,118,236, 8,165, 50,193, -152,155, 75,207, 86,197, 73, 41,221, 79, 8, 57,174,211,233, 94,181,111,223,222, 61, 62, 62, 30,147, 39, 79,230, 30, 60,120, 16, - 0, 48, 99,198, 12,204,152,241,254, 36, 9,181,186,242,208,124,131,134,254,223,122, 25,237, 59,136,196,117,235,217, 56, 54,130, -151,111,103, 0, 64,183,176,209,240,170, 95, 27,202,172, 39,245, 52,234,164,254,124,110,174,253,147,245,169, 49,226,222,193,163, - 52,153, 87, 95, 2, 48,167,112, 47, 85,191, 60,152,145,204, 27,118,232,248,201,115, 99,123,133,245,225, 25, 88,163, 49,184, 14, -207,238,240,177, 51,153,169,111,146,215, 33,249,124,137,160,172,242, 23, 5,203,178,172, 82,169,132, 68, 34, 65,116,116,180,182, -119,239,222, 66,134, 97,240,234,213,171, 82,129,229,236, 40, 11,108,211, 44,216,127,201,143,123, 46, 72,132, 66, 97,143,142, 77, - 3, 98, 94,190,121, 75, 41, 73,170,140, 87,103, 48,252,246,244,209,227, 78, 78,238,245, 57, 9, 87,239,194,161, 93, 47,104,181, - 12,212, 58, 19,180, 70,192,200,225,195, 45,180, 5,236,124, 2, 64, 1, 60,184,123,203,160, 53, 24, 42, 45, 77, 98,129, 5, 22, -252,243, 81,133, 22,145,151, 17, 68, 57, 0,146,150, 45, 91,150, 85,198,187, 36, 7,240, 24, 64, 72,241, 56,121,185,227,228, 40, -154, 13,216,172, 12,143, 28, 40, 21, 90,101,151,117,229,198,124,208, 15,191,106,203, 52, 0,128,163,163,163,115,227,198, 77,125, -182,253,114, 8,148, 82, 60,143, 90,133,220,204, 56,204, 93,122,199,199,211,211,179,195,219,183,111,175,153,115, 50,150,101, 15, -238,216,177, 99,106,139, 38,141, 27,215,243,244,196,227,164, 68,240, 41, 11, 62,203,130,209,107,193,101,117,240, 12,102,193, 16, - 41,210,210,242,176,124,255,161,104,150,101, 15, 86,199,235,223,171, 15, 22,189,205, 3, 33, 4,171, 91, 5, 67, 96, 45, 5, 95, - 34,197,191, 78, 70,150,138,170,211,139,102, 66, 32,149,194,167, 69,245, 5,220, 41,165, 42,107,107,235,135, 79,159, 62,109, 22, - 28, 28,140,169, 83,167, 34, 41, 41, 9, 38,147, 9, 25, 25, 25,154,119,239,222,165,202,229,242, 36, 0,199, 0,108, 51,167, 82, - 56, 95,171, 89,123,250,232,238,137,173,218,118,112,236,219,255,103, 28, 63, 50, 5,138, 60, 37, 84, 70, 49, 10, 53, 70, 20,106, - 57,144, 57, 52, 68,139, 70,141,144,150,154,137,103,119, 47, 20,112,181,170, 85,213,223,213, 82,155,193, 48, 12, 30, 63,126, 12, -111,119,107,188,184,113, 13,142, 86, 60,132,184,187,194,189, 77, 91, 36, 36, 36, 84,203,193,227,192,248,217,103,159,149, 86,114, -239,222,189,123,226,176, 97,195,220,166, 76,153,130, 95,126,249, 5,183,110,221,250, 83,226,117,135, 14, 29,112,253,250,245,133, - 0,230, 87, 67,111,208,233,116,240,247,247,199,131, 7, 15,112,233,210, 37,116,238,220, 25, 29, 58,116,192,147, 39, 79,112,241, -226, 69, 68, 69, 69,129, 16, 2, 7, 7, 7, 24,138, 68,179,161, 50, 50,189, 30,135,127, 88,177, 99,214,143, 63,254, 28, 52,116, -232, 80, 28, 61,250, 43, 70,143,106, 0,194, 8, 65,136, 16,125, 62,110,128, 69,139, 31,160, 69,139,142,112,116,228,225,199, 53, - 39, 94,171,213,236,158,106,111, 2,176,228,226,197,139,238, 26,141, 6, 10,133,130, 74,165, 82,146,157, 93, 52, 67,181, 34, 15, -150, 74,165, 18, 85, 70,244,244,247,216, 85,138,124,154, 75, 11,162,250,231, 24,163, 26,118,238,145,130,110, 97,163,240,219,233, -157,136,188,112, 9, 50,110, 82, 34, 36,249,231,178, 18,179,148,239, 10,125, 55, 7, 52, 25,195,121, 91,120, 97,243,164,190,246, - 28, 55, 55,211,225, 25, 63,231, 41, 42,227,166,197,127,176, 57, 49,123, 79, 30,163,232,211,186, 85,139,250,193,181,221, 4,185, - 89,153,244,200,137,115,209,250,196,163,167, 80, 44,172,104, 53, 46, 91, 74,233,162, 25, 51,102,204, 43, 94,222, 53,103,206,156, - 49,203,151, 47,119, 74, 79, 79, 47,205,193,202,204,202,137,108,221,251, 43, 54, 91,145,167,219,241,227,119, 3,197, 34,161, 96, -206,242, 29, 87, 13, 28,220,173,140,215,104, 50,109, 28, 52,121,238,215, 47,159, 71,121,212, 21, 11,112,226,187,249,120,124,241, - 10, 12, 12, 31,227, 46,221,131, 86,207, 66,145,149,141,203,159, 79,128,212,197, 30, 63, 95, 61,154, 97, 50,153, 54, 85,101,171, - 5, 22, 88,240,207, 70, 21, 90,164,162, 28,151,140, 10,182,149, 31, 87,221,250,191, 13,102, 77,169,203,202,202,202,188,126,253, - 30,174,158, 94,130,107,167,151,224, 89,212, 99,164,165,234,144,154,161,129,141,141,205,157,202,142, 35,132,116, 45,187, 78, 41, -165, 42,149,106,192,156,185,243,210, 69, 98, 43,180,239,210, 5,174, 78,206,176,226,243,192, 49,154,192, 33, 60, 20,200,237,240, -226,137, 10,211,119,236,205, 44, 80,169, 6,148,255,231, 80,158,179,204,118, 16, 66, 32,180,177,134, 64,106, 13,161,181,205,123, -225, 66,145,141, 13, 68,214, 54,224, 10, 4, 21, 37,195,255,137,179,160,160,224,147,129, 3, 7,230,230,229,229, 97,204,152, 49, -184,118,237, 90,212,133, 11, 23,108, 30, 63,126, 44,206,204,204,172, 79, 41,237, 78, 41,221, 82,153,184, 42,207,153,147, 19,159, - 79,141,218,193,203,230,125,163,214, 24, 29, 16, 62,226, 32, 36, 76, 10,140,172, 9, 20,128,187, 76,128, 54, 93, 23, 35, 83,215, - 26, 7, 55,127,175, 50,233, 53, 67,203,214,192, 42,207, 73, 41,165, 14, 14, 14,239, 93, 11,195, 48,184,122,245, 42,194, 7,126, -130, 30,253,251,193,169,158, 55,156,187,246, 66,143, 49,227,176,101,203, 22, 48, 12, 3,153, 76, 6,148,241,104,148,229,220, 21, - 69,121,251,159, 80,178,255, 9, 37, 59,127,167, 92, 0,195,247,238,221,251, 67, 72, 72,200,149, 91,183,110,173, 2, 48,184,236, -253, 46, 99,203,130,178,222,171, 74, 62,163,217, 95,127,253,181,250,229,203,151,144, 72, 36, 48, 26,141,184,117,235, 22,126,254, -249,103,172, 94,189, 26, 81, 81, 81,112,112,112,128,143,143, 15,180, 90, 45, 30, 60,120,160, 6, 48,187, 50, 78, 74,169, 73, 46, - 55,126,178,126,253,242,236,176,176,118,216,177, 99, 3, 92, 93, 91,131,199,117, 5,151,231, 4,137,212, 31,219,183,253,128,158, - 61, 27,227,228,137, 67, 57, 89,217,198, 79,104,185,170,235,149,216,169,185,119,239, 30, 54,111,222,140,129, 3, 7,166,134,135, -135,179,121,121, 69, 69,106,103,204,152, 81,218, 37,125, 65,113, 14,153, 86,171,125,207, 29, 93,150,115,204,119, 79, 83,191, 93, - 18,189, 40, 35, 61,181,229,181, 43,119, 62,139,188,112, 9,175, 95, 70, 34,242,194, 37,220,136,188, 61, 35, 35, 61,181,101,227, -230,126,252, 1, 99, 38,126,187, 59,219,243,196,221, 0, 0, 32, 0, 73, 68, 65, 84,226, 40, 71,106,227,134,221, 17, 71, 57, 67, -190,250,230,251,166, 61, 58, 87,122,237,101,111, 3, 0, 90,144,153, 49,115,233,170,159, 10,140,122, 13,179,114,221,198, 52,181, -252,221,108,148, 76,173,172,196,123, 85,150, 83,165, 82,109, 81,171,213,238,106,181,218, 93,163,209,204, 78, 74, 74,106, 63,117, -234, 84, 57,203,178,165, 30,210,204,103, 39,238,196,222,216,185,212,217,209, 94,220,186, 89, 80,131, 53, 91,142, 92, 77, 78,201, -216, 87, 82, 3,171,146,207, 72, 83,160,214,124,210,111,192,176, 66, 69,174, 22,173,190,153, 1,147, 72, 10, 45, 11, 24, 40, 7, - 70,194,197,211, 37,107, 32,150, 89, 99,127,226,239,170, 60,131,254,147,178, 53,176,170,185,246, 15,134,133,211,194,105,225,252, -191,201,249, 79, 3, 23,168,126,106,164,135,135, 71,251,190,125,186,162, 99,216, 28, 80, 74, 17,247,251, 10,228,202,159,195,195, - 85,136,132,100,101, 43, 0,215,204, 61, 33,165, 52,153, 16,210,242,235,217,115, 34,194,187,119, 9, 8,174, 87, 79, 88,183,110, - 29, 72,156,157,145,149, 37,199,205,187, 49,134,239, 15, 28,142, 46, 22, 87,230,180,202,129,201,100, 42, 74, 94, 7,208,229,235, -233, 32, 28, 14, 80, 92,142,161,228, 31, 98,189,102,173, 65,184, 92,176,212, 4,173, 86, 91,109, 18, 22,165,244, 45, 33,228,147, -161, 67,135, 94, 62,125,250, 52,211,163, 71,143,208, 99,199,142,125,120,198, 47,128,130,140, 23, 87,164, 46,126, 97,223,207, 28, -123,176,101,231,126, 54,190, 65, 77,249, 77,235,114,160, 55, 16,164,165,190,193,233,136,251,250,152,123, 23,148,212,168, 25, 92, - 40,175,186, 85,142, 94,175, 79,118,113,113,113, 89,184,112, 33,140, 70, 35,140, 70, 35, 88,150, 69, 86, 86, 22,238,220,185,131, -134,205, 90, 32, 96,212,231,144,203,229, 88,191,126, 61, 60, 61, 61,177,116,233, 82,228,228,228,192,104, 52,154,117, 95, 41,165, - 44,128, 11,197, 47, 0,127, 8,217,146, 95, 25,213,133, 7,125,124,124, 4, 26,141, 38,212,205,205,141, 75, 8, 89,171,211,233, - 70,205,156, 57,211,117,233,210,165,104,208,160, 1,178,178,178, 32,145, 72,224,235,235, 11,185, 92,142,251,247,239,179, 42,149, -106, 51,128, 69,148, 82,121, 69,156,101,236,123, 69, 8,105, 57,105,210,191, 34,126, 88, 62,214, 87,163,237, 40,144,201,218,130, - 82, 35,228,242, 36,228, 43,111,233, 23, 47,218, 25,159,145,105, 24, 64, 41,125,105,206, 53, 3,152, 63,113,226, 68,160,184, 85, - 78, 66, 66,194,163,128,128, 0, 95,160, 98, 15,150, 57, 88,115,248,173, 6,192,129,149,147, 91, 79, 86,102, 61,241,149,113,147, - 18, 91, 6,155,214,175, 57,252, 86,179,112,178,221,146,172,164,107, 47,222, 21, 94,216,188, 59,226, 40,103, 68,255, 79, 88, 79, -233,203, 25, 34,103,122,164,243,199, 85,243, 82, 74,105,104,104,104, 45, 66,114,188, 50,179,159, 63, 28, 61,102,236, 32, 91,190, -250,108,136,103,182, 15, 83,187,177, 40, 42, 42, 42,177, 58,239, 85, 37,188, 47, 8, 33,237,103,206,156,121,129, 82,250, 94,238, - 65,102, 86, 78,100,171,176,137, 84,161,200,123,148, 25,115,162,218, 90,104,148,210,251,132,144, 46,193, 13, 27, 31,253, 97,233, -114,151,142, 95, 79,229,190,184,114, 21, 96, 13,120,115,237, 42, 88,161,206,180,230,246,111, 25,121,122,125,127,106,169,226,110, -129, 5,255,211, 48,167, 76,195,127, 19,170, 45, 52, 10, 0,111,223,190,189,230,227,237,121,241,197,139,246,221,107,123, 58, 1, - 0, 18, 18,211,144,154,161,189,104,110,120,176, 44,138, 69, 86,211,189,167,206, 14, 22, 10,133, 97,164,184, 20, 3,253,128,102, -207, 70,163,241,109,189,122,245, 42,217, 91,113,169, 38,150,101, 43,114, 43, 86,100,231, 85, 66,200, 48, 31, 31,159,229,111,222, -188,137,160,148, 22,154,115, 92, 85, 40,200,120,113, 69, 38,243,241,190,125,233,232, 55,119,175,158,238, 74,141,186,134, 0, 64, -184,130, 26, 53,123, 46, 40, 40, 24, 59,126,252,248, 45, 60, 30,175, 54,138,115,202, 74,102,124,177, 44,203,209,235,245, 34,150, -101, 57, 0, 8,195, 48, 70, 30,143,167,137,136,136, 48, 26,141,198,100,173, 86, 59,246, 67,237,175,233, 23,255,236,217,179,117, -237,237,237,187, 19, 66, 6, 82, 74,253,243,243,243,181,115,230,204,185, 19, 17, 17,145, 87,167, 78,157,143,122,247,238, 77,100, - 50, 25, 30, 60,120, 64,179,179,179,143, 0,152, 77, 41,173, 62,158,249,135, 61, 9,132,144,144,177,227, 54,125, 42,147,109,233, - 77, 41, 66, 64, 65, 8,131,167,121,121,166,179, 42, 21,187,175, 88, 40,154,203,103,196,251,158,179,197,209,209,209, 59, 1,240, - 42,202,193,170, 17,172, 10, 78,106,212, 73,159, 16,169,234,216,154,117,111, 53, 0, 48,255, 71, 69, 30,128,237,147,250,203, 76, -177,191,111, 95,225, 97,243,242,187,117,199,114,118,152, 67,215,184,113, 99,111,134, 97, 6, 3, 8,118, 22, 42,234, 59, 9,242, - 88, 66,104, 39, 66, 24, 71, 0, 79, 2, 3, 3, 79, 3,120,251, 33,166,210,162,182, 66,117,202,111,207,124,118,226, 14,128, 74, -189,214,149,112,221, 39,132,212,159, 60,109,202, 4, 1,143,215, 13, 44,219,104,241,241,195,212,210,236,217, 2, 11, 44,248, 39, -195, 44,129, 5, 0,241, 9,111,123, 0,128,159,159, 31,125,249,242,229, 95, 86,152,197, 2,234, 87, 84, 83,165,189, 58,100,101, -101, 53,253, 43,199, 87, 7, 74,233, 1, 0, 7,254, 78,206, 98, 1,181,168,248,245, 65,160,148, 62, 5,208,226,111, 51,234,195, -108, 40,137,149, 47,172,108, 76,247,238,221,223,232,245,250, 75, 40,250, 71,111, 7, 32,199, 96, 48,156,215,233,116, 25,132,144, -166,107,214,172, 41,169, 84,191,152, 82,250,240, 3,237, 48, 1,216, 95,252,250, 91, 65, 41,221,239,238,238, 62,197,193,193,193, - 71,163,209, 8, 52, 26, 13,191,172,246, 23,139,197, 85,122,217,202,194,206,154,236,226,115,115, 29,236,172,201,159, 4,148,204, - 3, 71,213,133,209, 13,100, 30, 56,106, 46, 95, 84, 84, 84, 66,104,104,232, 94,134, 97,234, 81, 74, 93, 0,106, 75, 41,228,148, -210, 44, 46,151,155, 26, 19, 19, 99, 86,143,204,255, 31, 40, 22, 80,171,138, 95, 22, 88, 96,129, 5,255,120,152, 45,176, 74,240, -226,197,139,127,132,235,206,130,191, 7,213, 9,237,164,164, 36, 45,128,219,197,175,242,199, 62, 4, 80, 77, 32,236, 63,143,180, -180,180,198,127, 7,207,152,239,158,166, 2,248,166,105, 5, 45,151,231,175,207,201, 7,240,109,167, 62, 53,227,124,244,232, 81, - 50, 0,179, 66,190, 22, 88, 96,129, 5, 22,252,255, 67,205,250,198, 88, 96,129, 5, 22, 88, 96,129, 5, 22, 88, 80, 45, 8,128, - 10,103, 2,208, 26,116,202,254,144,217, 4,213,241, 91, 56, 45,156, 22, 78, 11,167,133,211,194,105,225,252,231,113,254,207,160, -100,150,221,191,227, 5,160,171,133,211,194,105,225,180,112, 90, 56, 45,156, 22, 78, 11,231,255,218,171,198, 57, 88, 22, 88, 96, -129, 5,255, 20, 28, 57,114,196,172,166,159,159,126,183, 61, 76, 42,181,159, 91,160,204, 91,254,235,170,209,199, 74,182, 15, 28, - 56,208,236, 25,170, 22, 88, 96,193,255, 22, 42, 21, 88,222,222,181, 2, 25,214,212,134, 82,134, 67, 25,106, 32, 74,245,193,248, -156,156,247,202, 7,212,174, 93,219,142,199,224, 99, 66,169,132, 16, 19,107,226, 48,183, 18, 18, 82, 98, 42,227, 44, 15, 66,136, -192,222,222,126, 34,159,207,239,170,211,233, 60, 25,134,121,171,213,106, 47,169, 84,170, 13,180, 92,193,193,255, 36, 26, 52,104, - 48,228,234,213,171,118,109,219,182,213,138,197, 98,163, 90,173,230,158, 63,127, 94,216,179,103, 79,197,171, 87,175, 62,104,134, -161,135,135, 71,231,237,219,183,123,245,232,209, 3,245,235,215, 47, 28, 60,120, 48,191, 85,171, 86,252, 49, 99,198,188, 78, 77, - 77,141,172, 9, 23, 33, 36,144, 16,178,135, 16,194, 49,153, 76,195,105,209, 12,195,191, 29,132, 16, 6,192,151, 0,250, 1,240, - 6,144, 0,224, 56,128,173,212,140,106,246, 21,240,125, 2,160, 23,128,144,226, 77,143, 1,156,165,148,154, 61,147,174, 50, 78, - 66, 72, 40, 0, 80, 74, 31,253, 93,156, 60, 30, 47, 20, 0, 12, 6,195,223,198,249, 87,237, 36,132,140, 18,139,197, 95, 0,128, - 90,173,222, 70, 41,173,182,109,211,159,176, 37,128, 2, 64,224,138, 56, 0, 64,204,119,254, 48,119, 61,230,117, 13,103, 19, 87, -114, 46,140,141,253,224,201, 51,132,144, 94, 67,135, 14, 93,186,111,223,190,249,148,210, 19, 31,202, 83, 21, 92, 93,107,109, 88, -189,110,171,251, 55, 19, 63, 95,142,162, 14, 14, 85, 34,136,144,110, 2, 14,167,143,142,101,111,196, 0,135, 1,112,101, 50,217, - 16,129, 64,208, 94,167,211,185,113,185,220,119, 58,157,238,122, 94, 94,222, 1, 74,105,165, 29, 11,204, 70, 28,177,215,171,224, - 74, 76,127,244, 97,163, 12,180,124, 43,164,195,159,230, 86,117, 40,135,195, 89,229,225,225,241,165, 66,161, 40, 96, 24,134,146, - 34, 0, 69, 93,210, 74,106,223, 17,147,201,148,154,147,147,243, 65,179,182, 9, 33, 34, 0, 11, 80,212,211,109, 29,165, 85,219, - 84,137,157,223,184,187,187,247, 87, 42,149, 42, 14,135, 67,203,216, 71, 0,128, 97, 24, 98, 50,153, 50,179,179,179,135,127,136, -141, 22, 88,240,119,131, 11,188,215,251,167, 35,165,244,154,183,119,173,192,129,253, 6, 44, 29, 55,118, 60,225,112, 24, 68, 63, -123,198,253,108,248,168,238, 50,153,204, 67,170,213, 6,128, 16,147, 74, 36,138, 54, 24,244,169,135, 15,236,179,246,111,208,128, -101, 89, 19, 54,111,217,212,211,219,187,214, 44,115, 68, 22, 33,196,207,213,213,117,207,140, 25, 51, 92,251,244,233,195,113,117, -117, 69, 82, 82,146,221,175,191,254,218,224,167,159,126, 26, 68, 8, 25, 78,139,106,241,212, 8,132,144,118,174, 50,166,187,181, -152,116, 65, 62,139,124, 3, 46,167,171,113,145, 82,122,163,166, 92, 37, 80,169, 84, 95,169, 84,170, 22,205,154, 53,163,191,252, -242, 11, 25, 57,114, 36, 37,132, 16,181, 90,189, 11, 31, 88,194, 65, 34,145,108,236,209,163,135,175,175,175,111, 66,124,124,124, -175, 67,135, 14,157, 29, 49, 98,132,183, 68, 34,121, 9,192,175,134,116, 59,179,179,179, 67,212,106, 53, 60, 61, 61,127, 1,208, -228, 67,108,170, 10,197, 15,177,163, 50,153, 76,179,104,209,162,109, 29, 59,118,244, 72, 75, 75, 99,167, 79,159,222,230,209,163, - 71, 31, 17, 66,250,153, 43,178, 8, 33,246, 0, 54, 75,165, 82,171,233,211,167, 95,239,214,173, 91,162, 84, 42, 21, 61,121,242, -132, 55,125,250,244, 47, 9, 33,225, 0,198,213,228, 33, 92,194,233,228,228,100, 55,127,254,252,167,173, 91,183,190,198,231,243, -249,207,159, 63,231,205,152, 49, 99,194, 95,225,244,245,245,181,158, 55,111,222,131,208,208,208, 12,145, 72,196,143,143,143,231, -205,154, 53,107, 28,135,195, 9, 55,153, 76, 31,196, 41,147,201,108,102,205,154,245,176, 67,135, 14,114,161, 80, 40,136,137,137, -225,206,156, 57,115, 92, 77,236,116,112,112,232,228,224,224,176, 53, 61, 61,157, 11, 0,110,110,110,205,125,124,124,126, 42,169, -135, 6,252,209,171,210, 96, 48,228,107, 52,154,161,217,217,217,127, 42, 96, 27,184, 34, 14,223,206,219, 53,228,219,121, 69,235, -187,139,183, 87,183, 14,140, 52,251,187, 31,232, 85,244,140,153, 48,237,231, 97, 69,239, 69,219, 55, 21,155,186,209,139,208,154, -136, 53, 66, 72,223,206,157, 59, 47,136,140,140,220,212,177, 99,199,233,123,247,238,117, 78, 73, 73,249,129, 16, 82,235,211, 79, - 63, 29,121,249,242,229,101,114,185,252,136,185,124,213, 65,192, 23, 10, 9, 67, 32, 22, 89,217,152, 51,158,199, 48, 97,183,251, -246,253, 98,219,243,231,141,127,138,139,243, 42,116,115,107, 49,105,210, 36,151, 1, 3, 6, 48,181,106,213,194,171, 87,175, 28, -246,238,221, 27,176,109,219,182,254,132,144,175, 41,165,111, 62,216,184, 56, 98, 95,168, 64, 67,173, 14,141, 41,133, 93,201,102, - 66,160, 16,234, 17, 37,137, 35, 79, 43, 19, 89,132,144, 31,251,246,237, 59,252,248,241,227,210,189,123,247, 74, 91,183,110, 13, - 23, 23, 23, 16, 66,192,178, 44, 76, 38, 19, 76, 38, 19, 40,165,240,245,245,253, 43, 51,200,215,222,184,113,227,203, 87,175, 94, - 97,204,152, 49, 28, 0,115,106,114, 48, 33,100, 74,255,254,253,123, 71, 68, 68,136, 15, 31, 62, 44,110,214,172, 25, 92, 93, 93, - 1,160,212, 62, 74, 41,188,188,188,254,130,137, 22,252,167, 81, 94,139,252, 39,109,249, 59, 80, 81, 47, 66,194,176,166, 54,227, -198,142, 39,131,135,124,154,254, 42,225,181,137,203, 19, 12, 57,127,225,130, 85, 96, 96, 32,163,221,176, 1, 70,185, 28,134,201, -147, 91, 95,186,116,201, 16, 62,100,152,154,199, 33, 59,189,189,234, 89, 29, 60,240,171,107,196,209, 35,109, 0, 84, 41,176, 8, - 33, 2, 87, 87,215, 61, 87,175, 94,245,240,242,242,130, 66,161, 64, 82, 82, 18, 10, 11, 11, 49,104,208, 32, 94,155, 54,109, 60, - 6, 14, 28,184,135, 16,210,214, 92, 79, 22, 33,196,165,190, 39,247,244,234,121,131,252,122,118,111, 35,241,168,229, 3,154,174, - 65, 74,124, 92,179,211, 87,239, 78,242,181, 99, 94,188,202,163, 97,148, 82,179,138,140,150, 69, 86, 86,214,119,253,251,247, 63, -218,169, 83, 39, 39,161, 80, 8,119,119,119,210,167, 79,159,204,180,180,180, 74,235, 63,153, 97, 47, 0,128, 97, 24,182,236, 59, - 33, 31,244, 12,243,180,183,183,135,189,189, 61, 0,120,124,168, 77, 0, 16, 30, 30,206, 73, 78, 78,254,194,100, 50, 5,148,221, -238,236,236,220,128,101,217,220, 55,111,146, 27,168,117,250,128,241, 19,103, 45, 24, 60,176,171,221,237,219,183, 77, 61,122,244, -208, 94,191,126,253, 75, 0,155,205, 60,205,230, 70,141, 26,197,175, 93,187, 86,251, 50, 33,177, 94,116,236, 75, 72, 68,124,182, - 86,173, 90,194,152,152, 24,237,220,185,115, 11,215,173, 91,183, 25, 64,120, 13, 76,223,220,179,103,207,220, 57,115,230,100,190, -136, 79,116,123, 28,243,130, 74,133,124,131,139,139, 51,231,225,195,135,154, 31,126,248,193,180,108,217,178, 26,115, 14, 27, 54, - 44,109,250,244,233,137,242,108,133, 71,174, 34,159, 10, 84, 42,189,167,167, 39,247,202,149, 43, 5, 63,255,252,179,118,250,244, -233, 53,230,236,216,177, 99,250,226,197,139,147,227, 94, 38,184, 71, 69, 63,135, 84,200, 51,184,186, 58,115,162,162,162, 84,203, -150, 45,211,175, 88,177,194, 44, 78,137, 68,178,251,208,161, 67,220, 19, 39,138,156, 54,119,238,220, 97,188,189,189,173,202,142, - 81,107,180, 96, 8,144,149,149,101,213,170, 85,171,221, 0, 60, 43,227, 27, 49, 98, 68,122, 13,174, 3, 35,180, 43,204, 27,184, - 37,128,150, 8,171,241,227,199, 87, 86,155,107, 88, 96, 13, 68, 86,175, 94,189,102,159, 57,115,198,103,239,222,189,107,246,239, -223,175, 3, 0,145, 72,228,248,235,175,191, 46, 27, 52,104, 16, 6, 13, 26, 52, 23,192,223, 38,176, 88,202,234, 1, 64, 40, 18, - 10,227,226,226,136,191,191,127,149,133,144,245, 38,211,195,109,207,159, 55,253,151,191,127,179, 28,147,169, 62,191,103,207,130, - 41, 83,166,100, 41,149, 74, 36, 37, 37, 65,175,215, 99,228,200,145,156,142, 29, 59,186, 15, 26, 52,104, 61, 33,228, 19, 74,169, -190, 58, 59, 74,188, 77,121,121,121, 5, 37, 94,156,128,122,214,220,246,161, 70, 97,163,250, 6, 1,159, 99,228,127, 60,217, 68, - 46,110, 32,133,254, 94,184, 9, 0,124, 21,228,124,224, 79, 2,139, 16,178,162,111,223,190,131,142, 31, 63,110, 15, 0, 71,142, - 28,129, 74,165, 66,157, 58,117,192,231,243,193,227,241,192,227,241, 74,151,107,242,108, 34,132, 76,147, 74,165,189, 10, 10, 10, -142, 83, 74,215, 3,240,109,219,182, 45,188,189,189, 1,160, 77,241,152,225, 28, 14,231, 83,150,101,183, 82, 74,143, 87,193, 53, -169,111,223,190,221, 34, 34, 34,172, 75,236, 52, 24, 12,240,246,246, 6,159,207,135, 64, 32, 40,181,211,130,255,126,148,213, 34, -255,105, 91,254, 42, 74,203, 52, 20, 95, 80, 71, 0,160,148,225,112, 56, 12, 94, 39, 36, 25, 58,117,234, 50, 34, 57, 57, 89,218, -162, 69, 11,134,199,227,161, 48, 50, 18,154, 7, 15, 32,149, 74,209,191,127,127,222,245,235,215,109,108,164, 54, 99, 18, 95, 39, -230,115, 56, 12, 40,101,170,205,105,176,183,183,159, 56,107,214, 44, 87, 95, 95, 95, 24,141,198,210, 10,228, 70,163, 17, 41, 41, - 41,144, 74,165, 24, 62,124,184,179,149,149,213, 68,115, 46,130, 16, 82,215,207,219, 57,234,234,217, 45, 77,166,140,235, 37,241, -179,250, 13,146,148,175, 33, 61,242, 47, 4,164,157,199,140,126, 45, 36, 23, 55,206,109,236,227, 46,139, 34,132,212,173,233, 77, -210,104, 52, 55,163,163,163,199, 92,187,118,205, 4, 0, 87,174, 92,161,177,177,177, 99,255,202,175, 78,147,201, 4,133, 66, 1, -147,201,196, 41, 94, 47,121,255, 80,202,191,140,240,240,112, 78, 74, 74,202,216,128,128, 0,191,123,247,238,225,228,201,147,184, -116,233, 18, 46, 92,184, 0,129, 64, 80,123,224,192,129,114,121,182,194, 94,161,200, 19,189,123, 27,223,252,215,173, 91,221,211, - 18, 19,111,239,219,183,175, 0, 69, 97,195,106, 65, 8,249, 68, 42,149,138,215,172, 89, 83,104,109,231,218,187, 69,203,118,205, -120, 34, 27, 71,190, 80,234,148,151,167,212, 63,126,252, 56,110,229,202,149,126, 13, 26, 52,176, 47, 14,163,153,197,233,232,232, -104, 59,123,246,108,189,149,181, 83,187,102, 45, 90, 6, 11, 68, 54, 50,158,192, 74,214,166, 77,155,254,113,113,113,137,243,231, -207,247, 8, 13, 13,117,174, 9,167,151,151,151,245,244,233,211,181, 54,182,178,110,129, 1,129,141, 91,183,106, 62,184, 73,147, - 38,195,185, 92, 46,155,145,145,241,114,202,148, 41, 30, 29, 58,116,112,168, 9,167,189,189,189,245,226,197,139,117,245,188, 27, -124,242,241,199, 97,157, 68, 86,118, 50,129,216, 90,166, 86,171,217,216,216,216, 87,139, 22, 45,242, 8, 9, 9,113, 52,135, 83, -165, 82,241, 28, 29, 29, 17, 28, 28,140, 64,111,111,228,229,229, 33, 34, 34, 2, 59,119,238,196,246,237,219,113,224,192, 1, 52, -109,219, 29,214,214,214, 72, 75, 75,131, 82,169,228, 85,196, 83, 26,166,251,119, 96, 75, 0,221,100,154, 56,108,252,248,241,169, - 85,136, 43,140, 31, 63, 62,117,194,180,159,135,149,132, 16, 43, 3, 33,164,111,151, 46, 93,158,156, 61,123, 54,126,239,222,189, - 8, 12, 12, 68,143, 30, 61, 4, 0, 48,113,226, 68,193,160, 65,131,112,232,208, 33, 28, 57,114, 36,198,207,207,239, 22, 33,164, -175, 57,102, 14, 31, 62,188,109,120,120,248,141,240,240,240, 71,131, 7, 15,222, 58,118,236, 88,247,178,251,223,165,189,125,168, -211,233, 16,210,184,153,213,226, 95,238, 13,173,142, 47, 22,216,187, 53, 46,110,231,242,103,207,222,204, 13, 12,180,171,147,152, - 40,219,181,106,149, 99, 73,243,108,131,193,128,148,148, 20,216,219,219, 99,232,208,161,142, 66,161,176,218,176, 86,177,183,105, - 84,114,114,178,116,219,182,109,110,143, 30, 61,114,127,247,238,157,219,229, 75, 23,156,190,157, 58,209,218, 86, 42, 16,164,201, -139, 4,106, 98, 26, 36,113,175,209,150, 82,216,149, 13, 27,150,133,167,167,231,151,199,143, 31,119, 45, 89,183,183,183,127, 79, - 80,149, 95, 6, 67, 25, 89, 16,217, 81,183, 47,201,180, 11, 36,223, 84, 97,103,239,195,135, 15,175, 76, 76, 76,236, 16, 22, 22, -182,142, 16, 82,167,130, 49, 78,157, 58,117,218,246,252,249,243, 30,125,251,246, 61, 70, 8,233, 94, 25,159,167,167,103,255,227, -199,143, 59,148,172, 59, 58, 58, 66, 36, 18,253, 73, 92,241,249,124, 48,140,165,242,208,127, 59,202,106,145,255,118,148,126, 27, -105, 81,193,200,171, 0, 64, 9, 41,124, 18, 29,205,227, 8, 4,195,246,237,223, 47,228,243,249,120,243,230, 13, 98, 98, 98,160, -186,124, 25,234,219,183,145,145,145,129,130,130, 2,184,184,184, 96,203, 47,191, 72,116, 44, 29,253,252,197, 11, 14,101,254,200, - 39,160,149, 76,213, 20, 10,133, 93, 7, 12, 24, 80,169, 16, 75, 75, 75, 67,175, 94,189,120, 28, 14,231, 79,211, 67,203,115, 18, - 66,136,187, 19, 57,117,249,232, 98, 55, 55, 65, 12,240,106, 10,144, 31, 5, 80, 45, 96,212, 1,169, 79,129, 51, 11, 81,167, 32, -142, 92, 88, 60,194,213,195,138,123,138,148,251, 41, 86,153,157,101,206,225,237,239,239,191,125,216,176, 97, 12, 0,116,238,220, -153,248,251,251,111, 37,132,120, 87,118, 76,117,156, 42,149,234,110,110,110, 46, 6, 13, 26,228,224,227,227,115,105,208,160, 65, - 14, 37,219, 63,148,179, 24, 14, 65, 65, 65,217, 98,177,248, 0, 33,164,194, 7,107,101,156,201,201,201, 95,248,251,251,215,223, -182,109, 27,135,195,225, 96,219,182,109, 56,120,240, 32,110,222,188,137,236,236,108,233,148, 41, 83,108, 79, 95,186,123,254,214, -205,251, 39, 87,205,153,230,208,191, 75, 71,111,251, 60,185,210,195,195,163, 43,138,114,178,204,177,179,215, 87, 95,125,117,241, - 81,108,130, 51,135,199,231, 11,120, 92,177,147,163, 93, 29, 87, 39,251,250, 30, 14,246,245,173, 5, 60, 59,165, 82,249,250,208, -161, 67, 5, 40,202,207, 50,139,115,222,188,121,143,227, 18, 82, 28, 24, 30,151,203,231,242, 5,118,182, 82,135, 62, 97,221, 59, - 1,128,152, 67,132, 74,165, 50,101,247,238,221,133, 53,225,156, 59,119,238,157,119,242, 92,103,190, 72,196, 17, 10,121,165,247, -210,222, 70,234, 34, 17, 10,197, 42,149,234,205,246,237,219,243,106,194, 57,115,230,204, 7,207, 94,190,113, 36, 12, 56, 12, 8, -207,222,222,218,217,201,206,218,213,217, 70,234, 42, 98, 32, 82, 42,149, 73,187,119,239, 86,154,195,169,215,235,121,153,153,153, -136,139,139, 67,173,102,205,112,233,210, 37,212,174, 93, 27,131, 6, 13,194,167,159,126, 10,177, 88,140,206,173, 26, 98,214,172, - 89,136,143,143,135,209,104, 20,152,105,103, 41,220,221,221,175, 86,182,175, 36,143,170, 50,206, 64, 47, 82, 42,174,204,225,174, -104, 92,121,206, 94,189,122,205,190,124,249,178,207,158, 61,123,250, 12, 31, 62,252,230,158, 61,123,208,178,101, 75,196,198,198, -162, 94,189,122,216,181,107, 23, 62,253,244,211,155,235,215,175,239,243,251,239,191,135,120,121,121,205,170,142,115,240,224,193, - 19, 66, 67, 67, 35,211,211,211, 91,229,228,228, 4, 71, 68, 68,140,238,223,191,255,235, 33, 67,134,116, 41, 25,195, 26, 12,251, -207,156, 60,138,222,125, 6,160, 65, 80,240,230,145,179,246, 54,172,138,147, 82, 74,159, 1, 91,119,190,123, 39,223,175,209,168, - 6,241,120, 86, 86,247,238,201,142,108,218,228, 88, 18,182, 5,128,212,212, 84,124,252,241,199, 60, 62,159,223,174, 42, 59, 9, - 33, 43,250,245,235, 55, 40, 34, 34,162,212,219,116,251,246,109, 60,125,250, 20, 73, 73, 73, 80, 40, 20,232, 50,182, 0,227,151, - 21,113,143, 95, 70,209,125, 34,149, 84,197, 89, 80, 80,160, 62,118,236, 24,194,195,195,241,229,151, 95,194,203,203,171, 84,100, -149, 23, 87,215,238,255, 6, 65,112,142,172,237, 86,140,234,118, 2, 78, 18, 79,204,172,196, 78,126,215,174, 93,183,244,233,211, - 7, 44,203, 66,163,209,152, 0,228,148,183, 3, 0,167, 94,189,122,188, 90,181,106, 97,201,146, 37,176,179,179, 91, 75, 8,225, - 84,196, 89, 88, 88,168, 61,123,246, 44,134, 15, 31,142,175,191,254, 26,245,235,215, 47,181,115,247,222,131,142,159,142, 30,231, -215,164,109,251,144,192, 38, 45, 27,229,107, 57,205,248, 86,178, 47,202, 63,227, 43,250,140,254, 14, 88, 56,255,126,148,213, 34, -255,237, 40, 13, 17,150,109,121, 98, 48,225,212,176, 17,163, 63,190,116,249,178,149, 64, 32, 64, 98, 98, 34, 50, 50, 50,112,240, -192, 1,246,176,179,179,138,199,227,209,161, 59,119, 90,127,254,197, 23,132,199,227,193,223,223, 31, 3, 7, 14, 20,127, 50,104, - 72,166, 19,143,119,176,186,147, 18, 66,220, 74,226,231,163, 71,143,198,143, 63,254,248,222,254,111,191,253, 22, 7, 14, 28, 0, - 33,196,181,162,227,203, 33,124,210,194,126,158,246, 94,118, 25, 52,106, 55,143,112,172,100,224, 88, 1, 12, 31, 16,113,138, 68, - 22,195,129,246,247,200, 28,166,229, 33,229,128,118, 42,143,117,231,183,132, 3, 56,100,238, 77,114,119,119,159, 27, 25, 25,233, - 52,101,202, 20,170, 84, 42,201,187,119,239,232,210,165, 75,157, 38, 76,152, 48, 23,192, 8,115,121,202, 34, 45, 45,109,113,239, -222,189,123,156, 57,115,198,101,196,136, 17,182, 0,208,187,119,239,140,180,180,180,197, 31,194, 87, 2, 62,159,207,121,246,236, -153,108,205,154, 53,159, 78,157, 58, 53, 40, 56, 56,216, 85,161, 80, 36,165,166,166, 14,172,206,227,102, 50,153, 2,182,109,219, - 6, 14,167,232, 57,199, 48, 12, 4, 2, 1, 4, 2, 1,108,108,108,114, 19, 18, 18, 76,117, 93,196,130,194,140,119,121,246, 92, -123, 30,113,115,117,176,115,117,235,152,157,157,125, 15,128,173,153, 38,134,124,244,209, 71, 79,110, 63,122,197,142, 27,209,169, -190, 21,159,225, 89,139, 69, 28,177,128, 71, 8,165,172,222,160,107,181,113,247,149, 29,126,126,126,129, 48,211, 69, 76, 8, 9, -109,217,178,229,229, 71,177,111,240,232,105,252, 91, 39,153,149,195, 71,157,219, 52, 40,217,223,168,121,203, 79,203, 12, 87,152, -195,201,229,114, 67,154, 53,107,246, 54, 35,167, 16,206, 50,219,247,132,180,189,163,115, 87, 0, 40,204,203,219, 88,171, 86, 45, -127, 46,151, 91, 89, 51,204, 63,217,217,174, 93,187,119,191,199, 36,195,213, 73, 38, 43,222,252, 94, 78, 79,214,187,119,155,125, -125,125,253,205,241,180,234,116, 58,225,241,227,199,241,251,239,191, 99,113, 80, 16,190,173, 91, 23, 78, 78, 78,184,124,249, 50, - 40,165,144, 74,165, 80, 40, 20, 56,116,232, 16,186,116,233, 2,157, 78,247,167,127,184, 64, 73, 14, 86,229,231,113,119,119,191, -154,150,150,246,111,249, 69, 89,158, 59,112, 69, 28, 98,170,232,148,121,246,236,217,189,123,247,238, 93, 22, 24, 24,136,111,190, -249,166,237,218,181,107,111, 6, 7, 7,183,237,220,185, 51, 34, 35, 35, 49,122,244,232,155,235,215,175,111, 59,110,220, 56,108, -222,188, 25,175, 95,191,254,165,170,243, 15, 30, 60,120,193,152, 49, 99,230,108,216,176,161,200, 75, 3,160, 95,191,126, 64,209, -179,113, 71,120,120,120,118,201,216,195,219,223,222,246,242,246,109, 61, 97,210, 52,193,196,113,195,103, 0,248,180, 66,210, 98, - 80, 74,169,187,187,123,190,177,125,251,156, 67,119,238, 96, 48,159,111,181,255,209, 35,156,210,104,208,174,127,255, 44, 0,152, - 57,115, 38,246,236,217, 3, 0, 46, 85,113,121,122,122,126,121,236,216,177,210,239,138,131,131, 3, 4, 2, 65,145, 8,226,242, -192, 97, 57,184,180, 89,130,132,100, 21,198, 47,163,216, 52,147,160,158, 59, 10, 67, 27, 84,206, 73, 8, 65,155, 54,109,160, 84, - 42,193,225,112, 96,109,109, 13,153, 76,246,158,184, 82, 22, 40,176,242,151, 5,200,108,112, 21,221, 78,130, 33, 28,224,241,247, - 64,254,171, 74, 91, 58,125,188,102,205, 26, 55,141, 70,131, 43, 87,174,224,242,229,203, 63, 81, 74, 11,202,235, 29, 74,105, 58, -135,195,217,185, 98,197,138,209,238,238,238, 24, 63,126,188,223,210,165, 75,251, 1,127,230, 37,132,160,105,211,166,208,104, 52, -224,241,120,176,177,177,129, 78,111,228,133, 15,251,210,187,142, 79,176,112,233,170,165,140,139,140, 11, 46, 35,195,203, 55,106, -219,117, 63, 46, 89,119,247,198,245,207,137,149, 99,127,170,202,122, 87,213,125,181,224,255, 30, 72, 53,237,215,254,155,192, 5, -254,220,238, 36, 57, 57, 89, 33,147,201, 60, 26, 52,104,192,232,116,186,162,208,195,145, 35,236,246, 29, 59,206,104, 52,154, 73, - 0,248, 27,126,254,121,179,135,167,103,167, 97,195,135, 19,131,193,128,222,189,123, 11, 78,159, 62,237, 16,159,145, 81,109,163, -226,242,191, 46, 70,142, 28,137,181,107,215, 2, 0,190,250,234, 43, 0, 69, 46,244,138,126,133,148,135,212, 22,189,122,132, 53, -181, 73,145,252,100,163,111,109, 40,168, 27,111,125, 87, 82, 32,110, 10, 70,192,133,136, 3,147,222, 96,124,153,217,255, 97,252, -203,128, 64,113, 78,118,189,174, 65, 29,176,253,183, 61,189, 80, 3,129,101,101,101,213,220,218,218, 26, 15, 31, 62,204,105,218, -180,169,130, 82,106,187,120,241, 98, 71, 43, 43,171,230,230,114,148, 7,165, 52,145, 16,210,190, 77,155, 54, 19, 25,134,233,106, - 50,153, 46,101,100,100,108,160,148, 38,154,115, 60, 33,100, 60,128,249, 40,147,103,162,211,233,192, 48, 12, 40,165, 24, 60,120, - 48,102,206,156, 25,248,244,233, 83, 68, 70, 70,202,186,118,237,122,151, 16,162, 0,240, 57,165,180, 82, 47, 89,118,118, 54, 54, -109,218, 4, 14,135, 3, 59, 59, 59, 88, 91, 91, 67, 36, 18,161,109,219,182,233,203,151, 47, 15, 56,122,244,168, 74,145,153, 73, -196,249,121, 90,226,224, 32,130,123,237,143, 70,246, 31, 16,141,162,217,132,102, 65, 34,145, 88, 9,160,205,103, 88, 13,179,114, -193, 70,174, 21,159, 79, 68,124, 46,132, 38, 21,103,214,242, 37, 84, 68, 40, 15, 69,222, 85,179, 26,126, 3,128, 72, 36,226, 75, - 4, 84,203, 19, 50, 6, 43,166,230, 51, 26, 43,130, 64, 32,224, 11,121,133,234,202,246,243, 25,194,225,112, 56,213,122, 9,203, - 66, 44, 22,243,165, 2, 86, 91,217,126, 17, 3, 14,195, 48,149,114,134, 7, 17,122,120, 98,105, 72,175,212, 54,163,209,136,230, -205,155,227,215, 19, 87,112,246,242,109,100,189,121,130, 73,227, 71,195,215,215, 23, 23, 46, 92,168,137,137,127, 66, 90, 90, 90, -133, 34,171,202,208, 98,113,222, 85, 85, 97,193,247,184,231,217, 86, 59, 43,145, 16,210,183, 93,187,118, 19,246,239,223,175,251, -232,163,143, 4,131, 7, 15, 70,112,112,112,219, 81,163, 70, 1, 0,186,118,237,138,181,107,215,182, 29, 53,106, 20, 14, 30, 60, -136,136,136, 8,109,199,142, 29,167, 19, 66, 82, 41,165,103, 43,226, 52,153, 76, 31,111,217,178,229,189,109,122,189, 30, 70,163, - 17, 6,131,193,205,104, 52,186, 21, 63,139,176,110,221,250,172,139, 23, 78, 99,250,172,133,112,118,114, 13,173,234,186, 74,192, -225,112,200,200,105,211,178,118,173, 90,133, 85, 7, 15, 98, 90,189,122, 86,123, 98, 98,112, 81,163,193,161,200,200,172,226,243, - 84,155,223, 84, 88, 88,168, 62,123,246,172,205,161, 67,135, 96,103,103,135,250,245,235,151,138, 33,134, 35, 6,135,111,143, 6, - 65,205, 1,220, 7, 0,212,115, 71,161,191, 23,110, 18, 2, 5,101, 80,233,247, 77, 44, 22,195,213,213, 21, 92, 46, 23,143,158, -223,135,181,194, 6, 77,130, 90,128,199,227, 33,191, 48, 15, 19, 86, 13,132,239, 18, 57, 26,250, 3,234, 12,224,222, 20, 24,210, -111, 99,141, 42, 5, 27, 43,161,108, 92,187,118,109,104,181, 90,108,219,182,141,162,232, 25, 85, 33, 76, 38,211,236,213,171, 87, -143,152, 55,111, 30,167, 89,179,102, 0, 16,138, 10, 4, 22, 0, 72, 36, 18,120,120,120,148, 10,191,193, 35,198,121,143,157, 50, - 78,220,191,123, 39,112,185,142, 80, 20, 26,144,157,111,128,189,163, 20,211,167,132,139, 46, 53,245,104,182,101,253,190,147,132, -144,102,180,172,203,208,130,255,211, 40,175, 69,254,219, 81,105,153, 6,161,193,208, 64,187,121, 51, 10, 47, 93,130,224,226, 69, - 28,114,119, 47,208,104, 52, 83, 41,165, 41, 0, 64, 8,249,102,231,174, 93,183,250,220,185, 99,163,139,139,131,247,211,167,224, -217,217,153,245,208, 41,139, 29, 59,118, 64,169, 84, 34, 47, 47, 15, 0,240,211, 79, 63, 65,169, 84,162, 36, 87,161,218, 11,224, -163,173,171,115, 61,164,227, 37, 76, 92, 70,154,212, 64,213, 82,170,177, 78,243, 72,118, 41,204, 99, 60, 16,247,166,133, 68,157, -173,107, 73, 56, 58,104,178, 84,240,104, 83, 31, 92,112,219,214,196,198,146,184, 62,151,203,205,121,241,226,197,199,126,126,126, -167, 0, 56,254,213,120, 63,165,244, 21,128, 73, 31,114, 44,135,195,153,255,250,245,107,231, 95,126,249,101,226,226,197,139, 41, -240,135,192, 42, 89,230,114,185,160,148,194,214,214, 22, 60, 30,207,229,246,237,219, 46, 45, 90,180,216,136,162, 7, 89,133,176, -178,178,130,139,139, 11,120, 60, 30,108,109,109, 81,168,204,149,108, 90, 58,167,163,149,189,139,108,218,180,105,204,200,145, 35, -227, 55,110,220, 88,219,181, 65, 3,255, 39, 79,158,188,233, 51, 48,252,247,179,103,207, 2,192, 86, 51, 77,127,252,244,233, 83, -129,175, 79, 93,174,201,160, 54, 73,248,128,232,241, 58,147,192,218, 21, 34, 14, 7, 92, 2, 42,182,146, 56,191, 74, 74, 74, 3, -144,105, 14, 33,165,244,209,203,151, 47,121,158,238, 46,220,252, 66,141, 66,194, 53, 9, 94, 63,184, 31,235,213,172,121, 0, 0, -104, 30,220, 62, 38,108, 16,100,253, 58, 83,110,227,237,237,157,100, 14,167,209,104,124,156,152,152,200,247,240,240,224,189,124, -249,106,159,131,141,181,187,204,197,165, 35, 0,232,114,228,215,137, 90,147,198,227,241, 60,210,210,211,229, 70,163, 49,205, 92, - 59, 95,188,120,193,247,116,119,225,158, 58,115,246, 87, 87,137,149,155,157, 88,104, 43, 98, 64, 68,212,148, 39, 48, 26,211,197, - 86, 18,247,215,201,201, 89,148,210,183,149,241,108, 50, 77, 28, 6, 0, 28,206,180,237,101,183,223,188,121, 19, 87, 30,190,134, - 45,135, 5,207, 80,136,187, 17,135, 48,224,171,201,213,254, 45,197,124,231, 15,104, 87, 28, 8,244, 26,249,199, 58, 74, 66,128, -110, 0,254, 44,132,202,142,251, 32,108, 9, 40, 13, 1, 20,115, 35, 45,173,234,135,235,208,161, 67, 23,238,221,187,183,116, 18, - 71,108,108, 44, 58,119,238, 12, 0, 88,184,112, 33,122,244,232,129, 22, 45, 90, 32, 54, 54, 22,190,190,190,136,140,140, 20,114, - 56, 28,225,176, 97,195,150, 2,168, 80, 96,149,197,214,173, 91, 49,122,244,232,138, 18,166,227, 1,104,136,189,127,193,204,229, -187, 29,115,178,179,144, 41, 79,127,100,238,165, 18, 66, 48,114,218,180,172, 45, 58, 29,246,223,187,135,225, 18,137,213,174, 87, -175,208,187, 69, 11, 52,236,220, 57,203,156,103, 93, 69, 94, 28, 7, 7, 7,240,249,124,112,120,238,224, 10, 66,192,240,249,104, -220, 46, 4,171,166, 74, 84, 35,122, 98, 61, 33, 80, 8, 5,136,226, 91,161,194,201, 11,132, 16, 24,141, 70,240,120, 60, 28, 58, -191, 11, 79,236,246, 1,249,192,173,168,190,152, 60,122, 54,190, 91,251, 37,252,150,202, 97,235, 7,100,222, 5,238, 79, 97, 76, -121,137,166, 49, 90, 57,206, 81, 74,179, 43,226, 20,139,197, 1, 98,177, 24,133,133,133,120,249,242,229, 27, 74,169,178,178,107, -162,148,102,116,237,218, 53,147,195,225,184,121,120,120, 0, 64,237, 74,236, 36, 38,147,169, 52,207,106,207,254,195,142,161,237, -189, 69,221,218, 6, 98,247,169,239,241,175,240,245,224,113, 8, 88, 86,143, 53,107,195,192,106, 11, 16,222,231, 75,210,161,171, -111,200,165, 83,186, 49, 0,182, 85,123,131, 45,176,224,223, 0, 6, 0, 8, 33, 29, 8, 33,148, 16,210,161,100,135,137, 82,147, - 49, 39, 7, 84, 91,244,227,135,199,227, 81, 0,101,103, 40, 89,217,217,217, 17,158,167, 39,136,176,232, 7, 55, 5,254,182,162, -123, 6,131,121,165, 97, 76, 44, 56, 32,122,208, 50,206,142, 66, 17,193,247,142, 93, 48, 73, 48, 23,233, 2,187, 63, 6, 83, 10, - 24, 41, 88,152,204, 42, 46, 88, 6,180,160,160, 0, 70,163,209,222,199,199,231,140,209,104,180, 47,162,251,207,253, 50, 98, 89, - 54,129,195,225, 96,226,196,137, 64,113, 40, 77,167,211, 33, 61, 61, 29, 90,173, 22, 58,157, 14,175, 95,191, 70, 94, 94, 30,116, - 58, 29,158, 61,123, 6, 47, 47, 47,112, 56, 28,183,170,120, 77, 38, 19,156,156,156,224,230,230, 6,109,161, 82,114,116,235,218, -222, 43, 22,206,116, 28,226, 67,153, 95,214,175, 54,121,122,122,102, 7, 5, 5,185, 10,133, 66,125,147, 38, 77,180,167, 78,157, -186, 8, 96, 64, 13,234, 96,157, 93,180,104, 81,139, 22, 45, 90,212,181,147, 74,244, 66, 1, 7, 66, 99, 33, 21,106,179, 41, 87, -157, 69,235,120,214,213, 67, 34,109, 62,120,240, 96, 1,204,248,167, 88,194,249,221,119,223,213, 15, 8, 8,112,180,179,145, 40, -185, 12, 82,249, 44,155,154,251,240,246,111, 0,192,119,116, 86, 67, 34,109, 94,156, 67,103, 54,231,244,233,211,131, 60, 60, 60, - 28, 24,134, 40,140,122,253,155,146, 29, 68,163,206,224, 8, 69,133, 16,138,218,125,254,249,231,188, 26,114, 6, 52,106,212,200, -193,222,214, 70,193, 99, 72, 50,159, 53,166,136, 41,251, 86, 96,208,203,133,206, 46, 5,144, 72,219, 12, 25, 50,132, 91, 25,103, -137,247,170,188,103,136,203,229, 34, 53, 53, 21,170,180, 39,224,167,198, 33, 68,202, 79, 61,231, 46, 0, 0, 32, 0, 73, 68, 65, - 84, 67, 75, 87, 71, 72, 36,146,234,127,172,140,141, 37, 24, 27, 75, 98, 94, 83, 18,243,154,146,178,235,101,135,165,165,165,193, -125, 81, 30,222, 27, 87, 9,202,231,103,189,135, 45, 1, 87,203, 31, 91, 44,178,170,252,123,218,183,111,223,172, 78,157, 58,101, -246,232,209, 67,119,230,204, 25, 16, 66, 16, 25, 25,137,212,212, 84,244,232,209, 3,148, 82,220,189, 91,228,156,125,244,232, 17, -186,118,237,170,107,223,190,125,234,190,125,251, 42,245,162,148,197,232,209,163, 97, 48, 24, 80, 80, 80,128,156,156, 28,156, 62, -125, 26, 33, 33, 33,212,202,202,106, 0,167, 86,247,239,195,199,204,106, 29,220, 40, 20, 27,215,175,210, 9,184,188,229,230,112, -150,128, 16,130, 17, 83,167,102,229, 53,110,156,179,167,176, 80, 53,210,198,198,202, 39, 37, 69,246,240,194, 5, 71,189,190,218, -201,131, 0,254,240,226,120,122,122,150,138, 43, 62,159, 15,174,192, 9, 28, 73, 67, 8, 28,122,192,202,117, 0,174, 68, 9,181, -182, 18, 28,179,150,226,188,196, 14,149,150,104, 0, 64,140, 70, 35,248,124, 62,174,254,126, 14, 33,179,129,144,217, 64, 90,243, - 19,248,116,242, 71,112,156,244, 2,182,126, 64,250, 13, 64,177, 42, 4,134,215,182, 74,173, 28,135, 42, 19, 87, 0,160,213,106, - 53, 44,203,130, 16, 2, 62,159, 47, 40,179,235,214,213,171, 87,113,249,242,101, 0,120, 89,178, 49, 55, 55,151, 50, 12, 3,137, - 68, 2, 0, 21,134,176, 1,128,101,217,210,124,176,171,119,175, 59,124,250, 73, 24,185,253,248, 55,180, 9, 25,130,236, 2, 61, - 50,242,244, 80,168,128,160,102,115, 16,220,245, 24,158,188,206, 71,104,163, 96, 14, 71, 32,249,160, 20, 14, 11,254, 51,168, 72, -139,252, 55,163,196, 5,115,181,124, 98,153, 81, 40,124,102,156, 48, 1,118, 39, 79,130,247,242, 37, 70,141, 24, 97, 99,101,101, -181,158, 16,210,132, 16,210, 70, 42,149,110, 92,176, 96,129,181,227,178,101,112,191,126, 29, 73,167, 79,195,192,227, 61,248, 16, - 35,212,106, 53,184,220, 34,103,154, 78,167,131, 68, 34, 1,203,178,128, 25, 33, 34,214,136, 59,169, 25,113, 16,160, 46, 76,160, - 5,231,149,237,239, 13, 73,152,227,124, 90,233,229,251,170,144,239,187,200,169,165,243,250, 58,109,239, 21, 18,110,129,192, 78, -132,228,228, 20,176, 48,221,169,137,125, 26,141, 38,175,176,176, 16,161,161,161, 14, 15, 31, 62,244, 9, 9, 9,145, 21,111,191, -255, 1,151, 91, 10, 66, 72, 43, 15, 15,143,195,158,158,158,137, 30, 30, 30,135, 9, 33,173,106,112,248, 47, 55,110,220, 0,135, -195,193,130, 5, 11,144,159,159, 15,189, 94,143,236,236,108, 36, 39, 39, 67,167,211,225,237,219,183,120,254,252, 57,116, 58, 29, -146,146,146,160,213, 86, 26, 41, 40,133,193, 96,128,181,181, 53, 20,217,153,146,131,155, 86,247,254,126,225, 92,113,222,171,223, -241, 54, 45, 3, 38, 86,157,182,114,229,202,231,190,190,190,151,245,122,125, 45,147,201,212,129, 82,186,197, 92,161, 73,138, 10, -149,222,244,247,247,111,177,114,229,202, 14,115,151,111, 23, 90,115,242,169,192, 90,104, 18, 88, 11,168,192,191, 37,198,204,223, - 32, 90,190,116,241,163,199,143, 31,231,152, 83,116,179,132,179,101,203,150, 65,233,233,233,109, 67, 66, 66, 66, 93,235,251,137, -132, 30,238, 89, 2,247, 58,217, 84,173,186,196,212,174,247,241,250,245,235, 31,222,189,123, 55,163, 38,156, 30, 30, 30, 13,127, -254,249,231,102,181,107,215,110, 38,178,181, 21, 23, 40, 20, 91,181,138,156,237, 60, 71, 87, 49,227,224, 24,190,103,207,158, 59, - 23, 47, 94,204,170, 9,103, 96, 96, 96,240,210,165, 75,155, 52,110,220,184,137,155, 95, 3,145,216,195, 83,206,247,168,147, 41, -110,212, 84,196,212,241, 30,184,118,237,218,123, 15, 30, 60,144,155,195,201,229,114, 89,134, 97,192,227,241, 32,145, 72,112,237, -218, 53, 12, 25,240, 17, 92,157,109,224,215,160, 1, 58,142,253, 10,103,206,156,129, 64, 32, 0,195, 48, 96, 24,230, 47, 23,180, - 52, 71, 8, 85,135,202,196, 87,117,220,148,210,179, 87,175, 94,253, 97,228,200,145,130, 94,189,122,225,222,189,123, 24, 61,122, -244,205,136,136, 8, 0,192,189,123,247, 48,121,242,228,155,151, 47, 95,198,184,113,227,208,185,115,103,193,141, 27, 55, 54,154, - 83,124,212,104, 52, 98,199,142, 29, 48, 26,141,144, 74,165,144,201,100, 8, 11, 11, 67,116,116,244,184,157, 59,119,198,113,120, -188,207,122,247,249, 4,103, 78, 70,224,249,179,232,113,187,150, 14,171,113, 49, 95,134, 97,208,107,196,136,172,172,160,160,156, - 93, 74,165,234,115,123,123, 43,255,244,116,217,149,195,135, 29,171, 59,150, 16, 66, 88,150, 45, 21, 85, 37, 98,163,228,197, 21, - 56,129, 43, 9, 6,215,186, 25,158,188,226, 27,120,205,105, 20,191, 41,141,173,170,200, 40, 33, 4, 38,147, 9, 60, 30, 15,141, -235,183,249,127,236,157,119,120, 20, 85,219,198,239, 51,179,125, 55,187, 73, 54,189, 64, 18, 2, 73,232,129, 64, 66, 47,130,130, - 4,165, 72,121,177,208,148, 34, 42,168,136, 8, 72,111, 2,175, 32, 82, 4, 1, 1,145,106, 69,122,145, 72, 7, 65,145, 94, 19, - 72,111,155,182, 73,182,206,156,239,143,100,215, 37,108,146,221, 0, 2,239,183,191,235,154,107,203, 76,238, 61, 51,217,157,185, -231, 57,231, 60, 15,110,126, 91,246,126,189,215,129,152, 13,185,240,109, 83,214, 45,120,119,161, 47, 62, 26, 62, 3, 66, 86,100, -170, 46,109, 14,207,243,151,114,115,115, 33, 16, 8, 16, 25, 25,233, 79, 8,177, 68,165, 62,239,220,185,243,204, 55,222,120, 99, - 1,128,113,229,159, 31,210,191,127,255, 64,163,209,136, 63,255,252, 19, 0,206, 85,166, 75, 41,181,206, 26,212, 20, 38, 73,194, - 2,155, 32,186,193, 72,120,122, 54, 69,170,198,128, 52,141, 1,107, 86,246,198,185,163,179,241,199,254, 55,112, 55, 35, 3, 50, -255, 62,224,204,250,198,213, 29, 91, 23, 79, 21, 15,120,145,103,153,138,105, 26, 0, 0,117,213,106,165,201,100, 76, 57,112,224, -128,145, 97, 24,200,229,114, 12, 25, 54,140, 89,185, 98, 69,251, 65,173, 91, 31, 30,241,252,243,123, 14, 31, 58,212, 60, 46, 46, - 14,148, 82, 48, 12,131,173, 91,183,150,234,116,165,185,181,107,215,246,176,255, 81,255, 96, 59,182,138, 82,138,194,194, 66,171, -193, 42, 40, 40,128,159,159,159,195, 93,132,197,133, 56,120,104,239,185, 60,202,189,125,175,199,205,197,198,249, 25,189,227,242, -121, 78, 80,192,153, 80, 80, 74, 81,164,131,224, 52,163,142, 27, 18,209,199,120,167,107,220,181,132,171, 39,114,117,156,206,169, -217, 15, 89, 89, 89,147,251,247,239,159, 27, 16, 16, 64, 84, 42, 21,130,130,130,152, 94,189,122,229, 36, 39, 39,207,116, 70,199, - 22,111,111,239,255,116,238,220,121,103,106,106,106,191,132,132,132,208,223,127,255,189, 95,231,206,157,119,122,123,123, 87, 57, -112,214,134,109,147, 38, 77, 42, 22,139,197,104,213,170, 21,138,138,138, 96, 48, 24,170, 93,170,131,231,121, 72,165, 82,108, 95, -179,228,133, 57, 51, 62,149,229, 94, 57,137, 11,199, 14, 96,111,162,190,100,218,252, 47, 78, 73,165,210, 26,237,111,132,175,162, - 73,147, 64,229,149,247,135, 13, 76,251,100,226, 68,229,223,127,255, 45,123,111,236, 56, 36,101,230, 83,113,143,207, 89,116,252, -148,249,171,216,155,196,191,248, 28, 62,155, 59,181, 35,128, 81,213,105, 54,244, 85, 52,105, 28,168,188, 60,126,196,160,219, 99, -199,142,149,205,159, 63, 95, 23, 27, 27,107, 74, 79, 79,119,119,243,246,109, 33,244,242,110,157,152,145,233,209,162,101,203,155, - 99,199,142,213, 57,171, 57,117,234, 84,249,241,227,199, 69, 93,186,116,161, 89, 89, 89,158, 34,153,172,141, 80,233,222, 49, 45, - 39, 71,221,181,107,215,155, 67,135, 14,229,106,162,121,253,250,117, 81,139, 22, 45,104,122,122,186,167,220,203,167,149,200,203, -167,195,157,244, 12,207,102,205,155,223,120,255,253,247, 77, 85,105,246, 95,246,143, 57,113,115,115, 75,143,142,142,198,180,105, -211, 48,107,214, 44, 12, 24, 48, 0,137, 73,137,232, 56,116, 4,234, 12, 25,133, 95, 79,157, 65, 90, 90, 26, 38, 79,158,140,136, -136, 8, 8,133,194, 27,149,233, 58,131, 35, 38,171,178,238,195,134,117,200,145,170,198, 89, 85,167,221,175, 95,191, 49,150, 84, - 12,195,135, 15, 63,182,116,233,210,118,195,135, 15, 7, 0,180,106,213, 10,179,103,207,110, 55,101,202,148, 99,115,230,204, 65, -151, 46, 93, 16, 30, 30, 94,109, 62, 49,142,227, 96, 54,155, 49,104,208, 32,152,205,102,100,103,103,227,250,245,235, 88,189,122, - 53, 40,165, 82, 0, 8, 8, 12,110, 33, 22,139,241,215,249,179, 37,159, 14,143,219, 84,157,166, 5,219,115, 29,207,243,208,106, -181,232, 55,122,116, 78, 74,189,122,154,175,114,114, 74,222,244,244,148,135,221,189,171, 86, 26, 12, 65, 85,141, 57,181, 53, 67, -182,105, 9, 42, 46,150, 9, 42,142, 98,209, 28, 53,232,125, 72,247,182,183,154, 44,183, 16,128, 55, 3,231, 38, 10,241, 78,159, -105,136,110,210, 12, 12,195, 56, 98,172, 79,157, 62,125, 26, 98,177, 24,239,191,255, 62, 97, 89,118, 9, 33,132, 80, 74,243, 40, -165,211, 40,165, 31, 83, 74,117,132, 16, 34,145, 72, 86, 13, 27, 54, 12,122,189, 30,199,142, 29, 3,128, 67,246, 4, 45,227, 74, - 45,251,174,213, 16,112,188, 24,199,207,239,197,254,223,119, 32, 49, 53, 27,119,179,116,128,192, 29,186,226, 20, 24, 75, 83, 97, -200, 63,143, 66,189,220,158,156,139,167, 28, 91, 47,242,172, 99, 47,209, 40,168, 74, 54,112,199,242,149,238,253, 7,189, 94, 28, - 29, 29,237, 25, 20, 20, 4, 66, 8,122,247,233, 67, 58, 39, 36, 40,133,129,129,240,138,137,177,102,207, 61,120,224, 0,246,238, -221, 91,188,235,167, 31,131,134,189,249,230, 75,176, 77,246, 92, 1, 66,136,160,110,221,186,214,207, 77, 79, 79,135, 68, 34,177, -142,121, 40, 44, 44,132,143,143, 15,210,211,211,225, 96, 96,100,227, 39, 19, 79, 77,204,138,155, 92, 39, 78, 41, 36,123,138, 51, -192, 81, 10, 33,225,128, 82, 10, 19, 7,232, 77, 20, 45,194, 88,245,254, 82,179,231,175,167,127,184, 3, 96,163, 51, 7, 73,167, -211,253, 70, 8, 25,201,243,252, 14, 0, 76, 66, 66, 2,127,249,242,229, 49,142, 14, 72,183,135, 92, 46,159,112,248,240, 97,245, -132, 9, 19,242,126,253,245,215,130,158, 61,123,186,175, 94,189, 90,253,220,115,207, 77, 0,176,165,186,191,167,148,150, 18, 66, - 54, 36, 39, 39,143,105,217,178, 37, 52, 26, 13,140, 70, 35,206,157, 59,135,136,136, 8,252,241,199, 31,136,140,140,196,217,179, -103, 17, 21, 21,101,153, 50, 13,158,231,171,237,198, 77, 75,190,235, 38,215,231,169,210, 78,239,198,181, 11,127, 96,247,109,125, -201,194,117, 91,119, 55,105,214,162,216,217, 19, 56, 0, 68,249, 41, 26, 5,249,122,237,159, 63, 99,170,111,210,111, 91,241,195, -186,101,252,145, 61,123, 26,138,149, 24,217,233, 63, 99, 95, 49,152, 80, 27,128,164, 77, 92, 75,250,162,199,117, 94, 22,138,140, - 67,151,170,206,100, 30,229,167,104, 20,232,227,181,111,225,252, 89,202, 91,123,190,193,182, 85,159,211,239,191,221, 28,173, 3, -226,154, 52,105,210,131, 16, 18, 0,192, 92,254, 63,114,168, 4,141, 61,205, 67,191,254,218, 92, 7,196,213,173, 91,183,135, 80, - 40, 12, 5, 0,147,201,148,250, 40, 52,155, 54,109,218,163,252, 14,159,150,143,185,114,170, 84,206,240,225,195, 23,141, 31, 63, -254,125,147,201,100,205, 17,100, 50,153,216,213,171, 87, 11, 56,142, 99, 40,165, 70,134, 97,140,251,246,237,227,204,102,115,154, - 78,167, 27,237,168,118,101,188,242,202, 43, 56,117,234,212, 12, 84, 49,120,217, 22,141, 70, 35, 80,171,213,214,187,165,170,198, -109, 57,162,157,144,144, 48,235,213, 87, 95,253,100,203,150, 45,215,151, 46, 93,250,242,168, 81,163,176,117,235, 86,212,171, 87, - 15,127,253,245, 23, 38, 79,158, 12, 0,237,166, 76,153,242,203,218,181,107,195,147,146,146, 22, 85,215, 70,147,201, 4,179,217, -140,205,155, 55,163,119,239,222,240,241,241, 65, 96, 96, 32, 8, 33,191,189,249,230,155, 43, 0,128, 37,172, 8, 0,244, 58,189, -190,126,253,150, 14, 71,108,195,195,195,173,231,186,140,140, 12,235,204,191, 23, 94,125, 53,103,205,252,249,216, 84, 90,138, 55, - 61, 61,229, 41,193,193, 1,191,220,186, 53,130, 16,178,186,178,136,176, 37,138, 83,157,185,114, 34,162, 12,203,216, 38, 63, 63, - 63, 76,121,103, 30,230,173,156,130,155, 56,130,122,175, 1,151, 22, 3,189,195,223, 69,203,232, 86, 8, 12, 12,172, 94,176,140, -223,222,126,251,237,179,151, 47, 95,110,217,180,105, 83,204,156, 57,179,215,244,233,211,247, 19, 66, 70, 88,102, 49, 19, 66,194, - 88,150, 93,114,224,192,129,231, 85, 42, 21,174, 92,185,130,237,219,183,223,132,101,132,190,157,118, 2,176,230,188,170, 93, 43, - 82,119, 45, 73, 43,207, 74, 61,142, 99, 71,127, 66,189,232,113,144,249,191, 4,117,253, 57, 48, 94,253, 2,134,220,253, 80,215, -234,137,148,164, 91, 96, 5,146,139,142, 54,220,197,211,129,173, 23,121,214,177, 59, 74,155,240, 68, 24, 21, 25,201,137, 24,124, -211,251,165,151, 74,254,252,243, 79,235, 93,158,238,204, 25, 20,239,221, 11,142,227, 64, 41,197,239, 9, 9,120,227,245,215,181, - 66,150,172, 9, 11, 11,165,132,254,147,123,133, 16,242, 64, 30, 43,145, 72,212,191,127,255,254,214,147, 78,114,114, 50, 20, 10, - 5,196, 98, 49,120,158,135,217,108, 6,203,178,112,119,119,135,217,108,126, 32,228, 82, 81,147, 82,106,226, 52,197,253,214,198, -191,150, 30,168, 53,210,145, 30, 97, 8, 17,201,172, 63, 74,127, 21,193,203,209, 66,120, 11,178,232,161, 69,207,167,241,250,220, -126,180, 66,237, 47,123,237,172,176, 62,178,105,211,166, 43,222,120,227, 13, 6, 0,186,118,237,202, 52,109,218,244, 75, 66, 72, -165, 37,109,170,211,148, 74,165, 18, 0,216,185,115,167,230,250,245,235,221,119,238,220,169,177,125,223, 65,205,213, 11, 22, 44, -128, 92, 46,135,217,108,134,193, 96,176,142,191,178,125, 52, 26,141,240,246,246,198,174, 93,187,192,113,220,174,234,218,217,160, -113, 83,109,129,192, 35,115,253, 47,135,176, 39,201,168,117,214, 92,217,106,214, 11,112,139,242,247,246, 58,176,112,238, 44,159, -188,155,231,144,146,146, 66,247,237,221,117,178,148,210,212,252, 66,250,105,158,150, 70,149,232,169, 44, 54, 28,247, 14,172,250, -152, 78,233, 0, 19,200,131, 93,195,182,154,141, 2,220,162,130,124,188,246,125,190,104,190, 50,255,198, 31, 72,207,200,192,238, - 93, 59,255, 44,165, 52,149, 82,250, 61,165,116, 40,207,243, 77,120,158,111, 66, 41, 29, 90,153,105,113, 86,211,104, 52, 54, 49, - 26,141,143, 84,211,217,118,218,204, 32,196,140, 25, 51,110,164,164,164,140,202,204,204,124,197,178,104, 52,154,222, 69, 69, 69, - 61, 75, 74, 74,122,148, 46, 14,117, 47, 46, 46,246, 45, 42, 42, 10, 40, 45, 45,109, 65, 41, 61,103, 79,211, 17,108, 47,176,105, -105,105,211,211,210,210, 30,136,182,220,167, 57,242, 10, 89,190,232,237,111,183,111,223, 94,101,250,129,234,180, 43,182, 51, 59, - 59,123,199,230,205,155,155,213,169, 83, 39,124,232,208,161,248,234,171,175,176,116,233, 82, 61, 0,172, 93,187, 86,111, 19,185, -170,149,152,152,216,210, 94,247,160,173, 38,195, 48, 27, 95,120,225, 5,250,251,239,191,163,119,239,222,214, 4,160, 95,127,253, - 53,204,102,115, 97,151, 46, 93,120, 0, 40,213,149, 20, 82,158,194, 96,180,223,207,110,239,120,138,197,226, 23,109,243,253, 89, -146, 40,139,197, 98, 80, 74, 17,213,174, 93, 78,126,116,180,102, 93, 65, 65,201,244, 38, 77, 84, 35,234,215, 31,218, 0,120,221, -158, 38, 33,228,190, 40, 78,197,165, 38,191, 77, 11, 22,141,224,224, 96,204,250,240,115, 4,159,121, 5,191,181,247, 66,179,220, -161,232,214,254,101, 68, 69, 85,145,235,161,130, 38,165,148,102,101,101,141,154, 58,117, 42, 47, 22,139,241,214, 91,111,225,135, - 31,126,232,218,179,103,207,164,160,160,160,164, 70,141, 26,101,140, 25, 51,230,118, 78, 78, 78,207, 86,173, 90, 65,163,209, 96, -244,232,209, 70,141, 70,211,223,118, 28,103,197,118, 18, 66,172,145,187, 94,241, 93, 53, 43,191,252,156,239,210,113, 12,228, 50, - 21, 76,194, 90,208,104, 77,200, 43,166, 48, 72,226, 32, 22, 73,208,173,117, 35,156,218,183,190,132, 51, 20,111,168, 76,243, 81, -224,210,116, 81, 21,247,165,105,176, 60, 18,194,115, 28,199, 35,172, 78,152, 50, 41,241,222,178, 1, 3,250, 15,239,209, 35, 94, - 30, 31, 31, 47,109,116,181,172,139, 98,231,206,157,248,225,135, 31, 74,246,239,223, 95, 40, 17,178,107,107,213,174,229,199,113, - 60, 8,169, 58, 66,162, 84, 42,199, 78,154, 52, 73, 86, 80, 80,128,165, 75,151,242,205,154, 53, 99, 20, 10, 5,140, 70, 35,214, -174, 93,107,106,212,168,145,144, 97, 24, 20, 20, 20,128, 97,152,107,142,236, 4,165,244, 2, 33,164,219,138,206,125,127,104,249, -206, 48,175,134,157,219,120,118,170, 21, 4, 83, 12, 69, 90,114, 34,174, 31,218,159,119,105,223,146, 92,232, 50,251, 82, 74, 29, - 46, 70,109, 33, 48, 48,112,218,254,253,251,125,223,125,247, 93,170,211,233,200,189,123,247,232,220,185,115,125,223,122,235,173, -105,168, 38, 23, 78, 21,144,252,252,124, 16, 66,120, 0,214, 71, 56, 81, 30,128, 82,122,145, 16,242,115,159, 62,125,122,117,233, -210, 5, 87,175, 94,181,118, 5,218, 26, 44,203,108,194,121,243,230,229, 3,255, 36, 8,172, 12,137, 68,130,175,119,236,221,147, -150,114, 87, 30, 22, 86, 87,231,238,233,201,215, 36,114, 5, 0, 98,134,153,254,217,172,169,190, 57, 87, 78,145,139, 39, 15,243, -219, 47,100,102,153, 57,106, 63, 67,127, 81, 26, 5, 0,166,186,177,119, 12, 59,125,193,188, 89,238,150,238,203, 45,231,211, 11, - 9, 71,223,173, 81, 3,159, 53,205, 39, 64,217, 12,191, 52, 18, 24, 24, 72, 45, 93,120,246, 12, 86,117,216,235, 30,172,169,246, -157, 59,119,230,198,196,196,140,191,113,227,198,246,134, 13, 27,142, 2, 80, 91,175,215,231, 79,153, 50,101,225,218,181,107,135, - 59, 18,185, 2,128,173, 91,183, 46, 25, 54,108,216,222,151, 94,122,233, 99,158,231,155, 90,222, 39,132,220,241,245,245,181,102, -228,202,206,204,152, 56,114,248,160,137, 90,109,158,195,121,234,220,220,220, 70, 76,153, 50, 69, 90, 92, 92,140,229,203,151,243, -141, 26, 53, 98, 44, 55, 67,223,126,251,173, 57, 50, 50, 82,208,127,204,152,156,197, 25, 25,152,125,244,104,241,196,198,141,155, -173,187,126,189, 5,236, 68,216, 45, 55,140,246, 34, 87,150,225, 21,206, 98,209,180, 53,106,193,193,193,152,246,254,124,164,166, -166, 66, 36, 18, 33, 34, 34, 2, 98,177,184, 26,165,251,161,148,254, 69, 8, 25,116,239,222,189, 13,203,151, 47, 23,183,106,213, - 10,177,177,177, 16, 10,133, 33,150,246, 26, 12, 6, 92,184,112, 1,147, 38, 77,162,103,206,156,121,139, 86, 81,160,158,227,184, -172,200,200, 72, 75,155, 41, 33, 36,183, 80, 79,220,183, 53,136,115, 27, 58,114, 59, 57,118,246, 4,210,140, 60,244, 38, 30, 97, -117,154,163, 83,247,197,248,101,207,223, 92, 90,210,229,203,166,210,188, 53,149,233,186,120,250,168,232, 69,158,117,236,254, 50, -121,150, 57,254,213,170,149, 47,110,221,188,197,159,101, 25,255, 91,183,111,159,125,185,111,191,212, 3, 7, 14,168, 69,238,238, -177, 0,120,195,168, 81, 39,141,250, 82,205,175, 63,255, 28, 18, 22, 22, 26, 93, 94,236,153,242, 44,115,188,170, 15,212,106,181, -197, 71,143, 30, 45,249,228,147, 79, 72,114,114,242,119,126,126,126, 3,247,236,217,227,214,183,111,223,210,171, 87,175,126,239, -239,239,223,171,115,231,206,202,241,227,199,235,181, 90,237, 50, 71,119,132, 82,122,153, 16,210,224,204,212, 69,175,158, 89,176, -242,121, 8,216,182,208, 11, 1,222,116, 28,198,162, 3, 0,190,163,148, 58, 54,176,171, 2, 10,133, 34, 90,161, 80,224,207, 63, -255,204,139,139,139, 51,232,116, 58,209,156, 57,115,188, 20, 10, 69,116, 77,244,202,219, 75,243,242,242,192,243,188, 0, 0, 41, -127, 4,239,124,173,156,255,188,252,242,203, 63,111,219,182,237,133,248,248,120,132,135,135,195,100, 50, 33, 50, 50, 18, 6,131, - 1, 17, 17, 17,208,235,245,152, 49, 99, 6, 10, 10, 10, 62,160, 14, 20, 17,150, 74,165, 16,139,197,136,106,208,184, 68, 42,149, - 58, 61,174,195, 22,133,144, 9,191,246,235, 58,100,229,230,240,219,254,202,204, 44, 49,114,221,110,100, 21, 95,170,184, 93, 9, -135,226,206, 67,223, 75, 5, 0, 61, 15,109,149,154, 98,132, 95,251,117, 53, 50,179,114,176,245,124,122,126,177,145,239,126,205, -142,166, 83,237,124, 70, 52,251, 47,187,138, 78,111, 59,190,237,246, 42,146,118, 58, 66, 77,140,148,133,203,119, 40,193,170, 6, - 20,171,150,217,205,113,245, 48,218,229,145,169,159, 1,128, 16,146, 60,104,208,160,137,137,137,137,179,202,243, 93,173,170,250, -175,239,103,221,186,117, 55, 0, 12,171,106,155, 45,139,134,253, 8,224, 71,103,116,139,138,138,116,231,206,157,211,141, 31, 63, -158, 36, 39, 39,239,241,247,247,127, 97,239,222,189,242,190,125,251,234, 47, 94,188,120, 40, 48, 48,176, 67,215,174, 93,221,118, -159, 62,157, 90,114,235,214,175,191, 38, 38, 6,155,120,254,215,202,244,202,103,230, 61, 18,115,101,209,179,141, 12, 89, 76, 86, - 96, 96, 32, 66, 66, 66, 30,234,119, 79, 41,221, 70, 8,185,210,174, 93,187, 31,134, 14, 29, 90, 47, 46, 46, 14,145,145,145,208, -104, 52, 72, 73, 73,193,177, 99,199,176,122,245,234,211,165,165,165,239,218, 70, 86,237,145,155,155,251, 64, 25, 33, 34,243, 10, - 92,191,124,250,206,179,199, 98, 35,219,199, 15,145, 53, 14,228, 97, 48, 82, 36,223,189,133, 25,159,174, 41, 73,191,123,227,178, -209,108,236,227,202,129,229,226, 73, 98,247,215,121,251,118,242,229,240,240, 90,147,126,248,126, 71, 91, 74, 25,150, 18, 82,236, -225,225,185,243,222,189,123,247,101,193,174,171, 86, 43,135,189, 53,108, 32,225,137,144, 16,158,227, 89,230,248,237,219,201, 85, - 70,136, 12, 6,195,200,129, 3, 7, 46,149,203,229, 83, 52, 26,205,159, 30, 30, 30,127, 69, 71, 71,207,162,148,126, 90, 90, 90, -250,179, 82,169, 60,221,166, 77,155, 57, 33, 33, 33, 75, 40,165,127, 56,179, 51,229, 6,106, 3,170, 24, 3, 86, 19, 8, 33, 51, - 1,184, 11, 4,130,130,191,255,254,123,115, 84, 84,212, 32, 74,169, 59, 33,164,160,166,154, 58,157,238,221,252,252,124,239, 17, - 35, 70,152, 86,175, 94, 29, 53,100,200,144,137,151, 46, 93, 18,234,116,186,219,206,232, 80, 74,245,132,144, 94, 3, 6, 12, 88, - 35, 20, 10,187, 48, 12, 67,120,158,167, 54,235, 65, 41, 5,199,113,191,160,154,227, 34, 20, 10,181, 47,190,248,162, 91,117,159, - 41, 22,139,171, 52, 64,182, 20, 25,184,113, 43, 15, 95,154,167, 51, 81,106,230,233,200,107,153,197,118,167,144,157,185, 70, 27, - 57,172,169,227,199, 45,221,119,121,158,222,196,243,102,158,142,170, 76,211, 25,158, 21, 77, 0, 24,205, 44,251, 22,171,150, 89, - 7,188, 91,186, 13, 43,190,126,212, 88, 34, 77,112, 38,203,114,121, 58,134,170,178,179,215, 88,187, 28, 91,179,229, 44,253,250, -245,123,100,169,101, 42, 98, 52, 26, 39,191,252,242,203,179, 60, 60, 60, 22,102,103,103,255,233,225,225,113,185,126,253,250,227, -120,158, 95, 82, 82, 82,178, 83,169, 84,190,212,178,101,203, 15, 66, 67, 67,215, 39, 81,186,190, 42, 45,142,227, 82, 45, 81, 28, - 0,212, 18,125,178, 24, 8, 91, 35, 97, 50,153, 42,205,161, 86, 81, 51, 58, 58,186,188,215,162, 76,175,226,163, 45,142,234, 90, - 27, 89,118,211, 91,127,214,172, 89,109, 0, 60, 7, 32, 26, 64, 33,128,187, 0, 78, 82, 74,247, 58,163,119,159,118,105,110, 26, - 33, 36,230,202,249,163,163,174, 95, 62,255,170,101,182, 32,203,138, 47,114,198,146, 13,166,210,188, 53, 46,115,229,226,137, 99, -185, 0, 63,142, 5, 64, 87,151,166, 75,211,165,233,210,116,105,186, 52, 93,154, 46,205,255,111,139,171,244,184, 11, 23, 46, 92, -184,112,225,194,197, 35,134, 0,176, 59, 19,128, 58, 81, 41,187, 38,179, 9,170,211,119,105,186, 52, 93,154, 46, 77,151,166, 75, -211,165,249,191,167,249,255,134,199, 25, 30,195, 51, 18,150,116,105,186, 52, 93,154, 46, 77,151,166, 75,211,165,249,100, 53,255, -215, 22, 87, 23,161, 11, 23, 46, 92,184,112,225,194,197, 35,166,230,115,124,255,159, 82, 94, 83,238,109, 0,253, 0,212, 5,112, - 11,192, 14, 0, 43,168,227, 5,143,109,245, 84, 0, 38, 2,104, 11,160, 14,128, 59, 0,142, 2,152, 79, 41,117,120,182,222,255, - 55,124,124,124, 38, 9,133, 66, 15,160,172,220,135,229,209,246, 57,199,113,249, 5, 5, 5,115, 31,199,231, 19, 66, 88, 74,169, - 67, 51,208, 44,109,181,109,155,237,163,201,100,122,108,237,116,241,116, 66, 8,137, 84,171,213,155, 52, 26,205,107,148,210,235, - 79,186, 61, 46, 92, 60, 74,124,125,125, 71, 25,141,198, 41, 34,145,104, 78, 86, 86,214,202, 39,221,158, 39,133,213, 96, 17, 66, - 18, 0,128, 82,218, 17, 0,148, 74,229, 9,134, 97,234,148,175, 3, 80, 86, 19,202,246,117,197, 71,158,231,239,228,230,230,182, -169,236,195,228,114,249, 9,150,101,235, 16, 66, 44,197,103,193, 48, 12, 76, 38,147,146,101,217,162, 74, 52, 83, 52, 26, 77,139, - 71,180,191, 15, 69,121,173,176, 95, 61, 61, 61,117,179,102,205, 90,209,169, 83,167, 90,105,105,105,230, 9, 19, 38,116,248,235, -175,191,226, 9, 33, 47, 58, 99,178, 8, 33,173, 9, 33,235,155, 53,107,246,227,224,193,131,183,197,197,197,137,115,115,115,149, - 59,118,236, 8,218,176, 97,195, 57, 66,200,107,212,201, 84, 21, 79, 59,132, 16, 1,173, 36, 31, 89, 85,235, 42, 34, 20, 10, 61, - 82, 82, 82,148, 64, 89, 55,119,185,161,130,201,100,130,201,100, 66,113,113, 49,162,163,107,156,166,172, 82, 2, 2, 2,154, 19, - 66,150, 69, 68, 68,180, 8, 12, 12, 60, 11, 96, 76, 90, 90,218, 95,206,180,213,108, 54,131, 82,106,109,103,195,134, 13, 31,121, - 59,255,151, 33,132,188, 41, 22,139,187, 71, 68, 68,196,234,245,250,188, 59,119,238,156,225, 56,110, 42,165, 52,227, 17,233,187, - 3,152, 42,145, 72,226,234,214,173, 91,235,198,141, 27,201, 70,163,241, 52,128,153,148,210, 26,167,102,177,209,143,236,216,177, -227,177,229,203,151,123,141, 30, 61,250, 24, 33,164,157,203,100,185,120, 82,212,174, 93,219,163,184,184,120, 13,128,230, 66,161, -208, 95, 42,149, 66, 38,147,101, 72, 36,146, 63,101, 50,217,240, 99,199,142,229, 87, 43, 82, 1,142,227,166, 38, 37, 37,249,183, -106,213,106, 65,227,198,141,103,228,228,228,232,140, 70,227,161,188,188,188, 15, 40,165,133, 85,253,109, 69, 47,242, 44, 35, 0, -172,197, 21, 59,221,183, 66, 32, 8, 78, 74, 74,242, 85, 42,149,224, 56,206, 26, 29,176, 92,204,202,251, 96, 1,148, 93, 52, 56, -142, 67,253,250,245,141, 85,125,152, 80, 40,172,149,146,146,226,235,230,246, 79,170, 37,163,209, 8,127,127,127, 62, 53, 53,213, -183, 98, 33, 97,131,193,128,224,224,224,167, 41,151,201,219,106,181,186,224,222,189,228,104,157,222, 56,243,173,119, 63,153,244, - 90,191,231, 61, 79,156, 56,193,191,248,226,139,250,132,132,132,183, 1, 56,148, 28,149, 16,226, 78, 8,217, 48, 97,194,132, 25, - 82,185,202,235,240,137,203,250, 13, 59,118,165, 54,139, 12, 35, 31,124,240, 1,251,222,123,239,253,222,188,121,243, 77,132,144, - 24,103, 34, 89, 74,165,114,175, 68, 34, 9,101, 89, 22, 70,163,241,158, 70,163,121,161,198,123,251,136, 33,132, 52, 3,112,158, - 16,210,156, 82,250,167,163,235,170, 34, 55, 55, 23,165,165,165, 15, 44, 13, 27, 54,188,239, 59,250,136,218, 47,168, 85,171,214, -207,243,230,205, 11,202, 72, 79,199,231,139, 23,183, 2,176, 2, 64, 43, 71,254, 62, 43, 43,235,129,118,214,175,255,120,114, 86, -253,175, 66, 8,153, 56, 99,198,140,121,175,190,250, 42, 56,142, 67,105,105,105,224,205,155, 55, 27, 77,153, 50,165, 15, 33, 36, -150, 82,234, 84, 30, 57, 59,250, 62, 17, 17, 17, 87,199,141, 27,167,142,141,141, 69,121, 85,137,192,163, 71,143,182, 90,187,118, -237, 27,132,144,250,148,210,236,135,249, 12,181, 90,189,233,235,175,191,246,146,203,229,248,229,151, 95,188,186,116,233,114,148, - 16,210,190,166, 38,139, 16,194,120,121,121,189, 7,224, 57,158,231,197, 0, 78,231,229,229,205,166,148, 86,121, 62,118,225,194, -219,219,251,205,162,162,162,229, 18,137, 68,228,233,233, 9,185, 92, 14,129, 64, 0,129, 64, 80, 91, 34,145,212,150, 72, 36, 61, -158,123,238,185, 49,135, 15, 31,174, 50, 35,126,155,230,254, 67,193,144,153, 44, 97, 88, 0,104, 24,225,165,114,119,119,199,204, -153, 51, 21,189,122,245, 82, 0,192,177, 99,199, 6, 15, 25, 50,164, 11, 33,164,113,101, 38,203,158, 23,121,150,177, 45,246,156, - 96,187,130, 16, 2,153, 76,134,109,219,182,129,101,217,251,170,184,219,123, 94,187,118,237,106, 63,204, 18, 1,219,185,115, 39, - 84, 42, 21,220,221,221,173, 23, 24,137, 68,130, 67,135, 14, 65, 40, 20, 66, 32, 16, 64, 40, 20,162, 69,139, 22,118, 19,222, 61, - 78,250, 55, 42, 43, 50,105, 47,121, 99,251,186, 50,244,123,111,250,192, 18,157,177, 37,128,226,252,188,188,188,179, 63,252,144, -214, 44, 50, 82,180,105,211,166,216,160,160,160,126,112,208, 96, 1,152, 24, 19, 19,243, 61, 43,115,247, 30, 60,100,232,224,225, - 2,198,248,198,200,241,115,146,211,115,138, 71,140, 24,241,195, 47,191,252, 50,248,179,207, 62,187,242,209, 71, 31, 77, 4, 48, -217,209,246,139,197,226,208,155, 55,111, 70,240, 60,143, 38, 77,154, 60, 53,229, 6, 44, 6,138, 82, 10, 66,200,125, 70,170,170, -117,213, 97,137, 88,217, 91, 30, 53, 65, 65, 65,245, 95,127,253,117,111, 77, 78, 14, 62, 95,188,216,242,118,139,234,186, 11, 45, - 93,129, 6,131, 1,175,188,242,202,235, 28,199, 9, 44,230, 79,175,215, 27, 10, 10, 10,116, 54, 51,117,178, 41,165,207, 87,215, - 22, 66, 72, 29,133, 66,177, 16, 64,243,210,210,210, 32, 0, 80, 40, 20,169, 60,207,255, 88, 92, 92, 60,153, 82, 90, 90,147,125, - 36,132,212, 2,208, 8,149,151,108,162,243,230,205,187, 49,113,226, 68,135,141,204,163,210, 36,132,132,250,249,249,205,237,223, -191, 63,118,237,218,133,221,187,119,155,100, 50,153, 96,200,144, 33,100,204,152, 49,158,227,198,141,235, 1,224, 11, 71,219, 85, - 9, 61,102,204,152,161,110,208,160, 1,118,236,216,129, 11, 23, 46,148, 70, 68, 68,200, 58,117,234, 4,129, 64,160,158, 52,105, -210,139, 0,214, 63,204, 7,104, 52,154,217,227,199,143,223,176,121,243,102,229,157, 59,119,176,108,217, 50,239,129, 3, 7, 38, - 16, 66, 58, 58,106,178, 8, 33, 18, 0,239, 1,232,204,178,108,251, 33, 67,134,152,223,125,247, 93, 33,195, 48,166,197,139, 23, -251,172, 93,187,118,160,183,183,119,243,156,156, 28,215, 48,131, 42, 96, 89,214,200,243,188, 16,128,148, 82,170,175,238,245, 19, -110,238, 35,197,203,203,107,116, 94, 94,222, 10,127,127,127,248,249,249, 61,112,173,213,235,245,144, 74,165, 34,127,127,255,175, -123,247,238, 45,252,233,167,159, 42,237,234, 35, 44,153,250,203,150, 89, 65,106, 79, 37, 0, 96,201, 87,251, 74, 0,224,167,159, -126, 66, 90, 90, 26, 60, 61, 61,209,184,113, 99,118,214,172, 89, 1, 31,124,240,193,231, 0,134, 87,166, 85,209,139, 60,203, 84, - 57, 6,139,231,121,107, 33, 81,139,145,178,152,159,138,207,129, 7,179,255,210, 10, 83, 53, 9, 33, 68,171,213, 90,205,149, 74, -165, 66,249, 69, 21, 38,147,233, 1, 93,142,227, 44,142,182, 82, 77,123, 16, 66, 70, 3, 56, 68, 41,189,229,200, 65,176,213,220, -254, 78,125,108,144, 76, 24,100, 73,121,222, 99,124,217,227, 6, 0, 39, 18,135, 47, 91,222,177, 99,208,123,159, 46,157, 94,154, -155,150, 51,233,245,151, 66, 35,252,189,100,138,252,172, 2,117, 84, 84, 55, 0,102,123,154,149,208, 97,240,224,193, 27,247,159, - 74, 34, 82,169, 72, 36, 96, 89, 97,187, 38,145, 94,181,220, 89,119, 37,224,158,124,251,198,137,161, 67,135, 54,249,232,163,143, -218, 59,179,239, 12,195, 64,165, 82, 97,227,198,141, 96, 44,142,214,193,125,127, 84,216,249,191, 11, 80,110,160, 52, 26, 13,118, -237,218,133,248,248,248,243,132,144,230,229,155,156,167,148,162,176,176, 16,233,233,233, 8, 8, 8, 56, 79, 8, 17,218,118, 23, - 86,212,180, 68, 81, 45,102,106,200,144, 33,175,155,205,102,235,247,217,142,113, 1, 42,152, 23, 71,247, 61, 48, 48,112, 63,128, -231, 89,150,133, 65,167, 51, 44,252,239,127,109, 87,255, 97,107,174, 42,211,180,180,149,227, 56,193,249,243,231,133,150,223, 12, - 0, 33, 0, 5, 0,111, 74, 41, 24,134,121,160, 38,155,157,227, 89, 95, 46,151,159,216,185,115,167,170, 69,139, 22, 68, 44, 22, -195,108, 54,227,226,197,139,181, 62,251,236,179,145, 7, 15, 30,124,145, 16,210,144, 86, 40,106, 94,149,166, 13,141,142, 30, 61, - 90, 28, 30, 30,110,215, 48, 22, 22, 22, 10, 34, 35, 35, 59, 2,120,192, 12,253, 11,154, 41,153,153,153,189,159,127,254,249, 81, - 25, 25, 25, 87,205,102,243,199, 0, 26,123,123,123,159,239,219,183, 47,100, 50, 89,103, 56, 96,176,170,250,191,251,250,250,246, -106,211,166, 13,150, 45, 91,134,207, 62,251,172, 43,165,244, 16, 33,164, 75, 97, 97,225,193,151, 95,126, 25, 30, 30, 30,189, 97, -199, 96, 57,250, 93, 34,132, 68,118,232,208,225,235,153, 51,103, 42,119,237,218,133,136,136, 8, 20, 21, 21,225,195, 15, 63,244, -157, 54,109,218, 17, 66, 72, 39,139,201,170, 76,147, 16,210, 80, 34,145,172,223,188,121,179, 91,120,120,120,184, 72, 36, 98,194, -195,195,161,209,104,160,211,233, 36,115,230,204,105, 34,147,201,254,250,226,139, 47,214, 3,232, 91,147,118, 58, 67, 85,154,229, -213, 46, 84, 0, 60,156,233, 94,173, 98,223, 11, 0, 72, 44,175,133, 66, 33,164, 82, 41,164, 82, 41, 36, 18, 9,110,220,184,241, -169, 88, 44, 94, 12,155,115,113, 85,154,228,159,139, 86, 52, 33,228, 12,203,178, 85,190,174, 56, 4,228,223, 62,158, 0, 64, 8, - 9, 38,132, 44, 1,208, 25, 0,195, 48, 76,130,183,183,247,216,140,140,140,187,142,106, 6, 6, 6,122,105,181,218, 47, 2, 2, - 2,224,231, 87, 86,143,157, 97, 24, 4, 5, 5,193,100, 50, 33, 51, 51, 19,148, 82,228,231,231, 67, 46,151, 35, 48, 48,240,139, -145, 35, 71,238, 88,181,106, 85,174, 93, 77, 30,159,189, 60,112,202, 84,150,101, 25, 0, 96, 5,110,110,227, 62, 1, 66, 67, 67, -209,174, 93, 59,232,116, 58, 20, 20, 20,160, 81,163, 70, 2, 66,200, 96,134, 97, 84,148,210,149,148,210,195, 78, 31,160,103, 8, -203, 5,105, 70,197,126, 79, 66, 8,120,158,135, 64, 32,184,207, 96, 85, 92, 44,102,168,252,123, 90,101,196,132, 16,194, 24, 12, - 6,171,185,114,119,119,183,154, 51,179,217, 92,153,193,114,122,167,188,188,188,154,242, 60, 95,135, 16,178,202, 81,147, 85,145, -193,131, 7, 63, 48,158,227,131, 15, 62, 72,201,202,202,162,175,116,139, 86, 92,221,147,150, 94,215,211, 77,230,163, 84,134, 73, - 61,213, 30,185,185,185, 39, 1,120, 56,241, 17,245, 98, 98, 98,100, 27,126, 56,154,242,214,251,243,102,181, 8,247, 82, 53, 13, -246,246,244,119,151,137,221, 24, 82, 44, 53,155, 82,212,106,117,132,179,237,182,212, 15,243,240,240,128, 64, 32,120, 42, 34, 88, -148, 82, 51, 33,164, 57, 33,228,252,174, 93,187, 16, 23, 23,103, 53, 89,229,235, 81, 80, 80,128,139, 23, 47,162, 67,135, 14, 0, -208,220,145,177, 88, 60,207,195,104, 52,194,104, 52, 90,141,139, 72, 36,178,172,182, 26, 23,203,182, 44,203, 86, 90, 80,182, 26, -102,121,122,122,118,232,220,185,179,120,203,182,109, 98, 74,105, 49,202, 10, 82,107, 41,173,164,112,117, 5,204,102,179, 53,170, - 38, 20, 10,113,239,222, 61,107, 20,216, 18, 9,174,216, 69, 94, 25, 18,137,100,252,214,173, 91, 85,177,177,177, 36, 55, 55, 23, - 60,207, 91, 79,142, 43, 86,172,144,246,235,215, 47,232,220,185,115,147, 80,131,178, 51, 0, 72,101, 70, 8, 0, 84, 42,149, 25, -112,122,246,177, 93, 77,179,217, 76,218,182,109,251, 81, 78, 78, 78,147,210,210,210, 57,213,137,148,127, 39,126, 41, 95,202,132, - 9,249,235,234,213,171,165, 3, 6, 12,144,133,133,133,197, 57,217,174, 7,136,140,140,108, 45, 20, 10,113,250,244,105, 61,128, -132, 13, 52, 89,147, 0, 0, 32, 0, 73, 68, 65, 84,242,183, 19, 46, 92,184,160,239,219,183,175,164, 86,173, 90,173, 29,213, 34, -132, 68,214,175, 95,255,128,175,175,175,204, 18,177,236,223,191,191,112,245,234,213,202,212,212, 84, 24,141, 70, 76,156, 56, 17, - 61,123,246,132,183,183, 55, 62,248,224, 3,191, 5, 11, 22,108, 2, 16, 83,133,166, 84, 44, 22,111,188,121,243,102, 68, 64, 64, -128,236,212,169, 83,104,218,180, 41,114,114,114,144,145,145, 1,173, 86,139,140,140, 12, 12, 31, 62,220,247,243,207, 63, 15,124, -136, 67,241,168,201, 23,137, 68,144,203,229, 30,249,249,249, 15, 51,142, 77, 2, 64, 12,252, 99,174, 36, 18, 9, 36, 18, 9,164, - 82, 41,120,158,127, 42,206,121,143, 11, 66, 72, 16, 33,228,178, 72, 36,146,200,229,114, 17,195, 48,144, 72, 36,221,212,106,245, -165, 23, 94,120,161,241,254,253,251,147, 28,209,209,233,116, 27, 37, 18,137,208,215,215, 23, 0, 16, 17, 17,129,166, 77,155,162, -184,184,152, 47, 40, 40,128,135,135, 7,115,247,238, 93,148,150,150, 34, 61, 61, 29, 33, 33, 33, 66,134, 97, 54, 2,120,209,158, -222,241,115,233, 95, 1,248,202,242,218,199,199, 39, 19,128,204,242, 90, 42,149, 34, 40, 40, 8,169,169,169, 80, 42,149,236,180, -105,211,250,110,219,182,173, 15, 33,100, 48,165,244, 91, 27,169, 7,188,200,179,140, 0, 0, 40,165,211, 9, 33, 29, 43,174,180, - 24, 44,203, 98, 47,114,101, 89, 28, 49, 66,132, 16,112, 28, 7, 63, 63, 63,200,229,114,200,229,114,107,193, 81,142,227, 30,208, - 47,191,163,119,122,167, 20, 10, 5, 94,125,245, 85,186,114,229,202, 81,229, 38,235,166,163,127,219,127,217, 85,107,212,170, 34, - 13, 27, 54, 60, 49,105,210,164, 94,191,253,246, 91,106,139,240, 48,129, 34,237,174, 86,170,242,240, 64,112,237,248, 33,189,251, - 94, 64,217,108, 66, 71,185, 89, 84, 84, 36,171, 27, 44, 55, 48,140,142,212,150, 8,148, 1, 10,145,196,223,211, 51, 72,100,208, -103,169, 60, 61,197,122,189, 62, 31, 64,149,197,153, 85, 42,213, 62,137, 68, 18,194,178, 44, 88,150,133,183,183,183, 59,165, 20, - 30, 30, 30, 8, 14, 14,118,139,138,138,186, 46, 16, 8,192, 48, 12,180, 90,237,221,196,196,196,110,213, 53,204,211,211,115,159, - 68, 34, 9, 97, 24, 6,132, 16,176, 44,107,157,144, 96,121,206,178, 44, 8, 33, 40, 41, 41,113, 72,147, 82,250, 39, 33,164,121, -124,124,188,213,100,237,217,179, 7,221,187,119, 71,126,126, 62, 46, 93,186,100,107,174, 28,234, 30,180, 29,212, 78, 41,133, 72, - 36,194,181,107,215,238,235,186,182, 44, 74,165,210, 17, 73,187,168,213,234, 99,253,251,247,199,215, 95,127, 77,105, 89,149,119, - 5, 33,164,169,187,187,251,181,203,151, 47, 59, 52,206,133, 82, 10,163,241,159, 77, 45,223,113,219,223,151,163,176, 44,219, 45, - 38, 38,134, 20, 20, 20, 88,140,163,245, 70,136,101, 89, 44, 95,190, 92, 22, 27, 27, 59, 69, 42,149,126, 36, 18,137, 10, 77, 38, -211, 22,157, 78, 55,135, 82,234,244, 96,213,199, 73,251,246,237,223, 79, 78, 78,238, 25, 18, 18,178,179,166, 26,148, 82,218,178, -101, 75, 3, 0, 25,203,178,194,106,255,160, 26, 8, 33, 44, 0,112, 28,167,179,152,124, 74,169, 57, 38, 38, 70,135,178,139,187, -195, 21,144,189,189,189, 55,237,222,189, 59, 56, 36, 36, 4, 38,147, 9,102,179, 25, 90,173, 22, 9, 9, 9,208,235,245, 48,155, -205,136,136,136,192,212,169, 83,117, 99,199,142,149,174, 90,181, 42, 75,171,213,190, 86,141,236,216, 29, 59,118, 40, 2, 2, 2, -100,165,165,165,184,125,251, 54, 98, 98, 98, 80, 84, 84,132,226,226, 98,148,148,148,192,104, 52,162,176,176,208,131,227, 56, 67, -141, 15,196, 35, 70, 32, 16, 64, 34,145, 64, 36, 18,229,135,132,132,128, 16, 34, 77, 74, 74,170, 73,151,155, 10, 64,161, 80, 40, - 20,219, 26, 43,137, 68,130,211,167, 79, 79,150, 74,165,159,195, 78,244,170, 50,104,133,129,154,213,189,126,210, 16, 66,150,136, - 68, 34,137, 90,173,182,222, 73,242, 60, 47,114,115,115,131,175,175,239, 50, 0, 61, 28,209,161,148, 54, 83,171,213,214,243,123, -116,116, 52,146,147,147,127, 44, 40, 40,120, 35, 43, 43, 11, 12,195,108,100, 24,166, 79,185, 62,242,242,242, 80,171, 86,173,102, -149,233,181,141, 9, 24, 5, 66,173, 17,172,134,245,212,247,213,180, 85,169, 84, 80,169, 84, 72, 76, 76, 68,113,113, 49,189,113, -227, 6, 25, 61,122, 52, 49, 24, 12,223, 16, 66, 78, 82, 74,239,148,183,203,174, 23,121, 86,169,116, 12, 22,240, 79, 23,161, 61, - 67, 85,209,112, 57, 98,132, 12, 6,131, 91, 76, 76, 12,111,185,112, 91, 22, 0,164, 50,131,133,178, 72,129,211, 8,133, 66,229, -232,209,163,139, 86,174, 92, 57,146, 16,178,154, 82,122,163, 38, 58, 0,176,243,251,205,126,159, 77,157, 56, 85, 29, 24, 86,247, -163,143, 62, 21,188,244,210, 75,167, 54,108,216,192,169, 27,244,232,114,120,223,183,126, 95,124, 56, 97,207,238,221,187,129,178, - 1,207,142,114,236,215, 95,127,245,255,224,189, 49,152, 58,126,236, 94, 85,132,183,216,141,168, 21, 82,125,113,182, 27,104,169, -164, 94,253,158, 63,236,220,153, 14,160,202, 74,243, 50,153, 44,228,198,141, 27, 17,182, 6,194,104, 52,194,195,195, 3, 27, 54, -108,240, 81, 42,149, 62,110,110,110, 16, 8, 4,104,218,180,169, 67, 13,147, 72, 36, 33,215,175, 95,143, 80, 42,149, 40, 41, 41, -129, 94,175,135,201,100, 2,207,243, 32,132, 64, 40, 20, 66, 44, 22, 67,161, 80, 56, 53, 83,207,214,100,237,217,179, 7,141, 26, - 53, 66, 94, 94, 30,174, 94,189,234,180,185, 2,254,137, 10,217,142,183, 18, 8, 4,216, 20, 30,142,183,210,210,172,198,101,137, -187, 59,166,242, 78,103,208, 0, 0, 52,105,210,132, 30, 63,126, 28,123,247,238,197,203, 47,191, 76,126,254,249,103, 35,199,113, -162,212,212, 84,135,163, 97, 60,207, 91,219,106, 57, 95,219, 26, 43,103, 13,150,217,108, 86,138,197, 98,232,116, 58,107, 23,190, -237, 82,167, 78, 29,104, 52, 26, 65, 97, 97,161, 32, 45, 45, 77, 62,123,246,236,119,143, 28, 57, 18, 0, 96,144,211, 7,224, 17, -178,114,229,202,144,183,222,122,235,158, 64, 32,160,221,187,119,127,253,238,221,187,189, 3, 2, 2, 14,253,246,219,111,255, 5, - 16, 89,173, 64, 5,124,124,124,254, 16, 8, 4,193,110,110,110,162,237,219,183,155,138,138,138, 68,190,190,190,153,192, 63, 9, -148,129,178, 34,197, 5, 5, 5,213,206, 68,246,241,241,249,195,199,199, 71,244,229,151, 95,154,114,115,115, 69,254,254,254,153, - 22, 29,133, 66, 33,218,190,125,187,169,176,176, 80,228,225,225,241, 71,126,126,126,181,122, 57, 57, 57,175, 13, 30, 60,248,232, -161, 67,135,188, 89,150,197,221,187,119,145,155,155, 11, 15, 15, 15,108,220,184, 17, 33, 33, 33,216,177, 99,135, 70,163,209,188, -185,112,225,194, 41, 90,173,214,145,148, 13, 29,226,226,226, 66,242,243,243,225,225,225,129,226,226, 98,252,241,199, 31,104,216, -176, 33,210,210,210,192, 48, 12, 60, 60, 60,176, 98,197,138, 18, 66,136,198,145,227,248,184, 97, 89,214, 26,101,178, 49, 69,186, -214,173, 91,227,240,225,195, 31, 59, 99,138, 40,165, 6,161, 80,120,159,177,178, 60, 23,137, 68, 14, 27, 43, 11, 28,199,137,202, -199,128, 18, 71, 94, 63, 5,116,148,201,100,162,138,111,150,148,148,136, 2, 2, 2,218,219,251, 3,123, 8, 4, 2, 47,153,172, - 44,192, 20, 18, 18,130,130,130, 2,206, 96, 48, 12,220,184,113,163, 9, 0, 98, 98, 98, 6,114, 28,167, 51,155,205,172, 88, 44, - 70,113,113, 49,124,125,125,189, 42, 21,100,240,241, 47, 91,102,251, 87, 28,131, 21, 16, 16,128,230,205,155, 67,175,215, 35, 61, - 61, 29, 9, 9, 9, 38,142,227,190, 91,185,114, 37,239,227,227, 51,236,149, 87, 94, 97,207,157, 59,247, 14,128,247, 45, 82,255, -115, 99,176,202, 29,227, 17, 0,157, 44, 59,103,219, 69, 88, 85,228,170, 66, 4,171,202, 47, 33,203,178,249, 41, 41, 41, 10,133, - 66, 97,125,207,100, 50, 33, 48, 48,144,231,121,158, 84,252, 28, 75, 59,106,138, 80, 40, 84,126,242,201, 39,249, 43, 86,172,120, - 3, 14, 14, 20,223,254, 78,125,108,176,121,189,243,251,205,126, 95,125, 54,115,217,151, 11,102,171,111,237,249, 6,107,150, 46, -226, 56, 14,231,154, 52,105,210, 94,171,213, 10,220, 21, 38,228,228, 99, 15,202,242, 96, 57,100, 6, 73, 89, 46,173,117,103,206, -156, 57,215,163, 71,143,227,235,182,254,160, 78,187,125,251,164,164, 48, 39, 93, 85, 47, 66, 32, 10, 10,233, 83,164,211,137, 6, - 14, 28,232, 3,224,149,170,180, 24,134,193,237,219,183,145,148,148, 4, 55, 55, 55, 40,149, 74,184,185,185, 65,165, 82, 65,169, - 84, 66,169, 84, 58,125, 12, 25,134, 1,199,113,248,254,251,239, 33,151,203,161, 80, 40,238, 91, 44,230,234, 97,254, 55,221,187, -119,135, 70,163,129,155,155,155,181, 91,211, 25, 44, 99,176, 12, 6, 3, 12, 6, 3,140, 70, 35, 7, 64, 40, 16, 8, 48, 60, 37, -197, 26,213,113,198,184, 84,164,105,211,166,244,228,201,147, 56,126,252, 56,138,139,139,241,229,151, 95, 34, 32, 32,224, 57, 0, -159, 58,170, 65, 8, 9,247,247,247,239,254,194, 11, 47, 4,154, 76, 38,104,181, 90,230,239,191,255,134, 84, 42, 5,203,178, 72, - 73, 73,193,230,205,155,145,152,152, 8, 0,240,244,244, 12, 38,132,132, 81, 74, 19, 43,211,228, 56, 78, 36, 16, 8,172,119,159, -150,197, 54,138,197,178, 44,252,252,252,224,239,239,143,175,190,250, 74, 20, 22, 22,214,179,198, 7,226, 17,176, 96,193,130,122, - 75,150, 44, 89,187, 97,195,134, 61,175,189,246,218,182,139, 23, 47, 14,117,119,119,255,251,240,225,195,179, 37, 18, 73,141,220, -175, 80, 40, 12, 78, 75, 75,243,181,125,139,231,121,185,217,108,182, 26,218,146,146, 18, 52,110,220,216, 97,189,203,151, 47,203, - 1, 96,246,236,217, 66, 0,114, 75,250, 15,139,102, 73, 73,137,176, 97,195,134,193,142,232, 81, 74,175, 19, 66,218,119,237,218, -245,196,129, 3, 7, 60, 67, 66, 66,144,154,154,138,212,212, 84,212,171, 87, 15,115,231,206, 45, 46, 44, 44,108, 91,110,170,126, -118,112,183, 3, 61, 61, 61,133,247,238,221,131,217,108, 70,179,102,205,176, 98,197, 10, 12, 28, 56, 16,141, 27, 55, 70, 97, 97, - 33, 46, 95,190,140,245,235,215,123,138, 68,162, 42,207, 29,255, 6,229, 93, 88,149, 46, 53,193,108, 54,171,164, 82,105,161, 68, - 34, 17, 91,198, 95, 37, 36, 36, 56, 29,189,178, 80,241,166,174,186,215, 79, 18,139, 89,173,136, 88, 44,134,191,191,191,195, 58, - 18,137,132, 88,206,141,102,179, 25, 5, 5, 5, 92, 64, 64,128,181, 27,255,252,249,243, 92,104,104, 40,199,178, 44, 43, 22,139, - 65, 8,129, 92, 46,175,244,132, 79, 57, 58,243,165,129,159, 90,103, 17, 50, 66,133,106,220, 39,101, 55,251,231,207,159,135,209, -104, 68, 66, 66,130,105,225,194,133,105,249,249,249,227, 0, 8,246,237,219, 55,120,194,132, 9,172,175,175,175,117,156,172, 61, - 47,242, 44, 99,185,250, 28,161,148,146,242, 1,229,101, 78,137, 16, 80, 74, 31, 48, 85,149, 25,174,242, 8, 86,149, 87, 92, 75, -215,210,222,189,123,173, 70,192, 50,139,144, 82,250,128,174,165, 29, 53,197,203,203,171, 56, 46, 46, 78,149,156,156,188,185, 38, -127,111, 49, 87,243,103, 79, 87,231, 94, 57,137,148,180,116,104,178, 76,231,142,253,157,248, 35,128, 31, 1, 0,171, 26, 28,193, -200, 43,203, 29,213,108,224, 35,143,110, 18,168,252,241,249, 30, 61,107, 13, 24,241, 62,243,246,219,111,183, 27, 60,120,112,193, -107,175,189,246,158,155,155, 91,164,209,104,204,251, 97,215,174,164, 1, 3, 6,132,113, 28, 55,184,178,233,172, 22, 76, 38,211, -221,190,125,251, 90,143,173,191,191,191,106,203,150, 45,126, 74,165, 18,175,191,254,122,118, 82, 82,146,181, 91,168,168,168,232, -174, 35,109, 52, 26,141,119,163,163,163, 43,237, 22,180, 68, 32,157,209, 4,238,159, 45,152,155,155,139,107,215,174, 65, 32, 16, -160, 85,171, 86, 56,118,236, 24,218,181,107,231,212, 12, 66,157, 78,135,144,144, 16,232,116, 58, 20, 23, 23,151, 0,144,108, 12, - 11, 3, 0,188,147,155,139, 63, 22, 46,196,169,121,243, 44,159,237,104, 51, 1, 0,209,209,209,244,244,233,211,248,251,239,191, -161,215,235,241,230,155,111,162,188,123, 16, 0, 28, 74,125, 65, 8,105, 92,191,126,253,131,135, 15, 31,246, 81, 42,149,208,106, -181,208,106,181, 24, 54,108, 24, 70,141, 26, 5,147,201,132,149, 43, 87,226,167,159,126,130, 74,165,130, 86,171, 69,113,113,177, -103,124,124,252, 9, 66, 72,135,202,186,182, 41,165, 36, 49, 49, 17,243,231,207, 7,207,243,152, 48, 97, 2, 34, 34, 34,172,198, -234,238,221,187,152, 61,123, 54, 56,142,195,180,105,211, 80,175, 94, 61,152, 76, 38, 41,113, 34,207,216,163,230,131, 15, 62,184, -245,227,143, 63,238, 73, 78, 78,126,241,179,207, 62,235, 72, 8,225, 63,250,232,163,249, 42,149,202,161,100,173,149,145, 87, 80, -132,107, 55,239, 90, 13, 80,197,197,199, 91,237,180,222,141,219,201,214,191,231, 56, 91, 61, 14, 94,106, 79,103,155, 88, 98, 50, -153,138,251,244,233,227,241,253,247,223,147,122,245,234,225,206,157, 59,150,155,210, 18, 71,103, 13,218,144,170,209,104, 34, 88, -150, 21,221,188,121, 19,161,161,161,136,139,139,195,156, 57,115,144,147,147, 3,179,217, 12, 95, 95, 95,222,100, 50,157, 55, 24, - 12,191, 59,219,216, 71,141,109,148,201,118,249,237,183,223, 62,150, 74,165, 20,192,105, 0, 78, 25,108, 74,169,161,118,237,218, -247,105,215, 36,122,245,184,120,156, 51, 19, 3, 2, 2, 18,148, 74,101,207,188,188,188,251,162, 88,109,219,182, 53,250,249,249, - 29,117, 84,199,205,205, 45,143,101, 89, 47, 0, 72, 77, 77,133, 66,161, 16,221,190,125,123, 30, 33,100, 34, 0,132,133,133,205, -211,104, 52,162,176,242,243,169,191,191, 63, 12, 6, 67,165,195, 85, 78,156,207,248, 6,192, 55,150,215, 94, 94, 94,233, 5, 5, - 5,178, 69,139, 22,105,231,205,155, 87,202,113,156, 30,192,225,252,252,124,107, 30,172,208,208,208, 2,161, 80,168,246,240,240, - 8,178,145,122,192,139, 60,203,216, 38, 26,125, 32,250, 98, 49, 61,142,152, 44, 71,162, 16,132, 16,148,150,150,222, 23, 13,177, -204, 34,180,103,176,202, 47,228, 53,234, 34, 44, 55, 87,178, 45, 91,182,124,183,116,233,210,227,142,254,157,237, 24,172, 85,255, -157,245,153,197, 92, 93, 56,118, 0, 63, 95, 45,200,153, 48,111,241,146,154,180, 7, 0, 26,250, 40,154,250,251,121, 31, 89, 56, -111,150,234,214,158,111,176,109,213,231,244,194,217,179,177,103,207,158,125, 99,204,152, 49,181, 81,246,133,210, 0,248, 11,192, - 0, 71,102,221,100,103,103,223, 55,254, 41, 34, 34,226,186,135,135,135,159, 84, 42,197,237,219,183,181,151, 46, 93,114,186,235, -165,162,230,163,160,162,185,186,116,233, 18, 58,119,238, 12, 0, 56,118,236, 24,218,182,109,235,148,201, 50,153, 76,249, 13, 26, - 52, 0, 80, 22,205, 42, 40, 40,224, 1, 96, 68,122, 58, 86, 7, 4, 64, 32, 16,224,212,188,121,152,108, 50, 97,142,208,185,161, - 57,205,154, 53,163,103,207,158, 69, 82, 82, 18,204,102, 51,122,245,234,101,107,174, 28,198,223,223,127,252,225,195,135,125, 86, -175, 94,173,223,180,105,147,158,231,121,166, 89,179,102,202,230,205,155, 99,201,146,178,175,209,128, 1, 3, 48, 97,194, 4, 92, -186,116, 9,114,185, 28,237,219,183,231,166, 79,159,238, 59,110,220,184,119, 80, 54, 13,255, 1, 40,165,180, 91,183,110, 56,122, -244, 40, 88,150, 69,108,108, 44,114,115,173,147,123,224,231,231,103,111, 29,139,178,223,251, 19,185, 16, 9, 4, 2,154,144,144, -240, 89,199,142, 29,145,156,156,252, 98, 76, 76,204,151, 67,135, 14, 77,125, 88, 93, 79,119, 37,162, 27,134, 67,175,215, 67,175, -215, 35, 48, 48, 16, 69, 69, 69,184,117,235, 22,244,122, 61,252,124,157,153,119, 82,166,215,188,113, 61,171,158,175,175, 47,138, -139,139,145,152,152, 8,131,193, 0,111,111,199, 13, 22, 33,164, 86,183,110,221,126,251,238,187,239,188,214,175, 95,111,232,212, -169,147,248,203, 47,191, 36, 42,149, 10, 89, 89, 89,206,238,170,133,132, 99,199,142,133,116,237,218, 53,234,202,149, 43, 72, 72, - 72,128,193, 96, 64,243,230,205,113,227,198, 13,180,110,221, 26, 90,173,246,244,217,179,103,127,169, 94,234,241, 99,233,190,179, - 44, 71,143, 30,157,172, 82,169, 76, 0,236,206,244,115,148,123,247,238, 73,154, 54,109,170,151, 74,165,226,114,179, 86,163,232, -213,227,224, 97,103, 38, 86,133,191,191,255, 56,111,111,239,174,117,234,212, 65,102,102,166, 72, 44, 22,163,109,219,182,198,150, - 45, 91, 26,253,253,253, 29,154,112, 3, 0, 18,137,228,138, 72, 36,234, 80,118, 19,193,225,222,189,123,160,148, 78,104,220,184, -241,216,162,162, 34,228,230,230,138, 85, 42,149,245,102, 58, 42, 42, 10,122,189,254,138,163,250, 44,203,206, 12, 13, 13,157, 34, - 18,137,230,100,103,103, 63,144,222,129, 16, 34,142,142,142, 86,137, 68, 34, 24,141, 70,125,133,117, 79,213,184,183,135,193,118, - 12, 22,177,183, 99,142,116, 15, 58, 58, 6,139, 16, 2,131,193, 0,133, 66, 97,237,122,178,124, 23, 45, 99,123, 42, 26,172,154, - 80,171, 86, 45,196,197,197,201,182,109,219,182,105,209,162, 69, 39,106,162,177,227,187,111, 3,220,249,146, 90,105,167,119,227, -218,133, 63,240,227,229,252,156, 9,243, 22,191,247,210, 43,131, 50,109,183,235,191,236, 42,182,143,172, 94, 47,210, 87,209, 56, -200,207,235,200,231, 11,231,171,114,175,156, 68,122, 70, 6,118,159, 62,123,206, 64,233,101, 0, 19,106,210, 70,123,216,206, 70, -123, 90,190,168,182,105, 26,114,114,114,112,249,242,101,139,185,106, 14, 0,237,218,181, 59,111, 49, 89,231,206,157, 67, 76, 76, -204, 3,105, 26, 42,146,151,151,119, 95,105,153,242,116, 12,222, 22,163, 47, 16, 8,208,118,202, 20,167,205, 21, 33,132,114, 28, - 7,141,166,108,248, 74,219,182,109,107,100,174,202,181,218,150,148,148, 96,211,166, 77, 57, 55,111,222,172, 85,167, 78,157,113, -223,124,243,205, 98,185, 92,126,223,118, 37, 37, 37,232,218,181, 43, 70,143, 30,141,169, 83,167,242, 67,135, 14,101, 25,134,169, -180,130, 61,199,113,162,176,176,176, 67, 0,158,187,114,229, 10, 0,156,160,148,182,181,172,175,106,157, 3,240, 69, 69, 69, 66, -165, 82,105, 55,197,131,168,108,154,166,179, 93,122, 86,205,227,199,143,207,255,239,127,255,251,227,135, 31,126,104,141,206,213, - 80, 19,192,131, 17,172,158, 61,123, 66,167, 55, 33, 37,179, 0, 28,103, 70,169,209, 57, 35, 83, 49,130,213,179,103, 79,148,234, - 12,184,151,174,129,217,204,161,168,212,177,107, 56, 33, 68,254,252,243,207,239,219,178,101,139,255,201,147, 39,193,113, 28,127, -227,198,141,196, 62,125,250,168, 62,250,232, 35, 47,155, 49,166,206,178,116,208,160, 65,253,142, 31, 63,174,137,138,138, 82,159, - 62,125, 26, 89, 89, 89, 48,155,205,120,238,185,231, 32, 22,139,239,205,155, 55, 79, 4, 96,105, 77,196, 31, 53,150, 8,211, 31, -127,252,241, 72,140,149, 45, 98,177,184,198,221,140,207, 42,167, 79,159, 78, 29, 51,102, 76, 67,149, 74,181,164,125,251,246,157, -189,188,188, 24, 79, 79,207,132,160,160,160,177, 77,155, 54,189,235,168,142, 80, 40, 28,170, 80, 40,110,153,205,102,182, 60,114, - 14, 0, 48,155,205, 98,134, 97, 16, 22, 22,102, 13,154,196,198,198,194,223,223,159,187,122,245,234, 80, 71,245,179,178,178,238, -155, 85,104,135,145,109,219,182, 21,232,245,122, 36, 37, 37, 29,179, 93, 81,153, 23,121, 22,169,116,128, 10,195, 48,160,148, 66, -218,162, 5,210, 15, 28,192,247,223,127, 95,165,208,170, 85,171,128, 10, 33, 61, 66, 72, 87,219, 92, 25,150,217,130,111,189,245, -150,117,155,115,231,206, 89, 7,187,247,234,213,235, 62,205, 51,103,206, 60, 96,178, 42,106,218, 35, 43, 43,235,202,246,237,219, -207, 46, 88,176,224,116,149,141,182,163,105, 25,131,213,239,213,215,211,151,205,159,122,113,253, 47,135, 26,167,151,210,244, 9, -243, 22,127, 88,209, 92, 57,170,217,192,223,173, 65,176,175, 87,194,127, 23,206,119,183, 68,195,182,156,207, 40,128,153, 58, 96, -205,236,107, 86,134,109, 36,145, 16, 82,237, 69,203, 17, 77,103,169,168,105,155,166, 33, 61, 61,221,106,174,232, 63,137, 70,155, -183,107,215,238,124,185,185,178,172, 51, 87,165, 89, 25, 2,129, 0, 31,106,181, 16, 8, 4,232, 52, 99, 6,158,155, 53,203,225, -118, 90,224, 56, 14, 2,129, 0, 17, 17, 17, 78,155, 43, 91, 77, 74,233,241,139, 23, 47,134, 14, 25, 50, 68, 25, 17, 17,113,155, - 16, 34, 28, 54,108, 24, 31, 16, 16,192,156, 58,117, 10,148, 82,180,107,215, 14,153,153,153,224,121, 30, 27, 55,110,196,144, 33, - 67,200, 95,127,253, 69,121,158, 63,104, 79,211, 66, 82, 82,210,200, 46, 93,186,172,210,233,116,130,220,220,220,145,142,174,171, -110,223,183,111,223,126, 51, 34, 34,162, 35, 42, 79,197,192, 3, 56,249, 48,154,229,209,187,168,135,209,180, 80, 49,130,181,117, -235, 86,240, 60,143, 90,254, 30,208,235,245,168,104,102,171,211,172, 24,193,218,182,109, 27,120,158, 71,237, 0, 53, 12, 6, 3, - 44, 3,131,171,211,244,242,242,250,124,195,134, 13,193, 87,175, 94, 69, 74, 74, 10, 22, 47, 94,124, 55, 63, 63,191, 71,126,126, -190,100,250,244,233, 71, 94,125,245, 85, 63,158,231,171,236, 30,178,215, 78, 74,169,158, 16, 50,180, 77,155, 54, 27,103,207,158, -125,167,126,253,250,181,219,182,109,235,145,155,155,155,253,231,159,127, 38,174, 90,181,202,205,108, 54, 15,173,172,235,233,223, -248,189,219,146,154,154, 58, 3,101,215, 25,167,140,149, 35,237, 60,115,230,204, 39,229,218,103, 28,209,254,183,246,253, 97,103, - 38, 86,215,206,229,203,151,167,160, 66,126, 51,103,219,121,230,204,153,164,174, 93,187,206,242,243,243,155, 46,149, 74,145,157, - 93, 86,156,192, 18,105, 44,255, 27,180,104,209, 2,221,186,117,195,245,235,215,103, 77,153, 50, 37,169, 42, 77, 7,218, 32, 0, - 16, 14,224,141, 46, 93,186,124,212,175, 95, 63, 44, 95,190, 28,148,210,181,206,236,203,179,132, 37, 77, 3,177,125, 4, 0,147, -201,148,124,235,214,173,128,122,121,121,108, 32, 33,136,141,141,181,142,191,177, 29,151, 99, 25, 40,247,251,239,191,155,121,158, -175, 50,231, 20,199,113,201,199,143, 31,247, 59,112,224,128,208,242,143, 44, 31,172,201,167,165,165, 49, 71,142, 28,177, 70,195, - 4, 2, 1, 18, 18, 18,204, 70,163,241,158,179, 59,117,253,250,245, 71,114,247,246,251,165,164,177,251,118,255,228,221, 42,174, -125,190, 74,173,182,251, 3,182,100,124,175, 10, 34, 96,230, 44,152, 55,203,195, 98,174,182,158,207,200,215,233,185,206, 87,178, - 75, 46, 60,138,118,218, 82, 84, 84,148,100,153, 45,168,213,106,157, 62,118,143, 11,203, 12,194,128,128,128,243,168, 48, 91,208, -178, 46, 38, 38,230,129,117,206,192,243, 60,220,221,221, 1,192,118,134,170,195, 16, 66,168,165,203,186,188, 93, 15, 53, 6, 32, - 35, 35, 99,209,148, 41, 83, 94,152, 59,119,174,207,158, 61,123, 84,229,154,232,219,183,111,214,197,139, 23,219, 3,144, 20, 23, - 23, 31,156, 59,119,174,143, 77, 61, 66, 65,124,124,124,102,102,102,102,149, 21, 1,202,167, 53,119,113,118, 93,117,244,235,215, -239, 54,236, 36,252,124, 24, 30,135,166, 5, 77,126, 33,110, 39,165,150,215,162,228,193,221,205,180,142,155, 50,153,204,208, 20, -230, 86, 47, 98, 67, 94, 65, 17,110, 37,166,150,151, 6,227,192,113,105,229,122,101, 3,221,105, 94, 73,181, 26, 66,161,176,221, -146, 37, 75,122, 48, 12,195,156, 58,117, 74,191, 96,193,130,228,236,236,236, 94,148,210,123, 0, 64, 8,233,180,126,253,250, 77, - 14,164,100,176, 11,165,244, 50, 33,164,245,199, 31,127,252, 30,128,118, 0,106, 3,184, 7,224, 24,128,165,206,142,235,121,204, - 44,174,126,147,167, 82,187,198, 60, 43, 51, 19, 15, 30, 60, 56,163,119,239,222,130,144,144,144, 73, 33, 33, 33, 76, 94, 94, 30, -180, 90, 45, 24,134,129,191,191, 63, 26, 53,106, 4,127,127,127,254,202,149, 43,115, 63,254,248,227,106,115,234, 53,108,216, 48, -220,100, 50,213,101, 24, 38, 28, 64, 56,165, 52,156, 16, 18, 14, 64, 13, 0,177,177,177,170,208,208, 80, 65,171, 86,173, 16, 23, - 23,135, 35, 71,142, 96,199,142, 29,223, 80, 74,247, 89, 52,236,121,145,103,153, 74, 35, 88,121,121,121,221,122,244,232,113,128, -101,217, 48,224,193, 11,150,109,215, 30, 0,240, 60,159,148,153,153,105, 55, 9,153,173,230,216,177, 99, 15,176, 44, 27,102,137, - 76,153,205,102,189, 70,163,121,187, 83,167, 78, 43,132, 66,161,196, 86,151,231,249,187,153,153,153,255,106, 45,189,138,121,176, -186,245,232,157,243,176,154,110, 34,166,238,181, 95, 87, 35, 51, 43, 7, 91,207,103,228, 21, 25,184, 78,215,179,139, 47, 62,172, -174, 61,146,146,146,186, 63, 14,221, 71, 65,185,145,178,219,245, 87,213, 58, 7,201,118, 32,145,104,149, 53,228, 44,161,233, 71, -245,227,166,148, 94, 36,132,180, 25, 51,102,204,167,114,185, 60, 22, 0, 74, 74, 74, 78,165,165,165,205,178,204, 18,172,110,189, -139,202, 49,153, 76, 41,141, 26,148, 5,194, 44,233, 20, 44,193, 1,219,231,102,179, 57,197, 25, 61,123, 58,182,175, 57,142,171, - 82,143,101,217, 15,227,226,226,216, 15, 63,252, 48,115,207,158, 61,150, 2,183, 86,103, 86, 62,176,189,210,100,162,142, 80,110, -162, 22,148, 47, 46,158, 50,170,155,137, 88,211,155,200, 71,205, 79, 63,253,244,233,192,129, 3,215,171,213,234,111,195,195,195, -163,252,252,252, 84, 50,153, 12,122,189,190,200, 96, 48, 92,187,126,253,250,107, 83,166, 76,185,227,136,214,250,245,235, 89, 0, - 34,158,231,165, 12,195, 40, 0,168, 8, 33,158, 40, 55, 88,132, 16, 24,141, 70, 36, 37, 37, 97,242,228,201,220,161, 67,135, 22, - 2,152,230, 68,115, 91, 2,240,193, 63,231,113, 31, 0, 6,148, 37,158,205, 6,112,214, 9,173,127,133, 74, 13, 22, 45,203, 86, -237,112,214, 98, 71,168, 70, 51,228, 81,126,214,195, 48, 88,191, 96, 51, 86, 45,184,175, 14, 33,128,202, 95, 87,211,209, 87, 80, -106, 30,179,116,223,165, 69,122, 51,229,141,102,126,216,245,172,226,203,143,169,233, 79, 61, 85, 25,168,135,153,225, 70, 29,168, -223,231,160,206, 35,189,115,162,101,197,135, 7,215,116,189,139,202,201,206,206,174, 54, 23,213,147,208, 51, 24, 12, 99,219,180, -105,243, 5,199,113,255, 53,153, 76,199,170,255, 11, 23, 46,158, 28, 91,183,110,189,131,242,235,114,255,254,253, 89, 0,216,190, -125,187,211,179,123,135, 12, 25,194,209,178, 2,227, 58, 0,197, 0, 10, 81,150, 40,155, 0, 64,113,113,113, 94, 90, 90,218, 21, -142,227,174, 0,216, 84,131, 25,180, 62,132,144, 95, 41,165, 61, 1,192,242,220,246,189,167,141,154, 39, 9,250, 31,101,251,165, -127, 46,176, 21,141, 83,117,175, 43,227, 90,134, 54, 1, 15,121,199,234,194,133,139,103,131,242,174,192, 94,213,110,232,194,197, - 83, 70, 77,140,149,133,203,151, 47, 63,182,161, 0,207, 42, 53,155,166,231,194,133, 11, 23, 46, 92,184,112,225,162, 82, 8, 0, -187,211,193,157,156, 29, 80,233,148,242,202,168, 78,223,165,233,210,116,105,186, 52, 93,154, 46, 77,151,230,255,158,102, 13,137, -175,166,139,112,215, 99,248,204,135,195,118, 16,231,163, 94, 0,116,117,105,186, 52, 93,154, 46, 77,151,166, 75,211,165,233,210, -124,200,165,243,196,137, 19, 63, 65, 89,125, 98, 58,113,226,196, 79, 40,165,241,101, 54,134,198,255,203,109,113,104,113,141,193, -114,225,194,133, 11, 23, 46, 92, 60,237,156,152, 55,111, 94,201,188,121,243, 44, 3,218,179, 1, 16, 90, 22,189,170,114,134,248, -147,226,137, 25, 44, 66, 72, 32, 35, 16,189, 46, 20, 73, 58,131,242,141, 0, 0, 12,123,137, 51,232,126, 51,155,141,223, 82, 74, -211, 28,208,176, 59,227, 43, 10,104, 16,225, 33,251, 89,207,113,162,123, 69,134,254,215,202, 18,209, 61, 0, 45,183,225,149,209, -159,144,182, 82,177,120,191,216,195,195,110,118, 65, 67,126,126,169,206, 96,120, 97, 59,165, 14,151,226,113,225,194,133, 11, 23, - 46,158, 36,132, 16,133,167,167,231, 33,134, 97, 66,108,222,131,189,231, 0,192,113, 92,186, 70,163,121,129, 82, 90,105,218,162, -199,161, 89, 1, 3, 42,185,150, 63,173, 8,128,251, 74,170, 84, 91,193,186,126,128, 91,251,168,240,144,239,210, 50, 50,207, 23, -234, 12,195,175,165, 22,105,156,254, 80,145,244, 45, 15,111,255, 57,255, 25, 58,214, 43, 34, 50,138,212,170, 21, 4, 80,224, 94, -114,138,223,173,155, 55,186,108,219,176,244, 3,145, 84, 58,217,168,211,125,237,172,118, 4,160, 8,117,147, 28,253,122,226,171, - 30, 2,152, 49,104,246,119,123,120,173,177,246,141,178,105,163, 14,211,159,144,182,158,106,245,190, 5, 7, 14,200,148,205,154, -221,183,142, 82, 10,158,231,161, 61,127, 94, 54,177,123,247,125,253, 9,233,230, 50, 89,255,123, 16, 66,252, 85, 42,213, 56,161, - 80,216,201,104, 52,134,136,197,226,100,142,227, 18,242,242,242,150, 80, 74, 31,186,142,158, 11, 23,255,235,144, 42, 10,140, 87, -181,238,223, 64,169, 84,254,193, 48, 76,112,121, 91, 0,192, 90, 57,164, 98,158, 71,155,124,143,119,114,115,115,219, 84,166, 73, - 8, 9, 87,171,213, 43, 0,180,172, 46,209,113,249,253,253, 89,141, 70,243, 54, 45, 75,215, 98, 79, 79,233,233,233, 57,131, 16, -210,159, 97,152,106, 11,254,242, 60,207, 81, 74,183,231,229,229, 77,163,148, 22, 85,182,157,167,167,231,193,171, 87,175,182,244, -245,245,173, 54, 45,141,217,108,198,189,123,247,124, 98, 99, 99,127, 7, 80,105,102,237, 71,161,233,140, 23,121, 22,176, 87,139, -176,202,131,195,243,120,125,221,156,183,131,210,239,222, 12, 26, 57,119,115,100,125,111,121,167,171, 57, 37, 25,142,126,160, 88, -166,252,165,221,115, 61, 59,143,126,239, 67,197,159, 23,175, 97,255,145,147, 40, 44,214,131,101, 24,120, 40,229,136,140,172, 75, - 22,175,254,222,251,155,175, 22,255, 87,230,230, 17, 95,170,205,127,217,153, 29,114,151, 11, 38, 77,232, 19,171,240, 82,115, 0, -207, 97,124,143,104,197,164, 95,207, 79, 66,137,121,146,163, 26, 86,115,117,240,160, 60, 43, 51, 19, 11,189,188, 32, 48,153, 32, - 37, 4, 50, 66, 32, 5,224, 38,145,160,253,119,223, 97,206,174, 93,242,201,241,241, 46,147,245, 63,134, 82,169, 28, 26, 25, 25, -185, 96,205,154, 53, 94,117,234,212,129, 66,161,128, 70,163,241,190,126,253,122,179,247,223,127,127,176,187,187,251,148,130,130, -130, 85, 79,186,157, 46, 92, 60,173,148,103, 43,183, 91,188,189,170,117,255, 22, 12,195, 4,167,166,166,250,202,229,114,112, 28, - 87,158,189,159,183,222, 64,219,118,112, 80, 74,193,113, 28,234,215,175,111,172, 74, 83,169, 84, 46,207,202,202,234,106, 91,178, -172,170,142,146,212,212,212,174, 13, 27, 54, 92, 14,192,110, 66,109, 79, 79,207, 25,239,189,247,222,184,198,141, 27, 3,128,181, -157,150,199,156,156, 28,140, 25, 51,198,250, 25, 60,207,227,192,129, 3,239, 13, 29, 58, 20, 0,222,175, 98,223, 67,124,125,125, -201,200,145, 85,231, 26,154, 62,125, 58,166, 79,159,142,165, 75,151, 18,161, 80, 88,101,229,244, 71,165,233,168, 23,121, 22,112, -186,139,144,161,252,238,217, 75,214, 12,159, 57,164, 29, 89,247,126,215,136, 81, 75, 15,158,108, 24, 40,235,112, 57,173, 52,185, -218, 15, 19, 73,135,181,234,240, 98,167, 49,227, 38, 40, 54,255,116, 24,215,175, 92,192,213, 99, 91,238,219,166,197, 11, 67,145, -145, 83,132,161,163,199,187, 17, 86,208, 73, 36,149, 15, 51,234, 74,214, 57,210,182, 40,192, 47, 68, 34,126,183,117, 92, 35, 33, -106,167, 0, 20,104, 23, 83, 79, 88,107,223,223,239, 22,193,188,244, 26, 80,109, 45,193,138,230,106,243, 43,175,160,123,105, 41, -252, 80,150,211,194,178,148, 0,184,214,187, 55,234,255,248, 35,102,252,252,179,124, 90,175, 94, 78,155, 44,185, 92,254, 77,105, -105,233,103,212,249,132,107, 79, 12, 66, 72,164, 82,169,156, 92, 88, 88,248,250,147,110,139, 5, 66, 72, 0,128,236,138,119,195, -132, 16, 17, 0, 15, 74,169, 83, 21,127,165, 82,233, 91,131, 6, 13, 90,188,108,217, 50,121,102,102, 38,210,210,210,192,113, 28, -164, 82, 41, 34, 34, 34,200,193,131, 7,189, 38, 76,152,176, 72,165, 82, 73, 10, 11, 11,191,112,162,157,140, 80, 40, 28,162, 86, -171,123,251,249,249,249,102,103,103,103,231,229,229,237,212,235,245,235,106,122, 39, 95,174,249, 90,104,104,104,239,192,192, 64, -191,212,212,212,156,148,148,148, 95,244,122,253, 55,148,210, 26, 21, 80, 46,215, 13, 0,208, 20,128, 87,249, 91,233,161,161,161, -151, 18, 19, 19,157,171,158, 92,181,102, 90,104,104,232,101,103, 53, 9, 33, 10, 0,219, 0, 4, 86,179,105, 26,128, 1,180, 44, -193,177,139,127, 17,139,129,162,148,130, 16,114,159,145,170,106,221,191,141, 76, 38,195,150, 45, 91, 32, 20, 10, 33, 20, 10,145, -151,151,135,224,224, 96,235,107,145, 72,100,125, 94,187,118,237,106,245, 56,142,139,101, 89, 22, 90,173, 22, 28,199, 89,151,252, -252,124, 80, 74, 33,145, 72,192,113,101,101,151,108,214,199, 86,166, 71, 8,233, 31, 24, 24,136,205,155, 55,195, 96, 48, 60,176, - 94,165, 82,225,226,197,127,138,130,176, 44,139,184,184, 56,134, 16,210, 31, 85, 24, 44, 75,164,104,196,136, 17, 96, 89,214, 90, -250,206,242,220,178,112, 28,135,233,211,167,163,252,127, 85,229,190, 63, 14,205,103, 29, 82,190,147,148,218, 41, 19, 82,223,223, -237,237,110,157, 91, 45,148, 73, 68, 50,222,108, 2,103, 54,130, 51, 25, 32, 32, 28, 94,104, 26,128,214,117,228,200,214, 20, 98, -228,170, 51,133,169,169,250,184,139,185, 69,149, 26, 5, 66, 72,160,210,195,247,175,175, 54,254,228,189,255,228, 85, 92,186,112, - 30,231,247,172,176,187,109,215, 65, 19,209,176,105, 75, 52,169,231,143,143, 70,245,203,201,205, 74,139,182, 55, 38,171,226, 24, -172, 54, 74,209,198,101,175,117, 30,212,180,153, 7,131,142,229,215,171,131,102,156, 59,153,193,141,253,229,207,205, 39,139,140, -247,101,204,182, 55, 6,107,176, 68, 82,242,229,201,147,178,172,172, 44,108,126,229, 21,196,148,150, 34, 71, 40, 68, 3,147,201, -106,178,242, 1,228, 10, 4,240, 55,155,161, 83,169,224,255,253,247,224, 24, 6, 19,187,119, 47,221,104, 48, 60, 88, 93,182, 18, -220,220,220,178, 89,150,229, 10, 11, 11, 59, 61, 11, 38,171,220, 92, 29, 33,132,136, 10, 10, 10,212, 79, 65,123, 24, 0, 51,135, - 15, 31, 62,236,232,209,163,183,110,221,186,213,149,150,101, 18, 6, 33, 68, 80,183,110,221,195,237,219,183, 15, 95,187,118,237, -215, 0,102, 58, 98, 56, 8, 33, 65,117,234,212,249,243,210,165, 75,222, 55,110,220,128, 86,171,133, 80, 40,196,107,175,189,134, -239,191,255, 30, 34,145, 8, 18,137, 4, 34,145, 8, 29, 58,116,200, 73, 76, 76,108, 73, 41,189,235,128, 46,235,238,238,254,205, -138, 21, 43,234,245,234,213, 75,160,215,235,193,113, 28,182,111,223,110,154, 54,109, 90, 82,110,110,238, 27,206,154, 44, 66, 8, - 19, 16, 16,176,238,235,175,191,142,124,238,185,231, 4,165,165,165,224,121, 30,187,118,237, 50, 77,154, 52,233, 78,122,122,250, - 96, 74,169,211,137, 3, 9, 33,205,228,114,121,195,183,223,126, 59,187, 87,175, 94, 70, 0, 56,123,246, 44,115,225,194, 5, 85, -157, 58,117,238,126,250,233,167,231,107,160, 25,163, 84, 42,163, 70,142, 28,153,211,179,103, 79,147, 72, 36,226,143, 31, 63, 46, -184,126,253,186, 42, 52, 52,244,246,164, 73,147, 28,174,203, 73, 8,217,125,226,196,137,142,193,193,193,124,249, 73,157,150,191, - 79, 25,134,161,229,143,184,118,237,154,160, 99,199,142, 71, 40,165, 78, 69,193, 93, 60, 28,164,172,168,175,137, 82, 10,141, 70, -131,211,167, 79, 35, 62, 62, 30, 0,154,151,111,114,158, 82,138,194,194, 66,148,150,150, 34, 32, 32, 0, 0, 30,166, 76, 86,141, -240,240,240,200,204,206,206,246,253,249,231,159, 33, 20, 10,113,224,192, 1,172, 92,185, 18, 91,182,108,177,107,178, 2, 2, 2, - 16, 17, 17,145,146,150,150, 86,171, 50, 77, 55, 55,183, 2,173, 86,171, 42, 40, 40, 0,199,113, 56,125,250, 52,214,172, 89, 3, - 95, 95, 95,120,123,123,195,199,199, 7,177,177,177, 80, 40, 20, 86,147,213,190,125,251, 66,173, 86,235,110, 79,207,203,203, 43, -237,195, 15, 63, 12, 56,119,238, 28, 76, 38,211, 3, 8, 4,196,136, 0, 0, 25,215, 73, 68, 65, 84,235, 85, 42, 21,198,141, 27, -103,125,205, 48, 12,228,114, 57, 90,183,110,157,158,155,155, 91,233, 13,136,143,143, 79,122,118,118,182,255,133, 11, 23,238, 51, - 63,246, 12, 17,203,178, 80, 42,149, 8, 11, 11,203, 76, 79, 79,247,127,156,154,149,121,145,103, 21,107, 4,171,252, 68,213,201, -118,101, 84,168,255,228, 5,227,250,203,192, 25, 65, 77,165,128,177, 4, 48,106,193, 27, 74, 64, 68, 50,192, 84, 10, 31,137, 6, -219, 70, 71,169, 62,222,124,251, 74, 3, 31, 85,252,149,236,194,189,246, 62,136, 17,136, 94,235, 63,228, 61,175,148,172, 66,164, -102, 22,128,101,254,201,113,218,188,235, 16, 8, 88, 6,103,246,149, 5,170, 24,150, 69, 65,177, 30,249, 90, 35,250, 13, 25,167, -254,122,241,212,215, 0,124, 86,213,142, 52, 2, 34, 26,185,185,245,105,220, 40,132, 65,189,116,144,240,157, 0, 0,122,244, 37, - 52,203,243,101,235,239, 23,247,209, 22, 25,231, 94, 2,110, 84,165, 35,246,240,144, 41,155, 53,195, 2, 47, 47,244, 40, 45,197, - 45,129, 0,131, 52, 26,252, 62,110, 28, 4,235,214, 65, 0, 64, 63,108, 24,218, 46, 89,130,139,106, 53, 2, 11, 11, 97, 28, 54, - 12,226,115,231, 32,114,119,183, 59, 24,190, 50, 68, 34,145,113,205,154, 53,129,111,190,249,230, 17, 66,200, 83,109,178, 8, 33, -145,106,181,250,200,252,249,243,253, 62,253,244,211,244, 71,164,233,167, 80, 40,182, 23, 23, 23,143,115,246, 14,182,220, 92,205, - 94,181,106,213,168, 17, 35, 70,120,188,249,230,155,244,214,173, 91, 30, 0, 44,209, 16,159,246,237,219,215, 93,179,102,141,127, -203,150, 45,223, 27, 57,114,164,136, 16, 50,165, 58,147,229,230,230, 54,122,205,154, 53,222, 57, 57, 57, 86,115, 37, 20, 10,145, -146,146, 2,153, 76,102, 45,118, 46, 20, 10, 49,127,254,124,175,209,163, 71,143, 3, 48,174, 42, 77, 0,144, 72, 36, 67, 86,172, - 88, 81,175, 91,183,110,130,164,164, 36, 48, 12, 3,137, 68,130, 87, 95,125, 85, 88, 82, 82, 18, 50,115,230,204, 17, 0,236,223, -113, 84,130, 80, 40,124,109,245,234,213,145,109,219,182, 21, 92,189,122, 21,173, 91,183,198,153, 51,103,240,202, 43,175, 8,139, -138,138,194, 38, 76,152, 48, 28,192,106,103, 52, 9, 33, 1,114,185,188,241,111,191,253,150, 92,171, 86, 45,235, 13, 72, 88, 88, - 24, 23, 31, 31,175,185,122,245,106,212,201,147, 39,115, 91,183,110,237,112, 33,113, 66, 72,144, 92, 46,175,191,123,247,238,244, -153, 51,103,118, 89,181,106, 85, 47, 0,136,141,141,253,101,214,172, 89,135, 53, 26, 77,163,163, 71,143,106,218,183,111,239, 80, -205, 64, 0,129, 1, 1, 1,220,152, 49, 99,220,170,218,104,237,218,181,249, 0,106, 19, 66,234,208,178, 2,216, 46,254, 5, 40, -165,102, 66, 72,115, 66,200,249, 93,187,118, 33, 46, 46, 14,187,118,237, 66,124,124,252,249,242,245, 40, 40, 40,192,197,139, 23, -209,161, 67, 7,160,172,192,251, 19, 25,139,197,113, 28, 4, 2, 1, 82, 82, 82,176,118,237, 90,204,157, 59, 23, 17, 17, 17, 48, -153, 76,214,223,190, 64, 32,128, 80, 40,180, 68, 91, 28,186,232,155,205,102,156, 61,123, 22,223,110,220,136, 41,147, 39, 67,169, - 84, 2, 0,140, 70, 35, 52,121,121,144, 74,165,214, 8, 86, 85, 80, 74,183,223,188,121,115, 92,112,112,240,125, 93,131,150, 71, - 0,112,115,115, 3,207,243, 48,155,205,208,233,116, 88,188,120,177,153, 82,186,189, 42, 93, 75,108,130,101, 89,140, 27, 55, 14, -122,253, 63,245,193,155, 54,109, 10, 0, 8, 13, 13, 69,116,116,180,245, 53,195, 48, 85, 78, 10,179,213,252,186, 77, 99,148,218, -108, 29, 53,125, 17, 0, 32, 56, 56, 24, 81, 81, 81, 22, 83,109, 87,211,158, 23,121, 86, 17, 0,149,215, 95,187,146,152,241,217, -155, 19, 22, 45, 82, 72, 89,225,216,222, 77, 80,219, 67, 4,200,212, 16,117,248, 24,196, 35, 4, 0, 64, 53,119,128,253, 31,227, -191,125, 52,204,136, 77,186,159,234,170,213, 62,183, 52,154, 7, 6,215, 9, 69,210,206,225,245, 34,201,189,116, 13, 4, 2, 1, - 20,238,222,104,211,251,125,176, 44, 3, 55, 15,111, 16,174,212,186, 45,203,176, 16,176, 2,104,138, 74, 17, 90,167, 30, 35,145, -202, 58,163, 26,131,229,238, 46, 92,254,209,192, 54, 82, 70,154, 3, 4,138,255, 89, 17, 40, 6,227, 85,132, 15,187, 71,200, 70, -252,242,247,114, 20,152,186, 56,116, 96, 44, 17, 43,179, 25,191,143, 27,135, 46,171, 87,227, 20, 0, 33,128,152,213,171,113,109, -196, 8,248,154, 76,144, 0, 96,245,122,152, 43,244,217, 59, 2, 33, 4,189,123,247, 70, 78, 78,142,223,228,201,147,107,108,178, -100, 50,217,183,132,144, 30, 66,161,208, 72, 8, 1,195, 48,214,226,220,150,231, 70,163, 81,196,178,236,238,156,156, 28,167,187, -246, 8, 33,145,158,158,158, 71, 78,156, 56,225,167, 80, 40, 48,125,250,116,103, 37,236,105,250, 41,149,202, 83,195,135, 15,175, -253,237,183,223,238, 37,132,116,119,212,100, 85, 52, 87,171, 87,175,206, 95,187,118,237,215,182, 93,129,148,210,116, 66,200,186, -150, 45, 91,190, 61, 98,196, 8, 15, 0,163, 70,142, 28,137,234, 76,150, 68, 34,233, 20, 30, 30, 14,141, 70, 99, 61,193, 74, 36, - 18, 0,128, 66,161,128,187,187, 59, 68, 34, 17,244,122, 61,154, 55,111, 78,196, 98,113, 59, 71,218,172, 84, 42,123,244,233,211, - 71,112,252,248,113,100,100,100,192,221,221, 29, 10,133, 2, 28,199,225,173,183,222, 18, 45, 89,178,228, 69, 56,105,176,106,213, -170,213,171, 75,151, 46,130, 75,151, 46, 33, 49, 49, 17,122,189, 30,215,175, 95,135, 74,165,194, 27,111,188, 33, 90,176, 96,193, - 75,112,210, 96, 1,104, 60, 98,196,136, 76, 91,115,101, 65,161, 80,144,200,200, 72,141,151,151, 87, 12, 0,135, 13, 22,128,198, -239,188,243, 78,214,188,121,243, 58, 28, 60,120,240, 99,203,155, 7, 15, 30,156, 0, 0, 95,124,241,197, 81, 31, 31,159, 24, 0, -142, 26, 44, 80, 74,249,255,252,231, 63,119,197, 98, 49,132, 66, 33,196, 98,241,125,139, 72, 36, 2,195, 48,202,242,205,171, 29, - 28,252,172, 66, 8,105, 9,224,115,148,205,176,154, 76, 41, 61,253,132,155, 4,192, 90,188,189,121,124,124,188,213,100,237,217, -179, 7,221,187,119, 71,126,126, 62, 46, 93,186,100,107,174,158,212, 24, 44,240, 60, 15,161, 80,136, 69,139, 22,193,104, 52, 98, -211,166, 77,216,177, 99,199,125,231, 80,149, 74,133,165, 75,151, 58,213,157,197,113, 28,214,175, 95,143,143, 39, 76,176,154, 43, - 0, 16,137, 68,240,247,243,131,151,183, 55,110,223,190, 93,173,193,202,203,203,155,182,115,231, 78, 84, 53,200,125,231,206,157, -214,231,182,131,220, 29,105, 39,203,178,208,235,245,120,254,249,127, 74,185,190,243,206, 59,214,231, 26,141, 6, 44,203, 90,142, -133, 67, 7,128,101, 89,148, 82,160,183,244,159,247,122,124,248,161,245,121, 78, 78, 78,165,154,255, 11, 81, 43, 91,170, 28,131, -117, 35,171,120,153,128,164, 71,207, 27,243,194,144,218,190,238,160,218, 76,136,158,155,134,191,178,101, 88,180,120, 55, 0, 96, -252,171, 45,208,180,235,108, 24,190,121, 1,227, 90,179,226,215, 83,244, 31, 1,248,180,162, 22,165,124,253,224,160, 64,252,117, -235, 34, 4, 44, 11,177,187, 55,220,213,126,224,205, 6, 20,100, 37,226,200, 15,203, 1, 0,171,214,111, 7,195, 48, 16, 8, 88, -232, 13, 28, 34,106, 7,130,231,249, 74,103, 46, 0, 64, 3,160, 77, 39, 63,239,184,208, 80, 53, 65,195,124, 60, 80, 1,168,153, - 4, 17,105,110,164,181,155, 44, 54,175,160,176,205, 21,224, 68,117, 7, 70, 90,174, 18, 0, 64,180,110, 29, 78, 1,104,181,186, -236, 90,117,125,196, 8,184,173, 91, 7, 69,249, 54, 18, 66, 80, 88,205, 15,197, 30,150, 25, 43, 81, 81, 81, 88,181,106,149,223, -232,209,163,107,100,178,116, 58,221, 28,149, 74,213,101,221,186,117,126,125,250,244,121, 96,253,173, 91,183,208,161, 67,135,204, -140,140,140, 57,206,182,209,214, 92,121,120,120, 32, 57, 57,249,161,251,205, 45,230,234,192,129, 3, 33,193,193,193,104,222,188, -185,207,248,241,227,157, 49, 89,159,218,154,171,145, 35, 71,254, 13,192,151, 16, 82,209,160,144,242,117, 77,108, 76, 86, 1,128, - 5,149, 9,155,205,230, 16,133, 66,129,172,172, 44, 12, 25, 50, 4, 55,110,252, 19,240, 12, 12, 44,139,184,135,134,134,226,246, -237,219,240,241,241, 1, 33,196,215,145,125,246,241,241,241, 51, 24, 12, 24, 54,108, 24,146,147,255, 25,174, 24, 20, 20,100, 57, -166,222,142,232,216,226,231,231,231, 87, 90, 90,138,246,237,219, 67,167,211, 1, 0, 6, 12, 24, 0,161, 80,136,172,172, 44, 8, -133, 66,167, 53, 1,120,199,199,199, 87,154, 34, 69,165, 82, 25, 61, 61, 61, 27, 56,169,233,245,210, 75, 47,165,174, 94,189,250, -129,174,186, 51,103,206,188,172, 86,171, 15,170,213,234, 72, 39, 53,121, 91, 51, 37, 18,137,238, 51, 88, 66,161, 16, 12,195,212, -120, 12,218, 51,196, 66, 0,150, 89,109, 43, 1, 68, 63,193,182,220,135,173,201,218,179,103, 15, 26, 53,106,132,188,188, 60, 92, -189,122,245,137,155, 43, 11, 60,207, 67, 32, 16, 88,111,142,165, 82, 41,154, 55,111,110, 53, 87,132, 16,148,148,148, 64, 32, 16, - 88,206,215, 14,157,252,242,243,243, 17,224,239, 15,165, 82,137,122, 17, 17,184, 89,126, 30,177, 60,151, 72, 36, 32,132,192,108, -174, 58,112, 87, 62, 19,240,125, 84, 49,158,170,134, 80,160,204, 12, 85, 69, 96, 96, 32,120,158,183,156,243,171,139, 32, 56,164, -233,237,237, 13,173, 86,235,168,230, 51,141, 37, 77, 67, 71, 0, 71, 96, 51, 53,146, 16,194, 52,240,115, 91, 59,111,116,151, 33, - 47, 52,242, 70,105,118, 34,164, 74,111, 16,143, 80, 44, 90,188, 27,151,238,228, 2, 0, 22,125,247, 7, 54,207,236, 1,200,212, -136,114,207,129,191, 82,208, 7,118, 12, 22, 1, 37, 60,165, 16,176,101,253,177, 2, 1, 11,150,101,160,201, 78,199,146,105,163, - 0, 0,171,214,239,192,174,163, 87, 17, 28,222,200,218, 79, 11, 66, 0, 90,245,151,218,199, 93,180,106,116,223, 86, 50,226,145, - 15,120, 8, 31,220,192, 83, 4, 18,202,252, 95,123, 87, 30, 29, 85,149,167,191,251,222,171, 74, 45,169,164, 18, 66,165, 32, 36, - 4, 1,219,168, 96,156, 0, 14, 52, 25,150,145, 70,156,227,204,208,200, 34, 10, 2,129, 34,168,199, 33,216, 14,112, 20, 8,105, -192,214, 99, 88, 6,161, 33,131,136, 44, 42, 58,200, 98,219,224, 8, 39,172,118, 11, 97, 80,130, 1, 73, 32, 97, 73, 82, 73,165, -178, 84,146, 74,106,189,243, 71,213,171, 84,202, 90, 83,175,144,104,190,115,238,169,229,189,250,222, 93,235,125,239,119,127,247, -119,241,242,184,100,249,249, 35,109,219,127,104, 52, 63, 26,168, 98,100,132,184, 28,218, 57, 0, 98,183, 99, 98, 56, 44, 89, 12, -156,143,198,206, 85, 39,161,130, 23, 42, 10,133, 2,106,181, 26,235,214,173, 83, 47, 91,182,108, 47, 66,220, 24,154, 82,122,141, - 16, 50,110,193,130, 5,133,117,117,117,234,180,180, 52, 40, 20, 10, 40, 20, 10,104,181, 90, 76,157, 58, 85, 91, 93, 93,221, 85, -235,216,238,172,172, 44,181, 88, 44, 70,105,105, 41,122,245,234,229, 18,134, 93, 1, 33, 68, 29, 27, 27,251,183,175,191,254, 58, -117,240,224,193,184,122,245, 42, 30,121,228, 17,236,223,191, 95, 53,115,230,204,160, 68,150, 76, 38,155,236, 20, 76,208,104, 52, -113, 26,141,102, 44,128,177,129,174,173,209,104,226,114,114,114,254, 21,126, 4,150, 72, 36,186,173,215,235,251,200,100, 50, 28, - 56,112, 0, 10,133, 2,114,185, 28, 73, 73, 73,208,235,245,144,203,229,160,148,194, 98,177,240,127, 18,117,193,148,187,182,182, - 86,107,179,217, 82,142, 30, 61,138,218,218,142,152,120,169,169,169,112,250,107, 4, 27, 11,198,133,202,202, 74, 45, 33, 36,229, -210,165, 75, 40, 47, 47,199,164, 73,147,112,240,224, 65, 12, 31, 62, 28, 0, 96, 50,153,186, 18,124,207,198,178,172,207, 63, 61, -231, 19,103,188,144,156,112,220,180, 66,226,180,219,237,118, 94, 92,185,191,186,139,174, 0,215,252,165,192,221,119,231,103, 11, -121, 16, 8,147, 38, 77,130, 94,175,135, 66,161, 8,120, 3,190,151,224, 45, 88,171, 87,175, 70,118,118, 54,212,106, 53,150, 46, - 93, 10,142,227, 92,201,125, 38, 32, 20, 36,170,213,126,143,243, 62, 88,254, 64, 8,137, 81, 42,149,171, 25,134,153,198, 6, 81, -113, 54,155,205,102,183,219, 63,109,108,108,244, 27,166,129,119, 72, 15,166, 45,220,235, 32, 64, 94,195,230,244,166, 69,186, 51, -248,210, 21, 58, 77,115,133, 64,135,184,250, 83,246,248, 57, 19,135,196,227,240,241,191, 67,108,110, 0, 76, 62,219, 11,176, 89, - 64,196,209, 80, 43, 69,201,222, 14, 19,134,189,122,231,110, 37, 18,226, 21, 78,113,229, 76, 12,131,244, 33,142,135,215,191,156, - 46, 65,242,192, 33,224, 88, 22, 28,203, 66, 33,147, 64, 91, 93, 5,142, 99,174,250,186,236, 80, 22, 83,166, 60,148, 50, 64,157, - 24, 5, 12,245, 51, 0,134,197, 32,185,111, 20,158, 74,144,166, 14,101, 49,197, 95,165, 80, 74, 33,113, 10, 44, 3, 0,211,188, -121,200, 40, 40,192, 53,141, 6, 55, 53, 26, 60, 80, 80, 0,204,155, 7, 59, 58, 86, 21, 6, 26, 40,222,192,119, 68, 94, 8,173, - 88,177, 66, 91, 87, 87,247, 66,200, 68,142, 60, 95,171,175,175, 31,247,198, 27,111,104,117, 58, 29,228,114, 57,170,170,170,194, - 18, 87, 0, 96, 52, 26,103, 23, 20, 20,104, 11, 11, 11,161, 80, 40, 16, 19, 19,211,101,129,197, 91,174, 86,173, 90,213, 63, 37, - 37, 5,101,101,101, 80, 42,149, 72, 72, 72, 64,122,122, 58,206,158, 61,171, 74, 73, 73, 57,234, 92,101,228, 47, 79,135, 10, 10, - 10, 26, 0,160,160,160,160,129, 16,114,146, 16,178,141, 16,242,103,143,180,141, 16,114,210,253, 92,163,209,248,185, 63,110,147, -201,116,178,164,164,132,202,229,114,176, 44, 11,179,217, 12,169,212, 97,235,102, 89,214,229,152, 11, 0, 78,199,211, 51,193,148, -221, 96, 48,252,245,131, 15, 62,176,164,164,164,224,177,199, 30,195,176, 97,195, 48,106,212, 40,164,166,166, 98,245,234,213,166, -150,150,150,191, 6,195,227,142,202,202,202,191,236,223,191,223,146,146,146,130, 97,195,134, 65, 34,145, 32, 61, 61, 29, 73, 73, - 73, 88,183,110,157,169,177,177, 49,100, 78, 0,183, 46, 95,190,236,243, 31, 82, 38,147,197, 34,136,213,184, 30,184,125,254,252, -121,118,228,200,145,135, 61, 15, 60,241,196, 19,135, 21, 10,133, 18, 64,168,126,125,212, 93, 84, 73, 36, 18, 87,226,191,231, 56, -238,215, 96,193, 90, 12,224,123, 0,101, 0,150, 6, 56,247,158,194,125,181, 96, 93, 93, 29, 74, 74, 74, 80, 84, 84,132,145, 35, - 71,226,204,153, 51,128, 35, 76,131,223,177, 30,225,252,129, 82, 10,145, 72,132,180,180, 52,228,228,228,224,203, 47,191,196,181, -107,215, 96,177, 88, 92, 2,136,247,185, 12,197,130, 37, 22,139,161, 86,171, 97,177, 88, 92,214, 43, 0,184,254,227,143,224, 56, - 14,118,187, 29, 38,147, 41,160, 5, 75,169, 84,174,222,177, 99,199,171, 58,157,174,111,109,109,109,162,123,210,106,181,137, 85, - 85, 85,137,119,239,222, 77,188,125,251,118, 98, 69, 69, 69,226,205,155, 55,251,190,253,246,219,175, 42,149,202,213,193,228,147, -101, 89,164,167,167,227,149, 87, 94,113,165,247,222,123,207,149, 10, 11, 11, 59,140, 29, 65,130,101, 89,164,229,190,139,127,169, -165,174,244,165,138,184, 82,241, 31, 22,250,227,236,164, 69,186, 59, 60,157,220, 1, 0, 15,247,145,175,249,211,130, 49,115,126, -247,136, 18,135,142, 95, 64,222,231, 55,174,254,102,142, 42,109,112,124, 45,236,181, 37,248,195,243,195,241,238,190, 11, 0, 28, - 83,132,246,154, 98,208,250, 50,208,152, 20,220,212,235,188, 78, 47, 88, 77,109, 39,110,148,254, 56, 62,109,232, 8,166, 90,215, -220,105,133, 65,198,184,169, 32,132,160,223,192, 33, 96, 57, 14, 44,203,128, 99, 89,196,197, 74, 81,114,233,146,189,221,104, 60, -225,141, 51, 3,224, 18,100, 81,155,159,127, 42, 93,138,190,205,128, 76,226, 58, 70,111, 76,237,124,178,140, 3,134,198, 96,238, -221, 4,217, 9,109,219,102, 81,139,249, 48,128,159, 46,203,128,227,169, 38, 70, 34, 65, 43, 0,157, 72,132, 81, 27, 55,226, 71, -141, 6, 49, 59,119,130,133,195,139, 90,181,113, 35, 12,187,119,131,177, 90, 65,165,210,176, 44, 88, 90,173, 22,211,167, 79, 15, - 75, 8, 1, 29,150,172, 69,139, 22, 21,174, 91,183, 78,189, 98,197, 10,193, 56,151, 46, 93, 90,184,111,223, 62,245, 3, 15, 60, -208, 85, 42, 40, 20,138,255,180,219,237,113,239,188,243, 78,117,126,126,126,167, 39, 67,190, 46, 76, 38,147, 36, 46, 46,238, 93, - 0,227,253, 80,229, 45, 92,184, 80, 12, 32,219,105,201,122,108,225,194,133,231, 40,165,111,186,159, 68, 8,201,221,190,125,251, -116,183,169,196,109, 0, 54,250,203, 99, 83, 83,211,159,115,114,114,230,157, 58,117,170,183, 84, 42, 5, 33, 4, 98,177, 24, 15, - 62,248,160,211,242,234,112,120,165,148,226,181,215, 94,211,213,212,212, 4, 21,166,161,189,189,125, 87, 94, 94,222,120,163,209, -152, 58,119,238, 92,113,124,124, 60,180, 90, 45,214,175, 95,111,218,181,107,215,237,150,150,150, 80,125,165, 96,177, 88,118,173, - 92,185,114, 92,115,115,243,192,249,243,231,139, 27, 27, 27, 97, 52, 26,241,250,235,175,155,118,238,220,121,199,104, 52,134, 28, -168,119,212,168, 81,165, 21, 21, 21,153,173,173,173,245,114,121,231, 5,177, 34,145,136, 68, 71, 71,143, 0,176, 59, 20,206,140, -140,140,178, 91,183,110,141, 92,179,102,205, 73,139,197, 34,250,246,219,111, 93, 78,238,155, 55,111, 46,148, 74,165, 79, 34,116, -103,124,187, 68, 34,233,100,177,242,124,207,113,220, 47,222,130, 69, 41, 45,132, 35,244,197,125, 5, 79,113, 85, 92, 92,140,241, -227, 29, 67,250,204,153, 51, 24, 61,122, 52,206,156, 57,131,204,204,204,159, 53, 76, 3, 47,176, 56,142,195,204,153, 51, 49, 97, -194, 4,244,239,223,223, 53,206,221,157,220, 67, 17, 25, 86,171, 21, 67,135, 14, 69,187,201, 4,177, 88,236,154,130,228, 56, 14, -170,196, 68,148,150,150, 6,101,193, 98, 24,102,218,228,201,147,153, 43, 87,174, 96,198,140, 25,216,179,103,143,207,115,103,205, -154,133,143, 63,254, 24,147, 39, 79,102,150, 47, 95,238, 55, 76, 3,239, 92, 30, 76,153,248,251,116, 32, 11,158, 80,156,238, 90, -164,187,195, 91,160, 81, 12, 84,201,231, 78,120,144,195,161, 19, 23,144,119,232,214, 46, 27,165, 7, 14, 92,172,255, 98,233,104, -192,252,233,243, 72,159,186,219, 49, 45, 8,192, 94, 83, 12,243,167,179, 64,228,189,113,250,174, 8,141, 70,179,215, 29,173,173, - 86,243,158,131,123,183,228,140,220,154,169,234,155,168,132,190,209,232, 18, 89, 23, 11, 63, 3, 0, 76, 89,184, 22, 28,235,152, - 58,140, 85, 72, 33, 19,179,248,159, 15, 55,233,204,230, 54,175,189,202, 46, 98,178,231,255,246, 65,165, 82, 73,129, 71,197,157, -142,145,129, 14,206, 78, 66,235, 31,226,209,187,184, 30,207, 15, 86,196,110,188,210,144, 13, 96,179, 39,167,169,161,193,104, 40, - 42,146,253,211,222,189, 40,249,253,239,209,207, 96, 64,113,124, 60, 84, 86, 43, 20,112, 90,171,118,238,132, 97,207, 30, 72,173, - 86, 64,169, 68,221,150, 45,176, 94,190, 12,107, 83,147,209,147,207, 31, 8, 33,184,126,253,122,216, 86, 38,119,240,130,104,217, -178,101,123,235,234,234, 94, 16,146,115,246,236,217,133,199,143, 31,247,111,247,246, 3,131,193,176, 4,192, 18, 1,242, 99, 39, -132,188,233, 12,104,151,173,209,104,226,206,159, 63, 63,143, 16,178,149, 82, 90, 5, 0,132,144,196,172,172,172, 5, 30,226, 42, -224, 42, 66, 74,233, 45,133, 66,241,199, 37, 75,150,172,205,207,207, 87,240, 14,237,223,125,247, 29,172, 86, 43, 68, 34, 17,108, - 54, 27,178,178,178,154,235,234,234,222,245, 21,129,217, 11,175,149, 16, 50,107,237,218,181, 89,155, 54,109,122,134,101, 89,149, -205,102,171, 53, 26,141, 71,141, 70, 99, 65, 87, 86, 81, 57,235,225,197, 21, 43, 86,188,184, 97,195,134,201, 12,195, 36, 90,173, - 86,157,193, 96, 56, 98, 52, 26,187, 20, 91,235,220,185,115,181, 91,183,110,189, 81, 91, 91,251,112,114,114,114,163, 66,161, 48, -153, 76, 38, 86, 38,147,197, 70, 71, 71,103, 0,248, 6,192, 15,161,112, 22, 21, 21, 85,111,219,182,173,188,189,189, 61,109,219, -182,109,167, 99, 99, 99,143, 19, 66,136, 88, 44,142,151,201,100,227, 1,156, 4,112, 61, 20, 78,134, 97,236,238,214, 42, 79,255, -171,168,168,168, 95,139, 15,214,125, 7,103,152,134,139,148, 82,232,116, 58, 92,185,114,133, 23, 87, 25, 0,144,153,153,121,145, - 23, 89, 69, 69, 69, 24, 54,108,216, 69, 66,200, 61, 15,211,224,110,193,226,133, 84,255,254,253, 93,159,221,147,155, 15, 86, 80, -176,217,108, 16,139,197,224, 56, 14,125,147,146, 92,215,162,148,162,180,180, 20,122,189, 62, 40,129,197,178, 44, 75, 8,193,140, - 25, 51,130,186,238,115,207, 61,135,147, 39, 79, 34,152,233, 68, 39, 63, 6, 12, 24, 16,240, 28, 39,130, 18, 62, 44,203, 34, 57, -217,235, 68, 86, 80,156,238, 90,164,187,195,171,147,123, 89,141,113,205,172,245,103,151,255, 80,221,118,160, 68,219,154, 3,128, -126, 90, 44,255, 42, 93,197, 78,156,248,208, 29,180, 23,100,130,196, 58,130,174,209,230, 42,144,104, 53,238,216,251, 33,247,240, -213,106, 43,136, 87,255, 22, 74,105,165, 88, 42,127,243,195, 29,155,243,179, 22,189,166, 40, 46,211,162,177,185, 29, 44,219,209, -105,121,231,246,216,104, 41, 82,250, 40,177,239,191,215, 27, 12, 77, 13, 43,188,197,192, 2,128,212, 24,177,230,201, 17,131, 37, -232,211, 2,180, 73,129,182,142,206, 74, 47,253,187,227,141,193,195, 72, 53, 36, 14, 79,223,106,145, 30,188,213,162,129, 23,129, -213,102, 50, 77, 92,254,244,211,199,214,124,241,133,252,225, 3, 7,160,125,246, 89, 36, 53, 53, 65, 2,116,242,201, 98, 44, 22, - 64,169,132,110,207, 30,180,218,108,200,159, 59,183,181,205,108,126,202, 71, 61,123,133,197, 98, 17,143, 29, 59, 86, 48,113,197, -195,201, 21,146, 31, 87, 48,156,132,144,113, 19, 38, 76, 40,164,148, 74, 2,255, 34,178,112, 19, 89,230,243,231,207, 47, 56,125, -250,116, 25, 58,111,248,217,112,250,244,233,178,249,243,231,147,247,223,127,127, 39,128,149,193, 6,222,108,110,110,222, 28, 23, - 23,135, 49, 99,198,172,124,235,173,183, 18,134, 15, 31,142,196,196, 68, 24, 12, 6, 20, 21, 21, 97,241,226,197,250,166,166,166, -183,234,235,235,243, 67,204,179, 13, 14, 75, 77,200,214, 42, 63,156,118, 0, 31, 56,147, 32,120,233,165,151,190, 43, 43, 43,171, - 83,169, 84,255, 40, 22,139, 31,131,195,207,167, 26,192, 78,132, 40,132,120,100,103,103, 95, 42, 43, 43,211,245,235,215,111,164, -147, 51, 14,192, 93, 0, 59,186,192, 89,121,225,194,133,228, 17, 35, 70, 48, 34,145,136,178, 44, 11,145, 72, 68, 57,142,163, 78, -191, 25, 10, 0, 71,142, 28,145, 0, 8,121, 43,175, 30,132, 7,247, 48, 13, 85, 85, 85, 46,113,229, 22,104, 52, 35, 51, 51,243, -162, 83, 92,241,199,126, 22,255, 49, 74, 41,242,242,242,176,125,251,118, 4,138, 64,238, 92,173,231,215,140,195, 91,170,120,241, -100, 54,155, 81, 92, 92, 12, 66, 8,108, 54,155,107, 90,144, 15,209, 96,181, 90,253,174, 62,183,217,108, 54,147,201,132, 79, 62, -249, 36, 40,145,245,209, 71, 31,161,173,173, 13,182, 0,202,205, 61,164,194,227,143, 63, 14,189, 94,239, 90,196,147,145,145,225, - 58,207,108,246, 27,184,222, 39,103, 90, 90, 26,116, 58, 29,122,247,118,172,179, 73,153,173,113,157,103,109,249,245,196,253, 37, -193,134, 22,120, 60, 46, 78,217, 30,101,249,252,223,134, 72,198, 77,203, 80, 98, 96,159, 24,136,196, 82, 84, 54, 89,241,245, 15, - 77,216, 81, 88,125,219,104,177, 61,115,173,166,229,178, 63, 30,105,180,242,232,240,223, 78, 24, 61,123,193,226,232,230,118, 27, -202,203, 43, 80, 91, 83, 5,134, 48,232,219, 47, 25,169,169, 3, 32,139, 98,176,167, 32,191,229,226,185,227,103, 13, 77,250, 73, -190,184,158,137,139, 58,183,225,217,209, 35, 7, 13,138, 33,176, 90, 0,155, 5,176, 90, 0,187,243,149,255,206,222,185,175, 93, -185,210, 64,151,255,159,254,111, 95, 52,152,188,238, 41, 53,141,144,209,241,241,241,199,242, 14, 29,146,219, 77, 38,152,230,205, -131,172,189, 29, 50, 66, 64, 40, 5, 3,128, 72,165,168,219,178,197, 33,174,230,204,105,109,104,108, 12,121,171, 28,149, 74,245, -129, 78,167,235,118,145,220, 19, 18, 18,222,232, 74,184,135, 72,193,185,146,175,129, 15, 50,234,246, 61, 7, 64,197, 91,181,186, -192, 59, 64,165, 82, 45,103, 24,102, 20,165, 52,129, 97,152,122,187,221,254, 77, 77, 77,205,219,148,210, 82, 33,242,222,131,208, - 65, 58, 34,185, 7,154,175,174, 1,240, 31, 0, 12,148,210,242,136,103,172, 7,157,192, 79, 19,194,203,106, 65,127,199,238, 21, - 18, 18, 18,254,126,236,216,177,225, 3, 7, 14,100,220,221, 21,248, 88,119,252, 52, 22,199, 57,236, 16,167, 78,157,178,206,152, - 49,227,155,234,234,234, 49,190, 56, 99, 99, 99,191,250,254,251,239,127,215,216,216,248, 19, 33,229, 30,217,157,255,220,210,210, -130, 69,139, 22,253,111, 83, 83,147,215,173,114,226,226,226, 54,228,231,231,191, 58,101,202, 20,134, 15, 43,225,158,168,115,129, - 21,159,204,102, 51,118,239,222,109,223,180,105,211,127, 53, 52, 52,248,156, 34, 76, 74, 74,186, 93, 89, 89,153,204,135, 76,240, -149,220, 49, 96,192,128,170,242,242,114,159,193, 75, 35,193,217,221, 17,180,192, 2, 28, 43,136,210, 18,163,167, 83, 96, 26, 3, -251, 80,134,144, 40, 43,197, 53, 80,124, 37,231, 90,183, 22, 85,210,160,166,200,196,114,249,203, 49,138,248, 85, 83, 94,120, 37, - 97,192,160,223, 16,117,223,126, 32, 96,160,173,190,139,138, 27, 63,210,207,247,110,169,107,105,210,175,110,109,109,222,226,143, -231, 97, 66, 6, 15,138, 21,239,143,178,225, 33,240,229,240,216, 63,202, 19, 20,128, 89,196, 92,189, 97,176,204, 40,241,115,147, -228, 69,214,202,207, 62,147,115,143, 62,250,147, 0,111,118,187, 29,214,203,151,145, 63,119,110,151,196, 85, 15,122,208,131,240, - 64, 8, 25,136,192, 49,174, 44, 0,238,252, 92, 22,146, 95, 59,200,125,188,217, 51, 33, 36,186, 87,175, 94,199, 89,150, 77,117, -126,238,228, 19,196,191,231, 95,237,118,123,185, 86,171,125,146, 82,218,234,135,115, 80, 76, 76,204, 22,155,205,246, 68, 32,159, - 37, 74, 41, 88,150,253,214, 96, 48,188,236,203,213, 32, 82,171, 8,123,247,238, 93, 90, 81, 81, 49,136, 95, 21,237,126,175,244, -172, 7, 0,184,126,253, 58,198,142, 29, 91, 81, 85, 85,229,115, 62, 49, 18,156,221, 29, 33, 9, 44, 65, 47, 76, 72,146, 88,162, -120, 49, 74, 38,253,103,187,197,154, 6, 2,112, 34,209, 85, 83,155,241, 68,187,177,249, 67, 95,211,130, 30, 28, 97, 5,100,162, - 1, 10, 63,141,144,209, 18,177,248, 43,177, 82, 41,243,118,170,181,169,201,216,102, 54, 79,236, 17, 87, 61,232, 65, 15,122,208, -131,238, 2,226,216,153,227,152, 72, 36,146, 56, 63,187, 31,251,201,249, 86,171,181,173,182,182,118,146,191,217,150, 72,112,118, -123,240, 74, 51,216, 4,167, 46, 9,242,220, 9,193,114, 58,211,216,251,157, 51,130,101, 15,200, 29, 2,231, 88, 39,103,110, 55, -201,167,144,109, 36, 40, 39, 58,116,120, 80,188,161,112, 6,219,167, 66,204,103, 80,253,254,126,224, 12,178, 61,187,146, 79,191, -220, 93,108,247,220,110,146, 79, 33,219, 72, 16, 78,207,254, 19, 12,111,168,156,193,244,169, 46,228, 51, 96,191,191, 95, 56,131, -104,211,174,230,211, 39,119,176,125,201, 71,219,231, 6,250,237, 47, 33,249,141,228,238,137, 72,121,246, 83,103,120,124, 39,191, - 32,161,242, 35,193,201,131, 8,188, 17,165,144, 92, 78, 20, 10,205,233, 81,159, 66, 33,151, 58, 86,140,156, 68, 16,129, 66,131, - 68, 33,237, 88,133, 18, 86, 29,120,148, 85, 16, 94,119, 78,161,234,210,157, 71,168,126, 31,105, 78,247,239,194,233,171,158,156, - 66,244,123,111,237, 46, 36,167, 80, 99,201,227,247,130,140,165, 72,244,121, 47,253, 39,108, 94, 79, 78, 33,198,146, 39,167, 16, -253,254, 94,112,242,223,135, 51,150,188,113, 10,209,239,125,181,125,184,188,221, 5, 33, 69,140,140,100,197,144, 8,108,240, 40, -180, 16,226, 57,133,228,227, 57,137, 35,130,237,125,207, 9, 97,219, 40,215,201,153, 43, 32,231, 56,161,218, 40, 18,253,221,157, - 83, 40,126, 79, 30, 33,218,201, 27,103,184,249,245,145,207,176,224,141, 51,220,126,127,175, 56, 33,108, 27, 9, 50,150, 60, 56, - 5, 27, 75,158,229, 37,132,228, 10,201, 41,212, 88,242,146,207,176,219,201, 27,103,184,249,245,145,207,176,224,141, 83,136,123, - 72,164,120,187, 3, 66,178, 96, 69, 10,145, 16, 66, 64, 71, 60, 13,161,111,100, 66,138,172, 72, 89,218,132,178,226,120,225, 61, - 41, 32,157, 96,214, 38, 30,206,252, 9,242, 68,219, 29,209, 51,150,122,198, 18,238,179,177,228,173,223, 80, 74,115, 9, 33,171, -132,228, 12, 23,158,156, 66, 9, 33, 47,101, 15,107, 44,121,254, 86,136,177, 20,128, 51, 44, 11,179,175,242,135,195,219, 93,208, -245, 77,229, 4,134, 83,213, 10,246,103,235,198, 39,168, 85, 76,104, 68, 40,159,227,186, 67,217, 17,129,124, 18, 66,114, 35, 84, -246,238, 82,167, 61, 99,169,103, 44, 9, 2, 33,199,146, 71,159, 20, 36,175, 66,247,115,111,156, 66, 92,195,157, 67,168, 62, 26, -233,178, 11, 57,150, 34,209,246,221, 5,255, 15,195, 78,238,106,137,168,169,119, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 88, 0, 0, 2,128, 8, + 6, 0, 0, 0, 64, 11, 6,158, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 10, + 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83, +103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74, +136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142, +131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, + 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0, +248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, + 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98, +227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0, +104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, + 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43, +174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, + 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, + 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, + 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, + 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245, +224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, + 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226, +223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187, +111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84, +202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36, +196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147, +112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, + 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29, +242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, + 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, + 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187, +137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, + 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, + 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169, +155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10, +157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, + 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104, +247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, + 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, + 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, + 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63, +164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134, +117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, + 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107, +170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, + 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167, +238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, + 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, + 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77, +185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90, +120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, + 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182, +109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126, +115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196, +105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116, +245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115, +208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215, +176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79, +195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, + 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33, +247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, + 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, + 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243, +135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56, +148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78, +242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154, +118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197, +110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191, +205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, + 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87, +151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, + 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148, +180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180, +237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84, +250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, + 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, + 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198, +226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242, +154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201, +105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, + 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, + 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, + 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, + 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131, +207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, + 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192, +235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, + 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 32, 99, 72, 82, 77, + 0, 0,122, 37, 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111, +146, 95,197, 70, 0, 2,239, 68, 73, 68, 65, 84,120,218,236, 93,119,116, 20, 85, 31,189,111,118,182,111,178,233, 61,180,208, 33, +128, 52,165,247, 34, 29,145, 34,124, 40, 34, 42, 29, 69, 65, 80, 68,165, 5, 16,233, 82, 20,149,162,116, 20, 68,165, 41,189, 10, + 72,239,157, 16,210,251,102,235,204,188,239,143,236,172,155,101,147,221, 64, 64,196,185,231,204,217,157,118,231,245,119,223,239, + 53, 66, 41,133, 4, 9, 18, 36, 72,144, 32, 65,130,132,146, 3,145, 4,150, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 41,182, + 34, 35,132, 22,227,217, 54,222,114,218,143,230, 79, 59,231, 99,244, 59, 45, 65,206,230,118,206, 79,255, 37,238,108,254,180,114, +138,254,245,150,183, 56,156,222,166,169, 98,186,147,150,180, 59, 31, 23,103, 73,229, 35, 55,238,164,143, 33,222, 63,253,151,184, +179,249,211,198,233,154,126,188,225, 45, 46,167, 55,105,234, 33,220, 73, 75,218,157,143,139,243, 81,243, 81, 17,238,164,143,154, +150, 10,137,251, 79,241, 31, 0,251,184,196, 85,113, 64, 41, 37, 78,252,228,105,229,116, 14, 7,145,191, 36,221, 90,130,216, 83, +210,156, 46,225, 89, 82,248,148, 82, 74, 8, 33,123, 1, 52, 47, 73,191,151, 68,188,187,248,181, 68,120,139, 43,174,138,203, 89, + 82,233,254,113,115,150, 84, 94,114,229, 44,137,116,239, 46,222, 31, 99, 28,149,148, 59, 75, 36, 47, 61,142, 52,239, 38,253, 60, + 50,175, 43,103, 73,228, 37, 87,206,146, 72,247, 79,130,179, 36,242,146, 59,206,146, 72,247,133,197,189,100,193,122, 50, 66,192, + 53, 99,183,120,154,133,208,227, 18,153,222, 90, 92,158, 6,206, 18,142,163, 79,237,156, 37,217,154,105, 81, 82,113,244, 56,210, +187, 51,103, 73,241,187,242,148, 68, 60,185,227,124, 84,247, 22,226,206, 18,247,251,163,166,251, 39,197, 89,194,113, 84, 34,121, +201,133,179, 69, 9, 55, 2, 90, 56,157,127, 90,146,156, 37,149,151,220,184,243,145,227,201, 29,231,163,186,183, 16,119,150,184, +223, 75,162, 14,121, 92,188,207,156, 5,235,113,138,171,199, 85,153,149, 36,247,227,176,226, 60, 46, 75, 91, 73, 89,113,220,240, +238, 45, 65,186, 61, 37,237, 78,187,251,200,227,178,182, 62,237,144,242,146,148,151,158,182,188,228, 46,221, 80, 74, 63, 37,132, +124,242,180, 53,158,157, 57, 75, 74, 8,185,241,251, 35,229, 37,215,119, 75, 34, 47,121,224, 36,143,195,255, 37,157,159,158, 70, + 48, 79,139, 67,188, 29,223,243, 16,124, 45,158,230, 8,120, 76,238,108,241,111,240,251,227,112, 39, 33,228,211,199,228,247,127, + 75,152, 74,121, 73,202, 75, 79, 93, 94,114, 73,147, 45, 74,202, 50, 84,210, 13, 41, 87,206,146,248,134, 51, 71, 73,165,209,199, +237,247,146,204, 75,143, 35,238,255, 45, 40,182, 5,235,113,119,155, 60,205,156,143,131,251, 49,249,125,239,227,104, 29, 60,134, +113, 93, 37,238, 78, 74,233,167, 40,193, 46, 71,209,207, 37,233,214,199,217, 77,248, 56,210,230,227, 76,239, 37, 57,206,227, 49, +249,253,223, 18,239, 37,238,206,146,202, 75,110,226,252,145,221,234, 46,252, 74,186, 11,187, 36,211,230,227,228, 44, 9,238,199, +225,206,199, 21,247,255, 38, 48,144, 32, 65,130, 4, 9, 18, 36, 72,144, 80,162,144,214,193,146, 32, 65,130, 4, 9, 18, 36, 72, +120, 82, 2, 43, 42, 42,106,171, 86,171,173, 80,216,139, 6,131,225,126, 66, 66, 66, 75, 41, 8, 37, 72,144,224,177,160, 33,132, +193,223, 22,115, 1, 0,165, 82,235, 78,130, 4, 9,207, 48, 10, 29,131,165, 82,169, 98, 46, 94,188, 88, 73, 16, 4,240, 60, 15, +142,227, 28,191, 22,139, 5,205,154, 53, 43,246,248,173,240,240,240,125, 50,153,172,108,113,222,225,121,254, 78, 98, 98, 98,147, + 34, 10,238, 67, 0, 98, 8, 33,206,215,138,252, 5,144, 96,181, 90,235, 20,197, 73, 8,137,113,229, 43,132, 75,252, 95, 36,167, +191,191,255,113,150,101,163,221,113, 21,246, 95, 16,132, 27,201,201,201,141,164,100,250,100, 16, 30, 30,190,143,101,217, 98,167, +207,251,247,239, 23,154, 62, 35, 35, 35,255, 98, 24, 38,178, 24,148, 50, 65, 16, 46,223,191,127,191, 73, 97, 2, 68, 76,243, 30, + 4, 77,129,255,132,144,120,142,227,234,121,202, 71, 69,113,185, 73,163, 69,114, 58,139, 43,150,101,167,135,134,134, 14,201,203, +203, 51, 1,160, 50,153,140, 6, 5, 5,137,110, 3, 0,112, 28,151,146,145,145, 81, 67, 74,137, 18, 36, 72,120,166, 5,150, 32, + 8,140,217,108,198,149, 43, 87, 80, 72, 57,207, 63,196,247, 42,157,248,125,103,168,111,104, 24, 56,171, 21,186,224, 16, 7,119, +210,133,115,224,108, 86,112, 22, 11, 74,215,111, 32, 86, 94,168, 94,189,186,204, 3,103,244,140, 25, 51, 66,125,125,125, 97, 50, +153, 96, 50,153, 96, 54,155, 97, 50,153, 96,177, 88, 96,177, 88, 96,181, 90, 97,181, 90,193,113, 28,204,102, 51,118,237,218,229, +201,237,209, 83,167, 78, 13,213,235,245, 14, 62,241, 16, 57, 69, 94,155,205, 6,147,201,132, 63,254,248,163, 72, 78,150,101,163, + 19, 18, 18, 66, 21, 10, 5, 40,165, 16, 4, 1,148,210, 2,135, 43,202,151, 47,111,149,146,232, 19, 69,165,169,171,127, 9,245, +211,168,192, 9, 2, 58,215, 42,239,184,113, 99,217,122, 80,142,135,192,113,168, 56,188, 63,144,111,130, 65,181,106,213,138, 76, +159,148,210, 50, 83, 87,255,226,239, 45,103,106,106,170,177,106,213,170, 9,200, 31, 8, 90,152,133, 39,218,104, 52,134,138,110, +112, 21, 66, 12,195, 20, 56,182,111,223,142,206,157, 59,123,242,123,244,187,239,190, 27,106,179,217, 96,177, 88, 96, 54,155, 97, +179,217,192,113,156,227,224,121,222,113, 88, 44, 22, 28, 61,122,212, 91,203,213,140,182,109,219, 14,252,229,151, 95,116, 63,253, +244,147,174,108,217,178, 80, 40, 20,144,201,100,144,201,100, 96, 24, 6, 44,203,226,133, 23, 94, 32, 82, 18,148, 32, 65,194, 51, + 47,176,204,102,243,205,218,181,107, 83,251,255, 40,149, 74,165,112, 41, 56, 35, 43, 85,170,116,217,245, 61, 79, 93,135,190,161, + 97, 24, 95, 42, 16, 0, 48,241,118,154,163, 98,152,217,232, 57,199, 51,147,238,101, 1, 0, 52, 26, 13,136,115,179,185, 16,232, +116, 58,180,109,219, 22, 74,165, 18,245,234,213,131, 92, 46,119,123, 40, 20, 10,200,229,114,111, 42, 5,248,248,248,224,179,207, + 62, 19,197, 17,116,106, 21, 70, 52,170, 7, 53, 40,190, 58,119, 21, 22,129,130,101, 89,199,225, 13,167, 66,161,192,217,179,103, +193,178, 44,100, 50,153,227, 87,252,191,101,203, 22,244,236,217, 19, 44,203, 66,163,209, 0,255,161,217, 22, 79, 11,252, 52, 42, +188,182,248, 71, 0,192,221, 57,195, 29,113,119,116,232, 68,199, 51,101,222,234, 13, 66, 8,228,114, 57, 24,134, 41, 49,206,244, +244,116,227, 43,175,188,114,192,215,215,119,123,118,118, 54, 60, 8, 55,220,189,123, 23, 44,203, 22,154,222, 25,134,193,236,217, +179,113,237,218, 53,175,252,110, 50,153,240,245,215, 95,131,231,249, 2,188,226,127,215,107, 94,138,171, 41,237,218,181,235,255, +203, 47,191, 4, 16, 66,176,112,225, 66,200,229,114,116,234,212, 9, 65, 65, 65,216,177, 99, 7, 20, 10, 5,198,142, 29, 43, 37, + 62, 9, 18, 36, 20, 5, 57,128,231, 0,132,216, 13, 60, 57, 0,252,157,238,167,216,127, 67,156,206,255,116,195, 83,223,254,140, +120, 95, 60,183, 0, 80,186,185,158, 6, 64, 99, 63,204, 0, 14, 1,136,117,250,142,248, 30, 92,191,203,218, 11,194,230, 0,246, + 0,104, 33, 46,126,119,255,254,253, 14, 78,150,148,139,151, 47, 95,174, 34,106, 29,123, 87,161,130,227,184, 74, 98,183,161,104, + 29,106,211,166, 77,145, 45,122,206,106,125, 64,120,184,211, 80,238,186, 37, 10, 19, 46, 86,171, 21,189,123,247,206,143,129, 66, + 42, 27,231,195, 11,205, 6,139,197, 2,150,101, 81,185, 84, 8, 62,110, 95, 27,207, 83, 27, 12,185, 4, 92,150, 1,221,124,108, +184, 88,173, 14,150,222, 73,193,237,236, 92,176, 44,235, 21,167, 32, 8,133,138, 43,153, 76,134,197,139, 23,227,149, 87, 94,129, + 76, 38,243,138, 79, 66,201,131, 19, 4,183,233,176,176, 52,235, 77, 60,121,195,153,158,158,110,236,220,185,243, 17,149, 74,181, + 34, 44, 44, 44, 33, 62, 62,222,163,192,114, 21, 61,174,141,137, 47,190,248, 2,243,231,207, 71,203,150, 45,189,114,167,217,108, + 6, 33, 4, 75,151, 46,125,224,222,228,201,147, 31,248, 94, 81,156,246,134, 17, 19, 25, 25, 57,116,219,182,109,122,241,217,224, +224, 96,200,229,114,212,168, 81, 3,190,190,190, 56,112,224, 0,120,158,247, 58, 95, 74,144, 32,225,217,133, 59, 45,226,132,102, +227,199,143,175, 55,125,250,244,105, 13, 27, 54, 92,115,232,208,161,213,132,144,173, 78,101, 98,103, 59,199, 86,167,243,250, 46, + 34, 75, 14, 32,132, 16,178, 85,124,222,249,220,233,122, 27, 0, 74,241,124,252,248,241,177,211,167, 79,159, 54,110,220,184, 15, +227,226,226, 20,227,199,143,175, 57,125,250,244,105,226,119,220,185,195,217,130, 85,228, 42,192, 98,119,225,165, 75,151,224,105, + 92,170,167,245, 51,116,193, 33, 14,203,213,164, 50, 65,142,235,159,197,103, 58, 42,174, 5,117, 43, 64,167,211,161,253,164,207, +189,178, 12, 89, 44, 22, 36, 39, 39, 59,172, 10,158, 14,111, 57,181, 26, 53,118,189, 91, 3,119,211,148,248,244,112, 58,126, 57, +117, 13,114,185, 28, 47, 86,171,129, 14, 10, 95, 76, 40,163,196,187, 87,111,193,230,229, 88, 93, 74,169, 91, 97, 37,254, 23,187, + 74, 36,129,245,207,161,115,173,242, 14, 43,211, 81,223,214,142,235, 61, 13,103, 29,113,242,222,226,153, 0,128,150,117, 94,128, + 55,227,180, 61,113,166,165,165, 25,155,180,110,177,151, 55, 90,150,247,239,223,255,230,238,221,187, 53, 94, 53,231,220, 8, 44, +209, 74, 43,138, 43,150,101, 97,177, 88,188,242,187,197, 98, 41, 52,127, 40, 20,138, 98, 91,176, 0,192, 96, 48, 88, 54,111,222, +140, 5, 11, 22, 32, 40, 40, 8,237,218,181, 67, 68, 68, 4,214,175, 95, 15, 74, 41,134, 15, 31, 14,141, 70, 35, 90,171,165, 4, + 40, 65,194,127, 27, 69,105, 17,213,244,233,211,167, 57, 11, 24, 87, 65,227, 44,156, 92, 68,148,179, 72,139,245, 80,255,111,117, + 21, 77,226,119, 9, 33, 91,227,226,226, 58,123,112, 71,138,171,192, 42,114,153,125,179,217,124,179, 86,173, 90, 94,169,136,188, +188,188, 68, 79, 34,195, 93, 43,222,217, 42,224,227,227, 3,157,222, 7,140,151,229,173,205,102,115, 8,148,157, 59,119, 66,163, +209,160, 99,199,142,143,100,193,178, 90,173, 80, 42,228, 96,130,195,240,218,156,221, 72,203, 49, 58, 42,150, 61, 55,110,226,100, + 82, 50,222,109,216, 26, 58, 77, 50,114, 45, 22,175, 44,109,130, 32, 60, 32,174, 88,150, 69,239,222,189, 29,214, 3,231,113, 41, +144,186, 8,255,201,150,148,219,115,231,235,130,139,101,234, 97, 56,211,210,210,140,157, 59,119, 62,194, 27, 45,203,239,221,187, +119, 4,128,250,249,231,159, 47,182,192, 18,133,149, 92, 46,199,236,217,179, 49,127,254,124,199,125,111, 5, 22,199,113, 5,132, +211,213,171, 87, 11,124,203, 85,208, 21,213, 61, 74,243, 75, 73, 1,128, 16, 19, 19,227,120, 39, 60, 60, 28,254,254,254, 16, 4, + 1,130, 32, 64,173, 86, 67,163,209, 64,161, 80, 72,137, 78,130, 4, 9, 69,105, 17,227,184,113,227, 62, 36,132,108,181, 91,146, +206, 21, 33,164,220,161,190,139, 72, 75, 41,164,236,234,236, 78,100, 57,255, 23, 49,126,252,248, 88, 55,238,248,243, 1,129,229, +164, 26, 31,128,115,119, 97, 73, 85, 94, 69, 85, 96, 62,254,122,104,116, 58,200,100,140,199,253,149,196, 46, 66,177,192, 31, 50, +100, 72,145,227, 82,188, 29, 47,101,181, 90,193,176, 50,220, 15, 47, 7,158,217,239,120, 87, 60, 24, 86,142,219,225, 85, 32,187, +244, 23,228, 94, 86,180,174, 22,172,225,195,135,227,235,175,191, 6,195, 48,142, 48, 97, 89, 22, 21, 43, 86,196,205,155, 55,165, +156,246,148,136,171,194,174,243,188,224,181,213,197,221,115,105,105,105,198, 94,189,122,237,205,202,202, 90, 94,189,122,245,171, +200, 95,198,128,241,150,143,101,217, 2,194, 74, 20, 87,243,230,205, 43, 32,134,108, 54,155, 87, 13, 0,155,205,246,128,208,153, + 53,107, 86,129, 95, 0,104,212,168,145, 87,150, 96, 0,148, 97, 24,170, 80, 40,208,182,109, 91,212,172, 89, 19, 63,253,244, 19, + 4, 65,192,176, 97,195,160,209,104, 48,119,238, 92,112, 28,135, 25, 51,102, 72, 22, 44, 9, 18, 36, 20,165, 69,204,113,113,113, +231,226,226,226, 28,150, 36, 87, 11, 86, 33,232,100, 23, 83, 33,162, 56, 67,254, 88,170, 63,139,112, 67,231,194,132,151,243,181, +233,211,167, 79,115,227, 14, 71,183,228, 19,223,236, 57,241,252, 89,124,222,184, 54,128,130,221,130,139, 95,168, 2,157,143, 14, + 58, 95, 31,244,218,178, 31, 0,236,133,253, 56,175, 44, 88,162,192, 74, 75, 75, 43, 82, 92, 21,199,130,197, 40, 89,108,136,206, + 0, 85,202,193, 90,108, 5, 4,150,140,149,227,110, 80, 57, 48,114, 5, 88,158,243,138,147, 82,250, 64,151,224,128, 1, 3, 64, + 8,113,204,248,170, 85,171,150, 51,151, 84,227, 60,233,244,121,124, 25, 46,110, 28, 10, 0,104, 98, 48, 56,226, 98,106,173,191, +231,109,204, 57,187,215, 97,109,156,132,247, 31,138, 51, 45, 45,205,248,124,213,216, 35,138, 64,191,229,119,238,220, 57, 2,128, +233,211,167,143,127,173, 90,181,188,202,147,226,164, 9, 87,113,229,108,185, 18,127,109, 54,155, 87,126, 23,199, 66,121,130,216, + 93,232, 41,205, 83, 74,105, 96, 96, 32, 24,134,129, 94,175,135,143,143,143, 99, 6,173, 90,173,134, 86,171,117,140,223,244, 82, +176, 73,144, 32,225,191,139, 0, 81,224,216, 69, 82, 1,203, 18,165,180,179,179, 8, 42,172,171,208,110,113,218,231,225, 91,191, +216,133,153, 91,136,150, 52,151, 50,121,171,171, 56, 99, 69,197,232,252, 27, 17, 17,241,155,143,143, 79, 57,111,125, 93,156, 69, + 71,121,155,245, 1, 75, 22, 33, 4, 62,190, 62,208,248,232,160,241,245, 41,212,202, 85,148,192, 18, 45, 67, 98,101,179, 98,197, + 10,248,248,248,224,245,215, 95, 47,246, 24, 44,135,192, 82, 48,216,161,250, 3, 50, 37, 91, 64, 92,177, 44, 11,153, 92,142, 68, +159, 8, 48,114, 57, 88,206, 59,171, 88, 86, 86, 22, 88,150,197,199, 31,127,236,104,177, 59,139,171,226,248, 89,194, 99,106, 61, +241,182, 7,172, 78,133, 89, 91, 31,150, 83,180, 92, 41, 2,253,150, 87,169, 82,197, 97,185,210,106,181,226,236, 81,143, 96, 24, +198,173,184,114,157,241,199,178,108,126, 90,246, 48,219,209,217,130, 21, 23, 23,231,224,117,182, 92,137, 40, 78, 62, 18,221,186, +119,239, 94,156, 60,121, 18, 67,134, 12,129, 70,163,193,252,249,243,193,113, 28, 38, 79,158, 12,141, 70, 3,165, 82, 41, 37, 62, + 9, 18, 36,235, 85, 81,251,138,166,184,140,115, 34, 46,150,166, 20,119,194,202,185, 59,208,233,191,205, 13,175,197,165,235,208, +245,186,248,155, 22, 23, 23,183, 91,180, 92, 57, 93, 47,224,142, 66, 45, 88, 42,149,170,220,149, 43, 87, 28,139,140, 22,245,107, +177, 88,208,178,101, 75,175, 45, 97,226, 44, 66,150,149, 21, 16, 20, 90, 95, 31,104,245,190,208,248,248,184, 10, 13,226,169,240, + 22, 91,192,206, 2,235,147, 79, 62, 1,203,178,248,250,235,175, 1, 0,239,191,255,190,215, 99,176, 68, 78,240, 4,241,244, 58, +106,207,233, 9,203,247, 54, 36, 29, 60, 13,150,101, 17,218,160, 3,132,231,123, 34, 79,227, 3,150,231,188,158, 69,152,158,158, +142,155, 55,111, 66, 38,147, 97,244,232,209, 5,214, 42,114,157,153,182,115,231, 78,201,130,245, 79,100,112,129,243, 74, 76, 21, +199,202,232,204, 41,142,185,202,202,202, 90,126,231,206,157,163, 0,152,254,253,251,251,107,181, 90,124,243,205, 55,121, 0,148, +235,215,175,215,120, 18, 67, 98,186,241, 36,174,228,114,121,126, 90,246,174,112, 43,208,136,240, 52,224,221,155, 52, 47,186,149, + 16, 2,158,231,161,209,104, 10, 88,174,212,106, 53, 84, 42,149,148,240, 36, 72,144,224, 9,127, 22,227,217,250, 78, 98,233,207, +135,228,253,243, 81, 29,204, 22, 38, 48,204,102, 51, 46, 92,184,224, 45,143,215,139,142,150,170,247, 2, 38,221,203, 2, 33, 4, + 95, 53,170, 14,157,222, 7, 90,157, 14, 47,255,180,215, 81, 96,159,157,246, 62, 84, 58, 31, 68, 54,109,231, 85, 1, 46,118, 17, + 58, 11,172,204,204, 76,200,229,114, 76,153, 50, 5, 12,195, 96,198,140, 25,136,138,138,194,253,251,247,177,126,253,122,175, 44, + 88, 50, 94,134,136, 87,171, 66, 59,192, 15,250, 87,155, 33,160,237, 39,184,103, 97,113,200,164, 69, 51,211,121, 40,119,204,131, + 69,224,189,158, 81,197,113, 28,246,238,221,235, 58,144, 29,148, 82,199, 42,249, 54,155, 13, 86,171, 21, 51,102,204,128,180,147, +200,147, 71, 68,131,225, 8,169, 55, 24, 0,176, 37,238, 13,199,245,143,207,254,157, 62,103,127,159,191, 96,127,149,178,237,138, +197,153,150,150,102,124,177,101,163,125, 38, 65,254, 93,141, 26, 53, 10, 88,174,212,106, 53,177,159,123, 37,170, 25,134,129, 76, + 38,123,160, 91,176, 48,145,229,205, 24, 44,142,227, 28, 11,128, 22, 53, 94,241, 97, 44, 88,111,188,241, 6, 34, 34, 34, 28,150, +171, 73,147, 38, 65,163,209, 96,252,248,241,176,217,108,152, 55,111,158,148,248, 36, 72,144,240, 79,136,177,199, 6,183, 37,168, +201,100,186, 85,179,102, 77, 20,114, 47, 74,173, 86,203, 93, 10,231,200, 74,149, 42, 93,118,237, 42, 36,132,180,161,148,238,114, + 87,152, 19, 66,224,171,247,133,218, 71, 7,173,139,213, 74,237,171,135,202,199, 7,140, 66,238,174, 34,120,128, 83, 28, 59,226, + 44,176,196, 35, 43, 43, 11,114,185, 28, 11, 22, 44,128, 94,175,135,217,108,246,200, 41, 86, 54, 50,153, 12,121,119,115,112,113, +218, 46, 40,213,135, 80,161,221, 43,136,144,107,160, 56,176, 9, 70,222, 86,228, 66,163,238, 56, 43, 85,170,132,137, 19, 39, 62, +176, 60, 67, 97,136,138,138,242,232,247, 71,133,196,233,158,179,168, 89,174, 34, 4,202,187,123,206, 45,167,104,185, 50, 9,242, +239,110,222,188, 41, 90,174,252,180, 90, 45,150, 44, 89,146, 7,128,153, 60,121,178,182, 76,153, 50, 50,111,210,146, 76, 38,195, +156, 57,115,220,142,185,114, 39,182,138,147,143,156,223,109,222,188,185,219,133, 70,221,137, 54,119,156,162, 91,131,130,130, 28, +150, 43,158,231, 29,179, 7,197,213,226, 11,107, 76, 72,233, 83,226,148, 56,255, 59,156,207, 26,220,214,238, 9, 9, 9, 47, 22, +246, 66,133, 10, 21,174, 92,185,114,165,162,184,101,134,189,192, 84,152, 76,166, 74,141, 26, 53,242,104,202, 17, 4, 1, 42,149, + 10,148, 82,180,154, 56, 29,132, 1, 24, 20,172,188, 66, 27,183,134, 76,198, 66,200,223,146,195,227, 44, 66,163,209, 88,160, 82, +112,119,228,230,230,194,108, 54,123,189,250,182,201,100, 42,176,148, 2,161, 2,110,255,190,238,129,217,132,226,225,237,184, 28, +181, 90, 93,160,139,167, 40,120, 90, 83, 76, 66,201, 67,156,136, 0, 0,149, 27,117,132, 32,240,160, 60, 95, 96, 59,163,170,229, + 94,132, 64,121, 88,109,121, 48,155,205,158,204,140, 36, 53, 53,213,216,171, 87,175,189, 0,190,237,214,173,219,101,228,207, 96, +161, 62, 62, 62, 42,185, 92, 46, 0, 72, 7, 64, 51, 50, 50,252,238,221,187, 39,152, 76,166,210,158,220,249,203, 47,191,224,194, +133, 11,104,218,180,105,129,109,155, 68, 43,168,243,106,236,222,164, 79,177, 91,220,221, 10,238,133, 9, 56,111, 33,147,201,224, +231,231, 7,133, 66,129, 41, 83,166, 64,161, 80, 64,171,213, 2, 0,230,205,155,231, 88, 52, 85,130, 4, 9, 18,158,121,129,229, +169,188, 44,162,251,176,200,174, 66,142,227,226,203,148, 41, 83,172,143,241, 60,159,228, 65,176,197,175, 95,191, 94,225,108,117, +240,244, 75, 41, 77,242, 80,201,198,111,217,178, 69,225,206,154, 81,216,198,207,158, 56,121,158,143, 47, 91,182,108,161, 22, 18, +119,176,217,108,247,164, 36,250,228,192,243,124, 17,233,243,163,135, 77,159, 87, 43, 87,174,124,207,223,223,255,215,176,176,176, +180,131, 7, 15, 6,213,175, 95, 63,200,249,153,250,245,235, 71,184,188,102, 65,225,251, 16,130, 16, 18,223,173, 91, 55,183,105, + 94, 20, 75,110,210,103,188,167, 52,127,236,216, 49,133,243,251,133,241, 59,229,163,120, 47, 4,235,237,218,181,107, 51,206, 60, +133,165,125,155,205,150, 34,165, 66, 9, 18, 36,252,103, 5,150,209,104,188, 91,179,102, 77,174,144,123,119,138,122, 55, 53, 53, +181, 94, 73,123,192,106,181, 54,250, 55,112,166,164,164,212,147,146,219,211,141,199, 17, 71, 73, 73, 73,207,151, 52, 39,199,113, + 37,158, 62,109, 54, 91,163,199, 17,166,105,105,105, 13,165,148, 37, 65,130, 4, 73, 96,121, 1,111,151, 99,144, 32, 65,130, 4, + 9, 18, 36, 72,248,175,130,145,130, 64,130, 4, 9, 18, 36, 72,144, 32,161,100, 65,144,191,107,244, 3, 40,206,236, 0, 66, 72, +155,226,126,216, 19,191,196, 41,113, 74,156, 18,167,196, 41,113, 74,156,207, 30,167, 39,238,103,102,118,162, 56, 59,234,113, 28, + 0,218, 72,156, 18,167,196, 41,113, 74,156, 18,167,196, 41,113,254,215, 14,169,139, 80,130, 4, 9, 18, 36, 72,144, 32,161,132, +193, 74, 65,240,207,128, 16, 34,163,148,242, 37, 72, 25, 0,160,176, 13,221, 44, 0, 50, 30,198,153, 0, 20,246, 67, 92,168,200, + 6,192,106, 63,188, 88,106,254, 51, 38, 33, 33, 32,150,242,242,250,148, 16,185, 32,224, 84,233,210,165,254, 2, 94,180, 0,128, + 79,120,181,106, 62, 58, 77, 27,179,213, 82, 78, 37, 87, 94,200, 52,228,238, 52, 37, 93,190, 37,165, 16, 9, 18,254,145,114,169, + 11,128,207,236,121, 63,142, 82,186, 78, 10, 21, 9, 18, 74, 88, 96,249,250,250, 30,103, 24, 38,218,211,250, 58, 78, 25, 19, 60, +207,199,167,167,167,215,243, 50, 35,179, 0,122,249,248,248,180,148,203,229,141, 1,192,102,179, 29,204,205,205,221, 13, 96, 61, +165,148,123,200, 2, 66, 15,160, 55,128,126,246, 75, 63, 0, 88, 71, 41,205,126, 72,190,154,126,126,126, 27,229,114, 57, 77, 77, + 77,109, 0, 0, 65, 65, 65, 71,108, 54, 27,201,206,206,126,153, 82,122,166,152,124,140, 66,161,152,222,180,105,211, 38,132,144, +149,148,210,197, 37, 20,151, 42,134, 97,220, 10, 19, 65, 16,202, 62, 4,159, 2,128,223,130, 5, 11,130, 86,173, 90, 85, 59, 62, + 62,190, 6, 0, 68, 71, 71,159,237,223,191,255, 95, 35, 70,140, 72, 3,144,101, 23, 90,133, 34, 33, 33, 32, 54, 57,241,198,144, +164,228, 11,189, 1, 32, 60,162,198, 58,153,140, 81, 68, 69,157, 60,172, 13,238, 23, 92,185, 74,249,193,107,190, 89,160, 40, 91, +174, 20,254, 56,116,242,185, 17,163, 62,140, 85,135, 85,254, 66, 18, 89, 79, 14,122,189,254, 56,195, 48,209, 69,229,113,119,121, +158,231,249,248,180,180,180,122,133,113,178, 44, 27, 93, 84,121,225,238,154, 32, 8, 55, 82, 82, 82,220, 46, 25,225,231,231,119, +152,101,217,114,222,114,137,191, 28,199,197, 23,182, 68,140,159,159,223,113,153, 76, 22, 93,148, 63,221,221, 19, 4,225, 70,114, +114,114, 97,238,124,192,239, 37,225,206,135,225, 44,202,157, 98,121, 4, 96, 94, 80, 80,208, 11,105,105,105,255, 3,240, 97,118, +118,118, 45,153, 76,134,192,192,192, 15, 9, 33,215,252,252,252,150,101,101,101, 29, 2, 48,138, 82, 42, 72, 57, 70,130,132, 71, + 20, 88, 12,195, 68,223,187,119, 47, 84,167,211, 1,248,123,191, 60,113,147,103, 65, 16, 64, 41,117,252,114, 28,135,170, 85,171, +122, 43, 50,106,232,245,250, 13,227,199,143, 47,221,171, 87, 47,165,184, 37, 76, 66, 66, 66,165,141, 27, 55,254,111,202,148, 41, +159, 16, 66,122, 82, 74,207,122, 43, 90, 0,180, 6, 48,160,118,237,218, 61, 38, 77,154,164,104,213,170, 21,120,158,199,175,191, +254,218,116,242,228,201, 11, 8, 33,155, 0, 44, 7,240,187,183,133, 4, 33,164, 73,120,120,248,234, 3, 7, 14, 68,220,188,121, +147,239,213,171,215, 90, 0, 56,126,252,120, 12,207,243,164, 65,131, 6,191, 16, 66,250, 82, 74, 15, 20, 35,204,187,141, 24, 49, +162,231,240,225,195, 67, 94,127,253,245, 87, 1, 44,182,127, 75,220, 69,188,184, 27, 16, 58, 44, 87,148, 82, 69, 17,207,133, 23, +195,146,165,187,121,243,102, 64,163, 70,141,134, 38, 39, 39,191,235,204,155,148,148,132, 19, 39, 78, 88,167, 77,155, 54,231,208, +161, 67,139,202,149, 43,151, 1,192, 80, 24, 17,229,229,245,147,146, 47,244,110,214,112,129, 31, 0,172,223, 50,244,149, 99,127, +165,248,110,221,182,244,127, 74,181,194,188,234,171, 57,138,138, 21,202, 98,207,241,171, 56,122, 33,157,212,104,210,153,205,218, +186,178, 45,128,165, 82,246,124, 50,144,201,100, 81,241,241,241,161, 90,173,214,237,134,238, 46,227, 46,196,133, 75, 81,169, 82, +165,194, 11, 22,150,141,190,119,239, 94,168, 90,173,118,148, 29,174,101,134, 88,174, 56,210, 10,165,168, 92,185,178,181,136, 50, +169,204,157, 59,119, 66,181, 90,173,131,199,157,251, 92,133, 70,229,202,149,139,242,123, 1,119,122,195, 73, 41, 69,197,138, 21, +121, 79,126, 23,119,172,240,228,111,145,179, 92,185,114,180, 56,156,222,184,179,124,249,242, 86, 15,209, 63,239,242,229,203,195, + 75,149, 42,133,138, 21, 43, 30,122,225,133, 23,244, 58,157, 14,219,182,109, 67,181,106,213, 98,245,122,253,209,245,235,215,203, +199,142, 29,251,220,119,223,125, 7, 0, 35,164, 28, 35, 65,194, 35, 10, 44, 66, 8,116, 58, 29,214,174, 93, 91,232,182, 25,206, +255, 75,151, 46,237,213, 7, 9, 33,245,202,149, 43,183,247,192,129, 3,154,136,136,191, 23,176,182, 88, 44, 8, 8, 8,192,176, + 97,195,148, 93,186,116,169,216,174, 93,187, 35,132,144,230,148,210,227, 30,248,122,132,132,132, 44,252,248,227,143,195,250,244, +233,131,160,160, 2,139,100,163, 87,175, 94,120,249,229,151, 21,151, 47, 95,126,101,197,138, 21,175, 44, 94,188, 56,145, 16, 50, +130, 82,186,169, 40, 94,173, 86,219,173, 66,133, 10, 75, 14, 28, 56, 16, 26, 26, 26,138,152,152, 24,102,236,216,177, 21, 43, 85, +170,164,137,142,142,102,238,223,191,143,159,126,250, 41,170,111,223,190, 27,148, 74,229, 96,139,197,178,217, 11,191, 43, 3, 3, + 3,199,188,253,246,219, 65,217,217,217,220,201,147, 39,175,138,215, 85, 42,213,196, 6, 13, 26,212, 33,132,172,165,148, 46,127, + 24,203,149,221, 74,231,186,231,136, 77,188,239,165, 37, 75,121,234,212,169,192,134, 13, 27,110, 50,155,205,117,134, 12, 25,114, +103,218,180,105, 26,189, 94,175, 7, 64,178,179,179, 51, 62,251,236, 51,203,220,185,115, 63,168, 86,173, 90,235,195,135, 15,247, +120,238,185,231,108,118,241,246,160,192, 34,196,225,158,187,247, 82,176,247,144,160,156, 56,254,253,232,153, 83,203,221,254,243, +252, 93,129,213,232,241,243,190,115, 72, 74,203,197,111,135,207, 35, 60,200,151, 40, 84,242, 88,255,232,216,230, 89,247,206,239, +163,210,142,215,143, 29,132, 16,104,181, 90,252,252,243,207, 15,108, 49,229,110,251, 41,150,101,225,239,239,239,113, 55, 2,181, + 90,141,157, 59,119,186,221, 27,209,221,214, 59,126,126,126, 64, 17,155, 93, 19, 66,160, 86,171,113,240,224, 65, 48, 12,227,118, + 11, 31,215,107, 58,157, 14, 76, 17,123, 82,137,156,251,246,237,243,200, 37,254,250,248,248, 0,128,172,200, 76,169, 82,225,192, +129, 3,133,250,217,245,191,143,125, 63, 86, 79,156, 7, 15, 30, 44,176, 69,151,235,214, 93,206,231, 58,157,206,209,112, 43,180, +117, 22, 16,208, 32, 58, 58, 26,199,142, 29,195,250,245,235, 3, 99, 99, 99,113,245,234, 85, 16, 66, 48,109,218, 52, 82,189,122, +117,121, 98, 98, 34,154, 54,109,138, 31,127,252,177,145,148, 91, 36,252,131,144, 3,120, 14, 64, 8,242,119,141,201, 1,224,111, +175,123,148, 0,210, 0,104,236,135, 25, 64, 46,128, 96,251,187,169,246,178,197, 89, 32,164,160,224,166,208,245,237,220,226,142, + 18, 33, 78,247,196,111,184,158,187,254, 22,224,102,237,133,140, 88,137,181,160,148,238, 45,224, 35, 47,196,149,184,143,152,107, + 94,118,179,241,171, 74,167,211,109, 60,114,228,136, 38, 36,228,111,183,155,205,102,228,228,228, 32, 55, 55, 23, 57, 57, 57,240, +245,245,197,250,245,235, 53,173, 91,183,222, 72, 8,169, 68, 41, 53, 23,198, 9, 96,206,253,251,247,195, 56,142,131, 82,169, 44, +172,229,139,170, 85,171,226,195, 15, 63, 68,251,246,237,195, 91,182,108, 57, 7,192,166, 34, 56,161,213,106,151,156, 56,113, 34, + 84,171,213,226,202,149, 43,136,143,143,199,123,239,189, 87, 74, 16, 4,220,189,123, 23, 87,175, 94,197,189,123,247,176, 98,197, +138,208,238,221,187, 47, 1,176,185, 40,191,219,241,230,232,209,163, 43, 5, 6, 6, 50,159,127,254,121, 86,110,110,238, 87,246, +235,227,231,205,155,215,183, 89,179,102, 33,131, 6, 13, 2, 33,100, 13,165,244, 1,193,226,194,233,206,114,197, 3,184,232,242, + 90, 85, 23,203, 86,184, 61,241,101,186,225, 36, 0,252,218,181,107, 55,218,108, 54,215, 57,112,224,192,181,198,141, 27,151, 1, +112, 95, 76,116,126,126,126,186, 57,115,230,132,117,238,220,249,114,171, 86,173,234,180,107,215,110,116, 74, 74,202, 52,251,125, +234,202, 41, 8, 56, 21, 30, 81, 99,221,190,195, 35,122,239, 57,104, 81,188, 63,234,147, 59,165, 75,149,205, 58,117, 37,157, 63, +127, 35, 5, 57, 70, 14, 47,181,202,223, 88,188, 65,141,210, 88,184,246, 0,134,189,243,145,124,211,186,149, 47, 95,163,208, 1, +248,165,136,240,124, 36, 72,156,127,139, 12, 65, 16, 32,151,203,209,161, 67, 7, 16, 66, 30,216,107, 83, 46,151,227,240,225,195, +104,213,170, 21,228,114, 57,222,120,227, 13,175, 56, 89,150, 69,187,118,237, 28,251, 28, 58,243,185,138, 5,119, 90,192,213,239, +148, 82,176, 44, 11,134, 97, 10,221,224,218,149,211, 83,185, 36,186,179, 40, 46,231,123,158,220, 41, 90,143,188, 21, 87,222,114, +138,238,100, 89, 22,141, 26, 53,194, 95,127,253, 85,164,216,114,167, 43, 93,253,158,145,145,241, 90,165, 74,149,246, 45, 88,176, + 32, 16, 0,210,210,210, 28, 27,209,203,100, 50, 92,186,116, 9, 22,139, 5,159,126,250,169, 53, 59, 59,123,144,148,143, 36,206, +199,201, 89,148, 22, 1,208,108,252,248,241,245,166, 79,159, 62,173, 97,195,134,107, 14, 29, 58,180,154, 16,178,149, 82,218, 89, +252, 29, 63,126,124,236,244,233,211,167,141, 27, 55,238,195,184,184,184,115,132,144,173, 0,224,122,110,119,127,103, 23,241, 22, + 34,242,216,221, 82,224, 89,119,231,174,191,174,220,172,211, 5, 98,247, 28,113, 46,204,188, 21, 88,222,236,173,199,178,236,240, +105,211,166,133, 21, 37,174,114,115,115,145,144,144,128, 50,101,202,224,141, 55,222, 8, 91,176, 96,193,112, 0,179,138,160, 85, +200,100, 50, 28, 59,118, 12,201,201,201,168, 89,179, 38,202,149, 43, 87,224,129,235,215,175,227,215, 95,127, 69,102,102, 38,234, +214,173, 11,228,143, 47,114,139,231,158,123,238,211,170, 85,171,182,107,215,174, 29,167,209,104,112,234,212, 41,212,169, 83, 7, +107,215,174, 69,233,210,165,161,213,106,113,249,242,101,212,172, 89, 19,123,247,238, 69, 72, 72, 8,106,215,174,205,213,173, 91, +119,127,122,122,250,238, 91,183,110,125, 90, 72,194, 81, 68, 69, 69,125,248,246,219,111, 43, 19, 18, 18,132, 21, 43, 86, 28,162, +148, 30, 34,132, 12,254,232,163,143, 94,109,223,190,125,200,201,147, 39,179,255,252,243,207, 63,221,137, 43, 47, 45, 87,156,107, +101,196,243,188,217,104, 52, 90,204,102,179,141, 97,152, 91,132, 16, 11,207,243,133,245,237,168, 7, 12, 24, 80, 62, 53, 53,117, +216, 59,239,188,115,211, 46,174, 46, 33,127, 96, 59, 0,128,227, 56,115,110,110,110,118,195,134, 13,203,244,237,219,247,218,234, +213,171,135, 13, 24, 48, 96,253,242,229,203,115, 1, 24, 93, 9, 75,151, 46,245,151, 76,198, 40, 12, 57,129, 55, 54,172, 95,246, +238,175, 91,134,151,186,123,247, 94,197,160,224, 16,131,194, 39, 36, 97,253, 15,223, 29, 7, 96, 73, 72,201,198,153,235,137,144, +203,101,184,112, 55, 11,205, 94,236, 37,191,118,101,106, 19, 81, 96, 73,120,172,160,226,230,208,123,246,236, 41,210,130,117,248, +240, 97,200,229,114,104, 52, 26,204,157, 59,183, 72, 82, 81, 16,136,214, 33, 79, 34,134, 97,152, 34,203, 17, 81,100,136, 27,176, +187, 30, 95,126,249, 37,222,121,231,157, 2,223,176,139, 12,226,137,179, 48,247,149, 41, 91, 22,201, 73, 73, 5,174,121,179, 89, + 60,207,243,144,203,229,248,250,235,175,209,185,115,103,108,221,186,181,200,223, 14, 29, 58,128, 97, 24,234, 77,120, 54,106,212, + 8, 86,171,213,225,230, 75,151, 46,185,229, 93,188,120,177,167,202,172, 11,128,207,234,212,169,163,111,217,178, 37,246,237,219, +135,151, 95,126,217,108,181, 90,175, 0, 64,167, 78,157, 42, 47, 88,176, 64,121,226,196, 9, 4, 5, 5,201,239,220,185,243, 45, + 33, 68, 26,248, 46,225,241, 22, 70,110,180,136, 88,231, 77,159, 62,125,154,139, 48, 42, 0,241, 62, 33,100,107, 92, 92, 92,103, +103, 49,228,124,238,100,101,114, 22,111,177,206, 22, 40,103,241, 84,136, 40,115,117,183,243,243, 41, 5, 4,150,221, 67, 45,156, +173, 62, 98,161,235, 73, 92, 21,214, 82,116,133,159,159, 95,199,151, 94,122,201, 33,110, 76, 38,147, 67, 88,137,226, 74, 60,191, +124,249, 50,234,213,171,167,240,243,243,235,232, 65, 96,137,226, 13,145,145,145, 72, 77, 77,197,217,179,103, 81,166, 76, 25,216, +108, 54,108,223,190, 29, 89, 89, 89,144,203,229, 80, 40, 20,176, 90,139, 30,146, 80,181,106,213, 14,171, 86,173,170,183,114,229, +202, 12,177, 5,247,195, 15, 63,128, 82,138,144,144, 16,228,229,229, 33, 41, 41, 9,187,119,239, 6,199,113,240,241,241, 65, 76, + 76,140,178, 91,183,110, 77, 62,251,236, 51, 57,128, 79, 11,161,126,225,229,151, 95,214,235,245,122,140, 26, 53,138, 90,173,214, + 89,132,144, 6, 61,122,244,248,112,196,136, 17,129,183,110,221,178,188,249,230,155,199,173, 86,235, 28,123,124,200, 41,165, 54, + 15, 9,177, 80,203,149,205,102, 19,195,244,102,110,110, 46,130,131,131,203,120, 24,163, 5, 0,138,131, 7, 15, 54, 2, 32,155, + 60,121,178, 26, 64,146,179,184,178, 88, 44,200,205,205,133,193, 96,176,101,101,101, 37,143, 25, 51,134, 91,189,122,181,204,254, +206, 5,119, 2, 11,120,209, 82,189,186, 78, 73,169,236,163,165, 75,151,250,180,111,223,158,241,241,241, 65, 78, 78,142,254,183, +109,219,124, 90,183,108, 18, 51,109,250,204, 29,250,232,154, 73, 7, 79,221,192,189,196, 44, 88,108, 54,196, 68,248,229,219,191, + 36, 60,118,216, 39,168, 56, 44, 88,206, 98, 98,223,190,125,120,241,197, 23, 29,121, 93,161, 80, 20,176,116,121,226,100, 89, 22, + 47,190,248,226, 3, 22,157, 61,123,246,184,181, 54,121,130,179, 24,114, 21, 69,238,132, 23,195, 48,240,212,203, 44, 90,239,220, +137, 44,103, 43,190,139,104,243, 84, 73,128,101, 89,140, 24, 49, 2,114,185, 28, 99,199,142, 5,203,178,168, 93,187, 54, 88,150, + 69,195,134, 13, 33,151,203,209,170, 85,171, 98,251,253,200,145, 35,168, 83,167,142,195, 77,181,107,215, 70,253,250,245,193,178, + 44,154, 54,109, 10,185, 92,142,118,237,218,121,195,249, 97, 78, 78, 78, 45, 31, 31, 31, 92,190,124, 25, 50,153, 12,132,144,171, +148,210, 90, 0,240,246,219,111, 95,203,203,203, 43,111, 50,153,240,246,219,111, 19,139,197, 82,115,236,216,177, 31, 1,144, 4, +150,132,199, 89, 30, 21,208, 34, 78, 48,142, 27, 55,238, 67, 66,200, 86,209, 34,229,106,105,114,119,238,134, 95, 20, 65, 98,247, + 96,125, 23,241, 38,118, 29,118, 42,226, 93,139,139,160,114,237, 34,252,211,163, 5, 75, 44,116,189, 21, 88,158, 96, 50,153,158, + 11, 13, 13, 45, 84, 92, 57,255, 90, 44, 22,148, 43, 87, 14, 38,147,233,185,226, 86, 22, 17, 17, 17,176, 90,173, 88,182,108, 25, + 20, 10, 5, 20,138,191,117,133,197, 82,180,113,232,252,249,243, 55,143, 28, 57, 82,167,110,221,186, 1, 63,254,248, 99, 74,243, +230,205, 67,218,183,111, 15,141, 70, 3,163,209, 8,155,205,134, 6, 13, 26,160,106,213,170,136,143,143,199,111,191,253,150, 90, +169, 82,165,224,163, 71,143, 10,137,137,137,183,139,160,110,221,186,117,107, 16, 66,240,219,111,191,165, 81, 74, 79,104, 52,154, + 31,167, 77,155,230,111,177, 88,132, 87, 95,125,245,110,122,122,250, 24, 0, 54,149, 74, 53,171,125,251,246, 47,200,100,178,181, + 60,207, 47, 44,110, 2,117, 13, 91,131,193, 0,181, 90,237,205,146, 16,242,244,244,244, 26, 0,160,211,233, 2, 1, 92,115,164, +108,163,177,128, 8,182, 88, 44,166,192,192, 64, 29, 0,216,223,145, 23, 18, 31, 33, 90,173,118,195,237,219, 55,124,157,199,199, +249,251,251,163, 95,223,190, 76,227, 70,141,148,181,158,123,174,221,132, 47, 86,174,141, 12,210, 91, 98, 34,131, 96,227,109,216, +181, 99,187, 64, 5,219, 14,169,184,121, 50, 2, 75, 20, 25,174, 22, 44,185, 92,142,189,123,247, 62,112, 77,161, 80,224,171,175, +190,242, 74, 16,136, 98,170,176, 46, 50,151, 46, 45,226, 73,184,200,229,114,200,100, 50,124,253,245,215, 16, 4, 1,239,190,251, +110,129,110, 67,103,126, 47, 91,204,142,119,170,126, 34, 0,176, 32,126,182,202,241,190,171,123,197,242,210, 27,171,216,130, 5, + 11,188,178, 96,117,234,212,201,163, 96,117,238, 81,112,118,215, 95,127,253,229,150,119,233,210,165, 30,195,147,231,121,252,242, +203, 47, 14,113, 42,226,227,143, 63,126, 59, 58, 58, 58,108,255,254,253, 72, 76, 76,132,193, 96, 64,110,110, 46, 26, 52,104, 16, +211,166, 77,155, 83,137,137,137,183,206,159, 63,255,146,148,123, 36, 60, 65, 11,150, 57, 46, 46,238, 92, 92, 92,156, 91, 11,149, +171, 37,169, 40, 75,147,147,176,250, 19,246,174,193,113,227,198,125,136,252,225, 51,127,122,241,174,210,181,139,208,173,225,199, + 69, 53,126,230,174,208,245,166,155,208, 75,179, 57, 75, 8,129,201,100,114, 43,172,156, 69,129,213,106, 69,122,122, 58,120,158, +103, 31, 33,162, 30,184,230, 73, 96,157, 61,123,246,245,129, 3, 7, 38,248,249,249,213, 74, 73, 73, 73, 22, 4,161,213,225,195, +135, 67, 88,150,133, 94,175,135, 94,175,199,175,191,254, 10,173, 86,139, 17, 35, 70, 36,243, 60,191,207,215,215, 55,200,104, 52, +158, 78, 76, 76,156, 80,168,114,145,203, 91, 55,107,214, 12, 39, 78,156, 64,102,102,230, 31,132,144, 90,131, 6, 13,106, 91,170, + 84, 41, 50,117,234, 84,211,181,107,215,190, 4,144,162,211,233,150,173, 90,181,170,121,221,186,117,125,250,247,239, 15, 66,200, + 55,148, 82,147,183,126, 54, 24, 12, 5,132, 85,118,118, 54,114,114,114,160,211,233, 56, 47,195, 76,142,252,177, 84,226,120, 42, + 71,220,216,173, 87, 98,252, 80,150,101,105,254, 35, 84, 94, 24,159, 78,167,155,188,114,229, 74,141,235,228, 3,158,231,145,148, +148, 4,189, 94,143,143, 39, 76, 80, 76,122,111, 80, 29,153, 79,216, 97,134, 33,176, 88,105, 38, 21, 44,219, 13, 73,125,246, 75, +197,205,147,129, 40, 8,186,118,237,250, 64,183,160, 66,161,192,206,157, 59,209,189,123,119, 71,131,165,110,221,186, 30, 27, 85, +162, 32,232,210,165,139,195, 18,180,125,251,118,183,221,123,162, 5,202, 27, 33, 40, 62, 59,114,228, 72,176, 44,139,133, 11, 23, + 98,244,232,209, 96, 24, 6,179,103,207, 6,195, 48,152, 56,113,162,215,226,210, 89,184,220,154,153,255, 27, 61, 58, 27,105,139, +195, 0, 0,190,122,189,232,161, 98,149, 61, 44,203, 58, 44, 87,207, 61,247, 28,228,114, 57, 26, 54,108, 8,150,101, 29,150,171, +142, 29, 59, 58,135, 35,245,134,147,101, 89, 92,185,114,197,225,230,134, 13, 27, 22,176, 92,177, 44,139, 78,157, 58,121,227,204, +105,254,254,254,159, 85,173, 90,181,218,156, 57,115,228, 50,153, 12,173, 91,183,174,252,230,155,111,222, 14, 10, 10, 10,154, 60, +121,178,214,205, 59, 26, 0,181,170, 85,171,166,147,114,141,132,199,104,193,250,204,205,173, 0,231, 49, 85,197,224,219,234,252, +188,200,225, 42,138,236, 22,177,125,158,184,220,189, 91, 24,216,162, 90, 99,197, 17, 88,118,243,114,145, 31,211,106,181,103,146, +147,147, 27,106, 52,154, 2,226,202,157,208,146,201,100, 72, 76, 76,132, 86,171, 61, 83,146,145,231,169,139,208, 46,102,222,115, + 10,208, 54, 29, 59,118, 92,190,115,231,206,136, 93,187,118,225,232,209,163, 8, 9, 9,193,130, 5, 11,238, 39, 37, 37,189, 78, + 41,221,233,205,119,203,151, 47, 95, 93,167,211,225,208,161, 67, 0,176, 31,192,128, 97,195,134, 17,142,227,176,104,209,162, 60, + 0, 59,253,252,252, 54,109,220,184,241,185,154, 53,107, 42,119,237,218,149,115,244,232,209, 61, 94,138, 43, 94, 16,132, 7,132, +149,115,152,250,250,250,122, 99,193,178,249,249,249,157,205,206,206,238,101, 52, 26,179, 85, 42,149,111,118,118,182,217, 89, 88, +137,252, 44,203,202,175, 92,185,146, 0, 32,198,207,207,239, 44,156,186, 18, 11, 36, 48,150,109,221,186,117,107,214, 53, 14,146, +146,146,144,152,152, 8,171,213,138,186,117,235, 18, 25,177,201,210,239,156,126, 91, 42, 94,254,153, 2, 77,204,235,226,172, 63, +119, 51, 7,183,111,223,238, 56,103, 24, 6,246,105,251, 30,197,208,206,157, 59,139, 28,136,238,210, 69,232,209, 20, 46, 62,191, +104,209,162,252,237, 40,236,150, 43,134, 97, 48,110,220, 56,168, 84, 42, 76,157, 58, 21,227,198,141, 3,203,178, 30,187, 8,157, +133, 75,217,177,121,206,141,162,252, 76, 97, 31,239, 68, 8,113, 22, 89,196, 91,209, 86,148,245,206, 27,203,191, 51,167,248,158, + 90,173, 46,116,128,187, 11, 39, 41,194,223, 63, 19, 66,110, 68, 68, 68, 28,108,216,176,161,223,241,227,199, 49,123,246,108,133, +217,108, 46,189,107,215, 46,199,119,221,133,151,193, 96,208, 72, 57, 71,194,227,176, 94, 21,113, 59,197,101,252, 20,113,238,174, + 43,226,215,245,121, 56, 93,115,230, 77,113,169,199,156,175,187,138, 42,215,111, 56, 63,147,242,128, 5,203, 83, 33,225, 73,104, +121, 99,193,202,203,203,251,125,219,182,109,245,251,246,237,203, 22,213, 61,104, 48, 24, 16, 22, 22,134,115,231,206,113,121,121, +121,191,123, 97, 25, 43, 49,129,229, 38,194,119,133,135,135,203,108, 54, 27, 42, 86,172,136,168,168, 40,152, 76, 38,100,102,102, +202,188, 21, 87,132, 16, 69,189,122,245,100, 0,144,145,145, 1,228, 79, 39,173, 84,169, 82, 37,156, 56,113, 2, 25, 25, 25,155, + 1,180,153, 52,105, 82,237, 23, 94,120, 65,177,118,237,218,188, 33, 67,134,108,182,217,108, 83,189,180, 62, 88, 56,142, 43,199, + 48,140, 53, 51, 51,243,158,115,120,134,133,133, 5,234,116, 58,146,148,148,100,243, 70, 96,213,170, 85,235,216,157, 59,119, 48, +121,242,228,148,105,211,166, 85,202,201,201,201,200,202,202,226,156, 69,150,201,100, 98,130,131,131, 85,139, 23, 47,214, 0, 64, +173, 90,181,142, 21, 38,176, 12, 6, 67, 41,173,246,239,134,176,217,108, 70, 98, 98, 34, 18, 19, 19,145,148,148,132,156,156, 28, +196,196,196, 32, 47, 47,175,140, 84,188,252, 99, 2,171, 64, 55,153,115,254,118,174,192,139,147,215,157,133, 75,215,174, 93, 29, + 99,183, 68,139,152,120,108,216,176,193,117,224,184, 87, 2,107,209,162, 69, 24, 57,114, 36,212,106, 53,230,204,153, 83,160,139, +208, 85, 20, 8,130, 64,188,241,123,185, 15,140, 72,156, 31, 8,185, 92,142,160, 33, 73, 5,186,226,220, 8, 13,175,220, 57,109, +218,180, 18,233, 34,116,230, 44, 83, 38, 63,171,124,253,245,215,232,213,171, 23,246,239,223,255,208, 93,132,177,177,177, 63,108, +221,186,213,239,252,249,243,200,206,206, 70, 74, 74, 10,204,102, 51,226,227,227, 11,237, 5,176,151,229,106, 41,231, 72,120,194, +248,243, 9,243, 62,242,247, 88, 15, 21,183,215, 2,203, 27, 11,150,217,108,158, 51,106,212,168, 97,109,218,180, 9,244,245,245, + 69, 66, 66,194, 3,226, 42, 55, 55, 23, 62, 62, 62, 48, 26,141,216,178,101, 75,182,217,108,158,227, 73, 20,216,108, 54,132,134, +134, 34, 53, 53, 21, 66, 33,227,162, 25,134,129, 70,163, 65,110,110, 46, 10, 19, 3, 69, 85, 20, 86,171, 21, 54,155, 13, 54,155, + 13, 86,171, 21,197, 92,158, 73, 35, 46,216,106, 48, 24, 0,192, 16, 25, 25, 89, 94,173, 86,227,230,205,155, 0,112, 5, 64,203, +246,237,219,203,211,210,210,232,155,111,190,121,152, 82, 58,194,195,106,246,150,125,251,246,149, 3, 0,141, 70,115, 25, 0,226, +227,227,109,153,153,153, 5, 44,131, 90,173,150,118,239,222, 61,130, 82,138,125,251,246,149, 83, 40, 20, 20,133,172, 89, 5,192, +180,121,243,230,243,126,126,126,171,167, 79,159,222,183,115,231,206,231,106,212,168, 81,206, 96, 48, 36, 27,141, 70,163,201,100, +162, 50,153, 76, 17, 16, 16,160,222,177, 99,199,181,195,135, 15,183,209,235,245,171, 55,111,222,124, 30,128, 91, 75,155, 78,167, +139,207,203,203, 43, 43,198,169,179,184, 74, 76, 76, 4,165, 20, 55,110,220,128, 86,171,189, 35,149, 31,255,104,203,241, 1, 97, +229, 78,108,121, 43,174,156, 5,193,142, 29, 59,138, 92, 3,203, 91, 78,103, 49, 52,122,244,104,204,159, 63,255, 1, 11,214,212, +169,249,109,146, 9, 19, 38,120, 61, 6, 75,180, 86, 37,206, 15, 68,248,200,244, 2,110, 7, 0, 34,186,175,152, 75,178,177, 44, +139,201,147, 39, 63, 48,248,220,185, 11,207,203,174,188, 2,238, 76, 78, 78, 6,203,178, 8, 12, 12, 68,191,126,253,208,174, 93, + 59, 71, 87, 99,113,121, 47, 94,188,120,240,131, 15, 62,168, 25, 27, 27,139, 41, 83,166,164,251,251,251,251,190,245,214, 91,108, +102,102, 38, 41,202,130, 37, 9, 44, 9, 18, 30, 65, 96,137, 25,203,219, 89,132,238, 10, 73, 66, 72, 27,231,181, 50, 40,165, 89, +132,144,126,109,219,182,253,113,221,186,117,154,242,229,203,227,226,197,139, 72, 79, 79,135,197, 98,129, 66,161, 64, 68, 68, 4, + 50, 51, 51,241,221,119,223, 25,243,242,242,250, 81, 74,179,138,226, 4,240, 81,189,122,245,150,204,154, 53, 75, 93,187,118,109, +164,167,167, 35, 55, 55,183,192,170,211,122,189, 30, 26,141, 6,199,142, 29,195,246,237,219,141, 0, 62,242,192,233, 78,197,193, +106,181, 58,132,150, 39,129,229,194,169, 19,173, 56,121,121,121, 0,192,149, 46, 93, 58, 12, 0,110,220,184, 1, 0,183, 99, 98, + 98, 38, 84,168, 80,129,172, 90,181,138, 82, 74,119,185, 19, 87, 46,156,233, 77,155, 54,205, 0, 16,110,177, 88, 20, 0,144,149, +149,101, 13, 14, 14, 14, 85,169, 84,130, 70,163, 17,212,106,181,144,144,144,192,113, 28,167, 0,128,166, 77,155, 90, 0, 36,194, +105,172,135, 11,167, 0, 32,123,233,210,165,159,245,239,223,191, 97,163, 70,141, 98,135, 14, 29,122,246,205, 55,223,100,162,162, +162, 2,114,114,114, 76, 87,175, 94,205,248,226,139, 47,114,142, 28, 57,210, 70, 46,151,223, 94,186,116,233,103, 0,178,237,239, + 62,192,201,113,220,239,187,118,237,122,189,115,231,206,236,189,123,247,144,148,148,228, 16, 87, 73, 73, 73,168, 90,181, 42, 14, + 31, 62,204, 91,173,214, 93,197, 8,207,146,178,220, 72,156,249,141, 15, 42,230,245,194,132,149,216,136,242,150,211, 89, 12,245, +234,213,171,128,213, 74,161, 80, 96,227,198,141,110,203, 13, 55, 43,146,183,113, 93, 15, 74,116,211, 7, 31,124, 80, 64,172,125, +252,241,199,133, 58,205, 83,120,138, 60, 89, 95, 71, 21,156, 69, 88, 72, 62, 47,202,157, 98,217, 41,151,203,241,241,199, 31,123, +109,193,130,203, 24, 44,119,156,162,223,155, 55,111,142,188,188, 60,135,128, 45,204,130,229, 41, 60,121,158, 31, 57,127,254,124, +170,215,235, 95,200,206,206,254,223,157, 59,119, 86,228,229,229, 61,159,149,149, 85,164, 5,203,108, 54,171,164,124, 36,113, 62, +142,181,176,254, 19, 2,203, 94, 57,162, 84,169, 82, 5,246,182, 98, 24,166,192, 81,156,113, 4,246, 12,187,131, 16,210,163,113, +227,198,223,143, 28, 57,210,183,118,237,218,242,178,101,203,194, 96, 48,224,230,205,155, 56,119,238, 28,183,121,243,230,236,188, +188,188,255, 81, 74,119,120,193,183,146, 16,178,189,125,251,246, 19, 27, 52,104, 48,248,147, 79, 62,145, 85,174, 92, 25, 89, 89, + 89, 8, 8, 8, 64,104,104, 40, 46, 93,186,132, 45, 91,182,240,169,169,169, 75, 0, 76,162,148,166, 20,183,129,111,181, 90,241, +202, 43,175, 64, 16, 4,204,157, 59,215,121, 65, 52,111, 96,181, 90,173, 20, 0, 73, 77, 77, 5,128, 60, 81,112, 93,189,122, 21, + 0,238,148, 45, 91,214, 7, 0,118,237,218, 69, 0, 28,242,214, 93,206,150,172,170, 85,171,222,116, 45, 20, 69,203,149,104,245, +130,231, 13,154, 77,189,123,247, 78,206,203,203,107, 63,122,244,232,137,139, 22, 45,234,187,104,209,162, 7, 30,210,235,245,171, +103,207,158, 61,169,119,239,222,201,133, 89,175,236, 22,187, 9,175,189,246, 90,239, 51,103,206,248,170,213,106, 24, 12, 6,164, +165,165,193,106,181, 34, 38, 38, 6,201,201,201, 88,185,114,101,142,209,104,252, 84,202,142,255, 12,156, 5, 65, 97, 86, 44, 79, +226,170, 40, 43,206,207, 63,255,236,118,141,169,226,114,186,138, 12,111,215,166, 42,170, 49, 36, 46, 47,227,110,233,135,226,148, +107,238,120, 89,150,197,231,159,127,238, 88,108,213,157,229,170, 56, 22, 44,145, 51, 48, 48, 16, 0, 32,110,109,212,169, 83,167, +135,230,181,111, 27, 54,194,233, 27,211,198,140, 25,243, 89,213,170, 85, 43, 3, 80, 57,135,129,180,169,130, 4, 9, 37, 36,176, +120,158,143,175, 82,165, 74,129,130,205,211, 38,163, 54,155, 45,222,203, 76,189,157, 16, 18, 51,123,246,236, 81, 58,157,174, 77, + 94, 94, 94, 77,123,129,113,198, 96, 48,236, 50,155,205,243,138,179, 57,179, 93, 48, 13, 39,132,204,109,223,190,253,212, 86,173, + 90,245,124,239,189,247, 8,165, 20,139, 23, 47,166,215,175, 95,223, 0,224, 35, 74,233,245,135, 9,164,192,192,192,243,223,125, +247, 93,216,143, 63,254, 8,155,205,134,121,243,230,193,215,215,247,124,113,220,199,178,236,247,141, 26, 53,234,123,248,240,225, +213,148,210,179, 42,149,234,135,166, 77,155,246, 59,116,232,208, 58, 74,233, 5,150,101,127,104,216,176, 97,191, 99,199,142,109, +162,148,158, 46,134,243, 28,150, 44,142,115,223,163,232,206,114,229, 1,217, 3, 7, 14,180, 14, 28, 56,240,189,222,189,123, 47, +251,243,207, 63,159,207,204,204,172, 9, 0,254,254,254,103,234,215,175,127,108,221,186,117,151,236,150, 43,147, 39,191, 19, 66, +186,215,172, 89,115,211,148, 41, 83,116,177,177,177,108,197,138, 21,113,235,214, 45,156, 61,123,150,251,246,219,111,115,141, 70, + 99, 87, 74,105,134,148, 29,255, 57,129, 69, 41,133,191,191,127,129,198,147, 56,117,191,184,221,130,206, 21,178,184,165,142, 43, +111, 97,156, 30, 6,185, 2, 0,124,124,124, 28,139,146,122, 51, 52, 65, 16,138, 94, 79,141, 82,234,224, 20, 15, 47,196,149,199, + 25,127,246,173,106,188,230,244,102,153, 6,157, 78, 7,155,205,230,224,245, 98, 38, 39, 41,102,156,253, 12,224,231,138, 21, 43, + 94, 5, 80, 65, 18, 85, 18, 36, 60, 6,129,149,158,158, 94,239,113,126,216, 46,160, 38,217,143,146,226,188, 14,160, 55, 33,100, +214, 31,127,252, 33,246, 23, 76,246,180,159,161, 39, 92,188,120,177,179, 92, 46,255,106,245,234,213, 13, 40,165,240,243,243, 59, +114,235,214,173,183,138,195,193,113,220, 96, 66,200,187,226,172, 64,179,217, 60,152, 16,242, 62,165,212,224,116,223,113, 94, 92, +175, 3, 48, 83, 74, 35, 11,185,111, 46,134,184,114, 88,178, 0, 88,214,173, 91,151, 11,224, 20,254, 94,231,202,102, 63, 76,112, +234, 22,244, 16, 47,187, 9, 33, 21, 63,254,248,227,105, 50,153,172,181,193, 96,136,210,233,116,119, 57,142,251, 61, 47, 47,239, + 35, 74,105,154,148, 21,255, 57, 88, 44,150,123, 85,170, 84, 97,221, 53,156,138,170,192,139,106, 80,241, 60, 31, 95,169, 82, 37, +143,141, 50, 55,156,247,138, 72, 71,183, 99, 98, 98, 24,111,185, 68, 88,173,214,228,162,220, 25, 19, 19,131,226,114,122,242,123, +185,114,229,220,250,221,131, 16,188, 87, 68,249,241, 80,156, 69,133,103, 81, 48, 26,141, 25, 33, 33, 33,185, 38,147, 73,110, 54, +155,229, 28,199, 21, 48, 55,106, 52,154, 20, 41,231, 72,144,240,144, 2,235,223, 12,187,160,234, 82,130,124,102, 0,175,150, 0, +143,201,229,220, 80,212,121, 49,241, 56, 44, 64, 2,128,188, 18, 10,195, 84, 0,111, 74, 89,238,233, 67,106,106,234, 11, 37,205, +153,150,150, 86,226, 13,180,148,148,148,134,143,193,239,245,254,171,156, 69,225,222,189,123, 47, 72, 57, 67,130,132, 71, 3, 35, + 5,129, 4, 9, 18, 36, 72,144, 32, 65, 66,201,130, 0,104,227,238, 70,113,102, 7, 16, 66,218, 20,247,195,158,248, 37, 78,137, + 83,226,148, 56, 37, 78,137, 83,226,124,246, 56, 61,113, 63, 51,179, 19, 41,165,143,237, 0,208, 70,226,148, 56, 37, 78,137, 83, +226,148, 56, 37, 78,137,243,191,118, 72, 93,132, 18, 36, 72,144, 32, 65,130, 4, 9, 37, 12, 73, 96, 73,144, 32, 65,130, 4, 9, + 18, 36, 72, 2, 75,130, 4, 9, 18,158, 12, 8, 33, 1, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9,255, 54,113, 85, 3, +192,148, 18,166,157, 98,231,149, 32,225, 63,145,135, 8, 33, 53, 37,129, 37, 65,130, 4, 9, 18,196,138,161, 99,249,242,229, 39, + 3,240, 41, 97,106,159,242,229,203, 79, 38,132,116,148, 66, 89,194, 51,154,119, 84,132,144, 87, 25,134, 57, 86,163, 70,141, 51, +177,177,177,167, 25,134, 57, 76, 8,233, 69, 8, 97,255, 83, 97,225,180, 41,242, 94, 0,160,148, 54,151,146,136, 4, 9, 18,254, +163,149, 3, 11, 96,112,223,190,125,187, 76,159, 62, 93, 89,170, 84,169,187,148,210,254, 37,200,191,234,238,221,187,209, 3, 6, + 12,200,221,189,123,247, 14, 0, 75,220,109,236, 46, 65,194,191, 48,239,148, 5, 48,216,199,199,103, 80,139, 22, 45, 2,186,118, +237,138,160,160, 32,112, 28,135,187,119,239, 98,235,214,173, 56,116,232, 80,130,197, 98,153, 15,224,107, 74,105,102, 33, 60,207, +140, 22, 33,148, 82,113,227,226, 22,118, 79,237,149,146,138, 4, 9, 18,254,131, 21,132, 30,192,248, 57,115,230, 52, 24, 60,120, +112, 57,147,201, 20, 31, 16, 16,112,163,164, 5,150,213,106,109,147,146,146,114,124,234,212,169, 88,188,120,241, 5, 0,113,197, +217,123, 85,130,132,167, 48,239,140,235,209,163,199,212,176,176, 48,166, 70,141, 26,136,136,136,128,217,108,134,209,104, 4,165, + 20, 44,203,130, 82,138,172,172, 44,236,219,183, 15,187,119,239, 54,103,100,100,124, 7, 96, 30,165,244,138, 19,207, 51,165, 69, + 28, 2,171,184,155,130, 74,144, 32, 65,194, 51, 84, 65,148,211,104, 52, 31,111,217,178,165,122,147, 38, 77, 66,115,114,114,110, +216,108, 54, 67,100,100, 36, 69,254,166,230,238,144, 69, 41, 29,225,134,107, 1, 0,191, 66,222,209, 91,173,214,250,169,169,169, +199, 1, 96,227,198,141, 24, 63,126,124,154,209,104,156, 76, 41,189, 41,197,132,132,127,105,254,185,124,241,226,197, 74, 60,207, + 35, 53, 53, 21,102,179, 25,121,121,121, 14,129, 37,147,201, 64, 41, 5,199,229, 27,107, 5, 65,192,137, 19, 39,176,107,215, 46, +122,227,198,141, 79, 40,165,147, 69,129,245, 44,105, 17, 73, 96, 73,144, 32,225,191, 94, 57, 52, 14, 15, 15,127,247,143, 63,254, + 40, 91,166, 76, 25,125,110,110,238, 53,142,227,108, 0, 16, 16, 16, 16, 43,147,201, 84,174,239,240, 60,111, 86,171,213, 7,220, + 89,183, 8, 33,171, 76, 38, 83, 19,119,239,217,223,229, 50, 50, 50, 78,137,231,167, 79,159,198,160, 65,131,172,137,137,137,115, + 40,165, 7,165, 24,145,240,111, 20, 88,167, 78,157,170,180,102,205, 26,212,169, 83, 7,213,170, 85, 67,110,110,174, 67,108, 89, + 44, 22,216,108,182, 7,222,203,206,206,198,187,239,190,123,133, 82, 90,249, 89, 20, 88,226,128,179,207,164, 49, 88, 18, 36, 72, +248, 47, 35, 49, 49, 49,213,223,223,255,190, 32, 8, 84,188,150,145,145,113,238, 97,184, 30,246, 61, 9, 18,254,165,176, 89, 44, + 22,212,171, 87, 15, 55,111,222,196,137, 19, 39, 28, 66, 43, 53, 53, 21, 9, 9, 9, 5, 30, 62,118,236, 24, 78,158, 60,137,102, +205,154,185,242,124,246,204,141,193,178, 43,199,230,118, 79,237,149,210,138, 4, 9, 18,254, 99, 45,240,114, 26,141,230,227,184, +184,184,160,151, 95,126,217,113,253,113,116, 17, 38, 36, 36, 56, 90,232, 82, 23,161,132,103, 36,255,116,143,140,140,252,118,216, +176, 97,126, 13, 26, 52, 64,124,124, 60,238,221,187,135,140,140, 12,212,174, 93, 27,177,177,177,184,126,253, 58,182,111,223,142, +147, 39, 79, 66,165, 82, 33, 58, 58, 26, 62,171,215,224, 43,130,243,148,210, 88, 39,174,103, 70,139, 56, 4,150, 4, 9, 18, 36, +252,199, 43, 9, 61,128,241, 67,134, 12,169,246,209, 71, 31,129, 16,130,200,200,200,172,146, 30,228,158,144,144,224, 71, 41,133, + 52,200, 93,194, 51,150,127,124, 1,140,137,137,137,121,127,200,144, 33,170,234,213,171, 35, 62, 62, 30, 41, 41, 41,200,200,200, +192,145, 35, 71, 0, 0, 81, 81, 81,136,138,138,194,165, 75,151,112,240,224,193,236,220,220,220,129,148,210, 31,159,201, 48,145, + 4,150, 4, 9, 18, 36, 56, 42, 9, 22,192,224,150, 45, 91,182, 91,188,120, 49, 42, 85,170, 84,226, 2,235,202,149, 43,126, 67, +134, 12,129,180, 76,131,132,103, 52, 15,133, 2,152, 80,189,122,245,193,131, 6, 13, 98,203,148, 41,131,123,247,238,225,143, 63, +254, 64,133, 10, 21,112,247,238, 93,236,222,189,219,146,146,146, 50, 23,192,116, 74,105,214,179, 26, 22,204, 99, 14,232, 54, 18, +167,196, 41,113, 74,156,255, 22, 78, 74, 41, 71, 41, 93,184,123,247,238, 37, 29, 59,118, 20, 30,135, 59, 59,118,236, 40,236,222, +189,123, 9,165,116, 97, 81,226, 74,138, 35,137,243,223,200, 73, 41, 77,166,148,142, 56,127,254,124,197,119,222,121,231,251, 41, + 83,166, 8,130, 32, 32, 52, 52, 20,235,215,175, 23,214,174, 93,251,109, 74, 74, 74,121, 74,233,184,103, 89, 92, 1,127, 15,114, +151, 32, 65,130, 4, 9,127, 87, 18,191, 18, 66,226, 1, 12, 46, 97,234,220,235,215,175,127, 78, 41, 61, 43,133,178,132,103, 60, + 15,221, 2,208,159, 16, 50,243,196,137, 19, 31, 1,160, 0,166, 80, 74, 47,252, 87,194, 64, 18, 88, 18, 36, 72,144,224,190,130, + 56, 75, 8,153, 80,194,180, 19, 40,165, 25, 82,232, 74,248, 15,229,163,115, 0,250,252, 23,253, 46,237, 69, 40, 65,130, 4, 9, +133, 87, 14, 25, 79, 51,159, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, 72,144, 32, 9, 44, 9, 18, 36, 72,144, 32, 65,130, + 4, 9, 15, 7, 2,160,176,153, 0,187,188, 38,121,136, 25, 10,158,248, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,124,246, + 56, 61,113, 23, 71,127, 60,213,160,148,122, 60, 96, 95, 47,171,184, 7,128, 54, 15,243,158,196, 41,113, 74,156, 18,167,196,249, +239,229,180, 55,222, 9,242,123, 73, 24,241,252,105,246,251,195,212,115, 79,202,239,255, 21,206,103,237, 96, 61,168, 75, 71, 32, + 17, 66, 4, 0, 2, 45,129,149, 73, 9, 33, 98, 4,148, 8,159,132,199, 96,218,204,143, 35,242,183, 14,151,226, 73,130, 4, 9, +197, 42, 59,100, 78,149, 44, 15,128, 39,132,224,105, 43, 75, 74,178,158,123, 28,126,255, 47,115,254,219,193, 22, 21, 80, 50,153, +108, 71,112,112,112,203,212,212, 84,193,126, 29, 74,165, 18, 12,195, 64, 46,151, 27,115,114,114,244, 15, 17, 9,223,132,133,133, + 13, 72, 75, 75, 19, 24,134,129, 90,173, 6, 33,196,193,153,153,153,169,255,167, 3,165,108,217,178, 25, 70,163,209,199,245,186, + 90,173, 54,221,190,125,219,247,191, 80, 64, 42, 20,138, 30,129,129,129,254, 41, 41, 41,148, 97, 24, 40, 20, 10,200,100, 50,216, +255,115,153,153,153,203,189,229, 11, 12, 12, 60, 22, 24, 24,232, 47,190, 79, 8, 65, 90, 90, 90,102, 82, 82,210,243, 0,160,209, +104, 14,234,116,186, 32,150,101, 33,147,201, 32,147,201,144,151,151,151,150,154,154,218, 88,170,174,254,157,216,176, 97,131,172, +125,212, 27, 21, 88,106,172,197, 48,212, 79, 16, 72, 22, 71, 52,167,183,223,251,230,154, 55,239,247,236,217,147,255,135,243, 64, + 99,123,203,226, 96, 9,241, 57,239, 79,104, 2,144, 10,224, 26,128,245,148, 82,227, 63, 29, 95, 42,149,106,110, 88, 88,216,160, +220,220,220, 60, 66, 8, 37,132, 32,191, 26,192, 3,191, 60,207,199,167,166,166,214,243, 80,201,202,149, 74,229,236,240,240,240, +215,242,242,242,242,236,124,148, 16,130,136,136,136, 2,124, 0, 96,179,217,226, 83, 82, 82,234,121,227,214,208,208,208,165, 26, +141,230,127,121,121,121, 6,187, 32,114,238,145,113,174,196,175,167,164,164, 52,245, 36, 8,148, 74,229,188,176,176,176,215,237, +126, 7, 33,132,134,132,132, 60,178,223,195,194,194, 94, 51, 24, 12, 5,252, 30, 26, 26,234,150,179, 48,191,187,227,116,118, 39, + 33, 4, 33, 33, 33,143,236,206,167,145,243,153, 21, 88, 0, 24, 66,200,230,198,141, 27,183,216,187,119, 47,115,241,226, 69,166, +106,213,170,224,121, 30,130,144,159,158,163,163,163,181, 15, 81,200,172,104,218,180,233, 43,251,246,237, 99, 54,111,222,204,212, +175, 95, 31,132, 16,240, 60, 15,158,231, 81,163, 70, 13,205, 35, 22, 98, 62, 44,203,190,171, 84, 42,155,115, 28, 87, 13, 0,228, +114,249, 5,179,217,188,151,227,184, 57,148,210, 92,111,120,172, 86,171, 54, 57, 57,249,129,176,137,137,137, 81, 62,172,219,244, +122,253, 33,134, 97, 98, 28, 1,108, 23, 26,238, 50,177,248, 75, 41,189,145,146,146,210,168, 48,206,128,128, 0, 7,103, 97, 28, +174,215, 4, 65,184,145,156,156,220,200,131,184,122,185,105,211,166,126,187,118,237, 34,119,239,222, 37, 26,141, 6,130, 32,128, +231,121,216,108, 54, 84,175, 94,189, 88,235,167,249,251,251,235,199,141, 27, 87,161, 67,135, 14,216,184,113, 35, 94,125,245, 85, + 52,105,210,228,138,120, 95,167,211, 5,157, 63,127,190, 82, 96, 96, 32,242,242,242,144,149,149,133,182,109,219,254,235, 51, 87, +131, 58,165,166, 16,134, 4, 58, 10,127,142, 79, 63,114,234,222, 35,175,171,228,239,239,127, 82,169, 84,134,137,241,202, 48,140, +219,184,118,190,102, 50,153,146, 82, 83, 83,235,120,200, 63,101, 1,116,145,201,100, 21, 89,150,173, 2,160, 44,199,113, 97, 0, +160, 80, 40,146,100, 50,217, 45,155,205,118,201, 98,177, 92, 5,240,179,125, 33, 65,183,104, 31,245, 70, 5,194,229,245,204, 49, + 11, 29,181,229,167, 87,206,187, 62,238,178, 86,149,247,107,251,168, 55, 54,120, 43,178,254, 65,113, 85, 46, 60, 60,252, 93,251, +255,251, 37,180, 9,179,159,201,100,106, 34,147,201, 84, 28,199, 33, 41, 41, 41,117,201,146, 37,183, 23, 44, 88,208,146, 16, 50, +203,211,194,163, 13,235,149, 62,206, 48, 76, 52,236,242, 65,160,124,252,225,227,119, 75,164, 98,146,201,100,243, 94,122,233,165, +215, 55,108,216,160, 61,113,226,132,182, 90,181,106,142,242, 73, 16, 4,184, 26, 30,202,149, 43, 87,100,240, 1, 96, 25,134,153, +219,179,103,207,190,171, 86,173,210,222,190,125, 91, 27, 25, 25,233,224,116, 22,111, 34, 34, 35, 35,189,114,107, 80, 80,208, 55, + 29, 58,116,232,191,114,229, 74,249,150, 45, 91, 52,193,193,193, 8, 10, 10,130, 66,161,120,224,217,198,141, 27,123, 90,137,159, + 97, 24,102, 94,183,110,221,250,175, 93,187, 86,123,244,232, 81,109,141, 26, 53, 32,147,201, 30,217,239,221,187,119,239,187,102, +205, 26,237,153, 51,103,180, 21, 43, 86, 4,195, 48, 96, 24,230, 1, 62,134, 97, 80,170, 84, 41,175, 56,187,118,237,218,119,221, +186,117,218,147, 39, 79,106,171, 84,169,226, 8, 79,167,238,185, 98,187,243, 41,231,124,246, 4,150,221, 92,186,170,113,227,198, +237,247,238,221, 43, 3,128,147, 39, 79, 34, 61, 61, 29, 81, 81, 81,240,241,241,129, 74,165,130,201,100,162,197, 44,180,190,177, +139, 43, 57, 0,108,250, 95,119,220,144, 3, 35,146, 45, 80, 40, 20,184,126,253, 58,100, 50, 25,125,132, 66,177,153, 94,175, 95, +249,227,143, 63, 6,212,169, 83,135, 73, 73, 73, 65, 76, 76, 12,210,211,211,159,223,183,111, 95,221, 55,222,120,227, 13, 66,200, +171,148,210,125,222,114,254,250,235,175,208,233,116,208,106,181,208,233,116,176, 88, 44,228,161, 3,154,101,163,111,221,186, 21, +234,227,227, 3, 65, 16, 28,135, 75,255,181, 3,130, 32,160, 82,165, 74, 86, 15, 5, 99,244,237,219,183, 67, 53, 26, 13, 40,165, + 5,248,120,158,135, 74,165,114,110, 41,128,231,121,196,196,196, 88, 61, 89,174, 68,113, 5, 0,171, 87,175, 70,120,120, 56, 66, + 67, 67,161,211,233,160,209,104, 10, 84,232, 94, 22,224,104,223,190, 61, 62,253,244, 83, 76,159, 62, 29, 99,198,140, 41, 80,192, +202,229,114, 4, 6, 6, 98,219,182,109,208,235,245, 40, 83,166, 12,228,114,249,191,223, 18,200,144,192,195,199,239, 56, 44,178, + 47,182,170,202, 54,168, 91,102,145, 61,134,193, 48,128, 32,228, 87,153,132,128,114, 54, 33,227,207,211,247, 38,122, 17,158,145, +183,111,223, 14, 85,169, 84, 94,185,131,231,121, 68, 69, 69,201, 60,228,159,142,177,177,177,155,134, 14, 29,170,168, 88,177, 34, + 81, 40, 20, 96, 89, 22, 44,203,138,233,177, 12,165,180,140, 32, 8, 45,146,146,146,232,130, 5, 11,102, 18, 66, 94,162,148,254, +234, 54,189, 83, 99,173, 28,179,208,113,255, 95,120,190,103,155, 15,176,109,253,184,231,155,214, 22,224,171, 53, 94,179, 91,110, +158, 86,113,165,215,104, 52, 31,239,223,191,191, 82, 78, 78, 78,118,147, 38, 77, 62, 38,132,188, 83, 18,155, 49,103,100,100,156, + 19,255, 43,149, 74,140, 26, 53, 10, 29, 58,116,240,111,219,182,237,104, 66,200, 91,148, 82,107,225, 74, 64, 22,125,240,216,205, + 80,241,188,107,251,154,138, 70,245,203, 36,229, 55,196, 92,159,166, 16,120, 33,254,232, 95,241,245,188,240,239,204, 30, 61,122, +244,219,176, 97,131, 15, 0, 44, 94,188, 24, 61,122,244, 64, 96, 96, 32,180, 90, 45, 20, 10, 5,228,114,121,129, 95, 15, 22, 33, + 25,128,153,125,250,244,233,185,106,213, 42, 95, 0, 88,181,106, 21,186,119,239,142,160,160, 32,248,250,250, 66,169, 84, 66, 38, +147, 21, 59,252,130,130,130,190,105,242,252,243, 3, 87,174, 92, 9, 0,248,232,157,119,208,225,133, 23,224,163,213, 64,171, 81, + 66, 12, 11,165, 76,142, 23, 71,140,244,228,111, 6,192,172, 30, 61,122,244, 94,187,118,173, 47, 0,156, 56,113, 2,201,201,201, + 8, 11, 11,131, 70,163,129, 82,169,116,248,153, 16, 2,141, 70,227,149,223,123,244,232,209,115,205,154, 53,190, 0,176, 98,197, + 10,180,111,223,222,225,119,149, 74, 5,133, 66, 81,224,112, 21,155,238, 56, 95,122,233,165,158,235,214,173,243, 5,128,229,203, +151,163, 77,155, 54, 8, 8, 8,112,132,167,200, 85,156, 56,122,154, 57,159, 73,129, 37,142,141, 10, 11, 11,235,189,127,255,126, +198, 73, 28, 64,165, 82, 65,165, 82, 65,169, 84, 58,186, 9,139, 81,104,145,176,176,176, 1,251,246,237,115,188,100,161, 15,152, +168,139, 93,113, 59,241,183,105,217,178,229,154,173, 91,183,170, 21, 10, 5,140, 70, 35,206,157, 59, 7,127,127,127, 40,149, 74, +116,235,214, 77,214,184,113,227,160, 22, 45, 90,108, 36,132,244,245,102,134, 2,165, 20, 62, 62, 62, 5, 4,214,163,118, 33,107, + 52, 26,108,217,178, 5, 50,153,204,109,193,229,252, 63, 52, 52,212, 27,127, 67,165, 82,225,208,161, 67,144,201,100,144,203,229, + 96, 89, 22,114,185, 28,191,252,242, 11,222,123,239, 61,164,166,166,130, 16, 2,185, 92, 14, 95, 95,143,189,155, 36, 48, 48,208, + 95, 20, 87,162,248,209,104, 52,144,203,229,132,101, 89, 34,118,225, 17, 66,136,183,125,234, 12,195,224,251,239,191,199,140, 25, + 51, 48,118,236, 88, 44, 93,186, 20,181,106,213,114, 22,159,200,206,206, 70, 64, 64, 0, 2, 2, 2,160, 86,171, 31, 58, 45, 60, + 77,112, 13,157,217,115,230,107, 33, 80,228, 15,242, 16, 0, 1,160,160, 16,168,128,164,123,215,240,201,167,159,123, 93,235,168, + 84, 42, 28, 60,120,208, 33,130, 88,150, 5, 33, 4,206,194, 72, 60,194,195,195, 61,242, 41, 20,138,207,126,250,233, 39,229,247, +223,127,143,181,107,215, 58,210,150, 78,167,131,191,191, 63,130,130,130, 28, 71,116,116, 52,249,246,219,111, 21,181,106,213,250, + 12,192,175,238,227,156,250,105,203, 79,175,220,179,205, 7, 0,128,158, 31, 80,100, 92,153,250, 28,147, 57,209,239, 41, 22, 87, + 44,128,241, 91,182,108,169, 30, 25, 25,169,214,233,116,183,227,226,226,130, 70,141, 26, 53,158, 16, 50,225, 17, 55,101,206, 18, +173, 52,106,181, 90,221,188,121,115,229,180,105,211, 80,161, 66, 5,188,241,198, 27,129,139, 23, 47,238, 6, 96,125, 81,229,145, + 51, 22, 44, 92,228, 79,105,126,250,161, 2, 45,240,155,158,124, 11,239,140,254,196, 43, 71,149, 42, 85,106,240,198,141, 27,125, +156, 45, 73,206,149,191,115, 25, 37, 30,133, 9, 2,187, 21,131, 41, 93,186,244,192, 31,126,248,193,193, 25, 28, 28,236, 40,151, + 88,150, 5,195, 48,216,191,127, 63,226, 62, 27,143,128,144, 72,204, 95,184,216,163, 59, 67, 67, 67,151,118,236,216,241,127, 43, + 86,172,112, 92,171, 89,190, 60, 58, 53,126, 1,161,193,122, 4, 7,228,151,109, 84, 32, 56,125,233,166,199,250, 8, 0, 83,170, + 84,169, 55,214,175, 95,239,227,220, 16, 20,253, 10, 0,121,121,121, 14,171,189,197, 98, 65,189,122,245,188,242,187, 51,167,104, + 93, 19,197,154,107, 89, 47, 54, 96,138,226, 44, 85,170,212, 64, 81, 0, 3, 64, 96, 96, 96, 1, 14,185, 92,142,245,219, 86, 62, + 80, 55, 60, 42,103,113,227,221,149,243,230,205,155,152, 54,109, 90,129,120, 23,173, 89, 81, 81, 81, 88,176, 96, 65, 81,156,238, + 80, 31, 64,136,211,185, 5,128,210,233, 55, 5,192,159,110,158, 19,175,203, 1, 60,103,191,199, 3,200, 1,224,239,134,175, 48, +158, 84,228,111,247, 19,226,242,188,235,119, 10, 10, 44, 66,136,152,123, 91, 2, 56,152,154,154, 42, 92,188,120,145, 57,113,226, + 4,228,114, 57, 66, 67, 67, 81,191,126,125,177,251, 12,114,185, 28, 58,157,142,248,251,251, 39,137, 21,174, 24,120,206,125,233, + 78, 66,134, 73, 79, 79, 23,118,238,220,201,172,122,169, 29, 44, 20,168,253,113, 28,218,119,238,140,237, 81, 74,200, 0, 60,127, + 49, 21, 90,173,150,149,203,229, 54, 49, 18, 68, 78,231,177, 89,174,226,136, 16,226,171,211,233,190,253,249,231,159,213, 12,195, + 32, 39, 39, 7,130, 32,160, 73,147, 38, 96, 24, 6,103,207,158,197, 71, 31,125,132, 77,155, 54,225,167,159,126,210,212,169, 83, +231, 91, 66, 72, 53, 74,105,142, 83,225,181,203, 93,226,244,245,245,133, 86,171,117, 8, 44,209,207,206,166,110,241,121, 74,233, +189,212,212,212,186, 69,113,242, 60,143,238,221,187,131, 16, 2,153, 76, 86,160,208,113,254, 85, 40, 20, 56,123,246,236, 3,137, +207,157, 48, 20,253, 10, 0, 90,173, 22, 62, 62, 62,216,179,103,143,227,126,237,218,181, 97,177, 88, 16, 28, 28,140, 11, 23, 46, +184, 43,184, 11,112,166,164,164,208,132,132, 4,178,106,213, 42,200,229,114, 4, 5, 5, 65,171,213,146,149, 43, 87,142, 87, 40, + 20,209, 38,147, 73,176, 88, 44, 80, 42,149,243, 69,107, 22,203,178,134,172,172,172,160,194, 56,101, 50, 25,134, 14, 29,138,247, +223,127, 31, 75,151, 46,197,219,111,191,253,128,133,203,100, 50, 33, 56, 56,216, 33,178,188,241,251,163, 11,160,199,204, 41, 80, +156, 59,185, 29,231,207,236,130,192, 11,224, 5, 10, 74,121, 8, 28,112, 98,231,145, 74,247,111, 36, 68, 81, 80,192,222,145,161, +202,202,229, 90, 4,171,170, 0,216,188, 39,213, 60,215, 83,250,100, 89, 22, 54,155, 13, 63,255,252, 51,174, 93,187,134, 29, 59, +118,192,104, 52, 58,194,177, 97,195,134, 24, 56,112,160, 91,129,229,202, 73, 41, 93,113,247,238,221,218, 77,154, 52, 33,153,153, +153,200,204,204,132,209,104, 4,207,243,224, 56, 14, 44,203, 66,173, 86, 67,163,209, 32, 44, 44, 12, 38,147,137,154,205,230, 21, +133,113, 10, 2,201,202,187, 62,238,242,182,245,227,158,239,249, 1,197,134, 25, 4, 21, 74,171,242,126, 63,238, 59,112,243,129, + 49,109, 1, 80,193, 94,234, 48, 0,181,241, 66,234,251,227,191, 24,254,196,227,168, 32, 6,207,153, 51,167, 65,147, 38, 77, 66, +179,179,179, 47, 10,130, 64, 95,126,249,101, 92,190,124,185,218,226,197,139, 7, 3, 88, 88, 92, 78, 66, 72, 75,251,253, 17,206, + 21,252,182,109,219, 94, 2, 48, 96,217,178,101,232,209,163, 7, 22, 47, 94, 28,235, 42,176,156, 57, 41,165,184,117,101, 63,110, + 93, 61, 0, 65,160, 78, 86,112,247,255,169,151,238, 52, 24, 12,166,191,254,250,203,103,217,178,101, 8, 13, 13, 69,185,114,229, +160,213,106,161, 86,171, 11, 84,174,206, 21,174,167,188,105, 52, 26, 77,183,110,221,242, 89,179,102, 13,130,130,130, 80,182,108, + 89,104,181, 90, 40,149, 74, 71, 67, 96,213,170, 85, 88,253,105, 63,220,186,116, 6,221, 59,181,245,232, 78,173, 86,251,191, 21, + 43, 86, 20, 48,121,132, 5, 4,128,149, 51,144,201, 9, 2, 90,191,148,111, 37,252,227,199, 66, 87,119,116,225, 36, 57, 57, 57, +166,163, 71,143,250, 28, 63,126, 28,130, 32,160,108,217,178,200,203,203,131, 94,175,119,248,127,231,206,157,232,214,173, 27,190, +255,254,123, 52,108,216,208,163,223,115,115,115, 77,103,206,156,241,249,225,135, 31, 16, 24, 24,136, 82,165, 74, 57,252, 46, 30, +114,185, 28, 50,153, 12, 49, 49, 49,200,202,202,130,143,143,143,199, 56, 58,113,226,132,207, 15, 63,252,128,128,128, 0, 68, 71, + 71, 59, 44,108,162, 40,154,177,232,211, 2, 28,106, 18,241,200,156,197,141,119, 87,206,151, 94,122, 9, 21, 42, 84,128, 94,175, +135, 78,167,115,112, 23,197,233,164, 69, 90, 80, 74,247,186, 68, 97, 8, 33,100,171,211,247, 59, 19, 66,182, 58,255, 22,246,156, +253,111,179,241,227,199,215,155, 62,125,250,180,134, 13, 27,174, 57,116,232,208,234,194,248, 10,227, 25, 63,126,124,236,244,233, +211,167, 57, 63,239,230, 59, 15, 90,176, 40,165,196,238, 57, 22, 0,170, 86,173,138,244,244,116,168, 84, 42,212,175, 95, 31,169, +169,169,240,241,241,129, 66,161, 0,165, 20,195,135, 15,151,141, 25, 51, 38,148, 97, 24,112, 28,231, 40,240, 11,233, 75, 23, 24, +134, 65,163, 70,141,112,206,222,243,211,190,115,103, 68, 71, 71, 67, 28,196,161, 86,171, 49,124,248,112,242,222,123,239,177,162, +245,130, 82, 10,163,209,136,136,136, 8, 77, 17, 93,111,239,108,220,184,209, 79,169, 84, 34, 39, 39,199,209, 69, 38,147,201,112, +241,226, 69,204,154, 53, 11,175,189,246, 26,238,220,185,131,200,200, 72,188,255,254,251, 62,211,167, 79,127, 7,192, 36, 79, 5, +177,143,143,143, 67, 92,105,181, 90,188,243,206, 59,108,227,198,141, 67,125,124,124,224,235,235, 11,177,187,143,231,121,148, 47, + 95,222,163, 20, 23, 4, 1,219,183,111, 7,203,178, 30, 45, 88,246,132,231, 21,231,209,163, 71, 29,226,204,185, 85, 68, 8,193, +185,115,231, 28, 98,206, 11, 78,202, 48, 12,116, 58, 29,194,195,195,161,209,104,160,213,106,201,154, 53,107, 38,148, 43, 87, 46, +226,189,247,222, 99,178,179,179,153, 70,141, 26,161, 71,143, 30,172, 32, 8,176, 90,173,136,141,141,245,104,105,219,187,119, 47, +150, 44, 89,130,183,223,126,219,173, 5, 75, 28, 4,169,215,255,227,115, 28, 74, 12, 2, 0, 43,103, 67, 94,174,209,209,133,203, +243, 60,206,236, 57, 85,233,198,169, 43,177, 91,215,124, 47, 7, 0,211,158, 31,157, 95,139,232,177,104, 93,229, 22,129,138,163, +123,210,173, 71, 61, 89, 6, 71,142, 28,137,137, 19, 39,162, 79,159, 62,216,185,115, 39, 62,250,232, 35,188,241,198, 27, 5, 44, + 88,222,192,102,179,125,245,234,171,175,190,189, 97,195,134, 42, 31,124,240, 1, 35, 90,176,180, 90,173, 56,134, 11,102,179, 25, + 70,163, 17,151, 46, 93, 18,222,124,243,205,203, 22,139,229,171,194,248, 56,162, 57,173, 85,229,253, 90, 62,154,169, 96,184,249, +185,111,147, 23,202, 26,137,166,110,214, 75,149,219,208,142, 3,202, 6,128, 82, 80, 1, 16, 40, 96, 54, 27, 48,124,248, 40,217, + 63, 25, 87,132,144,142,125,251,246,237, 50,120,240,224,114, 57, 57, 57,215, 57,142,179,137,247, 62,250,232, 35, 92,185,114,165, + 29, 33,228, 86, 97, 93,162,133,112, 70,151, 47, 95,126, 20,207,243,148, 16,114,141, 82, 26,111,191, 53, 31,128,223,222,189,249, +245, 71,116,116, 52, 0,196, 18, 66, 86, 1,200,114, 22, 99,206,230, 80,155,141,131,209,104, 46, 82, 88,137,231,148, 10,222,186, +145, 86,169, 82, 5, 93,186,116,129, 92, 46,119, 52,210,156,187,199, 92,133, 86, 81,229, 7, 0,129, 16,130,200,200, 72,116,236, +216, 17, 10,133,162, 0,167, 88,161,118,236,216, 17, 35, 39,125,140,175, 70,182,194,146, 87, 43,161,205,148,164, 34,221,153,151, +151,151,187,123,247,110,205,251,111,191,141,231, 42, 86, 68,176, 94,143,210, 97, 33,208,168,148, 80, 56,187,137,120, 54,170,211, +252,202, 78,144,201,100,168, 81,163, 6,146,146,146,112,243,230, 77,220,188,121, 19, 12,195,160, 73,147, 38, 14, 75,240,213,171, + 87, 49,105,210, 36,152,205,102,175,253, 94,177, 98, 69,180,106,213, 10, 74,165, 18, 90,173,182, 64,215,160, 24,166, 57, 57, 57, +168, 80,161, 2, 54,111,222,140,202,149, 43,123,228,172, 90,181, 42,154, 55,111, 94, 32, 60, 53, 26,141,163,222, 0,128,187, 71, +115, 29,223,136,138,138, 42, 22,231,142, 99,119,176,108,231,110,152, 45, 2,178,243,108, 5, 94,136, 8,214,227,192, 15, 31,120, +229,119,145,243,171,175,190, 66, 86, 86,150,163,238, 17,141, 37,162,113,162, 84,169, 82, 88,178,100, 73, 97,241, 35,106, 17, 82, +200,253,206, 94, 54,164,196,231,196,196,165,154, 62,125,250, 52,215,247, 61,241, 57,223,119,121,223,226, 34,202,146,138,236, 34, + 20,235, 5, 49, 19, 68, 69, 69, 65, 28,231, 33,102, 16, 71, 1,202,113,216,180,105, 19, 66, 67, 67, 29,135,159,159, 95,161, 9, + 90, 28, 39, 52, 50, 37,127,152,193,182, 72, 5,110, 1,232,148, 66, 29,227, 68,120,158,199,198,141, 27,225, 44, 96,124,125,125, +139,236, 46, 82, 42,149, 45,234,215,175,207,152,205,230, 7,196,213,244,233,211,209,183,111, 95, 84,174, 92, 25,130, 32, 32, 55, + 55, 23, 45, 91,182,148,207,159, 63,191, 69,113, 4,150, 86,155, 63,158,223, 98,177, 96,207,158, 61, 8, 8, 8, 64, 80, 80, 16, + 2, 3, 3,225,235,235, 43,206,132,164,158, 68, 6,165, 20,221,187,119,119, 84,124,206, 86, 43, 87,177,117,232,208, 33,175,186, +222, 40,165,120,225,133, 23,160,211,233,224,227,227, 3, 31, 31, 31,108,223,190,221,241,204,243,207, 63, 15, 65, 16, 16, 26, 26, +138,195,135, 15, 23,217,205, 73, 41,165, 10,133,194,241,188, 92, 46, 39, 43, 87,174, 28, 31, 19, 19, 19, 49,122,244,104, 70, 38, +147,225,228,201,147, 56,127,254, 60,202,150, 45,235,245,152,172,204,204,204,251,227,199,143,231,199,143, 31, 15, 0,136,141,141, + 69,102,102,102,178,120, 63, 59, 59, 59,173, 93,187,118, 5,198,101,164,166,166,166,253,235, 5,150, 32,128,179,114,200, 51,153, +144,155,147,231,176, 6, 37, 39, 36,249,127,240,222,187,242, 89,195, 95, 7, 0,188, 55,119, 33,114,150,254, 93,128,253,248,126, +223,208,151,102,173, 25, 7,160,155,135, 74, 7,102,179, 25,101,202,148,193,177, 99,199,144,147,147,131, 54,109,218, 20,176,144, +138, 97,234,201, 20, 79, 41,181, 16, 66, 26,119,238,220,249,207, 57,115,230,148,175, 86,173, 26, 49, 24, 12,200,203,203,131,243, +239,153, 51,103,232,234,213,171,111,228,229,229, 53,162,148, 90, 10,227,219,126,239,155,107,237,163,222,216,240,251, 73, 89,231, +208, 10,151,245,247, 50,202,115,105,247, 84,134,108,227, 37, 19, 79,207,131,242, 0, 15, 1,148, 19,192,219,187,183,254, 65,113, + 85,163,124,249,242,111,205,159, 63, 63,204,100, 50,221,179,217,108, 6,215,188,187,120,241, 98,116,236,216,241, 45, 66, 72,188, +167, 1,233,246,119,148,254,254,254, 31,237,217,179, 39,246,254,253,251,137,141, 27, 55, 30, 71, 8, 25, 77, 41,181, 84,169, 82, +197,239,248,241,227, 77,228,114,185, 50, 51, 51,243,172, 94,175,135,197, 98,169, 97,179,217, 44,245,234,213, 59,224, 54,126, 4, +192,102,179,193,104, 52, 35, 43, 43, 7, 22,171,205, 94,102, 10,224,121,206,254, 43,128,179,151,163, 74, 5,235, 91,183,102, 68, + 46,165, 20, 12, 33,153,199,207,220, 47, 85, 88,185, 84, 88, 87,150, 55,214, 43, 55,224,197, 89, 99, 65, 65, 65,144,203,229,248, +254,251,239,113,250,224,118, 40,101, 20, 60,103, 3,103,179,130,183, 89, 32,151,201,240,251,201,155,104, 91,213,215,155, 56,162, +193,193,193,232,212,176, 33, 58, 55,108,152, 63, 93,141,101,225,163, 82, 65,171, 80,231, 91,174, 0, 80,158, 1,188, 75, 74,130, +232,206,176,176, 48, 28, 63,126, 28, 35, 71,142,196,140, 25, 51,160,209,104, 28,179,153, 47, 94,188,136,117,235,214,161,109,219, +182,197,246,187,104,177, 27, 55,110, 28, 18, 18, 18, 48,119,238, 92,212,173, 91, 23,114,185, 28,153,153,153,104,212,168, 17,146, +146,146,188,226,116,238,198, 83, 42,149, 5,172, 77,162,240, 43,110, 28, 57,115,190,222, 61, 2, 91, 14,174, 6, 1,193,145, 31, +222, 45, 80, 23, 45, 94,187,191,216,156,159,124,242, 73, 1,119,122, 99,189, 42, 70,126,221,234,141,200,114,122,238,132,104, 92, + 29, 55,110,220,135,132,144,173,227,198,141,251, 48, 46, 46,238,156, 55,124,133,220,255,197,254,219,201,233,218, 9,143, 2,139, + 82, 74,149, 74, 37, 4, 65, 40, 32,170, 92, 7,212,138, 38, 63,103,147,162, 39, 49, 32, 8,130, 35, 49,184, 54, 87,101, 50, 25, + 14, 31, 62,140,195,135, 15, 23,184,190,108,217,178, 34, 43,112,142,227,170,249,250,250, 22,176, 94, 41, 20, 10,140, 27, 55, 14, +253,251,247,119,136, 43,133, 66,129,229,203,151,163, 94,189,122,176, 88, 44,213, 60,140, 71,201, 11, 15, 15,103,196, 2, 72,167, +211,145,145, 35, 71,202, 56,142,115,132,137,120,136, 99,211, 60, 37, 22,113, 86,202,142, 29, 59,188,178, 96,121, 59, 6,137, 82, +138, 83,167, 78, 21, 16,109,226, 44, 24, 0, 56,117,234,148, 99,124,150, 55,156, 50,153, 12, 60,207, 67,163,209, 16,133, 66, 65, + 20, 10, 69,180, 40,174,100, 50,153, 35,190,157,199,228,121,242,251,189,123,247, 90, 22,117, 63, 57, 57,249,153, 93,142,193,106, +179,193,152,103, 65, 78,174, 17,159,197,125,151,127,241, 51, 28, 5,112,180,241,224,145, 24,218,190,109, 43,151,126,126,111, 10, + 24, 71,165,184,113,227, 70,200,229,114,108,222,188, 25,122,189, 30, 93,187,118,133, 94,175,199, 7, 31,124,128, 62,125,250,120, +109,193,178,167,165, 44, 66, 72,227,119,222,121,231,207,207, 63,255,188,116,169, 82,165, 96,177, 88, 96,181, 90, 97,177, 88,112, +237,218, 53,172, 94,189,250,110, 94, 94, 94, 99, 74,105,150, 39,190,237,247,190,185,182,105,223,123, 9,109,250,244, 48, 94, 76, +218,134,196,196, 52,112,220, 61, 8, 60, 7, 43,151, 63, 35,153,231, 56,112, 28, 15,133, 66,166,255,124,234,187, 59, 5, 80, 48, + 12,177,244,236,217,179,195, 19, 18, 87, 1, 0, 6, 95,191,126, 61, 39, 40, 40,232,140,253,178, 62, 33, 33,129, 0, 64,100,100, + 36, 5,224, 60,192,125,176,125, 60,150,167, 77,155, 7,255,252,243,207,141,252,253,253, 45, 12,195,100,124,244,209, 71,165, 62, +253,244,211,193, 0,230, 93,186,116,233,187, 87, 94,121,197,207,185, 5,159,150,150,118, 98,240,224,193,184,116,233,210,119,238, + 77, 4,118, 11,150,201,132,148,180, 12, 12, 26, 60,193, 97, 58, 0,104, 1, 81, 65, 65, 49,100, 4,212, 0,144,154,116, 13,175, + 15, 26,169,242,212, 16,112, 87, 1, 22, 99, 12,142,179,101,200,145, 70,125,124,124,242,187,217, 54,175,198, 47, 95, 12, 6,120, + 43,168,205, 8, 88,243, 0,107, 46, 4, 75, 30,136, 66, 3,216,140,222,196, 19,245,241,241,129,143, 70,131, 80,127,255,252, 69, + 28,101, 50,200,229, 44, 4, 27, 64,120,226, 16,162, 2,239, 85, 90,167,193,193,193, 16, 4, 1, 26,141, 6,183,110,221,194,208, +161, 67, 97,181, 90,209,189,123,119, 88, 44, 22,152, 76, 38, 24,141, 70,196,196,196, 32, 47, 47,207, 43,191,139,229,188,216,219, +243,238,187,239,162, 94,189,122,152, 52,105, 18,198,142, 29,139,152,152, 24, 12, 25, 50, 4,171, 87,175, 70,108,108,108,145,188, +206,225, 41,114,138,241,226,218,149, 7,160,216,113,228,202,153, 63,238, 31, 15,196,251,168, 87, 91, 23,155, 51, 46, 46, 14, 41, + 41, 41, 15, 88,174,196,255, 81, 81, 81, 88,188,120,241, 67,229, 89, 39,107, 81,152,155,219,157,220, 88,158,234, 35,127,108,148, + 57, 46, 46,238, 92, 92, 92, 92,103, 66,200,214,184,184,184,206, 69, 88,176, 58,121,176,112,117, 66,254,152,171, 34,193,186,244, +125,182,112,182,140,136, 21,168, 88,145, 59, 23,238, 90,173, 22,155, 54,109,130, 56,163,195,249,153,162, 4,214,175, 33,118, 19, +177,221,114,229,124,222,165, 75, 23,148, 43, 87,174,128,245, 74,163,209, 20,153,104, 4, 65,192,237,219,183,113,246,236, 89, 52, +108,216, 16, 89, 89, 89,144, 51, 12,222, 59,115, 6,213, 95,125, 21, 22,187, 69, 70,169, 84,226,237,183,223,246,106,160,250,205, +155, 55, 3,156,207,131,131,131,227,155, 54,109, 26,117,236,216, 49,199,192,119,123,247,153, 67,104,120, 35, 94, 40,165,120,249, +229,151, 11, 88,173,156,197,149,243,177,109,219, 54,175,186, 8, 41,165,104,218,180,169,195,122,229,235,235,139,159,126,250,201, + 17, 87,205,154, 53,203, 31,175, 16, 22,230, 21,167,232, 15,251,192,118,152, 76, 38, 33, 39, 39,135, 57,113,226, 4,148, 74,165, +195, 98,167,209,104,160, 86,171,161, 82,169, 30,106, 70,208,127, 1,148, 10,176,216,108, 48, 26,141,200,205,205, 95, 33,228,218, +217,141, 5, 5,152,249,225, 39,167,137, 86,170,156,156, 28,252,254,251,239,248,241,199, 31, 81,183,110,221, 7, 6,185,123, 99, +193,114, 74, 79, 41,132,144, 38, 99,198,140, 57, 50,101,202,148,200,192,192, 64, 88,173, 86,220,185,115, 7,223,126,251,109, 66, + 94, 94, 94, 19, 74,105,138,247,129, 0,216,108, 28, 76,121,102,100,101,231,224,211,169,203, 11, 77,122, 0,144,158,124, 9, 93, +186,246, 82, 62,185, 56,162, 25, 0,134,186, 84,230,171,240,247,154, 85,217,148,210,254,197, 20,109, 45,103,204,152,209,167,110, +221,186,190, 89, 89, 89, 23, 0,224,205, 55,223,196,201,147, 39, 91, 19, 66,206, 81, 74,119, 19, 66, 98,235,212,169,211,250,205, + 55,223, 4, 0,124,253,245,215,216,186,117,235,239,148,210,221,133,165, 37,177,139, 48, 55,215, 8,189,127, 4,238,221,220,235, +209, 45, 10,153, 9, 84, 16, 60, 54,252,220, 89,173,156,203,167, 98,164, 31, 42,142,249, 19, 43,234, 14, 47,191,138, 14, 67,167, + 67, 43, 7,166,189,222, 24, 49,254, 0, 52,129, 80, 52,251, 0,196,191, 76,254,139, 67,127,246,138,127,236,146, 37, 56,121, 37, +127,133,151,232,144, 16,140,233,211, 7,212, 6, 28, 58,127, 30,107,119,239, 70,159,150, 45,161, 85,171,189,110,168,136,141,239, +107,215,174,225,208,161, 67,168, 90,181, 42,174, 94,189, 90, 96, 57, 9, 74,169, 87,254,167,148, 82,113,114,146, 74,165,130, 92, + 46, 71, 98, 98, 34, 58,119,238,236,104,224,239,221,187, 23, 99,198,140,193,192,129, 3,209,162, 69, 11,183,227, 98, 93, 57, 67, + 66, 66, 28,134, 3,215, 9, 8,206,221,182,197,137, 35,119,156, 34, 30, 54,222,157, 57,167, 78,157,234,118,162,132, 55,156,206, + 90,164, 8,156,112,177, 30, 65, 28, 15, 37, 10, 34,215,115, 0, 1,226,181,113,227,198,125,232,237,123,206,231,162, 5,204,219, +174, 74, 86,236,243,116, 87,201,138,230, 98,119,208,233,116, 24, 54,108, 24, 38, 78,156,136,224,224, 96,143, 99,103, 68,229, 90, + 20,126,254,249,193, 76,182,121,243,102, 79, 93,132, 23,253,252,252,234,181,106,213, 10, 89, 89, 89,184,123,247, 46,116, 58, 29, +170,127,241, 5,206, 12, 29,138,231,150, 44, 1,211,170,149, 99,145,212, 51,103,206, 64,163,209, 92, 44,174,197,192,215,215, 23, + 1, 1, 1,142, 62,117, 81,104, 57, 89,176,168, 23,137, 16,191,254,250,171,219, 86,226,195,140,193, 18, 51,255,145, 35, 71, 10, +140,191,114, 22, 60, 71,142, 28,113, 88,176,196,215,188,233,218,210,104, 52, 84,228,211,106,181, 8, 12, 12,132, 74,165,130, 70, +163, 41, 32,174,188,177,222,121, 90, 72, 84,163,209, 28,211,233,116,254,226,125,185, 92,142,156,156,156,204,180,180,180,231,255, +213, 93,132,160,224,172, 28,140, 70, 19,114,115, 74,126, 45, 73,113,194,201,166, 77,155,240,194, 11, 47, 60, 32,174,196,176,126, + 8,209, 17, 79, 8,105, 49,111,222,188,163,179,103,207, 14,200,205,205,197,119,223,125,151,149,155,155,219,194,105, 28,145,119, + 92, 2,133,205,106, 69,158,201, 12, 67,110,126, 24, 92, 63,183,241,153, 22,214, 85,170, 84,121,125,200,144, 33, 33, 57, 57, 57, +215, 5,225,111,123,202,236,217,179,113,253,250,245,215, 1,236, 6,176,100,234,212,169, 21,107,214,172, 89, 10, 0,166, 78,157, +122, 23,192,146,162,202, 14,171,189,139, 48, 55, 55,223,234, 97, 50,164,150, 76, 58,181,139,140,194,198, 92, 61, 76, 87,142, 56, +115, 89, 38,147, 97,248,240,225, 56,115,250, 52, 90, 71,102, 35, 38,220, 23, 52,251, 30, 20,173, 62,193,169, 20, 13,102,205,249, +181,216,220,235,156, 38,241,204, 90,183,206,237,189,235,221,186, 21,203,239,151, 47, 95,134, 70,163, 1,207,243, 15,212, 55,197, +245,191,179,112,153, 51,103, 14,198,140, 25,131,229,203,151,227,204,153, 51,120,238,185,231,208,166, 77, 27, 36, 39, 39,227,244, +233,211, 48,155,205, 94,187,211,121, 92,220,229, 27,231,177,235,208,111,184, 29,127, 19, 9,137,119, 31, 58,222,157, 57, 93, 5, +214,166, 93,127,225,229,182,117, 30,138,243,147, 79, 62, 65,114,114,114, 1,203,149,243,196,176,194, 44, 88,174, 90,196, 5,169, + 46, 99,157,196,115,139,139,216,113, 61,119,125, 30, 0,146, 1,200, 60,188,231,122,158, 26, 23, 23,183, 71,180,124,217,121,101, +133,141,191,114,219, 69, 40,138, 33, 49,131,184, 90,166,196,255, 58,157, 14,190,190,190,240,245,245,133, 94,175,247,104, 25, 18, + 5, 86,211, 27, 57, 5,198,114,137,150, 44, 0, 24, 56,112,224, 3, 22, 44,231, 5, 57,221,193,108, 54,239,221,187,119,111,237, + 46, 93,186,200, 46, 94,188, 8,153, 76, 6, 65, 16, 96,105,216, 16,207, 45, 89,130,179,239,190,139,230,183,110,193,100,181, 66, +173, 86, 99,251,246,237,214,188,188,188,189,197, 45, 47,156, 5,150, 78,167,131,159,159,159, 67, 96,120,163,202,197, 76, 91,212, +248, 6,241,112, 30,228,239, 77,102, 22, 43, 82,231,113, 55,132, 16, 24,141, 70,199, 96, 77,111,172,140,206, 93,132,206, 25,143, + 97, 24,248,251,251, 59, 10, 13,209,130,229,173,245,206,211, 66,162, 90,173, 86,127,233,210,165, 10,226, 50, 18,169,169,169,104, +213,170,213,149,127,125, 77, 43, 0, 86,142, 71,174,209,132, 92, 99, 94, 73,118,107, 1, 0,190,255,254,123, 92,187,118, 13, 86, +171, 21,113,113,113, 15, 8,171,226, 12,114,119,147,174,174,213,169, 83, 71,120,241,197, 23,113,228,200, 17,168, 84, 42, 27,165, +180,216,235, 87, 9, 84,128,149,227, 96, 50, 26,145,107, 48,252, 39, 44,151,151, 46, 93,202,242,245,245, 61, 12,192,231,202,149, + 43, 50,157, 78,135,242,229,203,195,100, 50,101, 1,200,178,135,175,133, 16, 50,253,237,183,223,158, 11, 0, 54,155,109,122, 81, + 99,218, 40,165,176,113,118,177, 94,130,225, 40,166,165,194,202,164,135, 89, 46,197,185, 66, 21, 4, 1,111,189,249, 38,218, 68, +102,227,165,186, 33, 48,220,191, 2,173, 95, 8,136,127, 89,204,154,243, 43,206,221,240,122,168, 37, 5,128,246,205,186,161, 86, +213, 7,151,247,106,210, 58,191, 45,118,224,247, 99, 72, 74, 77, 40,182,223, 13, 6, 67,161,150, 42,111, 45, 88, 34,167,184, 92, +138, 92, 46, 71,237,218,181, 81,169, 82, 37,236,217,179, 7,117,234,212,193,213,171, 87,113,245,234, 85,220,186,117, 11,103,206, +156, 65, 70, 70, 70,177,227,232,167, 29,107,145,145,147, 14,165, 66,137,244,204, 84,220,190,119, 19, 97, 65,225,143, 28,239,142, + 6, 66,167, 79, 1, 0,145, 33,126,197, 18, 88,206,156,159,127,254,249, 3,162,189, 4,150,222, 57,230,225,188,184,239, 63,118, +176,133, 88,133,140,129,129,129, 26,231,254, 83,134, 97,224,231,231, 71,102,204,152, 33, 99, 24, 6,190,190,190,240,243,243,131, +104, 22,244, 4,165, 82,105, 44, 91,182,172, 70, 76,128, 98, 6,212,235,245,178, 25, 51,102,144,101,203,150, 21,106,213,242, 48, + 6,107,118,255,254,253,223,136,143,143, 15, 8, 13, 13,197,253,251,247,161, 84, 42,243, 51, 69,203,150,104,122,227, 6,172,249, + 99,138,112,249,242,101,124,245,213, 87, 6,179,217, 60,187,184, 1,229,227,227,131,160,160, 32, 71,215,160,104,193,113, 18,139, + 94, 13,173, 44,202, 20, 47,182,248, 30,166,171,200, 85,100, 13, 30, 60,184,128,216,242, 22, 10,133,130, 19, 87,106,103, 24, 6, + 86,171, 21,117,234,212, 65,114,114,178, 35,179, 56, 91,238,188, 17, 88,158, 22, 18,101, 89, 22, 22,139, 5,205,154, 53, 3, 33, + 4, 11, 23, 46,124, 54,186, 29, 5,129,248,248, 4, 33, 50,178, 50, 66, 66, 77, 16,132,146,219,253,133,227, 56, 12, 25, 50,164, +128,197, 74,156,169, 40,118,241, 83, 74, 97,179,217, 30,122,209, 86, 49, 95, 63,202,250,111, 20,112,116,109, 25, 12,166,127, 93, + 20, 70, 71, 71,235,237, 93,134,174,112, 63,219, 15,127, 47,201, 64, 8,153, 18, 31, 31, 95,179, 74,149, 42,104,222,188, 57,182, +109,219,182, 25,192,143, 46,150,194, 47,197,255, 69,199,133, 61, 28, 77,102, 24, 12, 37,111, 13, 45,170,161,247, 40,194,109,226, +196,143,209, 38, 34, 19,221,159,243,195,138,173, 7,209,175,182, 6,176,168,138,205, 39,186, 37, 40,170, 28,202,213,104,240,192, +125,181, 95,126,215, 92,185, 26, 13, 32,187,123,181,216,126,119,118,179,155,165, 3, 30, 41, 60, 7, 13, 26,132, 15, 62,248, 0, +237,218,181,195,213,171, 87,177,111,223, 62, 92,189,122, 21, 35, 71,142, 68,108,108, 44,158,123,238,185, 98,113,110,217,181, 1, +217,185, 89, 96, 8,131,244,172, 52,152,204, 70,140, 29, 50,241,145,227, 93,196,205, 93,113, 0,128,141, 59, 79, 62, 52,231,135, + 31,126,136,196,196,196, 2,150,171, 71, 25,119,245,111,133, 91,129,149,150,150,230,182,191, 47, 36, 36, 36,169,109,219,182,161, +247,239,223,135,143,143,143, 71,113, 69, 8,105, 35,174,149,145,152,152,232,150,211,215,215,215,218,182,109, 91,121, 68, 68, 68, +129,217,131, 58,157,238,129,204,229,202,105, 47,152,114, 8, 33,111, 53,110,220,120,197,182,109,219,180,149, 42, 85, 66,118,118, + 54, 40,165, 88,190,124, 57,134, 15, 31, 14,181, 90,141,203,151, 47,163,107,215,174,121,121,121,121,111, 57,175,129,229,142,179, +176, 22,153,184,138,189, 27,113, 85,164,223,157, 51,233,188,121,243, 48,109,218, 52,124,248,225,135, 69, 70,204,210,165, 75, 1, +151,238, 60,119,156,148, 82,204,154, 53,171,196, 56,211,210,210,150,187, 88,159, 22,190,244,210, 75,236,221,187,119, 11,136, 42, +231,195, 77,129, 84,128,211,211, 66,162, 50,153, 12, 97, 97, 97,152, 50,101, 10,130,130,130, 16, 30, 30,254,128,229,197, 83, 28, + 61,100, 37,240, 88, 57,121, 42,156,248,124,250,199, 77,190, 91,181, 69,174, 82, 2,135,247,109, 68,118, 70, 98, 65, 11,172,245, +239, 41,209,202, 58,173, 97, 57,249,187, 87,238, 52,155,205,152, 57,115, 38, 62,253,244, 83,124,250,233,167,222,196,251, 35,249, +221, 27,145,229,150, 83,160, 68,171, 11,128, 90, 23,137,234,177, 1, 16,138,185, 86,231, 63, 20,239, 66, 66, 66, 2, 34, 35, 35, +113,245,234,213, 26, 50,153,172,128, 34,224,121,222,172, 86,171, 15,120,193,121,118,211,166, 77, 53, 39, 76,152,128,105,211,166, + 1,192,128,189,123,247,190, 66, 8, 49,121, 18,105,174,156, 2,165, 68,163,245,135, 90, 23,129,234, 53,252, 33, 8, 92,137,248, + 93,172,252, 92,173, 87,197, 92, 72,218,109, 89, 7, 0,127,254,190, 25, 19,223,173,129,229,191, 28,197,252, 99, 64, 45,255,100, + 84, 15, 73,129,144,114, 17,239,247,171,135, 89, 63, 28, 7, 0,236,219,235, 49,142,138, 92,215,216,100,180, 62,146,223,157, 45, + 85,206,223,241, 52, 6,203, 29,167,216, 56,204,201,201, 65,102,102, 38, 86,172, 88,129,215, 95,127, 29,201,201,201,184,117,235, + 22,174, 92,185,130, 53,107,214, 56,102,167, 23, 55,142,222,123,243, 35, 76,152, 53, 26, 20, 20, 85, 42, 84,199,184,161,159,162, +126,173,134,143, 28,239,174,240,100,189, 42,138,115,222,188,121, 15,149,150,254, 19, 2,171,168, 86, 4,195, 48, 8, 14, 14,118, + 36, 14,231,132,247, 48, 45, 93,153, 76, 6,142,227, 28, 99,123,196, 3, 0,186,116,233,130,159,127,254,217,155,153, 17,219, 8, + 33,255,171, 86,173,218,183,159,125,246,153, 79,243,230,205,217,200,200, 72,212,175, 95, 31,151, 47, 95,198, 47,191,252, 98, 91, +180,104,145, 33, 47, 47,111, 32,165,116,231,195,148, 75,226,214, 51,206, 71,113, 90, 57, 86,171,245,238,213,171, 87, 35,102,205, +154, 37, 99, 24, 6,115,231,206,117,100, 70,113,161, 86,103,236,219,183,143, 19, 4,161,200, 46, 25,155,205,118,247,234,213,171, + 17, 95,124,241,133,140, 16,226,224,100, 24, 6,206, 27, 43, 23,135,211,157,184, 20, 39, 60,184, 59,220,185,221, 93, 28, 23,181, +144, 40,203,178,184,124,249, 50, 38, 78,156, 8, 66, 8, 54,110,124, 54,198,232,156,185,152,186,236,185,234,161, 1, 93, 58, 52, +169, 9, 66, 96,181, 60,216, 3,228,147,145,235, 16, 87, 47,125,177, 22, 63,190,215,199, 27,177,115,237,192,129, 3,129, 51,103, +206,100,101, 50, 25,230,204,153, 83, 96,177, 95,215,120,223,191,127, 63,247, 48,221,123, 98,126,182, 90,173, 48, 26, 31,206,106, + 66, 41, 61, 20, 55,117, 66,219,149,223,255, 42, 39,196,130,195,123, 55, 34, 43,211,253,212,116,165,156,197,178, 21,155, 56,133, + 92,118,247, 31,142,186,249, 61,123,246,156,176, 97,195, 6, 22,192,185, 71,224,217,252,205, 55,223,116,232,213,171, 87, 96,197, +138, 21,241,221,119,223, 41,252,253,253,235, 18, 66,136, 59,145,230, 33, 28, 55, 79,159, 58,225,181, 21, 63,252,170,100,136, 21, +135,247,109, 68,150,139, 88,127,208, 26, 45,199, 55,203, 55, 89, 21, 10,249, 37, 79,229,186,179,245,170, 36, 43,196,174,253,135, +226,165,121,243, 81,190,126,123, 76,159,209, 6,223, 76,237,133,217, 47, 42, 96, 93,223, 15,181,122,174,196,234, 73, 29, 1, 0, +145,223,120,105, 29, 97, 21,184,227,198, 66,149,153,165,182,139,154,226, 89, 73, 69,191, 23, 85,134, 23,215,130,197, 48, 12,202, +149, 43,135,242,229,203,163,113,227,198,168, 83,167, 14, 90,182,108,137,211,167, 79,227,244,233,211, 24, 57,114,100,161,226,202, +155, 56,106,209,168, 45,142, 54,189,244,200,113,227, 26,239, 37, 1,111,210,210,144, 33, 67, 0,224, 63, 97,205, 98, 31, 38,240, +196, 4,249,168, 91,199,136,156, 22,139,197,209,245,230,188,174,146, 56,232,221,203, 25,122, 59, 9, 33,177, 31,127,252,241,187, +106,181,186,101, 94, 94, 94,101,187, 5,230,178,217,108,222,109, 52, 26,231, 80, 74, 51, 31,197,173,206,203, 50,184,115, 66, 81, +239,102,100,100,180,111,223,190,253, 78,150,101,203,185,110,196,235, 46, 3, 11,130,112, 43, 41, 41,169,200,169,234,105,105,105, +237,219,181,107,231,150,211, 93,193,224, 13,167,187,248, 17, 4,161, 80,113,229, 77, 1,228,105, 33, 81,150,101,161,211,233,240, +211, 79, 63, 33, 56, 56,248,153,202, 96,167,206, 39,207, 44,234,126,139, 96,213, 94, 0, 33, 47,125,177,246,206,158, 84, 75,153, + 22,193,202,219, 63,190,255, 74,233,162,222, 73, 77, 77,109,247,250,235,175,255,198,178,108, 57,215,240,119, 23, 23, 28,199,221, + 76, 76, 76, 44,246,178, 7,148, 82, 92,186,116, 73, 24, 52,104, 80,106, 74, 74, 74,175,135,241,255,184,137,243,103, 79,251,108, +120,208,139,109, 27,212, 7, 3, 88, 10, 31,212, 75, 9, 64, 89,185,236,238,152, 15,231,190,249, 79,198, 25,165,244, 36, 33,100, + 74,253,250,245, 71,162,208,117,193,243,199, 82,121,224,177, 18, 66,102,119,232,208,225,253, 17, 35, 70,248,183,107,215,206, 26, + 21, 21,117,194,217, 58,239,125, 58, 74,122,251,185,106, 33,209, 47,182,121,161, 61, 8,161, 22,139,217, 67,195, 8, 20,148, 82, +133, 66,126,233,216,169,132, 90,158,172,243,246, 29, 51, 74,188,107,126,216,176, 97, 24, 54,108,152, 35, 61, 45, 92,216, 20, 27, +206, 30, 64,207, 90,241, 48,127,213, 4, 68, 95,218,235,134, 30, 0,124,244,241,160,146,180,100, 22,152,124, 85, 82, 99,176,100, + 50, 25, 82, 83, 83,113,249,242,101, 36, 37, 37, 33, 47, 47, 15, 23, 46, 92,128,213,106, 69, 70, 70, 6,106,212,168,241,208,238, + 44,169, 56,250, 39, 57,255, 75,221,132,197, 18, 88, 28,199,197,123,218,245,220,102,179, 21,107,150,145, 92, 46, 55, 85,170, 84, +137,184,155,109, 32,254,215,233,116, 70, 47, 11,198, 76, 0, 19, 1, 76,180,239, 55,133,244,244,244, 71, 86,129, 60,207, 39,148, + 41, 83, 70, 86,152,112,177,135, 77,146, 7,183, 25, 0, 52, 44,225,138,160,196, 57,221,196,143,161,106,213,170,142,177, 92,174, +107,154,216, 55, 65, 45,114,212,173,167,133, 68, 13, 6,195,253,246,237,219,243,206,247,157, 23, 34,125,166, 65,232,237,142,175, +188, 81,102, 79,170,165, 12, 0,136, 34, 11,148,222, 46, 34,222,141, 0,154, 63,110,167,221,184,113,195,242,194, 11, 47,124,159, +147,147, 51,148, 82,250,208,163,244, 63,252,100,225,135,255,182,104,161,148,158, 4,240, 90, 9,240,156, 37,132, 12,158, 57,115, +102,175,153, 51,103, 86, 0, 16, 12, 64,237,173, 72, 43, 32,178, 46,164,148,248,218, 96, 28,199,197,151, 47, 95,190, 88,150, 26, + 79,101,188,205,102, 43,178,158, 56, 7, 63,124,120, 4,200,223,198, 45,205, 43, 78,147,201,148,222,176, 97, 67,121, 49,253,150, +236,173,223, 35, 34, 34, 16, 25, 25,233,248, 21,225,122,221,147, 59, 57,142,139,143,142,142, 70,112,112,112,161, 43,180,187,142, +185,242,134,179,164,227,168, 40,206,200,200,149, 37,206, 89, 82,122,225,153, 22, 88,226, 30,131, 37,137,164,164,164,199,178, 55, + 10, 45, 9,243,218,223,150,162,250,248,143, 34, 45, 45, 45,232, 81, 57, 60, 45, 36,154,148,148,212,242,191, 26,190,123, 82, 44, + 3, 30,184,102, 23, 91,255, 52, 12, 6, 67,105, 74,233, 67,141,204,239,217,179, 39, 15, 9,206,130,120,249,211,232,182,212,212, +212, 18, 47,211, 31, 71, 61,145,158,158, 94,243,191,234,247,199,225,206,127, 11,231,191, 29,140, 20, 4, 18, 36, 72, 40, 68, 24, + 72, 34, 73,130, 4, 9, 18, 30, 18, 4, 64,155, 66, 10, 87,175,103,238, 16, 66,218, 60, 68,225,189, 75,226,148, 56, 37, 78,137, + 83,226,148, 56, 37,206,255, 22,167, 39,238,146,158, 57,252, 79,182, 82, 31,219, 1,160,141,196, 41,113, 74,156, 18,167,196, 41, +113, 74,156, 18,231,127,237,144,186, 8, 37, 72,144, 32, 65,130, 4, 9, 18, 74, 24,146,192,146, 32, 65,130, 4, 9, 18, 36, 72, +144, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 36,176, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, + 72,144, 32,225,225, 65, 74,112, 61, 78, 9, 18, 36, 72,144, 32, 65,130, 4, 9,162,192, 34,132, 56, 84, 22,165,148, 72,193, 34, + 65,130, 4, 9, 18, 36, 72,120,162,130,228, 25,211, 34, 14,129, 37, 9, 43, 9, 18, 36, 72,144, 32, 65,194, 63, 41,176,158, 37, + 45, 82,192,130, 37,137, 44, 9, 18, 36, 72,144, 32, 65,194, 63, 37,176,158, 37, 45, 34, 89,176, 36, 72,144, 32, 65,130, 4, 9, + 79,133,192,122,102, 45, 88,207,146,114,148, 32, 65,130, 4, 9, 18, 36,252,187, 4,214,179,164, 69,164, 89,132, 18, 36, 72,144, + 32, 65,130, 4, 9,146,192,146, 32, 65,130, 4, 9, 18, 36, 72,120,186,241, 88, 23, 26, 37,132,180,145, 56, 37, 78,137, 83,226, +148, 56, 37, 78,137, 83,226,148, 4,150, 4, 9, 18, 36, 72,144, 32, 65,130, 4, 73, 96, 73,144, 32, 65,130, 4, 9, 18, 36, 72, + 2, 75,130, 4, 9, 18, 36, 72,144, 32, 65, 18, 88, 18, 36, 72,144, 32, 65,130, 4, 9, 18, 36,129, 37, 65,130, 4, 9, 18, 36, + 72,144,240, 15,129, 0,112, 59, 19,128, 82,186,203,107,146,135,152, 77,224,137, 95,226,148, 56, 37, 78,137, 83,226,148, 56, 37, +206,103,143,211, 19,119,113,244,199, 83, 13, 74,233, 99, 59, 0,180,145, 56, 37, 78,137, 83,226,148, 56, 37, 78,137, 83,226,252, +175, 29, 82, 23,161, 4, 79, 45, 12,150, 16,194, 62,236,253, 39,197, 41, 65,130, 4, 9, 18, 36, 60, 77, 96, 11,169,224, 42, 2, +248, 16,128,159,211,229, 99,148,210, 56,151,231,126, 0,160,117,186,100, 0, 48,137, 82,122,213,139,111, 43,236,252, 42,251, 33, + 0, 48, 1, 48, 3,200, 1, 96,147,162,231, 31, 23, 87, 13, 1,116,182,255,223, 74, 41, 61, 92,156,251, 79,138,243, 73, 33, 50, + 50, 82, 19, 16, 16,208,238,228,201,147,202, 11, 23, 46, 96,255,254,253,116,217,178,101,214,140,140,140, 29, 9, 9, 9, 70, 41, +197, 60, 19,105,190, 61,128,113,246,211,233,148,210,237,143,200, 71,180, 90,237, 72,157, 78,215, 81,165, 82, 69,114, 28, 71,242, +242,242, 18, 12, 6,195, 78,142,227,190,160,148, 10, 15,193, 89, 63, 56, 56,120,112,108,108,108,165, 27, 55,110,220,189,115,231, +206, 42, 0,219, 1,180, 47, 93,186,116,255,152,152,152, 82,231,206,157,187,146,154,154,186,132, 82,250,231, 63,229, 78, 9, 18, + 36,129,229, 30, 19, 41,165,253, 92, 50,224, 3, 15,181,106,213,170,235,142, 29, 59,180,130, 32, 64, 60, 52, 26, 13, 7, 96,128, +135,239, 6, 29, 58,116,168,204,208,161, 67, 95, 74, 72, 72,168,151,147,147,243, 60, 0,104,181,218,163,161,161,161,127,206,155, + 55,111, 77,187,118,237,226,237, 66,171, 88,150, 17,185, 92,254,122, 64, 64, 64, 71,142,227,234, 80, 74, 33,151,203, 79,102,100, +100,108,183,217,108,223, 80, 74,109, 15, 81,152, 41, 89,150, 29,166, 82,169,218,115, 28, 87, 19, 0, 88,150, 61, 99, 54,155,183, +115, 28,247, 37,165,212,242, 16,156,106,165, 82, 57, 76,175,215,183,181, 88, 44, 53, 1, 64,169, 84,158,201,206,206,222,105,177, + 88,190,164,148,154,158,130,138,134, 5,208,153, 82, 42, 7, 0,153, 76,214,173, 97,195,134,101, 8, 33,130,184,227, 57,195, 48, +181,121,158,103,236,207,119, 38,132,252, 73, 41,229,138,195,249,194, 11, 47,148, 98, 89,150, 82, 74, 9,165,148, 97, 24,166, 86, +113, 56, 75, 10, 33, 33, 33,211, 4, 65,136, 44,234, 25, 63, 63,191,122, 39, 79,158,172,178,110,221, 58,254,171,175,190,202, 28, + 56,112,160,207,208,161, 67,217,133, 11, 23,126, 9, 96,148,235,243,193,193,193,179, 25,134, 9,246,230,251,130, 32,164,166,166, +166,142,150,138,164,127, 28,227, 22,237,202,105, 70, 41, 48,172,173, 47, 99, 23, 46, 15,141,168,168,168, 21,175,189,246,218, 43, + 53,107,214,100, 41,165,176,217,108, 48,155,205, 85, 14, 31, 62,220, 98,227,198,141,245, 0,244, 42,102,190,236, 60,110,220,184, +175, 39, 77,154, 20, 34,151,203,137,205,102,107,176,110,221,186, 23, 7, 15, 30,124,106,201,146, 37,207,245,238,221,219, 87,188, +254,201, 39,159,116, 32,132,188, 75, 41, 93,243,164,221, 41, 65,130,132,194, 5,150,206,158,153,147, 0, 28, 19, 45, 88,174, 15, +253,241,199, 31, 91, 88,150, 21, 45, 88,207, 27, 12,134, 48, 23,171,151, 59,148,237,223,191,127,195, 13, 27, 54, 76,235,221,187, +119,162, 86,171,173,212,163, 71,143, 28, 66,136,108,221,186,117,181,203,151, 47,175,233,210,165, 75,255, 86,173, 90,189,247,219, +111,191,237, 7,144,226,101,193, 83, 61, 48, 48,112,211,204,153, 51,203,180,111,223, 94, 17, 28, 28, 12, 74, 41, 18, 18, 18,162, +126,249,229,151, 23, 63,251,236,179,247, 8, 33,221, 41,165,231,139,211, 82,212,104, 52, 27, 62,251,236,179,136, 23, 95,124,145, + 13, 15, 15,135,201,100,194,133, 11, 23,218,108,223,190,189,217,210,165, 75, 71, 17, 66,122,122,219, 74,180,115, 62,239,231,231, +183,241,187, 15, 62, 8,107,240,250,235,108, 96, 96, 32, 40,165, 72, 73, 73,105,115, 96,229,202, 22, 67,102,206, 28, 69, 8,121, +153, 82,122,236,105, 74, 40, 74,165,146, 89,181,106,213,115, 74,165, 18, 0, 96,177, 88, 16, 27, 27,251, 72,187,157,203,229,114, +230,139, 47,190,168,195,178, 44,172, 86,171,144,147,147, 67,123,244,232,241,143,116, 91, 19, 66,162, 19, 18, 18,252, 20, 10,133, +219,251, 60,207,163, 89,179,102,229, 20, 10, 5,190,248,226, 11, 91,106,106,106,237, 5, 11, 22,156, 92,189,122,117,240,151, 95, +126,217,211,157,192, 98, 24, 38, 56, 62, 62,222, 45, 39,207,243,176, 90,173,224, 56, 14, 22,139, 5,213,170, 85,147, 74,163,167, + 3,101, 0,224,215,211, 38, 0, 8,124, 84, 50,157, 78, 87,181,111,223,190,108, 74, 74, 10,228,114, 57,172, 86, 43, 18, 19, 19, + 17, 27, 27, 43,251,254,251,239, 43, 23,151,175, 74,149, 42,131,227,226,226, 66,127,253,245, 87,235,247,223,127,111,110,211,166, +141, 98,224,192,129,250,102,205,154, 53,141,142,142,102,190,253,246, 91,243,174, 93,187,172,255,251,223,255, 84,211,166, 77, 11, +253,237,183,223, 94, 1,176,230, 73,187, 83,130, 4, 9,133, 11, 44, 17,199, 40,165,221, 0, 64,161, 80,212, 46, 85,170,212, 10, +142,227,194,237, 86,156, 68,185, 92,254,133,213,106,253,203, 94, 65,109, 22, 4,161,171, 39,203, 85,255,254,253, 27,254,246,219, +111,179, 14, 31, 62,156,149,150,150, 22,190,101,203, 22,211,123,239,189,119, 11, 0,110,220,184, 17,211,165, 75,151,168,225,195, +135,199,183,107,215,110, 94,203,150, 45, 71,236,222,189,123, 39,242,187, 30,139, 20, 87,177,177,177,135,246,237,219,231,235,239, +239, 95, 80,205,149, 45,139, 17, 35, 70, 40,186,118,237, 90,190,117,235,214, 7, 9, 33, 77, 41,165,103,189, 17, 66, 21, 43, 86, +220,245,199, 31,127,248, 4, 4, 4, 32, 51, 51, 19,137,137,137,200,203,203,131, 94,175, 71,239,222,189, 21,205,155, 52, 46, 53, +124,228,168, 93,132,144, 54,222,136, 44, 66,200,243,141,171, 87,223,181, 58, 46,206,199,118,231, 14, 52, 26, 13,114,115,115, 1, + 0,190,190,190,168, 87,174, 28,123,124,229,202,168,126, 99,199,138,156, 79, 92,100, 17, 66, 84, 0, 64, 41, 53, 19, 66,182,202, +100,178,110, 74,165,146,233,214,173, 27,118,237,218, 69, 76, 38, 19, 11, 0,106,181,154,235,214,173, 27, 52, 26, 13, 44, 22,139, + 0, 96,107, 97,150, 38,119,156,114,185,156,105,217,178,101,222,177, 99,199,210, 69, 78,173, 86,107,107,217,178,101,144, 82,169, +212,112, 28, 71,139,226,124, 76, 34, 18,215,174, 93, 43,112, 45, 39, 39, 7, 41, 41, 41, 72, 75, 75,131,217,108, 70,102,102, 38, + 4, 65, 32, 26,141, 38, 69, 16, 4, 48, 76,190,177,173, 48, 78,133, 66,129,203,151, 47, 23,184,198,113, 28, 12, 6, 3,204,102, + 51,172, 86, 43,114,114,114, 52,190,190,190, 21,171, 87,175, 30, 15, 96,115,122,122,250, 23,137,137,137,183,165,226,233, 31,193, +157,173,127,153, 74, 3,176, 0,184, 89, 2,124, 2, 0,236,223,191, 31, 73, 73, 73, 72, 77, 77, 69, 74, 74, 10,162,163,163,241, + 48,221,110,151, 46, 93,154, 87,187,118,109,114,234,212,169,159, 1,124,189,118,237,218,151,210,211,211, 23,143, 25, 51, 38,240, +243,207, 63, 79, 31, 59,118,236, 16, 0, 63,174, 93,187,246,245,154, 53,107,118, 57,115,230,204,220,127,194,157, 18, 36, 60, 6, +212, 7, 16, 98,255,159,106, 47,119,131,156,206, 79,219,243,173,248,156, 5,128,210,205,175, 8,241, 60, 5,192,159, 78,239,137, +231,143, 12,177, 43,134,138,135,187,135,194,194,194, 70,182,106,213,106,214,137, 19, 39,170,221,191,127, 63,224,254,253,251, 1, + 39, 78,156,168,214,170, 85,171, 89, 97, 97, 97, 35,197,231,236, 51, 11,224,116,238, 60,213, 82,113,232,208,161, 50,155, 54,109, +154,190,107,215,174,172,218,181,107, 91,254,248,227, 15,174, 93,187,118,201, 0, 56, 0, 92,187,118,237,146,119,239,222,205, 55, +104,208, 64,243,219,111,191,221, 61,120,240,224,236, 13, 27, 54,132, 1,144, 21,194, 9, 66,136,220,223,223,255,167,189,123,247, + 62, 32,174,156, 81,170, 84, 41,108,221,186, 85,239,239,239,191,153, 16,162, 40,194,157, 32,132,168,213,106,245,198,221,187,119, +251,248,250,250, 34, 57, 57, 25,114,185, 28,161,161,161,200,202,202, 66,226,253,251,184,125,229, 10, 24,139, 5,115,166, 78,246, +213,104, 52, 27, 8, 33, 74, 79,156,126,126,126, 27, 87, 79,155,230,147,182,107, 23, 78, 77,153, 2,171,213,234,232, 90,181, 90, +173, 56, 56,116, 40, 82,126,255, 29,223, 78,156,232,227,231,231,183,145, 16,162, 46,138,179, 36,224,204, 73, 8, 25, 10, 32, 29, + 64, 58, 33,100, 40,165,244,112,108,108,236,137, 11, 23, 46,160,105,211,166, 88,191,126,125,173, 49, 99,198, 12, 29, 51,102,204, +208,245,235,215,215,106,218,180, 41, 46, 92,184,128,216,216,216, 19,206, 99,165,188,225,220,187,119, 47, 90,181,106,149,177,126, +253,250,152,137, 19, 39, 78,155, 56,113,226,180,181,107,215,150,111,213,170, 85,198,220,185,115,205, 69,113, 62, 14,191, 59, 91, +150,156, 15, 65,248,187,110,137,140,140, 76,222,180,105, 19,122,247,238,205, 40,149,202,251,125,250,244, 81, 29, 56,112,128, 2, +216, 90, 28,119,154, 76, 38, 24,141, 70, 24, 12, 6,220,184,113, 67, 51,115,230,204, 38,159,126,250,105,133, 93,187,118, 69,125, +248,225,135, 67, 66, 66, 66, 78,134,135,135,151,121,210,126,151, 56, 1, 0,137, 0,172,246, 70,221,237, 71,225,108,221,186,117, +141, 10, 21, 42,132,173, 59, 23,128, 12, 69, 21, 8, 10,127, 8, 10,127,240, 65,245,113, 77,217, 1,165, 75,151, 14,243,245,245, +109, 88, 28, 78, 74,233,206,191,254,250,171, 3,165,116, 9,165,148,167,148,110, 24, 59,118,236, 32, 66,200,198,177, 99,199,190, + 77, 41,221, 96,191,190,236,244,233,211, 93, 40,165,187,255, 9,119, 74,105, 73,226,124,200, 6,126, 81, 90, 36,132, 16,178,149, + 16,178,117,252,248,241, 45, 1, 4,185,156, 55,114,126, 14,128,210,221,175,120, 56, 93, 15, 1,208,201,233,189,144,146,242, 15, +227, 20, 88,132, 82, 42,182,196,143, 17, 66,182, 0, 56,166, 80, 40,106, 63,247,220,115,221,182,109,219,230, 27, 18,242,247,119, + 67, 66, 66,176, 97,195, 6,223,234,213,171,119, 83, 40, 20,181, 1, 28,211,235,245, 91,224,166, 43,209, 14,255,161, 67,135,190, +244,234,171,175,102,215,174, 93, 27, 0, 50,207,159, 63,175,109,208,160,129,129,227, 56,194,113, 28,105,208,160,129,225,252,249, +243, 90,155,205,150, 83,191,126,125, 93,235,214,173,111,141, 30, 61,186, 63, 0,117, 17,126,232, 59, 99,198,140,232,128,128,128, +162, 18, 2,114,114,114, 16, 22, 22,134,161, 67,135,134,203,229,242, 55,138, 52,235,177,236,176, 25, 51,102,132,250,251,251, 35, + 35, 35, 3,209,209,209,176, 88, 44,184,124,249, 50, 76,134, 92,216,114,178, 97,203,206, 68,202,245,171,240,151,179,232,223,181, +115, 24,203,178,195, 60, 88, 71,134,125, 51,118,108,152,229,214, 45,220, 88,191, 30, 60,247,160, 97,134,179, 90,113,230,235,175, + 97,138,143,199,244, 65,131,194,148, 74,229,176, 39,108,185,250,156, 82,170,161,148,106, 8, 33,243, 26, 53,106,244,189, 70,163, + 25, 26, 23, 23,215,126,199,142, 29, 47,238,219,183,175, 5,199,113,114,142,227,228,251,247,239,111,106, 50,153, 88,149, 74, 5, +150,101,169,183,156, 13, 27, 54, 92,161,209,104,134, 44, 94,188,184,253,238,221,187,251, 31, 63,126,124, 24,207,243, 74,158,231, +149,199,143, 31,127,219,104, 52,202, 41,165,124, 97,156, 79, 26,114,185, 28, 10,133, 2, 26,141, 6, 77,154, 52,185,190,108,217, + 50, 91,116,116,180,124,227,198,141, 1,145,145,145,186,133, 11, 23,102,230,228,228,204,240,150,207,106,181,194,108, 54,195,104, + 52,194,100, 50,225,143, 63,254, 40, 55,124,248,112,214,100, 50,241, 93,186,116, 73,183,217,108,230,177, 99,199,234, 3, 3, 3, +223,147, 26,172,255, 8, 56, 0,185,118,129,101,118, 78,203,132,144,154,162, 53,214, 27,100,102,102, 46,253,230,155,111,162, 25, +149, 63, 14, 88, 58, 98,141,240, 25,118,248, 45, 68,114,153,247, 17, 26, 93, 1,175,188,242, 74, 40,165,116, 97, 9, 84,116,155, + 41,165, 61, 41,165,155, 30,230,253,199,237, 78, 66, 72, 25, 31, 31,159,245,122,189,254,128,143,143,207,122, 66, 72,153, 71,245, +115,187,138,164, 77,183,106,178,248,118, 21, 8,237, 86, 77, 22,223,174, 98,241,215,106,146,240,116,194, 69,139, 56, 35,133, 82, +218,153, 82,218,121,250,244,233,211,156,158, 23,207, 53, 94,242,119,166,148,118,118, 73,163, 91, 31,135, 95, 88,103,229, 40,122, +202,121,182, 96,169, 82,165, 86,172, 88,177,194,215,245,197,251,247,239, 35, 59, 59, 27, 19, 38, 76,240,125,245,213, 87, 71,221, +189,123,247, 53, 15,223, 82, 38, 38, 38,214,233,215,175,159,218,106,181,102, 8,130,192,100,103,103,179,126,126,126,188,248,128, +159,159, 31,159,149,149, 37, 55, 24, 12, 50,158,231,205,175,190,250,170,114,208,160, 65,245,156, 45, 88, 15, 72,218,144,144,182, + 29, 59,118, 84, 22,118,223,102,179,193, 96, 48,192, 96, 48,192,106,181,162, 73,147, 38,170,101,203,150,181, 3,176,184,176,119, + 84, 42, 85,219,182,109,219,202,211,211,211,225,231,231,135,219,183,111,227,230,205,155, 48,231,230,194,154,155, 13,107,110, 14, +184,156,108,208,236, 44,164, 93,189,132, 6, 85,171, 40,126, 80,169,218, 3,152, 93, 24,167, 94,175,111,219, 96,192, 0, 86,167, +211,161, 69,191,252,249, 3,191, 85,173, 10,202,243, 16,120, 30, 60,199,161,253,229,203,176,217,108, 96, 24, 6,245,211,211, 89, +253,202,149,109, 1,204,250, 39, 18,185, 74,165, 98, 87,173, 90,213, 87,169, 84,130, 82, 74, 44, 22, 11,118,236,216,241,200,156, + 43, 87,174,236, 47,114, 90,173, 86, 90,163, 70,141, 7, 50,146,217,108,166, 79, 75,102, 87, 42,149, 80,171,213,176, 90,173, 40, + 91,182,172,177, 95,191,126,135,166, 78,157, 90,154, 97, 24,157, 66,161,216,150,150,150, 54, 45, 33, 33,225,134,183,124, 54,155, + 13, 22,139, 5, 22,139, 5, 70,163, 17,215,175, 95, 15, 47, 87,174, 28, 25, 58,116, 40,159,151,151, 23, 51,127,254,252,107, 59, +118,236,208,206,152, 49,163, 7,128, 17, 82,113,251,228, 96,183, 66,251,149, 14, 98, 13,114, 25,114, 1,248,218,197, 64, 15, 66, + 72,131,106,213,170, 5, 92,184,112, 33,131, 16,114, 4,192, 26, 74,233,253,162,248, 4, 65, 32,130, 32,224,237,231, 51, 49,180, +161, 12, 54, 91, 22,178,178,178,112,251,246,109,156, 63,127, 30, 71,143,158,127, 40,119,170,213,234, 55,124,124,124,218,169,213, +234,178, 28,199, 49,185,185,185,183,243,242,242,118, 9,130,176,148,186,118, 35,120,129,199,229, 78, 17, 58,157,110,230,135, 31, +126,216,216,207,207, 15,127,253,245, 87,204,218,181,107,103,226, 17, 7,205,171,229,204,183,179,231, 46,140,138, 10,245,199,233, +125, 63, 71, 77, 91,178,238, 91, 0,209, 82, 42,126, 38,242, 33, 45, 68, 96,253, 9,160,147,125,118,121,231, 71,224,127,164,247, + 31, 74, 96, 21,226, 33,112, 28, 23,238,108,185,162,148,226,254,253,251,184,119,239, 30, 82, 82, 82, 16, 16, 16, 0,171,213, 26, +238, 77,253,154,147,147,243,124, 80, 80, 80,158, 92, 46, 55, 27,141, 70,104,181, 90, 65, 46,151, 83,251,119,136,125, 22, 34,111, + 54,155, 9,203,178, 54, 95, 95, 95, 31,179,217, 92, 5, 69,140, 21,163,148, 62, 31, 20, 20,228,246,158,217,108, 70,110,110, 46, + 12, 6, 3,114,115,115, 97, 54,155, 17, 22, 22, 6,142,227,234, 20,217,132,229,184,154, 33, 33, 33, 72, 72, 72,128, 70,163, 65, +124,124, 60, 44,185, 57,176,230,228,128, 51,100,131,207,202,130,144,157, 13,193,144, 13,155, 37, 15, 81,149,170, 66,156, 97, 88, + 24, 44, 22, 75,205,160,160, 32, 24, 12,127, 15, 39,163,118, 97,197,113, 28, 56,251,160,103,177,219, 48, 56, 56, 24,226, 12,195, + 39,212,106, 48, 19, 66,198, 48, 12, 51, 79,165, 82,177, 67,134, 12,193,253,251,247, 11,164,137, 33, 67,134, 56,198, 92, 53,107, +214,108,191, 90,173,230, 82, 82, 82, 96, 54,155,229,222,112,150, 45, 91,246,246,132, 9, 19,142, 89, 44,150,232,200,200, 72,127, +179,217,108,172, 92,185,114,164, 70,163, 9,179, 88, 44,124,189,122,245,150,106, 52, 26, 91,110,110, 46,229, 56,142, 60, 37,153, + 29,132,144,252, 56,226, 56, 4, 7, 7, 27, 82, 83, 83,143,102,100,100,244,125, 24, 62,155,205, 38,206,208,130,209,104, 4,165, + 20,127,253,245, 23,212,106,181,156,231,249,115, 28,199,105,229,114, 57, 24,251,224, 46, 9, 79, 44,158, 91, 84,241, 87,206,142, +107, 16,234,255, 92, 23,157, 65,171,148, 25,132,219,207,149,253,238,243,243,107, 95,237,255,134,239,164, 73,147,202, 4, 7, 7, +171,175, 93,187,102,154, 60,121,114,185, 85,171, 86, 17, 79,141,159,187,119,239,110,252,240,195, 15, 3, 59,118,236, 24,163, 82, +169, 72, 86, 86, 22, 82, 82, 82,144,148,148,132,155, 55,111,210,211,167, 79, 95, 55,155,205,235,139,227,206,200,200,200,101,195, +135, 15,127,181,110,221,186,114,209, 34,106, 48, 24,106,239,221,187,183,235,111,191,253,214, 20, 64,177,211,229,221,187,119,215, +127,244,209, 71,186, 14, 29, 58, 84, 81,169, 84, 76, 73,184,211, 25, 12,195,132,249,248,248, 96,215,174, 93,240,247,247, 7,195, + 48, 97,143, 26, 95, 38,171, 16, 21, 25, 30, 4,211,193,217,168, 18, 82, 6, 38,171, 16, 37,165,226,103,199,130, 85,200,173,250, +162, 5,202,131, 72, 50,142, 27, 55,238, 67, 66,200,214,113,227,198,125,232,206,130,101,255,203, 59, 63,231,244,188,185,196, 5, +150,151, 45, 29,220,187,119, 15, 9, 9, 9,184,119,239, 30,210,210,210,192, 48, 76, 81, 1, 82,192, 95,132, 16, 97,231,206,157, + 1,135, 14, 29, 50,212,175, 95, 63, 83, 28,223,194,113, 28,177,217,108,196, 62,238,133,220,190,125, 91,113,224,192, 1,255,139, + 23, 47,134, 33,127, 32,154,224, 33, 66, 30,184, 38, 10, 43,231,195,100, 50, 65,173, 86,123,229, 87,177, 2,252,235,196,137,124, +113,149,155, 99,239, 26,204, 2,159,157, 5,106,200,129,146,183, 65, 9, 10, 98,202,243, 58,252,156, 33,138, 43,171, 93, 96, 89, + 44, 22,216,108, 54, 8,130, 0,142,227,254,137,132,189,168,118,237,218,117,126,252,241,199,129,247,238,221,123,224,126,247,238, +221, 49, 98,196, 8, 12, 31, 62,252, 98,167, 78,157, 78,255,252,243,207, 24, 54,108, 24, 4, 65,120,142, 16,146, 69, 41,253,173, + 40,206,113,227,198, 29,191,123,247,238,158, 43, 87,174, 12, 9, 13, 13, 85,213,172, 89,243,106,205,154, 53,101, 63,254,248, 99, +216,155,111,190,121,226,197, 23, 95,188,245,251,239,191, 7,238,218,181, 75, 45, 8, 66, 93, 66,200,189,127,122, 29, 44,179,217, +236,176, 56,153, 76, 38, 88,173, 86,160,136, 65,237,158,210,166, 24,183, 28,199,137,220,228,199, 31, 55, 97,255,254,253,204,249, +243,231,162,135, 12, 25, 42, 14,164,151, 74,218, 39, 35,172, 58, 40, 25,242,213,152,231,130,212,239,213, 10, 50, 40, 89,146,123, +249,171, 15,115,111,150,214, 27,194, 74,105, 45,209,229,252, 35,167, 77,155, 26,113,241,226, 37,243,132, 9, 19, 46,244,233,211, + 39,244,189,247,222,171,182,113,227,198,166,132,144,111, 40,165,153,133,240, 42, 6, 14, 28,120, 52, 52, 52,180,252,146, 37, 75, +146,239,222,189, 27, 96,179,217,180, 54,155,205,106, 48, 24,174,229,229,229, 29,176, 90,173,187, 40,165, 39,138,227, 94, 95, 95, +223, 90, 3, 6, 12,144,103,102,102,194, 62,251, 22,201,201,201,104,220,184,177,108,203,150, 45,213, 31, 38, 12,210,211,211,103, + 19, 66,246,172, 94,189,186,157, 94,175,175,171, 82,169,194, 1,240, 57, 57, 57, 73, 6,131,225,212,195,184,179, 64, 57,199,243, + 73, 39, 78,156, 40,175,215,235,113,231,206, 29,240, 60,159,244,168,241,166, 86, 48,119,207,236,219, 82,170,106,112, 57, 28, 56, +116, 4,106, 5,115, 87, 74,205,207, 60,196, 49, 82,112, 22, 78,110,132,209,161,184,184, 56,205,244,233,211, 17, 23, 23,119,206, +157, 5, 75, 20, 90,113,113,113,231,196,231,156,158,223, 87,162, 2,171, 40,129,196,178,108, 98, 74, 74, 74,128,191,191,191, 67, + 88, 37, 36, 36, 32, 33, 33, 1, 74,165, 18,183,111,223,134, 82,169,188,239, 77,163, 67,163,209, 28,175, 93,187,118,229, 27, 55, +110, 40, 38, 79,158, 92,234,196,137, 19,250,198,141, 27,215,208,104, 52, 60,165, 20, 38,147,137,185,112,225,130,207,172, 89,179, +162,158,127,254,121,203,243,207, 63,127,114,221,186,117, 70, 20,177,232, 40, 33,228,216,253,251,247, 99,202,150, 45, 43,138,181, + 2,162,202, 89,104, 1,249, 93,155, 44,203,158, 44, 50, 80, 88,246,204,229,203,151,219,104,213, 42, 88,114,178, 97,205,205, 6, +151,147, 3, 62, 39, 11,124, 86, 22, 96,200,134,146,227, 32,231,109,208,168,213,184, 23, 31, 15,150,101,207, 20,197,169, 84, 42, +207, 36, 37, 37,181,241,247,247,119, 84,158, 54,142,203, 63,120, 30, 22,142,115, 88,176,228,114, 57,238,222,189, 11,165, 82,121, +230, 73,167, 96,134, 97,120,113, 41,134, 66,252,129,176,176, 48,161, 65,131, 6, 24, 54,108, 24,120,158,183, 71, 3,105, 65, 8, + 57, 64, 41,205, 45,140, 83, 16, 4,230,194,133, 11, 47, 93,187,118, 77, 38,151,203,153, 23, 94,120, 33,182, 73,147, 38, 22,165, + 82, 9,133, 66,193,230,230,230,250,238,218,181, 75,109,179,217,136,157,243,137,173,131, 37,166,157, 7,154, 66,246,193,232, 70, +163, 17,185,185,185,200,200,200, 96, 53, 26, 77,229, 26, 53,106, 28,177, 88, 44,235, 57,142,251,246,198,141, 27,217,133,113,218, + 5,153, 67,108, 9,130, 0, 74, 41,120,158,135,205,102,131, 66,161, 16,246,238,221,135, 89,115,102, 98,197,183,171,104,215,174, + 93,201,150, 45, 91, 32, 8, 66,188, 84,158, 62, 17,124,145,185,102,170, 26, 28,111, 48,239, 93,157,251,253,149,108,195,164,239, +231, 30,183, 40,101,217,245,154,135,213,140, 41, 87, 89,230,239, 31,192, 44, 94, 58, 47,237,135, 85, 27,174,221,185,115, 39,251, +203, 47,191,108, 88,185,114,101,191, 83,167, 78, 69, 1,112, 43,176,124,124,124,202,190,254,250,235,175,103,100,100, 40, 86,173, + 90,181,252,222,189,123,123, 41,165,215, 93,202,174, 58,132,144,207, 1,200, 1,132, 33,127,252,215, 78, 74,233,202,162,218,105, +132, 16,236,222,189,251,129,217,126,194,163,169,242,140,154, 53,107,214,186,114,229,202,230,196,196,196,239, 93,111,106,181,218, +174,177,177,177,175, 28, 59,118,236, 99, 74,233,181,226, 16,231,229,229,141,221,176, 97,195,231, 50,153, 44,146,231,249, 4,163, +209, 56,246,145, 45, 88, 54, 97, 80,220,226,181, 95, 27, 45,124,105,141, 82,118,199,100, 19,222,148,146,242, 51,109,189, 2,236, + 99,176,196,255, 0,136,203,249, 41,251,127,139,211,179, 41, 78, 86, 43,139,139,213,203,221,189, 20,148,224, 34,231,133,173,228, + 62, 30,192,243, 0,142,201,229,242,121,175,190,250,234,172, 31,126,248,193, 55, 59, 59, 27, 73, 73, 73, 72, 78, 78, 6,203,178, +208,235,245, 88,180,104,145, 49, 41, 41,105,158,243, 59,174, 43,190,139,121, 34, 56, 56,248,248,170, 85,171,194,191,250,234, 43, +246,181,215, 94,187,221,169, 83,167, 42,139, 22, 45,186,161, 80, 40, 40,207,243,196,108, 54,147,183,223,126,187,252,156, 57,115, +110,201,100, 50,109,239,222,189,137, 78,167, 59,102, 47,120,220,135,120, 74,202,206,159,126,250,233,165,209,163, 71,171, 44, 22, +139, 91,203,149,120,205,223,223, 31, 7, 15, 30,180,100,100,100,236,240, 96,181,216,185,237,215, 95,154,253,175, 79, 31,133, 45, + 39, 27,182,156,108,112,217,217,224,115, 50, 65,114,179, 33,231, 57,104, 20, 2,194,163,213,224,140, 62,248,229,207, 83, 54,179, +217, 92,228,130,132,217,217,217, 59, 15,172, 88,209,226,249, 50,101,216,131, 35, 71,194,106,179,161,195,229,203, 14, 81,101,181, + 90,177,185,102, 77,240,132,224,185,183,222,194, 85,142,227,178,179,179,119, 62,141,153,224,244,233,211,201,253,250,245, 59, 33, + 8, 66,157,226, 88,115,156, 42,159,156,220,220, 92,164,166,166,242,105,105,105, 38, 0, 72, 78, 78,206,216,178,101,203, 5, 65, + 16,158,127, 24,206,146,128,205,102,123,192,250,196,243,124,190,149, 49,223, 82,160,252,229,151, 95,154, 93,184,112, 65,113,246, +236, 89,236,223,191,255,185, 31,126,248, 97,124,153, 50,101,106,222,190,125, 59,209,147,104,115,183, 88, 47,236,227, 11,215,173, + 94,143,193,131, 7,147,196,196, 68,172, 89,179, 6,158, 22, 61,149, 80, 98, 48,128,227, 53,150,189,171,115, 59,253,122, 39,231, +240,125,227,100, 0,219,169,145,163,165, 74,149, 58, 93,183,110, 64, 48, 0,152, 77,124,120,197,138, 21,155,179, 44,171,180,167, +225,186, 65, 65, 65,139, 0, 52,113, 71,218,189,123,247, 70,161,161,161,181,127,251,237,183, 83,247,238,221,219,231, 42,174, 0, +160,114,229,202,159,157, 61,123,182,131, 92, 46, 39, 78,105,132, 2,112, 43,176, 90,180,104, 81,185, 76,153, 50, 65,191, 94,241, + 67,182,162, 2,168, 44, 11, 96,213,224,253,107,225,182,162, 26,162,163,143, 4,249,251,251, 63,151,153,153,121,170,152, 86,188, +210,189,123,247,254,101,217,178,101, 85, 95,124,241, 69, 37,128, 7, 4, 86,213,170, 85,123,252,254,251,239, 61,135, 12, 25, 82, +139, 16,210,197,203,221, 58,196,124,116, 27, 64,207,146,140,180, 29, 87,233, 46,216,215, 44,147,240,159,193,159,143,233,217,199, +134,194,186, 8,159, 23, 4,161, 43,195, 48,176, 90,173,113, 97, 97, 97,155,123,247,238,221,125,252,248,241, 62, 65, 65, 65, 14, +203,213,162, 69,139,140, 55,111,222,220,104,181, 90,255, 34,132, 76, 76, 72, 72,232, 26, 25, 89,104,189,144, 51,127,254,252,181, + 93,186,116,121,237,173,183,222, 50,214,172, 89, 83, 95,165, 74,149,188, 67,135, 14,249,180,109,219, 54, 91, 38,147,209,131, 7, + 15,250,150, 47, 95,222, 68, 8, 81,253,254,251,239,105, 71,142, 28, 41, 31, 23, 23,247, 13,242,167, 77, 23,134,213, 83,166, 76, +153,208,181,107,215,242, 65, 65, 65,200,206,206, 46, 32,178,196,255,106,181, 26,137,137,137,216,180,105,211,125,155,205,246,141, + 7, 75,198,151, 11, 23, 45, 30,213,178,193, 11, 81,122,173, 6,137,241,183,193,103,101, 0,134, 92, 40, 57, 27, 52, 74,138,168, + 10, 90,176, 50, 29,174, 37,230, 98,197,161, 63, 19, 57,142,251,178, 40, 78,139,197,242,229,136, 57,115, 70, 29, 94,188, 56,170, + 76,175, 94, 56,191,114,165,163, 75, 80, 20, 88, 60, 33, 40,221,186, 53, 24, 63, 63, 76, 91,178, 36,201, 98,177,124,249,164, 19, +132, 32, 8, 50,139,197, 82,148, 63, 32, 8, 66,252,249,243,231,215, 18, 66,114, 8, 33, 45,236,183,246,184,179, 94, 57,115, 50, + 12, 35, 84,171, 86,237,199,176,176,176,151, 0, 24,170, 85,171,246,163, 74,165,106,101,177, 88, 94, 16, 4, 33,254,175,191,254, +218, 68, 8, 73, 36,132,136,173,140, 39,186, 14,150,205,102,195,196,137, 19, 49,125,250,116,140, 27, 55,206,225, 95,177,155, 48, + 51, 51,179,220,129, 3, 7, 20,123,247,238,165, 75,150, 44, 73,123,237,181,215,252,223,122,235, 45,255,175,190,250,234, 93, 0, + 99, 11,227, 28, 59,118, 44,150, 44, 89,130,193,131, 7, 63,168,174,100, 50, 33, 62,254, 46, 76, 38, 19,157, 63,127,126,130, 92, + 46, 15,248,230,155,111, 52,111,190,249, 38,145,202,211, 39,130,143, 52,253, 62,126,199, 94,198,204,163,148,238, 17,111,232,245, +122,205,143, 63,254,196, 2,192,198, 13,155,228,148, 82, 63,113, 97,216,239,191,255, 94,221,184,113,227,208,194, 72, 55,108,216, +144, 57,121,242,228,160, 65,131, 6,189,184,103,207, 30, 45, 33,228, 87,123,161,159, 10,128, 7, 16, 12,224, 96, 72, 72, 72,196, +218,181,107, 43,180,107,215, 78,231,201,161, 57, 57, 57,223,172, 93,187,182,236,156, 3,126,248,213,240, 18,238, 10,189, 64,253, + 41, 2, 67,115, 80,205,231, 14,250,246,237, 27, 57,111,222,188,175, 1,212, 45,134,184,170,254,242,203, 47,255,180,108,217,178, +114,111,189,245, 86,252,193,131, 7,239, 18, 66, 62,115,243,104,218,128, 1, 3,110, 47, 95,190,188,130, 32, 8,219, 9, 33, 47, + 82, 74,175, 72,201, 71,130,132, 34,242,151,187,241, 75,132,144,205, 28,199,117,101, 89,118,139,243, 66,163, 97, 97, 97,163, 44, + 22, 75, 4, 33,132, 42, 20,138,196,164,164,164,121,206, 11,141,198,199,199,119,141,142,142,118,188, 99, 95, 44,211,121,173, 12, +125,135, 14, 29,218, 28, 62,124,120,193,214,173, 91,147,115,114,114,124, 54,108,216,160,153, 62,125,250,109, 65, 16,232, 7, 31, +124, 80,166,125,251,246,121, 60,207,223,127,235,173,183,202,151, 43, 87,238,173,139, 23, 47,238,114, 22, 88,110, 56, 65, 8,169, + 94,161, 66,133,131, 27, 55,110,212,251,251,251, 35, 57, 57, 25,233,233,233, 48, 24, 12,224,121, 30,114,185, 28, 41, 41, 41,152, + 60,121,114,118, 66, 66,194, 3, 11,141, 22,194,249,124,217,168,168,157,243, 62,155,232,235,207, 50, 72,187,116, 1, 92, 70, 26, +228,156, 13,165,170,251, 65,161,212,224,234,229, 28,188,187,122, 83,206,157,244,204, 7, 22, 26, 45,140,179, 94,197,138,187,150, +140, 25,227, 99,186,123, 23, 17,175,191,142,188,188, 60, 88,173, 86, 48, 12,131,235,243,230, 65, 17, 18,130, 9,235,214, 25,206, +221,185,211,218,117,161, 81,119,156,143,156, 0,156, 56, 9, 33, 67, 9, 33,142, 65,238,221,187,119, 47,240,236, 79, 63,253,132, +197,139, 23,195,108, 54,115,148,210, 81,148,210, 69,132, 16, 31,123, 43, 53,215, 19,103,217,178,101,239,196,198,198,254,201,243, + 60,107, 23, 23,244,252,249,243,117,111,222,188, 89,202,133, 83,236,186,230,158,148,223,131,130,130,230,253,246,219,111,101, 67, + 67, 67,137,243, 10,235,118,129, 8, 0, 24, 54,108, 88,235, 35, 71,142,168,106,215,174,109, 78, 77, 77,173, 31, 18, 18,242,199, +170, 85,171,130,123,247,238,157,112,238,220,185, 40, 87,206,224,224,224, 89, 27, 55,110,172, 80,161, 66, 5, 70,180,130,185,118, + 67, 14, 28, 56,176,205,170, 85,171,148, 47,189,244,146,217, 96, 48,132,249,250,250, 94,219,184,113, 99,112,183,110,221, 18,207, +157, 59, 23,241, 36,252, 46,113,186, 71,108,108,236,213,115,231,206, 85, 16,207,141, 70, 35, 82, 82, 82,144,154,154, 10,127,127, +127,180,109,219,246,250,205,155, 55, 43,184,227,180, 91,133,230, 46, 93,186,244, 69,157, 78,167,216,183,111,159, 97,215,174, 93, +166,219,183,111,115, 54,155,141, 70, 68, 68,176, 77,154, 52, 81,119,236,216, 81,167, 82,169,152,143, 63,254, 56,117,234,212,169, +193,132,144,185,148,210,119,221,113,214,169, 83,231,232,182,109,219,158, 39,132, 64, 38,147,193, 98,177, 34, 51, 51, 19,247,238, +197,227,252,249,243, 56,124,248, 48,118,236,216,113, 42, 55, 55,183,182,183,126, 39,132,252, 97, 54,155, 91, 40,149, 74,175, 5, + 61,207,243, 96, 89,118, 55,128, 54,148, 82, 65, 74, 75, 18,167,132,226, 89,176,196,193,185,207, 19, 66, 54,219, 47, 29,115, 93, +138,129, 16, 50,158, 16, 50,209,201,234,229,233,123,217,191,253,246,219,254, 54,109,218, 12,107,221,186,245,156,118,237,218,221, +191,127,255,126,204,236,217,179,163, 57,142,179,158, 63,127,158,185,118,237,218,237,227,199,143, 87,168, 84,169,210, 91, 23, 47, + 94,220,235,193,122, 37,186,245, 60, 33,164,113,203,150, 45, 55,189,245,214, 91,165, 27, 52,104,160,244,247,247, 7,203,178,184, +113,227, 6, 78,157, 58,101, 89,183,110, 93,124,102,102,166,215, 91,229, 80, 74,143, 17, 66,218,246, 30, 62,106,227, 91,221,187, + 4,191, 80,165,178, 50, 34, 34, 2, 48, 26,113,233, 78, 34,142, 92, 58,101, 93,182,255, 72,138,217,108,126,217,219,173,114,236, +156,109, 90,141, 25,179,113,210,255,254, 23,134,251,247,217,136,136, 8, 40,149, 74,220,188,121, 19,215, 4,129,155,177,116,105, + 82,118,118,246, 19,223, 42, 71, 92,179, 74, 16, 4, 22, 0, 52, 26, 13, 70,140, 24, 1,231,173,113, 22, 47, 94, 12,163,209, 8, + 0, 44, 33,228,115, 66,200,183,133, 89,173, 10,225, 44,253,235,175,191,150,118,230,172, 90,181,170, 59, 78,243,147,206, 8,233, +233,233, 19, 58,116,232, 16,199,178,108,161,171,213, 6, 4, 4, 32, 39, 39, 7, 28,199,241,247,238,221,187, 20, 16, 16, 0,185, + 92, 14, 74,169,219,124,148,150,150, 54,225,229,151, 95,158,194, 48, 76,161,150, 14,189, 94,127,251,143, 63,254,168,248,230,155, +111, 50,223,125,247,221,141, 65,131, 6,169,254,248,227, 15,254, 97,215, 52,146,240,248,224,220, 24,181, 55,222,104, 17,207,222, + 33,132,140, 61,113,226,132,122,240,224,193,117,255,247,191,255,233, 91,182,108,233,227,252,140,209,104, 20,126,254,249,103,195, +146, 37, 75,210,246,237,219,247,231,192,129, 3, 95, 66,254,248, 17,183,184,115,231,206, 47,211,166, 77,243,235,216,177, 99, 37, + 0,142,241, 87, 41, 41, 41,184,125,251, 54,206,158, 61,123,219,106,181,110, 41,166,183,134,245,235,215,239,215,229,203,151,151, +121,235,173,183,226,215,172, 89,179, 5, 64,150,155,231,124,122,244,232,209,117,249,242,229,101,222,126,251,237, 59, 0, 70, 74, + 43,188, 75,144,240,112, 2, 43, 75, 16, 4,152, 76,166, 48, 65, 16,186, 10,130, 0, 31, 31, 31,119,207, 61,159,144,144,208,213, +121,179,103,120,216,214, 6, 64,202,174, 93,187,118,174, 94,189,186,245, 7, 31,124,240,191,204,204,204,231, 79,159, 62,221, 0, + 0,228,114,249, 97,157, 78,119, 52, 46, 46,238,245,177, 99,199,166,120, 35,174, 92, 68, 86,181, 89,179,102,149,216,102,207,118, + 65, 84,241,203,245,155,134,125,163, 82,181,117,217,236,121,167,125,179,103,211,195,112,142,249,250,235, 97,250,245,235,159,218, +205,158,205,102, 51,247,210, 75, 47,125,195, 48,140, 96,111,181,178,102,179,249,117, 20,115,230,169, 43,103,247,238,221,191,147, +201,100,156,221, 50,196,152,205,230, 55, 30,133,179, 4, 43,207, 92, 0,195,139,122,166, 70,141, 26,171,182,108,217,210,175,107, +215,174,188,213,106, 77,238,210,165, 11,123,244,232, 81,202, 48,204,174, 66, 56,205, 0,222, 47,138, 51, 60, 60,188,204,194,133, + 11, 79,142, 28, 57, 82,191,122,245,234,192, 3, 7, 14,240,243,231,207,207, 78, 79, 79,255, 66, 42,158,158, 46,200,229,114,104, +181, 90, 88, 44, 22,164,164,164,192,211,146, 83,148,210,107,132,144, 78, 99,198,140,105, 58,102,204,152, 78,209,209,209,213, 75, +151, 46, 93,154, 97, 24,230,254,253,251, 41,119,239,222,189,101,181, 90,127, 7,240, 11, 0, 69,249,242,229,255, 2,176,170, 48, +190,180,180,180, 41,132,144,221, 43, 87,174,236,164,211,233,170,169,213,234, 64,155,205,198,228,228,228,164, 27,141,198, 11, 38, +147,105, 43,165,244, 80, 49,211,253,101, 66, 72, 75,150,101,127, 89,182,108, 89,213,251,247,239,151,221,187,119,111, 23,215,231, +234,214,173,187,124,249,242,229,101,134, 12, 25,114,109,245,234,213,197, 26,131, 37, 65,130, 36,176, 10, 98,154, 82,169,100, 97, +223,244, 89,180, 96,185,121,238,152,203,152,171, 44, 0,211,188,248,174,161,111,223,190, 55,251,246,237,251,185,221, 13, 50,228, + 47,197,192, 33,127, 4,191, 21, 30,150,102, 40,164,176,224, 0,124,109, 63, 74,170,226, 53, 33,127,189,155, 89, 79, 51,103, 9, +184,201, 76, 8, 25, 99,159,213, 4, 0, 99,254,250,235,175, 69, 46, 22,169,211,206,247, 61, 89,154,220,113,158, 58,117,202,149, +243,108,113, 56,255, 73,100,102,102,142, 90,184,112,225,177,113,227,198,169, 6, 12, 24,128,179,103,207, 98,250,244,233,230,204, +204,204,213, 15,203,153,152,152,120, 59, 60, 60,188,206,220,185,115,223,155, 51,103, 78, 55, 66,136,180, 23,225, 83, 2,163,209, +120,189, 86,173, 90, 32,249,179, 19, 40,199,113,142,217,159,246, 21,249,175,123, 89, 38,237,182, 31,158,240,185, 23,124,135, 1, + 28, 46,225,188,127,135, 16,210,233,214,173, 91,211, 46, 95,190,188,205,221, 51,231,206,157,251,169, 93,187,118,218,195,135, 15, +127, 88,220, 89,132, 18, 36, 72, 2,171, 96,134,187, 10,224,127, 94,100,204,184, 71,248, 54,239,133,181, 75,194,147, 21, 89,139, + 8, 33,223, 58, 89, 95,138,117,255, 73,113,254, 83,136,143,143,207, 0,224,216, 50, 36, 38, 38,230,129,113,106, 15, 43,178,144, +191,106,187,180,114,251, 83,132, 27, 55,110,116,248, 15,229,253, 59, 0,250, 21,118,223, 98,177,108, 1,176, 69, 74, 21, 18, 36, + 60,162,192,146,240,159, 22, 89,230, 71,185,255,164, 56, 37, 72,144, 32, 65,130,132,167, 25, 4, 64,155, 66, 42, 61,175,103, 7, + 16, 82,252,141, 54, 61,241, 75,156, 18,167,196, 41,113, 74,156, 18,167,196,249,236,113, 58,113,207, 41,228,214, 37, 23,190,175, +254,173, 22,139,199,118, 32,127, 26,175,196, 41,113, 74,156, 18,167,196, 41,113, 74,156, 18,231,195,124,231,173, 39,241,157,199, +113, 72, 27,202, 74,144, 32, 65,130, 4, 9, 18, 36,148, 48,220,142,193,218,176, 97,131, 76,252,255,202, 43,175, 12,228,121,222, + 49,125, 93, 38,147, 45, 92,179,102,205,183, 69,145,246,236,217,147, 47,138,211, 29, 60,125,199, 29,103,108,101,191, 33, 65,126, +218, 81,153, 89,121,115,111, 36,240,251, 77, 38, 83, 53,241,158, 90,173,190,240,237,183,223, 94, 41,105,119, 14, 28, 56,176,146, +235,119,202, 70,203, 91, 4,250,170, 71,164,103,230,206, 62,123, 37,231, 43, 41, 89, 61, 94,244,234,213, 75, 86,156,231,111,222, +244,103, 78, 34,226, 11,189, 78,209, 37,215, 96,251,130, 63, 49,113,193,179, 16, 14, 17, 17, 17, 85,244,122,125,127, 0,213,243, +242,242, 66,181, 90,109, 50,128,243,217,217,217,171,238,223,191,127,201, 91,158, 22,229,200,109, 0,165,237,167,119,246,220,164, +101,188,185,231, 9,237, 43, 16, 19, 5, 84,132,192,186,253, 42,117,108,112,249, 98, 69, 98, 18,232,131,215,219, 87, 36, 22, 74, +161, 32,128,121,251, 53,170,126, 86,210, 43, 33, 68, 15,160, 45,128, 88, 0,167, 1,236,160,148,230, 73, 57, 89,130,132,255,160, +192, 26, 56,112, 96, 51, 37, 75, 23, 64,160,254,160, 52,200,108, 54,203,149, 74, 37, 44, 22, 11,180, 26,205,151,131,223, 24,240, + 25, 8, 50,173, 2, 51,226,219,111,191,125,232,157,167,139,243,157,158, 61,123, 62, 48,205, 57, 64,175,153,178,231,231, 15, 2, +154,117,138,155,110,185,153, 62, 54, 39, 39,135, 81,169, 84, 48,155,205,240,243,243,107, 60,252,173, 65,117, 41, 67, 44, 10,181, +238,208,156, 57,115, 18, 31,214,157,239,190,251,110, 56,103, 53, 52,162, 54,170,180, 88, 44, 42,215,239,248,107,117, 51,246,252, +252,129,182,121,231,233,159, 1,144, 4,214, 83,132,124,113, 21,254,213, 59,125, 95, 24, 48,115,100, 27,248,183,152, 49, 22,192, +191, 90, 96, 17, 66,100, 49, 49, 49,195,202,148, 41,211,103,233,210,165,138,152,152, 24,168,213,106, 24,141,198,136,235,215,175, + 71, 12, 25, 50,164,121,249,242,229,215,222,184,113,227, 75, 74, 41,239, 5,101,233, 61,203, 63, 6, 0, 52,238, 63,185, 52, 33, +228,125, 0,121, 0,208,188,236,223,247, 90, 12,152, 92,154, 16, 50, 6, 5,103,255,222,167,148,186,157, 93, 70, 1,229,214,149, +179,208,245,213,247, 89, 66,200, 16,241,122,199, 74,192,182,239,231,225,197, 87, 70, 21,184,222,190, 60,216,159, 87,206, 66,231, + 87,223, 47,116,183,241, 23, 43, 49, 54, 65,160,133, 78,206, 97, 24,194,109,191, 74,221,109,252,155, 68, 41,221,238, 38, 44,219, + 35,127,163,101,183,207,119,174,202, 38, 89,109,188,219,133, 98, 21,114, 89,242,214,139,220, 3,239, 14,168, 67,108, 54, 62,191, +108, 85,176,224,253,252,252,246,124,244,209, 71,108,231,206,157,177,108,217,178, 38, 95,125,245,213, 91,132,144,223, 1,108,145, +150, 60,144, 32,225, 63, 38,176,148, 12, 93,178,125,245,226, 10,137, 41,233,232, 51,100, 60, 86,175, 94,141,140,140, 12, 4, 4, + 4, 64,169, 84,200, 23, 77, 27, 27,238,239,171, 13,239, 61,124,226, 18, 0, 85, 30,246,227,197,252, 78,197, 7, 10, 71,251, 66, +164,172,140,149, 43,149,114,102,237,218,181,200,204,204,132,191,191, 63,148, 74, 57, 51,111,242,104,141,191, 94,167,249,223,168, + 73, 77, 0,172,127, 88,119,114,198,220, 38, 63,127,191, 80,159,148,146,134,126, 35, 38,192,245, 59,114,133,130, 23, 43, 20, 41, + 73,253,115, 72, 77, 77, 37, 0, 16, 28, 28, 76, 11,138,171, 6, 3,230,140,110,135,119,103,239, 64,158,201,242,253,191,221,159, + 49, 49, 49,195,122,245,234,213,103,202,148, 41, 10,134,201,239,229, 55, 24, 12, 48, 26,141,136,138,138,194,158, 61,123, 20, 19, + 38, 76,232,243,211, 79, 63, 1,192,252,226,242,159, 59,119,174,108,233,210,165, 77, 0,208,165,166,175,235,189, 50,226, 61, 0, +240,245,245,245,200, 23,228,175, 51,159, 59,119,164,186,248,222,176,214, 81,124, 33,215, 77, 0,180, 69,113, 9, 2,101,119, 44, + 24, 82,232,253, 55,167,252,192,157, 94,191,191, 74, 76, 76,140,209,249,122, 33, 11, 37, 3, 64, 88,110,110,110,105,215,139,226, +243, 86, 27, 31, 90,216,247,218,141, 88,236, 86,120,217,120,176, 63,252,240, 3, 0,224,139,247,251,201,190, 62,154,202,178,108, +126, 81,251,249,231,159, 99,210,164, 73,202,237,219,183,119, 92,185,114,101, 71,251,214, 56,210,242, 7, 18, 36,252, 87, 4, 22, + 33,240,213,251,234,208,245,181, 17,248,109,219,118, 52,107,214,204,113,175, 92,185,114,120,165, 71, 23,252,180, 52, 14, 12,136, +239,163,124,252, 81,191,147,145,101,248,164, 67,159,249,147,239, 36,230, 30,222,186,245, 87, 52,109,218,180,192,251,255,235,253, + 18, 54, 46,154, 10, 66,169,226, 81,220, 41, 48, 84,161,215,235,240,242,160, 81,112,247,157,193, 3,186,110,125,177,231,188, 54, + 73,105,134, 57, 82,146,122,178,184,120,241,162,204,108, 54,191,162,215,235, 27,200,229,242, 48,149,127,105, 33,129,125, 62, 45, +133,196,220, 72, 14,205,107, 54,186, 77,216,139, 95,188,211, 18,239,206,222,129,185,171,143, 44,175,131,196,137,255,102,255, 70, + 68, 68, 84, 41, 83,166, 76, 1,113,149,147,147,131,220,220, 92,100,103,103, 35, 39, 39, 7, 12,195, 96,236,216,177,138,189,123, +247,246,137,136,136,216,229, 69,119,225,157,198,253, 39,231,139, 12,153, 60,119,226,196,137,230,208,208, 80,179, 86,171,165,172, + 66,149,211, 98,192,100, 95, 0, 96, 88, 69,206,220,185,115, 45, 81, 81, 81, 38,150,101,149,163, 70,141,242,106, 12,167,217,108, +166,206,156, 22,139,217,113,125,198,140, 25,150,176,176, 48,179, 86,171,165, 86,171,197,235,112, 56,115, 51, 29, 42,133, 12, 42, +133, 12,106,165, 28,190,101,235, 67,149,113, 22, 28,199, 97,230,204,153,214,240,240,112,139, 86,171,165, 74,165, 82, 49,114,228, + 72,143,238, 28, 56,112, 32,245,247,247,183,106,181, 90,197,164, 73,147, 30,216,151,239,143,211,247,160, 81,202,161, 85,177,168, + 88, 46, 26, 42,106,244,218,173, 50, 89,193, 30,109,149, 74,133, 38, 77,154,160,122,245,234,216,188,121,115, 11, 72,235, 75, 73, +144,240,236, 10, 44, 66, 72,115, 0,123, 0,128, 82, 74, 0,128, 1,197,167,131, 94,196, 91,175,246, 2,207, 11,249,163,226, 1, +200, 8,193,251,125,154, 65,224, 57, 8,240,184, 85,132,199,169,154,197,253,142, 51, 39, 37,140, 12, 0,170,148, 14,162,131, 95, +239, 11,129,207,239, 13,225, 1,200, 1,188,215,171, 9,120,222, 6,193,195,162,240,222,185, 83,192,199, 3,219,193,221,119,170, +148, 15, 99,204, 60, 7,226,180, 25,227,227,216, 4, 83,226, 44,136, 67,135, 14, 69,104,181,218,217,253,250,245,139, 28, 57,114, +164,146,103,253,217, 13,135,211,252, 62, 88,116, 56, 50,207,108,149,245,109, 89, 22,163,255, 87, 19,163,231,254, 33,138,171,183, +202,149,203,252, 87,199,145, 94,175,239,191,116,233,210, 7,196, 85, 82, 82, 18,147,155,155, 11,171,213, 42,228,228,228,128,231, +121,140, 27, 55, 78, 62, 97,194,132,254,132,144, 73,118, 30,179, 59,206, 61, 55,105, 25, 66,200,152,115,231,206,149,249,232,163, +143,172,173, 90,181,186, 83,174, 92, 57,131, 76, 38, 67, 68, 68,196,188,182,109,219, 6, 78,153, 50,197,218,177, 99,199, 91, 50, +153, 12, 21, 43, 86, 52,156, 61,123,182, 12, 0,141,183,126,119,230,252,246,143,133,212, 94,238,160,109,219,182,183, 43, 86,172, +104,144,201,100,184,242,243, 12,234,109,120,202, 89, 6,149,162,252, 28, 45, 53,104,124,128,140,252,211,182,109,219,198, 87,169, + 82, 37,151, 97, 24,156, 57,115, 38, 26,128,218, 19,167, 70,163,177,245,237,219,247,206,165, 75,151, 30,120, 30, 0, 88, 25,131, + 6, 85,236, 6,171,168, 58, 64,252,129, 66,221, 41,151,129,155, 48,172, 31,235,175, 6, 84,190,193,230,236,236,108,232,245,250, +124,139,152,213,138,191,254,250, 11, 13, 27, 54,108,190,126,253,250,189, 82,126,151, 56, 37, 78,103,163,203,131, 90,228, 89,176, + 96,237,113,245,140,192,115,168, 16, 21,132, 69,239,191, 12,142,227,193,243,130,253,224,193,113, 2,108, 86, 11, 60,232, 43,239, +172, 67,143,240,157, 0,189,102,202,111,107, 71, 6,180,238,246,121,235, 5,239,245,216, 41,216,108,224, 5,128,227, 5,240, 54, + 30,130, 32,192,102, 41,153, 53, 44, 5, 27,143, 10,145, 65, 88,240, 94, 15,184,126,103,225, 47, 59,186,252,177,101,172,182, 89, +231,233,239, 1,152, 41,233,246, 39, 99,185,210,106,181,179, 87,173, 90, 85,166,126,253,250, 12, 0,236,191,204,169, 62, 88,116, + 56,114,123, 92, 99,210,184,122, 16,146, 51,205, 24,245,229, 41,252,118, 56,121,155,171,184,250, 23,163,122, 76, 76, 76, 1,113, + 53,107,214,172,224, 69,139, 22, 69, 1,192,203, 47,191,124,175,117,235,214,169,151, 47, 95, 70, 68, 68, 4, 73, 77, 77,237, 4, + 96,148,189,240, 26, 67, 41, 93, 84, 8,175,161,116,233,210,166,144,144, 16,179, 40,132, 24,134, 1,203,178, 40, 93,186,180, 41, + 52, 52,212, 92,177, 98, 69,131, 66,161, 0,195, 48, 16, 5,158,151,133, 38,100, 50, 25, 68, 78, 87,235,142,200, 89, 28,200, 89, +167,231,233,131, 22, 35,134, 97,220,126,175, 48,168,213,106, 10,160,208,231,101,140, 83,241,200, 22, 61, 18, 96,249, 73, 42, 39, +132,236,161,148,226,228,201,147,184,113,227, 6, 20, 10, 5,194,195,195, 49,105,210, 36,152,205,249,101, 82,175, 94,189,154, 3, + 56, 35,229,102, 9, 18, 28,216,243, 44, 8, 43, 87,129,229, 80,143,148,210,189, 0,192,115, 54,240,188,224, 86,244, 88,109, 28, +108, 86,107,137, 56,160,168,239,240, 60, 95,228,119,196, 49, 88, 2,165,172, 91,113, 37,228,239, 27, 86, 34,238, 20,108,176,241, +128,187,239, 16,194,240,246,130, 94, 33,229,143, 39, 3,179,217,220,183, 95,191,126,145,162,184, 2,128,212, 28, 27,155,103,182, +201, 26, 87, 15, 66,221,150,189,112, 98,247,122,172,219,119, 15,229, 67,180,251,202,233,158, 9,113,133,188,188,188, 80,181, 90, + 13,131,193,224,176, 92, 45, 90,180, 40,202, 98,177, 48, 0,192,178,242,232, 20, 33, 74,205, 11,128,159,254, 62, 50, 50,178,130, +196, 2,139, 16,242, 57, 33,228,219,162, 86,206, 87, 40, 20, 14, 97,226, 44,124, 84, 42,213, 67, 9, 23, 17,162, 40, 83, 40, 20, +110,175,187,118,163,121,130,194, 89, 96,129,230, 91,177, 92, 68,150, 76, 38,131, 56,246,201, 19,148, 74,165,195,239,110, 11, 74, +153,211,247,100,197, 31,106,105,181, 90,145,155,155,139,204,204, 76,168,213,106,209, 2, 0, 66,200, 40, 0,239, 72, 57, 90,130, + 4,247, 90,228,153, 17, 88,200, 55,205, 17, 0,224,108, 86,183,162,103,229,142, 19,184,150,102, 67, 84,192,121,136,207,122,139, + 62,125,250, 44,143,136,136,104,224, 40, 36,181,190, 65,253,223,159, 1,222,106,129,191,138,226,157,158, 77, 11,136, 43,158, 23, + 96,181, 22,110,129,202,200, 50,124,242, 98,175,121,147,131,116,190,135, 93, 69,207,132, 13,151,122,166,101, 89,162, 9,123, 17, +153, 36,138,239,245,246,167, 3,157, 10,245,211,107, 23, 79, 28,237,173,187, 41, 97,228, 93, 70,126,245, 22,175,240,173,166,167, + 25,251, 38,189, 82,237, 71,103, 17, 23,234,227,179,181,253,203,115,218, 36,165, 75, 99,176,158, 20,148, 74,101,155,145, 35, 71, + 22,168,233,130,125,229,156, 86, 37,231, 15,158, 79, 37, 39,118,175,103,246,159, 75, 21,212, 10, 25, 13,161, 55, 98,158, 21,127, +107,181,218,228,188,188,188, 8,163,209,136,236,236,108,100,103,103, 23,204,208,114, 57,121,107,240,240, 96,185, 66, 9,155,213, +130,223, 86, 77,245,200,217,162, 28,185,221,188, 44, 74,119,169,233, 11,153, 92,153,115, 62, 38,102, 30,203,178, 96, 24, 6, 63, +127,249,193,168, 77,179, 71,248, 2,192,233,173, 95,102,191, 50,118,225,124,134, 97, 96, 54,155, 85,197,113,247,221,187,119,163, +205,102,179,201, 46,204, 68,193,135,155, 55,111,150, 50,155,205, 70,231,235,222, 64,163,245, 5,252,203, 1,218,208, 7,172,101, +183,110,221,138,180,217,108,121, 44,203,194, 98,177,120,165,134, 24,134, 81,156, 57,115, 38, 90, 16, 4,183,207, 87, 47, 31, 9, +132,215, 4,148,126, 94,251,217,190, 72,162,199,103, 8, 33,244, 89,106,181, 75,144, 80, 18,150,172,226,234,139,167, 89, 96,181, + 32,132,208,191, 51, 61,192, 89,173, 14, 97,149,111, 97,202,255,127, 51, 75,192,165, 43, 87, 49,119,238, 92,236, 61,254,158,223, +148, 41, 83, 84, 19, 38, 76, 48,247,233,211,103,182, 32, 8,181, 24,134, 57,221,179,103,207, 81,238, 62, 38, 8, 66,169, 19, 39, + 78, 56, 42, 59,155,205, 6, 95, 95, 95,248,250,250, 34, 54, 38,252, 1,113,197,217, 45, 88,180,112,225, 35, 3, 5, 64, 65, 57, +222, 6,222, 6,135,232, 73,203,178, 68,255,180,251, 84, 5,167,199, 43,139,127,154,212,175, 86,184, 8, 28, 50,201,225,143,181, +139, 39,142,158,178,108,153, 42,131, 15, 27,249, 74,239, 65,177,189, 94,233,143,126, 61, 94,108,110, 50,217, 54,179, 12, 4,155, +192,131,183, 9, 16, 40,101, 40, 80, 96, 12,150,132,199,135,212,212, 84, 98, 52, 26,203,250,251,251, 23,168,168, 34,116, 6,243, +216,222,149, 18,218,126,112, 32,210,100,229,161,146, 51,116, 84,183, 50, 9, 71,127, 90, 23,148,106, 78, 37,226,236,194,127, 57, +206, 95,187,118, 45,162, 84,169, 82,200,206,206, 6,199,113,194,203, 47,191,124,143,101,229,209,172, 92, 78, 58,191, 50, 92, 72, + 76, 76,176, 49,140, 12,148,242,232,208,107, 40, 81,169, 53, 10,171,197,194, 1, 24, 83,136,245,202,121, 41, 6,223,182,109,219, + 6,138, 51,251, 54,205, 30,225,235,116, 79, 95,183,110,221, 64,231, 89,132, 94,138, 97,210,167, 79, 31, 77,233,210,165, 9, 0, +252,185,234, 35,209, 90, 70,186,116,233,162, 46, 93, 58,127,124,253,239, 95,122,191,215,117,176,150, 2, 89, 55,129,172, 91, 15, + 88,174,186,116,233,162,138,137,137, 41, 86, 94,180, 15,108, 47,116,237, 45, 29,203, 1,137, 39,189,226, 26, 80,135,216, 62,106, + 6,118,118, 7, 6, 74,159, 32,115,131, 15,182, 31,149, 68,150, 4, 9, 94,161,128, 22,121, 38, 4,150,221, 20, 87, 32,115,115, + 54,235, 3,226,138,231, 5,168,121, 3,230,206,157,139,119,222,121, 7, 0, 20,163, 71,143,254,113,202,148, 41, 47, 9,130, 80, +139, 82,218,148, 16, 82, 84, 43,113, 79, 68, 68, 68, 18,165, 84,206, 48, 76,211, 47,191,252, 50,176, 67,135, 14,240,245,245, 5, + 21,232, 3,226,138,231, 5,216,204,150,124,197,231, 6, 1,122,205,148,109, 27, 70, 5,180,234, 54,179, 53,111,195, 78, 81, 92, +241,182,191,135,197,167, 37,197, 99,199,182,205, 88,178,120,105, 6, 8,189, 8, 10,129, 97,152,211,133,185, 81, 16,132, 90, 7, +254,188,208,180, 73,253,106,152,178,108,153,234,220,137,251, 63, 14,127,247,163,216, 94,175,244,199,250, 53,171, 32,179,102,156, +100,153,176,191,197, 21,207, 35, 37, 39,187,203, 31, 63,127, 32,141,193,250,135, 96,179,217,144,145,145, 1, 91,110, 6, 87, 47, +194,144,245,105,175, 80,115, 82,134,137,149, 11,121, 92, 85,125,178,121,119,250, 45,153, 86,171,125, 38,252,154,157,157,189,106, +200,144, 33,205,247,237,219,167, 96, 24, 6,217,217,217,104,217,178,101,106,138, 16,165,126,107,240,240,224,132,132,123,156, 94, +195,154, 21, 10, 57,146,147,147,133,230, 29,251, 26, 95, 25, 56, 42,242,157, 15,167,125,149,112,104,241, 34,111,190,225, 60,179, +207,245,222,215, 95,127,109,137,138,138, 50,169, 84, 42,229,128, 1, 3,188,234, 39,180, 88, 44,116,198,140, 25,102,215,217,130, + 22,139,133,206,157, 59,215, 18, 29, 29,109,214,104, 52,212,102,243, 60,236,128, 97, 8,247,230,148, 31, 56,142,227, 10, 88,173, + 68,113,101, 19, 72,238,130, 5, 11,172,209,209,209, 22,173, 86, 75, 85, 42,149,194, 27,119, 14, 31, 62,156, 6, 4, 4, 88,117, + 58,157, 98,236,216,177,143, 52,139,208,198,131,157,242,165, 99,153, 6,149,175,175, 47,114,114,114, 28,110,141,136,136,144, 68, +150, 4, 9,238, 27, 27,123,159, 5,203,149,171, 5,171,160,200,160, 66,110, 82,114,106,168,127,100, 5,216,108, 28,120,206, 6, +206,198,193,198,217, 48,230,245,238,136, 91,156,223, 19,102, 23, 89,109, 71,143, 30,253, 35,224,121,219,157,181,107,215, 78, 30, + 61,122,180, 62, 41, 41,105,251,242,229,203, 3,251,245,235,135, 49, 99,198,224,243,207, 63, 7,171, 84,195, 47,188,140,227, 59, +156,141, 3,111,227,144,156,150, 1, 74,105,174, 59, 62,113, 12, 22,165, 96,245,225,229,192,243,226,187, 54, 48,178,252,153,233, + 59,182,109, 70,191,215, 71, 64,174,242, 11, 88, 56,119,166, 49,182, 94,196, 75, 19, 6, 13,242, 60,242,157,128, 57,119,226,254, +143,195,223, 25,219, 86, 20, 87,155, 86,126,121,241,203, 81,109, 87,107,149,172,227, 59,188,205, 6,134,145, 73, 99,176,158, 32, +130,131,131,105, 74, 74,202,173,204,204,204,202, 58,157, 14,105,105,105, 72, 79, 79, 71,102,102, 38,204,217, 25, 92, 16,159,105, + 32, 92, 58, 88,150, 69,242, 93, 14, 60,207, 39, 62, 35,214, 43,220,191,127,255, 82,249,242,229,215,126,248,225,135,175,140, 27, + 55, 78, 46, 8, 2, 46, 95,190, 12, 10, 80,185, 66, 9,134, 97, 32,151,179,200,202,202, 22,180, 62,254,247,173, 84,166,149, 43, +148, 96,100,138,162, 22, 28,189,211, 98, 64,254, 50, 13, 12,171,200, 17,103,246, 41, 20, 10, 28, 89, 63, 43,187,197,128,201,122, + 0, 80,168, 52, 25,237,218,181,187, 93,173, 90, 53,195,241,227,199,203,192,101, 22,161,155,252,201,117, 31, 48, 86,166,213,168, + 13,109,219,182,189, 35,114,222,218,185, 48,187,255,208,143, 8,145, 41, 13,157, 59,119,190, 29, 27, 27,107,144,201,100,184,176, +121,102,118,247, 1, 99,213, 36,127,130,174, 91,108,191, 74,223, 60,189,126,127,149,169, 83,167,218, 58,118,236,120, 87, 28, 15, +118,235,214,173,200, 78,157, 58,169,230,204,153, 99,235,212,169, 83,124,141, 26, 53,114, 25,134,193,137, 19, 39,162,139,178, 76, +137,208,104, 52,182, 55,222,120,227,206,217,179,103, 31,106, 22,161, 39,148, 42, 85, 10,130, 32,160,101,203,150, 48,153, 76,146, + 37, 75,130,132,255, 0,220, 10, 44,171, 32, 12,127,245,131, 89, 11, 9,136,143, 0, 90, 96,150, 14,205, 47, 9,200,251,239,191, +167, 3,160, 17, 69,214,187,239,190,155,225,233, 99, 78,226,170, 94,191,126,253, 48,126,252,120,124,241,197, 23,252,231,159,127, + 46,187,112,253,174,181,231,232,207, 51, 93,190, 3, 74,105, 46,207, 99,184, 59,190,140, 44,195, 39, 77, 59, 77,255,236, 94, 82, +222,129, 94,239,197, 21, 40,181, 50, 73,254, 98,134, 75, 22, 47, 49,200, 85,126,186, 94,175,244, 7,128,182, 11,231,206,252,113, + 10,150,121, 22, 89,148, 84, 29,254,238,216, 0, 81, 92,125, 57,103,234,217, 0,146,180, 96,208,199,231, 31, 24, 53,239,231,131, + 31,155,118,154,222, 62, 57,221, 48, 79, 74, 82, 79, 6, 22,139,101,215,252,249,243,203, 78,152, 48, 65,153,158,158,142,212,212, + 84,100,100,100, 56,142,220,220, 92,132,135,135, 99,219,182,109,214,236,236,236, 35,207,146,223,111,220,184,241,229,150, 45, 91, +176,119,239,222, 62,227,198,141,147,135,135,135, 19, 63,191, 68, 98,179, 90, 0, 80,154,146,146, 34,104,125,252,239, 7,135, 69, +223, 73, 72, 76,174,106,179, 90, 32,240,214, 66, 71,145,219,151,105,120,255,220,185,115,101,103,205,154,101,113,158,217,247,202, +216,133,243,235,214,173, 27,184, 96,193, 2, 75,231,206,157,111,139,131,210,189, 25,228,190,227, 58, 70,157, 59,119,166,186, 43, +103,139,183,102,125, 35,114, 58,207, 46,236,242,222,210,111, 42, 86,172, 24, 24, 27, 27,123,187, 40,222,152,152, 24, 99, 68, 68, +132,165, 74,149, 42,185,114,185, 60,223,114,101,179,229,197,196,196, 8, 97, 97, 97,150,106,213,170,229, 22,119, 48,190, 70,163, +161,162, 21,204, 29,138, 51,139, 80, 46, 3,215,175, 95, 63,199, 74,238,239, 87,172,120,191,127,255,254, 17,163, 71,143,198, 55, +223,124,131,131, 7, 15,166,187,190,211,188,121,115,236,219,183,239, 51, 0,159, 72,185, 91,130,132,103, 88, 96,125,247,221,170, +223,225, 52,102,201, 29,166, 76,153,162,178, 91,174,218,190,243,206, 59, 48, 26,141, 1, 15,180, 96, 9,105, 35,174,149,225, 78, + 92,205,156, 57,115, 53,165, 52, 26, 64, 19,142, 23,142,126,245,237,138,150, 30, 13, 75, 78,156,148, 48, 50,134, 33,185, 74, 57, +253,107,241, 87,223, 21, 88,161,219, 62,168,189, 50, 8, 78, 47,156, 59,211, 8,160,173,171,200,234,217,179,103,158, 43,167,136, +193, 67,222,118,136,171,133,115,103,238,140,173, 87,250,165, 9,131, 38,187, 21,101,147, 63,121, 91,199, 48,164,145,243, 24, 44, +119,156,143, 10,137,243,111, 78,149, 74,181,122,205,154, 53, 29,155, 54,109, 90,166, 86,173, 90, 76,122,122, 58,114,115,115,145, +155,155, 43, 90,185,112,225,194, 5,225,246,237,219,247, 84, 42,213,154,103,201,239,246,237,111,230, 71, 68, 68,236,154, 56,113, + 98,255,212,212,212, 78, 25, 25,153, 65,191, 44,159,130, 23,123, 13, 33,205, 59,246, 53, 88, 40,171,142,191,159, 84,101,207,175, + 63, 4,254,182,246, 75, 88, 45,150,183, 8, 89,114, 65, 92,166,193,141, 59,243,196,229, 24,170, 84,169, 98,112, 22, 40,165, 75, +151, 54, 69, 70, 70,154, 99, 99, 99, 29,215,221,205,206,115,231,247,226,114,218,199,119, 25, 60,133,167, 40,214, 92,151,127,208, +106,181, 16, 69, 87,113,220,233, 60,123,210,109, 65,233, 97, 22,161, 51,231,242,147, 84,238,124,111, 57, 33,178, 85,171, 86,181, + 89,181,106, 85, 61, 0,127, 1,216, 1,192,102,127,207, 49, 24,158, 82,250, 41,128, 79,165,252, 46,113,254, 87, 57,255, 19, 2, +203, 19,196, 1,237, 0,152,119,223,125, 55,195,104, 52, 6,244,239,223,191,200,119, 18, 19, 19,191, 89,177, 98, 69, 1,113,213, +163, 71,143,215, 55,108,216,176, 43, 57, 57,249,161, 28, 31,160,215, 76,217,251,243, 7, 1,205, 59, 79,127, 7,192,231,238, 45, + 81, 16, 98,235, 69,188,180,112,238,204, 31, 93, 68,214, 74, 0, 61,220,165, 27, 0,104,247, 98, 55,252,240,221, 2,113,236,150, +230,236,241,123,191,245, 57, 57,201,237,236, 67,127, 31,213, 36,187, 59, 70, 67, 26,131,245, 68, 80,181,106, 85,254,208,161, 67, +163,135, 12, 25, 50,187,117,235,214, 81,221,186,117, 83,148, 42, 85, 10, 42,149, 10,215,175, 95,199,254,253,251,173, 55,110,220, +184,151,151,151, 55,186, 86,173, 90,252,179, 24, 6,247,239,223,191,100, 95, 68,116,148,216,173,164, 82,107, 20,125, 7,190, 19, +237,152, 69,184,246, 75,152, 77, 70, 0, 96,189, 89,166,129,101, 89,197,169, 83,167,202,136, 86, 42,171,213,170, 18,175, 31, 63, +126,188,140,184, 54,150,201,100,242,122, 22,225,227,226, 60,115,230, 76,180, 56,219, 81,156, 45,200,178,172,226,196,137, 19,209, + 34,167,217,108,246,106, 22,161, 82,169, 84,156, 58,117, 42,154,231,249, 18,155, 69,232, 34,136,183,219, 15,177,114, 18,197, 21, +177,119, 11, 74,221,131, 18, 36, 72, 2, 43,127, 32, 56,165,180,105, 49,148, 46, 91,182,108,217,118,175,188,242, 74, 1,113,213, +179,103, 79,126,211,166, 77,123, 34, 34, 34,146, 24,134,185, 84, 92,119, 56,198, 96,229, 47,168, 94, 0, 12,195,156,110, 82,191, + 26, 24,134, 57, 61, 97,208, 32,243, 20, 44, 43, 32,178, 54,255,184,174,125, 97,229, 33, 0, 4,133, 69,255,159,189,179, 14,143, +226,106,163,248,185,235, 30,119, 66, 66, 32, 68, 72,112,119,105,208, 98,165,184,182, 20,107, 11, 45, 20,135, 98,197,138, 21, 47, + 20, 40, 80, 28, 74,113,119,183,160, 9, 9, 16,226,238,182, 46,115,191, 63, 72,248, 66, 26,217, 13,180,165,116,126,207, 51,207, +238,222,153, 57,115,199,207,190,215, 48,240,179,177, 24,248,217, 88, 91, 0,205,129,210, 91, 31,150,149, 15,150,191,142,102,205, +154, 37,133,133,133, 13, 60,123,246,236,128, 43, 87,174, 4,169, 84,170, 42,132, 16, 72, 36,146,104,157, 78,119, 78, 36, 18,237, +254, 80,205, 85,105,232,245,122,227,212,185,203,182,115,185,124, 19,195,232,137, 94,175,255,204,146,251,124,234,212,169, 28,148, + 80,183,106,236,216,177, 37,166,255, 83,154,211,167, 79, 47,177,213,223,216,177, 99,203,108, 13, 88, 26,223,125,247,221, 59,107, + 69,104,166,233, 98,141, 20, 11, 11,107,176,254, 12,135,195,121, 84, 66,107, 65, 2,128,150,212, 66,143, 82,106,228,114,185,115, +109,108,108, 70, 41,149,202, 83,189,122,245, 26,223,187,119,111, 19,240,170,226,123, 69, 51,159,149,163,156,221,166,219,143, 19, +178,243,181,107,138,207, 43, 30,105, 42, 52, 89,235, 86, 45, 89,255,199,129, 61,189,147, 19,227,215,151,182,111,165, 25,169,210, + 90, 31,230,228,170,231,182,233,246,227,183, 89,185,106,182, 14,214, 63, 16,201, 2,176, 3,192,142,226,131, 61,255, 23,160,148, +106, 9, 33,147, 8, 33,133, 17,220, 73,145, 23, 87,173,255,255,159,155, 53,143,138,206, 43, 35,122,149,100,206,192,205, 37,173, + 87,214,188,191, 64, 51,165,140,129,155,203, 34,197, 66,189, 20, 0, 16,240,185,169,165, 13,234, 44,224,115, 83,223,209, 57, 36, + 5, 77,211,231,178,119, 52, 11,203, 7,110,176, 10,205, 79,105,148,214,207, 85, 89,152, 76,166, 31, 1,252,248, 46, 51,255,228, +121,222, 47, 0,126, 49,119,249,130, 58, 87, 67, 11,166,146,243,153, 17, 98,241,190,245,238,221,123, 3,128, 13,236,229,244,247, +176,127,255,126, 19,123, 20,222,120, 65,175, 39,132,252, 90,104,184,204,157, 87,108,185, 35,127, 65,190,254, 10,205,211,127,167, +222,177, 48,163,243,223,116, 14,217,136, 22, 11,203,127,193, 96,177,176,176,252,235, 76,150,182, 34,243, 88, 88, 88, 88, 88,254, + 26, 8,128,160, 82, 30,202,102,183, 14, 32,132, 4, 85,224,133,112,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150, +102,121,218, 69,215, 39,132,140,164,148,254,130,127, 35,244, 85, 95, 83,127,201, 4, 32,136,213,100, 53, 89, 77, 86,147,213,100, + 53, 89, 77, 86,179,130,219, 25,249,119,108,231,175,152, 56, 96, 97, 97, 97, 97, 97, 97, 97, 97,121,167,176,117,176,204,132, 84, +238,249, 61, 64,167, 21,196, 44,151,208,216, 67,115,216,163, 82,193, 99, 73,136, 3,128,174, 10,177,160,123,128,141,160,233,147, + 12,205, 13,165,222,116, 20,192, 97, 74,105, 22,123,132, 88, 88,254,134,251,208, 54,160, 50, 8,249, 28,160,255,111, 70,201,208, + 80,154,253,116,235, 27,203,217,212,248, 12, 28, 18, 80, 36, 73, 13,138, 77, 52, 43, 52,174,148,251,187,176,194,190, 77, 68, 68, +132,167,183,183,119, 12,128,236, 98,139,253,105, 30,165,148,150,241,204, 32, 14, 85,235, 13,145,138,165, 95,234,116, 58, 47,185, + 66,145,154,153,145,182, 33, 51,246,241,186, 34,139, 89,221,190,125,219,181,113,227,198,137, 0,242,202,211,100, 97,121,239, 13, + 22,241,249,212, 11, 70,206, 80, 80, 12, 2,193, 67, 26,185,255,211, 10,233,120,247,170, 4,134,215, 8, 64, 61,128,214,147, 73, +196,117,213, 58,125, 42, 67,233, 16, 26,177,247,129,197,122, 85,251, 28, 7,208,165,148,185,115,105,228, 62, 11, 13, 18,157,126, +247,202, 65,145,141,148,192,187,254, 39,147, 81,164,199,229,247,204,188, 72, 0, 12, 35,132,124, 36,149, 74,125, 84, 42, 85, 52, +165,244, 49,128,245,148,210,196, 10,106,114, 0, 12,151,203,100,157, 60, 21,194,122,177,233, 57, 9,121, 6,211, 85, 0, 75, 45, + 53, 68,132, 16,161,167,173,236,242,202,254,109,252,155, 6, 84, 7, 19,122, 5, 26,157,190,251,165,248,252,238,179,111, 38, 78, + 32,132,212,163,148,234,204,212,114, 5,192,163,148,198, 21,252,150, 1, 8, 4, 80, 21, 64, 36,128, 16, 74,169,242, 45,143,231, +191, 66,211,221,221,221,141, 97,152, 47,156,157,157, 63, 78, 73, 73, 57,206,225,112, 54,199,199,199, 39,254,195,151,227,198,194, +250, 19,230,126, 2, 24,101,201, 6, 36, 18, 73,138, 70,163,113, 2, 0,177, 88,156,170, 86,171,255,178, 86,127,127,231,182,254, +158,135, 5, 70,156,185, 22,210,169,104, 82,135, 22, 1,127, 94,142, 67, 2,206, 92, 11,109,245,230,114,129,166,146,158,129, 5, +189,166, 98,238,220,185,100,222,188,121,159, 85,171, 86,173, 58,135,195,121, 54,107,214,172, 55,186,176, 41, 62,111,246,236,217, +255,239,113,181, 4, 77,119,223,102,135,251,245,239,211,230,171,145,195,228,149, 28,229, 72, 74, 87,218,255,188,101,199,178, 29, + 59,118,117,253,162, 95,251, 78, 0,240,195, 15, 63,244,172, 92,185,114, 21, 46,151, 27,245,253,247,223,255, 86,150, 38, 11,203, +123,107,176, 72, 64, 31, 25, 52,180, 55, 64,134,181,110, 90,191,197,168, 33,221, 8,229,138, 49, 96,196, 20,163,197, 90, 85, 62, + 19,129,171,158, 95, 43, 48, 96,124,159,110, 65,156, 6,129, 85,224,234,104, 13,112,248,216,120, 34,218,126,205,146,239,215, 3, +104, 92,129,108,118,121,121,115, 55,146,178, 77, 32, 4, 32, 4,224, 16, 32, 95,195,160, 67,207,161,179, 45, 55, 72,132, 99, 35, + 37, 24,191, 91, 3,128,112,223, 83,115, 85,207,209,209,113,221,184,113,227,108,107,213,170,229, 42, 22,139,165,106,181,186,122, + 68, 68,132,215,204,153, 51,219, 19, 66, 22, 83, 74, 15, 90,168,233,225,237,238,182,111,205,248,225,141,106, 87,245, 4, 95,151, + 15, 70,171,172,252, 60,226, 69,211,209,235,247,143, 32,132,244,183,112,184,132, 25, 27,199, 14,241,175,169, 0,244, 33,215,193, +231,114, 33,181,182, 69,123, 30, 23, 92,130, 26, 67, 79, 71, 79,135, 25,227,177, 21,244, 96, 62,189,224,249,187,139,203,229,158, + 13, 10, 10,242,250,226,139, 47, 72,253,250,245, 17, 28, 28, 92,117,247,238,221, 65, 60, 30, 47,202,100, 50, 61, 6,240,140, 82, +106, 48,115,159,249, 0,124,185, 92,110,173,247, 89,211,205,205, 77,162,211,233,134,186,187,187,143,236,222,189,123,173,110,221, +186, 17, 95, 95, 95,132,135,135,215, 63,121,242,228,236, 58,117,234, 60,142,143,143,255, 69, 40, 20,110, 79, 76, 76, 84,155,163, +217,175, 38, 9,223,251,132,250, 85,116,126,177,125, 30, 9,192,173, 32,160, 49,215,140,207, 68, 0,115, 41,165, 73,230, 94, 76, + 26,141,198,169,240,253, 73, 8,113,250, 43,239, 47, 75,182, 69, 8,121, 74, 8,177, 43,248,142,178, 62, 57, 28, 14,140, 70,163, +210,104, 52, 86, 43, 71,211, 23,176,168, 90, 7,165,148,150,213,129,179, 4, 0, 58, 52, 15,200, 4, 65,104, 97, 4,235, 79, 75, + 49, 52,244,181,241,162, 8, 56,115, 61,212,238,141,168, 87, 49,230,206,157, 75,102,207,158,141, 57,115,230,116, 3,208,146, 97, +152,171,254,254,254,171,223,144,100,152,215,243,102,207,158,189,106,238,220,185, 4,111,140,122,251,127,236,170,212, 25,252,201, + 39, 61,218, 44,152, 49, 86,158,144,161,199,195, 40, 53,236,228, 2,204,158, 52, 70,168,213, 26,154,174,255,109,199,200,181,139, +167,108, 50,153, 76,237, 0, 52, 48,153, 76,247, 0,252, 86,150, 38, 11,203,123,101,176, 8, 33, 4,213, 62,109, 5, 19,134,121, + 86,118,238, 61,238,139,190,146, 64,127,111,104, 32, 71,116,186, 9, 39,142,157, 4,128,189,150, 69,153,250, 53,224, 9,176,125, +201,156, 73,126, 45, 27, 5,226, 73,130, 1,247, 18, 76, 80, 69, 25,192,229, 24, 96, 98, 40, 64,161,169,232,206,197,103, 25,113, +237,153, 14, 28, 2,112, 57, 0,135, 67,192,173,104,173, 51,147,238,249, 15, 91,131, 3,211, 83, 24,192,164,123,254, 30,154,171, +118, 62, 62, 62, 43,231,205,155,231,146,146,146, 98,119,239,222, 61,136, 68, 34,216,218,218,242,220,220,220,252, 86,174, 92,153, + 51,118,236,216, 73,132,144, 7,148,210,104, 51, 53,253,187, 52,168,117,227,151, 37, 63, 88, 27,110,159, 68,246,158,223,193,229, + 80, 8,100,114,120, 73, 36, 56,249,137,183, 93,239, 99, 81, 7, 9, 33,254,148,210, 4,115, 52,189, 93,236, 59,212,242,247, 71, +214, 31,107,241, 48, 75,131,147,137,106,124,222,190, 9,106,218, 73,208,210,104,130,139,140,223,174, 60,131, 69, 8,177, 5, 48, + 69,167,211,113, 4, 2, 1, 17,139,197,131, 23, 44, 88,160, 31, 48, 96, 64,124,225, 50, 45, 91,182, 68,203,150, 45, 73, 94, 94, + 94,213,139, 23, 47, 86,221,177, 99,135,145, 16,242,148, 82,122,184,244, 8,133, 52, 86,163, 81, 87, 22, 75, 36,170,159,215,175, + 95,222,170, 85, 43, 70, 36,250,255,232, 45, 21,209, 4, 0, 27, 27,155, 77, 62, 62, 62,100,218,180,105,137,239, 74,211,203,203, +235, 76,203,150, 45,219,118,232,208,129,215,188,121,115,184,185,185,189,158,231,224,224,128,150, 45, 91,146,184,184,184,218, 87, +175, 94, 93,127,230,204,153,213, 94, 94, 94, 23,163,162,162, 58,148,251, 70, 46,103, 12,210,242,230, 23,123,187,255, 82, 48, 28, +140,185,134,233,151, 18, 58, 48,254,119, 6,135, 8,145,111,220,184,209,169,112,204, 68,131,193, 0,147,201,244,250,179,112, 98, + 24, 6, 38,147, 9, 11, 22, 44, 48,153,121, 76,149, 40,232,212,185,200,196,148,244, 41, 20, 10, 29,204,140,100,133,186,138,178, +107,200,100, 50, 79, 0, 93,124,124,124,166, 20,157, 93,221,241,213,167, 82,169,140, 73,210,218,132, 2,104, 85,214,229, 62,111, +222,188,161,115,230,204,233,129,255,143, 41, 89,171, 79,159, 62, 23,139, 45, 87,171,224, 83, 73, 8,185,196,225,112,142, 2,216, + 10,224, 79, 17,113,169, 84, 62,106,220,151, 95,200,227,211,245,152,127, 48, 29, 91,175,228, 98,104, 75, 5,198,119,182,198,192, + 1,253,100,251,127, 63, 48, 10,192,166, 34,171,132,251,251,251,147,176,176, 48,214, 92,125, 88, 52, 4,224, 88,228,183, 14, 64, +225,208, 86,233, 5,247,133,125,177,244,162,203, 21,126,166, 21,164, 59, 22,172, 71,139,232,166, 1,184,251, 78, 13, 86,225, 24, + 88,101,142,133,229,213,251,196,240, 1,221, 59,125,252, 81, 51,112,196,182,120,158, 10,220,140,165,224,113, 12,224,128,226,246, +245,139, 20, 60,102,123,177,135, 65,169,145, 13,226,213,251,187, 90, 53, 3,127,220,188,228, 27,238,211, 84, 30,182, 94, 85, 65, +175,201, 71, 90,114, 44, 82, 19, 99,144, 20, 31,137,132,216,200,199, 0,153,109,174,230,159, 31, 70,128,137, 41,248,207,199, 20, +188, 30, 64, 74,122,104,149,175,105, 80,134, 85,243,171, 25,152, 37, 52, 1, 6,101,152, 25, 15,194,119, 62, 8,102,105,154,132, +144,246,222,222,222, 75,103,204,152,225, 30, 18, 18, 98,165, 84, 42,149, 39, 79,158,188, 28, 19, 19,227,236,226,226, 18, 55,102, +204,152,102,149, 42, 85,114,234,217,179,167,116,223,190,125, 51, 0,124, 97,134,102, 96,247, 38,117,111,110, 89,253,147, 44, 99, +255, 26,232, 34, 30,225, 68,146, 18,215, 83, 84,180,170,181,136,124, 93,219, 17,114, 17, 15, 63, 52,119,147,119,249, 35,226, 71, + 0, 3,205,217,247,128,202,174,213, 12,106, 21, 52,106, 3,182,135,103,170,207, 38, 40,157,136, 77,116,218,234,222, 77,196,220, +180, 68,120, 42,132,213, 43,114, 60,197,226,146, 71, 57,177,181,181, 69,235,214,173,225,239,239,207,107,213,170, 85, 45, 0,135, + 75,211,212,235,117,174, 12, 67,161, 80, 40, 36,246,246,246,182, 10,133, 34, 67,175,215,191,149, 38, 0,216,217,217,125,218,186, +117,107,222,238,221,187,211,163,162,162,110, 15, 24, 48, 32,210,202,202,234,141,104,175, 76, 38, 67,245,234,213,241,253,247,223, +243, 58,117,234, 84,174,166,179,179,115,251, 29, 59,118,128, 16,242,250,101, 93, 28, 79, 79, 79,184,184,184,160, 75,151, 46,188, + 79, 63,253,180,125, 89,199,179, 95, 77, 18, 94,104,158,250,214, 36,101,190,152,250,214, 36,148, 0,207,138, 71,178,138,107, 22, + 68,176,230,190,105, 98, 75, 47,102, 43,105,121, 51,206,123,106, 97, 52, 73, 44, 22,167,190,205,125, 84, 64,169,197,154, 34,145, +232,117,212,169,248,182, 74,210,228,112, 56,152, 57,115, 38, 8, 33,224,243,249, 16, 8, 4, 37,126,182,105,211,198,210,124,198, + 17, 66, 56, 2,129, 96, 10,143,199,251, 66,171,213,186,139,197,226, 68,147,201,180, 77,171,213, 46, 40,136,128,218,148,116,237, +150,166, 41,147,201, 60,159, 63,127,238, 83,218, 65,209,106,181,168, 85,171, 22,160,197,211,178, 52, 35, 34, 34, 60,171, 85,171, +230, 11,160,112, 40,181, 43,148,210, 86, 69,126, 23,229, 10,165,180,115,193,247,103, 47, 95,190,244, 44, 52, 88, 69, 53, 13,122, +189,151,187,147, 21, 30, 70,171,177,245, 74, 46,206,207,112,195, 71, 11, 18,209,171, 30, 15,254, 30,114, 24,245, 6,223, 62,125, +250,108,199,171,235,247, 46,128,158,125,250,244,241,227,114,185, 23, 0, 28, 2,144,243,119, 63,147, 89,205, 10,255, 49, 41,203, +139, 56, 18, 66,142, 21,217,126,215,194,223, 83,167, 78,157,190,104,209,162, 16, 66,200,177,162,233, 69,151, 43,250, 89,176,173, + 99,148,210,174,211,166, 77, 11, 92,188,120,241,194,194,101,255,145, 8, 22, 0,171, 52,141, 12, 87, 99,173,192,227,154,192,227, + 16,240,184, 0, 40, 65, 76,116, 4,242,114,179,175,209,200,223,163,204,139, 92,245,105, 94,167,110,173, 37,187, 86, 78,230,252, +122, 85,133,108,165, 6, 97, 15, 46,225,238,165, 67,201, 38,163,233, 16, 8,189, 7,112,130, 17,201,132, 83, 90,241, 94,187, 95, + 25,172, 2, 83,245,134,201,250,112, 32,132,116,246,243,243, 91, 52,115,230, 76,207, 7, 15, 30, 40,114,115,115,211,118,238,220, + 25,174,213,106, 31, 0, 88, 21, 27, 27,219,122,213,170, 85,210,101,203,150,117,168, 85,171,150,239,254,253,251, 85,102,104,214, +158, 52,108,224,205, 47,198,125, 43,126,186,111, 29,132, 79,131, 49,243, 81,186,233,124,146,106, 6,128,149,136,203,111,158,166, + 49,158,253,169,117,101, 78, 21,133, 0,222, 54,194, 54,230,230, 87, 44, 20,241, 40, 79, 12,157,206,136, 60, 29,163,163,148, 42, +123, 55,242,215, 83,153,131, 24, 0,120, 28,194, 51,227,198,206, 34,132,252, 40, 20, 10,103, 18, 66,104,195,134, 13, 31,214,172, + 89, 51,223,214,214, 22,106,181, 26, 90,173, 22, 2,129, 0,106,181, 26, 49, 49, 49,184,125,251, 54,108,109,109, 45, 58,174,249, +249,249, 80, 40, 20, 96, 24,230,173, 53, 77, 38, 19,217,176, 97,131, 44, 36, 36, 68,118,224,192, 1,231,241,227,199,103,212,168, + 81,227, 94,191,126,253, 94, 56, 57, 57,105, 31, 61,122,132, 27, 55,110, 32, 43, 43, 11, 77,154, 52, 49, 75, 83,167,211,129,199, +227, 65,173, 86, 67, 36, 18,129,199,227,193,104, 52,130, 97,152,215,166, 43, 63, 63, 31,153,153,153, 16, 8, 4,208,233,202,174, +214, 86,104,150,250,214, 36,116,223,169, 27,169, 48, 49,128, 62,215, 0,109,206,171, 73,151, 99,128, 38,219,208,119,194,242,218, +251,158,152,215,235,120, 97, 4,171, 40,101, 21,179,149,180,124,121,188,235,122, 80,101, 21,107,102,103,103, 75,108,108,108,166, +152, 19,145, 35,132,128,203,229, 66, 32, 16,128, 16,130, 86,173, 90, 97,248,240,225,168, 87,175, 30, 34, 34, 34,176,103,207, 30, +220,189,123, 23,124, 62,255,245,242,230,210,166, 77, 27,174, 88, 44,190,209,189,123,247,192, 25, 51,102,136,171, 84,169,130,167, + 79,159,122, 44, 94,188,120,202,185,115,231,122, 16, 66, 26, 80, 74,153,114,133, 10,139,254, 94, 21, 11,118,209,106,181,120,250, +244,169, 37,235,252, 57, 66,237,237, 29,195,225,112, 94, 48, 12,115, 21, 64, 45, 74,105, 43, 66,200, 73, 0,178, 98,139, 42, 41, +165,157, 9, 33,185, 0, 30,115, 56,156,103, 12,195,196,148, 84, 93, 74,161, 80,164,197,167,230, 58,219,203,197, 24,210, 66,142, +143, 22, 36,162,119, 3, 17, 68, 2,130,240,168,100,120, 87,171, 66, 30, 94, 59,220,160,192, 92, 53, 76, 74, 74, 2,128, 6, 0, +162,226,226,226, 92, 11, 13, 22,203,135, 65,113, 19, 84,104,156, 22, 45, 90,212,181, 36, 83, 85,194,189,249, 70,250,226,197,139, + 23, 22,249,253, 78, 27, 89,241,138, 58,199,178,111, 44,244, 58,118,112,247,173,143,244,196, 51,176,126,139, 34,209, 32,138,224, +219, 55, 0,208,109,102, 61,192,220,186, 73, 56, 82,217,182, 13, 11,199,114, 54, 94, 82, 33, 46, 49, 21, 55, 78,108, 67, 90, 82, +244, 86,128,142,167,145,251,115,223,250, 33, 89,181, 79,160,147,131, 61, 52,122, 10,134, 2,248,147,201,250, 96,204, 85, 55, 95, + 95,223,121, 55,111,222,244,212,104, 52,138,235,215,175,103,239,216,177,227,133, 78,167,219, 76, 41,221, 89,176,204,145,244,244, +244, 31, 40,165, 80, 40, 20, 60, 62,159, 47, 41,171,226, 39, 33,164,222,164, 47,134, 94,251,113,195, 22,241,139, 39, 15,177,234, +192, 9,100,171, 84,166, 75,169,234,158,148,210,194,127, 5, 23,188,109, 68, 9, 20,180, 50,159, 67,224, 42,227,187, 16, 66,196, +148,210,114,139,115, 93, 43,123,114, 12, 30, 94,184,106,212,160,146,189, 72, 8, 0, 85,125, 3,184, 15,212, 6, 92,127,244, 20, + 14,114, 43,129,153, 55,217, 44, 66,136,243,246,237,219, 57, 6,131, 33, 63, 34, 34, 2, 46, 46, 46,112,118,118,134,181,181, 53, +194,194,194,112,254,252,121,132,135,135,131, 97, 24,212,169, 83,199,162, 99,155,145,145,129, 71,143, 30,161, 75,151,143,199,167, +165,165, 90,217,218,217, 43,175, 93,189,178,172, 34,154, 12,195, 16, 0, 8, 12, 12, 68, 96, 96,160, 56, 33, 33,193,253,216,177, + 99, 78,243,231,207,143,245,244,244,220,165, 86,171,223,136, 20,152,107,176, 10, 12,203,107,243, 39, 22,139, 33, 16, 8,144,155, +155,139,148,148, 20,228,229,229,189, 42,179,177,177, 41,215, 96,189,233, 8, 25, 96, 71,139,123,127, 74,175, 57,204,201,194,235, +243, 79, 17,169,119,185,252, 95,244,240, 46,181, 88,147, 16, 50, 8,192, 20, 51,247, 5, 70,163, 17, 2,129, 0,141, 27, 55,198, +154, 53,107,112,247,238, 93, 28, 58,116, 8, 30, 30, 30, 24, 54,108, 24, 56, 28, 14, 66, 66, 66, 44,205, 34,115,243,230,205, 41, + 61,123,246, 12,220,190,125,187, 56, 38, 38, 6,225,225,225,176,177,177,193,154, 53,107, 68, 35, 71,142,244,190,120,241,226, 44, + 0, 75,203,221,215, 34,173, 5,221,220,220,250,214,170, 85,235, 79,203,184,184,184, 88,159, 62,125,218,169,208,120, 21,111, 97, + 88, 2,217,179,102,205,250,201,223,223,127,101, 65,177, 96, 75, 0, 50, 74,105,155, 3, 7, 14, 16, 0,232,221,187, 55, 37,132, + 92, 42, 88,254,241,254,253,251,219,134,133,133,209, 57,115,230,148,248, 76, 74, 75, 77,218,240,211,154,141, 63,253, 56,119,146, +112, 66, 23,107,244,110,192,135, 88, 64, 96, 37,229, 99,193,234, 77,134,251,183,175, 60,114,117,117, 61, 6,160,103, 82, 82, 18, + 92, 93, 93,243, 1, 60,227,114,185, 81, 38,147, 41,145,173,227,254,175,123,175,149,212,208, 97,100,225, 61, 89,154,113,178,196, +160, 21,141,112, 21, 50,109,218,180,192, 69,139, 22,221,121,151,251,194, 41,178,209,178,255, 66,241, 56,174, 46,206, 14,118, 83, +135, 53, 7,195, 0, 70, 19, 96, 52, 81, 40, 85,106, 60,125,114, 87, 5, 49, 57, 96,214, 22, 69,194, 37,243,103,124, 91,245, 97, + 60, 7,137, 89,122, 92, 62,188,145,166, 37, 69,127, 74, 35,247,125,254,174,204,149,139,147,195,165,221, 27,127,192,221, 72, 29, + 76,204, 43,127,197, 48,244,245,247, 15,228, 34,172,238,224,224,176,236,214,173, 91, 85, 68, 34,145,226,249,243,231,166,253,251, +247, 39,234,116,186,245,133,230,170,128, 65,245,235,215, 55,200,100, 50,228,231,231,107,245,122,125,126, 25,230,202,189, 77,189, +218, 87,126,220,176, 69,172,209,233,144,163,214,130,107,239, 84,220, 92,129, 16,210,172,173, 79,165, 74, 68,172, 0, 5, 16,157, +171, 79, 52,199, 92, 1,128,220,218,134,227,222,160, 13, 26,124,179, 6,185, 68, 65, 1,192,222,181, 18,167,237,151, 11,208,105, +213,101, 40, 57, 10, 75, 44,112,226,192,129, 3,227, 3, 2, 2,114,252,253,253,115, 50, 50, 50, 16, 26, 26,138,172,172, 44,172, + 90,181, 10, 79,159, 62, 5,195,188,146, 43,169,184,196, 12, 99,132,172,172, 76, 57,165, 20, 89,153, 25,178, 25, 51,102, 88, 87, + 68,211,100, 50,189,113,111, 85,170, 84, 9, 99,198,140, 17,168, 84, 42,155,216,216, 88,171,162,243,204,213,212,233,116,133,157, +240,129, 82, 10,157, 78,135,156,156, 28,232,116, 58,188,120,241,226,181,185, 42,216,190,101, 6, 75,159, 91,114, 37,123,117,134, +193,194, 7,217,235,222,151, 37, 18, 73, 74,225,131, 83, 44, 22,131, 16, 82, 82, 49,219, 59,233,173,185,112, 91,132, 16, 42,145, + 72, 82, 42, 96, 10,203,221, 31, 51,207, 59, 4, 2, 1,134, 15, 31,142, 59,119,238, 32, 34, 34, 2, 92, 46, 23, 74,165, 18, 42, +149, 10,237,219,183,135, 80, 40,180, 52,130, 69, 5, 2,193,160,233,211,167,139,163,162,162,144,158,158, 94, 88, 73, 30, 38,147, + 9,227,199,143,151,136, 68,162, 65,150,134,234, 19, 19, 19, 59, 62,127,254,220,183,248,148,156,156,156, 83,180,206, 96, 69, 57, +112,224, 0,233,221,187, 55,237,221,187, 55, 45, 52, 90,230,146, 29, 31,186,225,208,145, 99,103,191,251,126, 73,190, 74,153,135, +106,110, 18,228,231,229, 96,193,162, 31, 13, 55,111, 94,189, 52,101,252,232,166,251,247,239, 95, 12,224, 89,193, 42,207,246,239, +223, 63,244,251,239,191,255, 13, 5,221, 53,176,252,171, 34, 84,164,172,123,239, 93, 20,227,149,164, 81, 80, 76, 40,249, 75, 34, + 88,101, 62,116,188,251,213,117,118,176,191,184,125,237, 92,249,177, 39, 64,124, 92, 52,210,146, 98,208,160,105, 27, 60,125,242, + 16,140,193,116,144, 62,223, 95,110, 51,115,226,213,199,199,191, 70,192,151,173,155,214,196,146, 99,249,120, 30,124, 26,217,105, + 73,107,105,212,190,131,239, 98,103, 72,213, 62,129,206,142, 14,151,126, 91, 55,207,238,100, 40, 7,113,113,209, 56,252,219, 74, + 24,244,127,122,247,159,176,248,161,205,232,132,249,217, 41,208,229,153, 32,230,168,196,239,193, 69,248,194,209,209,113,251, 79, + 63,253, 52,186,105,211,166,210, 1, 3, 6, 60,207,202,202,154, 79, 41,221, 87,228,101,209,206,215,215,119,226,218,181,107,189, +227,226,226,112,254,252,249,231, 0,238,149,161, 25,207,229,114,215,159,255,109,211, 36, 73, 85, 63,172,154,254,157,241,192,221, +208,238,148,210,147, 69, 52,253,131,106,249, 28,155, 63,241, 43, 14,115,255, 20, 30,197,164, 32, 50, 71,123,222,220,124, 71,100, + 43, 13,124,145, 4,114,151, 42,120,158,111, 18,240,120,188, 59, 95,124, 49, 92,192,225,242,192,225, 9, 16,154,165,177,228, 37, + 46,191,115,231, 14,135,203,229,190, 97,204,139, 70,132, 44,141, 12, 89,130,185,154,197, 13, 86, 33, 70,163,145, 84, 84, 83,171, +213,162, 36,159, 92, 82, 93, 44,134, 97, 44,219,127, 93, 78,201, 46, 79, 99,153,193, 42, 26,145, 42, 90, 52, 88, 88, 95, 78,163, +209, 56, 73, 36,146,148,194, 98,190,119, 21,193,122,155,150,133,101, 21, 83, 90,146, 63, 14,135, 3,134, 97, 32, 16, 8, 80,167, + 78, 29, 28, 59,118, 12,118,118,118,176,178,178,130,149,149, 21, 36, 18, 9,236,237,237, 95, 27, 44, 14,199,236,214, 55, 84,171, +213,122,120,120,120,224,197,139, 23, 16,139,197,175, 39,145, 72,132,192,192, 64, 40,149,202, 74,248,160, 98,245,192,136,126, 65, + 61,214,237,248, 99,200,177, 99,199,191,212,107, 53, 53,253,252,124,233,189,155, 23, 31, 77, 25, 63,186, 19,107, 73,254,115, 17, +174, 99, 69, 77, 18, 33,228,216,212,169, 83,167, 87, 84,111,234,212,169,211, 75,138,104,189, 51,131, 85,232, 24, 75,114,142,133, +230,106,235,154, 57, 86,127, 60, 0,226,227,163,112,118,223,234, 60,131, 94,151,197, 48, 6,207,200,240,135, 0, 7,219,204,139, +151,209, 70, 61,186,180, 37,103, 67,116,200,205, 78,195,179,123,167,163,161, 22, 78,123,151,230,106,251,186,185,118, 71,159, 16, +196,197, 69,227,228,158,149, 57, 6,163,190, 29,141,220,255,224,109,180, 7, 11,133, 61,250,213,176,233, 58,188, 69, 34, 76, 45, + 77, 24,244, 52,172,179, 91, 75,210, 35,241,106,217, 45,189,254,106,210,210,210, 22,200,229,114,206,210,165, 75, 63,215,104, 52, +115, 40,165, 7,138, 92,132,237,171, 85,171,182,100,195,134, 13,238,177,177,177,194,107,215,174,101, 94,186,116,137, 2, 88, 84, +142, 25,152, 76, 8,225,214,171, 82,105,236,253,232,132,238,148,210, 83, 69, 52, 3,187,214, 15,184,190,101,209, 44,133,225,250, + 1,228, 39,197, 97,218,245,248, 92, 0,211,204,188, 49,236, 28, 28, 28,200,224,193,131,153,188,188, 60, 8,132, 66,198, 96, 48, +112,155, 53,107,102,250,246,219,111, 57,201,201,201,200,205,203,231, 17, 66,236, 40,165,153,229,104,205, 3, 48,190, 89,179,102, +164,113,227,198,183, 87,174, 92,121,166, 44,147, 82,145, 8, 86,185,129, 30, 51, 53, 25,134, 41,241,237,105, 48, 24, 72, 69, 53, +139, 70,176,202, 51, 88, 22, 71,176,180,165, 69,176,210, 44,142, 96,149,100, 86,138,154,195,162, 6,168, 34,117,176,254,130,135, +119,169, 38,202,146,252, 21,214,131, 19, 8, 4,120,248,240, 33, 42, 87,174, 12,189, 94, 15,133, 66, 1,133, 66, 1,185, 92,142, +188,188, 60,240,249,124, 88,184,207,140, 88, 44,142, 13, 13, 13,245,117,116,116,132,201,100,122,195,100, 61,127,254, 28, 50,153, + 44,193,210, 8,150,155,155,219,233,130, 86,132,111,224,226,226, 98,253, 46,142,107,209,200, 85,239,222,189, 43, 84,142,176,110, +209,164, 29, 0,118,244,233,211,103,251,227,155,199, 27,184,186,186, 30,247,247,247, 39, 0,192,182, 24,252,176,162, 87,165,148, +168,165, 21,139, 60,233,138,252, 78, 3, 64, 10,126,167, 21, 49, 96, 69,191,235, 74, 72,203, 88,180,104,209,197, 34,245,183,210, +254,182, 8, 22,241,238, 87,215,201,222,238,226,230, 85,115,172,246, 5, 3, 9,113, 81,184,124,112, 77,142,209,164,111, 7,134, + 38,221, 60,119,240, 0, 8, 84,136, 60,112, 25,216,103,198,163, 1,245,234,213,240,196,161, 16, 3,210,226,159,131, 82,102, 43, + 77,249, 77,245,214, 15,197, 2,115,181,117,205, 28,187, 63, 30, 18,196,199, 69,225,236,190,213, 57, 70,147,190, 93, 69, 58, 41, + 45,228, 11, 66,108, 57, 10,233,207, 67, 58, 54,234,227, 89,181, 18, 24,106, 0, 35,160,232, 53,217,129,247,236,190,234,144, 71, + 7,238, 62, 38,159,249, 50,254,230, 63,215,251,120,126,126,254, 15,132,144, 63, 40,165, 79,139, 60,220, 59,123,123,123, 47,252, +249,231,159,171, 36, 36, 36, 40,238,223,191,159,251,203, 47,191, 68, 49, 12, 51,143, 82,154,106,198, 69,254, 29, 33,100,115,209, + 62,116, 8, 33,181, 39,125, 62,240,230,192,207,190, 16, 71,157,219, 1,219,168,167,152,120, 61,209,244, 44, 75, 55,128, 82,154, +108,142,185, 18,137, 68, 7, 78,156, 56,241,162, 94,189,122, 68,169, 84,194, 96, 48, 32, 61, 61, 29,127,252,241, 71, 40,165, 20, +182,182,182, 56,113,226, 4, 51,112,224,192, 3,132,144,222,165,153,172, 34,221, 52,144,130,110, 26,154,156, 58,117, 42,172, 83, +167, 78,241, 37,153, 20,145, 72, 4,141,198,178,222, 62, 74,107,149, 88, 17,205,210, 34, 88,197,211, 45,209, 44, 44,166, 44,172, +220, 94, 60,189, 16, 46,151, 11,134, 97,254,148, 94,182,193,202, 46,217, 72, 41, 83, 43, 28,193, 42,218,218,175, 34,230,166, 40, +229,117,248, 89,145,150,133,239, 58,130, 85,120, 46, 4, 2, 1,142, 28, 57,130,207, 62,251, 12, 38,147, 9, 82,169, 20,114,185, + 28, 50,153, 12, 7, 15, 30, 68, 97, 55, 14,150,100,209, 96, 48,236, 92,180,104,209,244, 13, 27, 54, 72, 40,165, 16, 10,133,175, + 13,214,156, 57,115,212,122,189,126,167, 57, 6,235,117, 15,237, 12, 13,173,238, 88,118, 43,194,146,214, 41,165, 62,150,205,188, +121,243,134, 50, 12,211, 3,197,186, 98, 40,126, 53, 21,124,214,234,211,167,207,197,178,186,105, 0, 96, 59,111,222,188, 17, 12, +195, 20,246,130,250, 70,107,193, 34,203, 21,190, 75,124,251,244,233,179,189,120, 43, 66,150,127, 61,119,255,109, 25,230,149,110, +174,250,248, 59,217, 59, 92,220,180,114,142,213,174, 59, 64, 98, 92, 36,110, 28, 89,155, 99, 98, 12, 69, 77, 75, 11, 11,255, 30, +214,115,115,178, 65,230, 45, 53,114,211, 99, 1,138,251,111,111,174,250, 85,119,114,176,191,180,101,245, 28,187,253, 15, 56, 72, +136,141,194,165, 2, 19,248, 54,230,106,176, 80,216, 35,208,199,125, 75,255,206, 45,108,173,137, 1,198,152, 48,108, 30,214, 23, +193,221,244,104,222,207, 26,141,186, 40,224, 93, 87,220,247,196,166,204,143,220, 90,146, 47,254,201,104, 86, 49,115,213,173, 74, +149, 42,115,111,223,190,237,201, 48,140,226,242,229,203,121, 27, 54,108,136,212,104, 52,171, 41,165,199, 45,208, 44,106,174,234, + 77, 29, 57,236,218,194,159, 55,139, 67,131,239, 98,201,206,163, 80, 27,116,166,211,241,249,125,138, 22, 31,150,133, 80, 40,252, +225,194,133, 11,178, 90,181,106,145,140,140,140,215,145, 22,189, 94,143,156,156, 28,228,229,229, 65,171,213,162,126,253,250,156, +213,171, 87,203,198,142, 29,251, 3,128, 47,205,205,175, 66,161,128, 64, 32,128, 94,175,127, 29,193, 18,137, 68,176,182,182, 70, + 70, 70, 6,246,238,221, 11, 0,101, 70,197, 4, 2, 97, 18,135, 67, 42, 75,164, 82,173, 88, 44,102, 92, 93, 93, 75, 52, 86,150, +104, 22, 16,223,185,115,103,247,121,243,230,137,235,215,175,255,167, 8, 86, 69, 52, 41,165,170, 14, 29, 58, 72, 87,175, 94, 13, + 79, 79, 79,232,116,186, 55,140, 20,135,195,129, 64, 32, 64, 92, 92, 28,230,207,159, 15, 74,169,249,127,100, 52, 89, 6,212, 26, +234, 8,117,134,225,213,148,110,128, 42,213, 0,189,202,100,225,117,249,218,172, 20, 53, 65, 5,117,164,254,100,128,204,141, 16, +149, 87, 4,104,105,203,194,162,134, 77, 36, 18, 33, 59, 59, 91, 66, 8, 25, 84, 74,143,243,102, 71,176, 10, 13,214,211,167, 79, +177,125,251,118,116,233,210, 5,182,182,182,200,202,202,194,190,125,251, 16, 22, 22, 6,161, 80, 8, 66,136, 37, 81, 44,166,113, +227,198, 63, 94,189,122,181,219,128, 1, 3, 2, 38, 78,156, 40,169, 89,179, 38,158, 61,123,134,121,243,230,105,130,131,131, 35, +212,106,245, 60,152,211, 33,105, 65, 15,237,133,157,136,154,213,138,176,216, 58,197, 41,165,155,134,206,165,168, 21,237,194,225, +141,110, 26,138,114,227,198, 13,175, 42, 85,170,248,227, 85,203,192,194, 23,109,209,214,130,111,188,132,147,146,146, 26,130,109, + 69,200,242, 62, 27, 44, 80, 50,126,192,176,145, 86, 59,239, 16,196,197, 68,224,222,137,245,197,205,149, 57, 15,153,160,162,125, +101,136, 37,178,154, 12,121,213, 44, 57, 55, 61, 14,160, 92,139, 13, 86,113, 77, 80,230,187, 1, 67, 71,218,237,190, 71,144, 24, +247, 18,215, 15,175,179,216, 92, 21,213, 28, 34, 20,206,226,243, 56, 51, 62,110, 85, 79,208,178,174, 47,164,169, 81, 72,142, 79, +196,222,167,105,153, 17, 89,218, 47,174, 19, 61, 98, 94,106, 55,119, 25, 97,103,103,235,194, 71,215,209,246,118,183,142,230, 30, +170,212,142,163,167,122,186, 40,241, 26,157, 83, 98, 62,223, 1,229,105, 18, 66,170, 91, 89, 89, 45, 13, 14, 14,118, 20,139,197, + 86,247,238,221, 51,109,220,184, 49, 78,163,209, 44,163,148,238,169,160,166,123, 67,159,106,151, 23,174,219, 36,206, 87,170,160, +212,233, 33,114,118, 53,253,113,243,201,167,165,117,134, 89, 92,147, 16,210,246,243,207, 63,175,221,184,113, 99, 78, 81,115,165, +211,233,144,155,155,139,188,188, 60,228,230,230, 34, 55, 55, 23, 9, 9, 9,104,221,186, 53,167,118,237,218, 53, 9, 33,109, 41, +165, 23,139,107, 22,233,166, 97, 58, 0, 14, 33,228,238,195,135, 15,243, 59,117,234, 4,137, 68, 2,165, 82, 9, 15, 15, 15, 24, +141, 70,156, 56,113, 2,193,193,193, 74,134, 97, 46, 3,120, 88, 86, 62,213,106,149, 7, 33,132,163, 86,169,234, 12, 29, 58,180, +245,132, 9, 19,222,104, 90,238,228,228, 4, 59, 59, 59,139, 52, 1, 32, 51, 51,179,198,169, 83,167,190,125,248,240,225,119, 93, +186,116,177,158, 62,125,186,200,203,203, 11, 38,147,137, 83, 81,205,172,172, 44,235,251,247,239, 47,107,209,162,197, 87,157, 58, +117,226, 45, 92,184, 16,214,214,214, 48,153, 76,144, 72, 36,200,205,205,197,188,121,243,112,237,218, 53, 35,165,116, 93, 78, 78, +206,196,178, 52,223,232, 7,107,194,138, 50,155, 71,150,214, 15, 86, 9,231,189,196,136, 79,105, 6,168,164,229,255,142,251,168, +152, 97,131,141,141,205, 20, 0, 83, 74,233,113,222,236,123,179,208, 96,113,185, 92, 68, 71, 71, 99,227,198,141,127,234, 7,171, +176, 27,135,146,180, 75,217,119,122,233,210, 37, 19, 33,164,233,189,123,247,166, 12, 25, 50,228, 11,165, 82,233, 46,147,201, 18, + 13, 6,195, 54,181, 90, 93,216, 15,150,192,146,251, 93,169, 84,198,148,212,138,176,248, 50,128, 77,153,154,197,186,105,120,163, + 43,134, 98,171,189,209,133, 67,241,110, 26,138,106, 54,107,214, 44,138,195,225,132, 23, 20,181,135,163, 88,107,193, 34,154,190, + 73, 73, 73, 13, 93, 93, 93, 47, 3,144, 22,111, 69,248, 79, 60,147, 89, 77,214, 96,149, 98,176, 32, 62,119, 59, 26, 66, 73, 38, + 30,157,223,106,177,185, 42,177,228, 65,163,138,152,181, 59,182,174, 78,171,129, 50, 39,229, 25,141,218,147,250,246,103, 25,178, +115,119, 99, 32,150,101,227,193,185, 95,179, 77, 38, 77, 59, 26,241,251,195,138,203, 97,234,250, 19,251, 5,196,218, 14,143,190, +253, 12,137,217, 74,156,140,204,218, 71, 85,218, 47,119, 20,140,187,231,222,148, 92,221, 50, 35,121,125,203, 94,214,125, 29, 42, +241,177, 98,210, 54,136,167,218, 11, 26,125,212,234, 31, 29,163,176,176,226,251,170, 85,171,198,180,108,217, 82,222,183,111,223, +231,153,153,153,111, 84,124,175,128,102, 60, 33,228,231,227, 27,150, 79,178,175,213, 4,107,191,159,108,218,125,243,201, 27,173, + 10,203, 67, 32, 16,180,153, 58,117,170, 64,169, 84,254,201, 92, 21, 55, 88,185,185,185,120,244,232, 17,134, 13, 27, 38,122,248, +240, 97, 27, 0, 23, 75,201,215, 44, 66,200, 6,188, 26,139, 48,121,199,142, 29, 77, 15, 31, 62,220,116,252,248,241,130, 46, 93, +186,224,214,173, 91, 56,123,246,172, 94,175,215,223, 4,112,211,220,225,103, 10,250, 15,186, 79, 8,121,178,100,201,146,166, 92, + 46,119, 86,225,188,208,208, 80,108,221,186,181, 34,154, 70, 0,203, 8, 33, 63,239,216,177, 99,214,185,115,231, 62, 31, 58,116, +168,149,193, 96,192,211,167, 79,241,235,175,191, 86, 84,243, 91, 71, 71,199,153, 39, 78,156,216,118,230,204,153,158,131, 7, 15, +230,140, 27, 55, 14,107,214,172,193,239,191,255,206,152, 76,166,195,124, 62,127,104, 90, 90, 90,185, 13, 80,222,232, 7,171,140, +126,174,202,155, 95, 66, 4, 43, 17,175,122,104, 55,119, 76,194,114,117,223,166, 8,208,204,124, 39,189,245, 99,169, 96, 63,218, +180,105,243, 58,170, 72, 41,125,163,222, 92,161,177,178,180,136, 16,128, 77,193,117,186, 14,192, 26,188,217,139, 59, 23,255,239, +233,221, 92,197,128, 36,173, 77, 40,180,120, 90,246, 96,207, 54, 0, 69, 64, 57,106,217,179,102,205,250,105,246,236,217, 63, 21, +239,138,161,232, 66,197,187,112,152, 59,119, 46, 74,235,166, 1, 64,214,172, 89,179,126, 4, 0,127,127,127, 82, 80, 44,216, 0, + 5,173, 5,139,104,110, 47, 72,151,206,153, 51,103, 8,128,178, 52, 89, 88,254, 65,131, 5, 58, 61,244,234,110, 3, 0,123, 16, +206, 52,250,114,111,232, 91, 63,184, 24, 58,245,194,174, 57,107, 64,145, 69, 77,198, 41,239,100, 15, 24,238,140,208,171,187, 24, +128,216,128,112,166,210,151,191,191,117, 62,137,181, 29,242,230,141,193,239, 33,137, 52, 89,105,248,100,135, 78,247, 70,164,166, +160,206, 85, 63,183,150,100,175,173, 27,255,143,111,219,217,147,227,153, 67,222,139, 19,154,150,150,182, 80, 46,151,115,151, 45, + 91,246,185, 90,173,126,163,226,251, 91,188,112, 38, 19, 66,184,141,170,123,142,189,243, 34,166,135,185,197,130, 69, 94, 36, 66, + 55, 55,183, 39, 26,141, 6,132, 16,104,181,218,215,198, 42, 47, 47, 15, 57, 57, 57,175,127,235,245,122,164,165,165,193,195,195, + 3,132, 16,129, 5, 47,194, 43,132,144,224,121,243,230,181,154, 55,111, 94,157,130, 40,208, 21,139,138,198,222,212, 54, 0,184, + 34,145, 72, 19, 9, 33,238, 2,161, 72,121,227,198,141,115,111,169,169, 42,136,140,172, 88,177, 98,197, 2,153, 76,214, 48, 52, + 52,244,252,219,104, 22,152,167, 79,237,237,237,221,182,111,223,190,127,203,150, 45, 77,120, 60,222, 45, 66, 72,159,236,236,108, +139, 7,123, 38,111, 70, 4, 44,158, 95,140, 81, 48,111, 12,194,114, 35, 68,230, 68,192, 42,202, 95, 97,216, 76, 38, 83,254,204, +153, 51, 83,139, 27,174,226,209,170,194,223,122,189, 94, 99,230,189,100, 73,171,200,114,204, 5,201, 7,128, 87, 99, 11,190, 26, +254,198,220,193,158, 1,148, 58,182,229,236,217,179,233,220,185,115, 9,135,195, 57, 12,224, 25,135,195,121, 81,188, 18,122,209, +121,115,231,206,197,236,217,179,233,156, 57,165,255, 55, 45,212, 12, 11, 11,163, 92, 46,247, 60,128, 40, 46,151, 27, 93, 84,183, +104,122,225, 58,101,105,178,176,252, 99, 6,139, 70,238,143, 3,240,217, 59,253,103, 24,181,255, 28, 44, 24,203,204, 44,205,232, + 61, 49, 0, 6,191, 51, 61, 96,233,136, 70,109, 38, 21,252, 11, 92, 81,220, 92, 21, 37,241, 42, 61,236,218,156, 44,106,244, 81, +171,241, 5, 47,159,133,239,195, 73, 45,169,226,251, 59, 48, 89,127,170,248,110,193,203,230,140, 68, 34, 33, 74,165, 18,106,181, +250,141,104, 85,110,110, 46, 84, 42, 21,242,243,243, 95, 87, 78,207,207,207, 47, 44,238,162, 22,230, 81, 5,224, 36, 33,228, 12, +165,212,244, 46,246, 91,173, 86, 85, 46,120,177,113,223,149,102, 65, 67,131, 47,222,165,102, 70, 70, 70, 34,128,102,222,222,222, +194,136,136, 8, 93, 69,117,202, 27,200,217,220,129,158,223,101, 52,232,175,230, 93, 27, 54, 0,208,235,245, 53,254,130,200,218, +179,119, 44,248,107,135, 22, 1, 92, 20,237,251,167,188,193,158, 11,141, 25,197,175,165,228,145,146, 87, 14,146, 2,216,254,242, +229, 75, 79,134, 97, 98, 74,136, 36,189, 49,111,206,156, 57, 40,173,127,190, 98,154, 0,112, 40, 46, 46,206,205,100, 50, 37, 21, +211,125, 35,189, 44, 77, 22,150,127, 56,130,245,223,228, 55,157,110, 54,202, 25,108,184, 40, 73,215,233, 12, 0, 51,222,183,253, +120,151,230,170,136,102,120, 69,214, 51, 24, 12, 23, 0,192,209,209, 17,142,142,142,150,172, 87,209,124,154,254,130,125,255, 87, +104,190,141,185, 98,249,111, 65,179, 66,227, 0,124, 95,238,114,229,247,222,254, 39, 67, 84,240, 53, 11, 64, 86, 41, 30,167,172, +121,101,105, 2, 64, 46,128,220, 18,214, 45, 45,157,133,229, 31,129,195, 30, 2, 22, 22, 22, 22, 22, 22, 22,150,119, 11, 1, 16, + 84,202, 63, 6,179, 91, 7, 16, 66,130, 42,240,239,253, 28,171,201,106,178,154,172, 38,171,201,106,178,154,255, 45,205,242,180, +139,183, 70,126, 87,195,104,253,237, 20,182,108,249, 43, 38, 0, 65,172, 38,171,201,106,178,154,172, 38,171,201,106,178,154, 21, +220,206,200,191, 99, 59,127,197,196, 22, 17,178,176,176,176,176,176,176,176,188, 99,216, 74,238,255, 82, 8, 33,213, 1, 76, 7, + 96, 93, 36,249, 14,165,116, 81,177,229,118, 1,144, 22, 73, 82, 2,152, 71, 41,125, 97,201,246,184, 92,238,162, 86,173, 90,125, +121,237,218,181,229, 6,131, 97, 94, 5,242,235,233,234,234,250, 35, 33,164, 62, 0, 62, 33,228,101, 74, 74,202, 34,131,193,112, +238, 45,142, 65, 85, 23, 23,151,197, 0,234,114, 56, 28, 62, 33, 36, 34, 37, 37,101,190,193, 96,184,244, 22,154, 10,103,103,231, +230,148, 82, 23, 0, 92, 62,159,159,145,144,144,112,187,162,173,225,250,204, 13, 19,228, 42,141,124, 0,176,146,241, 12,251,103, +251,235,205, 77, 99,175,114, 22, 22, 22,150, 15,212, 96,245,247, 37,174, 38, 30,120,251, 67,105, 92,225,203, 7, 64, 29, 0,213, + 1,188, 0,240,144, 82,154,247,150, 70,225, 95,161,249, 30, 50,139, 82, 58,176,216,126,255,105,161,118,237,218,117, 63,115,230, +140,180,112, 24, 21,134, 97, 32,145, 72,140, 0,134, 89,112, 60,157, 6, 12, 24, 48,117,243,230,205,232,219,183,239, 76, 66,200, + 79,148,210,124,115,215,183,179,179,235, 93,181,106,213, 53,155, 54,109,114,108,210,164, 41, 17, 10,133,120,249, 50,194,125,212, +168, 81, 53,157,157,157, 15,167,164,164,124, 97,233,206,219,219,219, 15,170, 86,173,218,138,141, 27, 55, 58,180,104,209, 2,132, + 16, 4, 7, 7,187,127,251,237,183,117, 92, 92, 92,246, 36, 39, 39,127,101,169,166,131,131,131, 79,181,106,213,218,174, 93,187, + 86,210,188,121,115,136,197, 98, 60,124,248, 80, 62,122,244,104, 23, 23, 23,151,167,201,201,201,151, 45, 53, 87,143,131,143,246, + 52,234,181, 75, 0,128, 39, 16, 77,110,250, 83,238,209,204,224, 43,221,202, 75,235, 51, 23,135, 88,147,197,194,194,194,242, 1, + 26,172,222, 1,100, 30,120,152, 14,128,116,174, 78,246,156,141,226, 94,109,223,190,189,247,240,225,195, 73,189,122,245, 16, 28, + 28,236,179,103,207,158,143,121, 60, 94,132,201,100, 10, 6, 16, 98,110, 47,212,132, 16, 62,128, 64, 46,151, 91,255,125,214,124, +207,145, 21,236,119, 10,128, 59, 5,105,119,138, 47,116,225,194,133, 35, 60, 30,175, 48,130,213, 72,169, 84, 58,227,205,168,151, + 57, 84, 49, 24, 12, 8, 15, 15, 7,135,195,225, 3,240,194,159,135,190, 40,237,188,184,187,187,187,175,191,121, 39,216,158,240, + 36,200,210, 0,208,232, 33,148, 59, 99,243,214, 29,118, 19,190,249,234, 83, 43, 43,171,171,185,185,185,191, 89, 96,248,188, 60, + 60, 60,126,122,244,232,145,189, 84, 42, 5,195, 48,200,203,203,131,139,139, 11, 54,109,218,100, 51, 97,194,132,129, 18,137,228, +146, 90,173,254,221, 18, 83, 94,173, 90,181,182, 79,158, 60,145, 20, 14,244,172,211,233,224,238,238,142, 93,187,118,137,198,141, + 27, 87, 67, 36, 18,197,107,181,218, 72,115, 53,115,149, 70,190, 81,175, 93,178,125,221,156,202, 0, 48,244,171, 57, 75,132,121, + 86, 39,204, 73,203, 85, 26,143, 3, 96, 13, 22,203,223, 10, 33,164,190,131,131,195,129,244,244,244,203, 0,190,120, 23, 93,137, + 16, 66,220,120, 60,158, 23,165,212,166,224,119,182,209,104,140,162,148, 38, 86, 84,211,193,187,109, 55,136,164,159,129, 50,117, + 56, 0, 8,135,243,208,164, 87,109, 77,127,118,241,232, 91,105, 10, 37,159, 3,180, 14, 7, 96, 8,135,243,136, 49,170, 54,165, +133, 93, 60,201, 94, 25, 44,239,204, 96,245, 9, 32,182, 0,166,236, 89, 51,157,195,227,114,201,128,111, 22, 13,220,178,110, 25, +167,125,183, 62,175,139, 73, 90,182,108,137,150, 45, 91,146, 37, 75,150, 84, 63,127,254,124,245, 93,187,118, 25, 9, 33,143, 40, +165,123, 75,219, 88, 39,111,162,102, 0,241,199,126, 60,229,128,239,127,219,216,184,113, 99,136, 68, 34,188,141, 38, 0,116,168, +206,141,236,210,216,251,209,128,177,179, 98,154, 52,105, 70,223,133,230,191,136, 59,148,210, 30, 5, 15, 46, 91, 15, 15,143,230, + 70,163, 81, 12, 0, 60, 30, 79, 3, 96, 44, 45, 24,226,135, 16,114,152, 97,152,238, 22, 60, 24, 57, 0,102,119,239,222,125,230, +215, 95,127, 13, 15, 15, 15,140, 27, 55, 14, 6,131, 33,152, 16, 50, 11,192,226,242, 58,242,115,114,114,154,181,126,253,122, 59, +158, 80,134,122, 83,162,144,148,109, 4, 0,200, 69,192,145, 49, 20,227,198,141,179,186,119,239,222,124, 0,102, 27, 44, 39, 39, +167,121,155, 54,109,178,147, 74,165,160,148, 34, 63, 63, 31,121,121,121,200,207,207, 71,126,126, 62,190,250,234, 43,171,167, 79, +159,254, 8,192,108,131,229,236,236,220,124,237,218,181, 18,177, 88,140,252,252,124,129, 94,175, 39,121,121,121, 80,169, 84, 84, +167,211,233,199,142, 29, 43, 10, 9, 9,105, 3, 32,146,125,108,188, 55,102,128, 11,224, 19, 62,159,223,203,219,219,187,193,139, + 23, 47, 30, 24,141,198,131, 0, 14,190,237,159, 40, 66,200, 71,110,110,110, 11, 18, 19, 19,215, 82, 74,119,252, 87,142,169,179, +179,243,193, 27, 55,110, 84, 94,191,126,253,176,229,203,151,159,176,228, 30, 42,229, 79,111,211, 70,141, 26, 57,244,234,213,139, +239,226,226, 2,149, 74,133,136,136, 8,233,185,115,231, 28,197, 98,113,134, 86,171,189,105,201,185,114,240,109, 46, 7,207,106, + 79,211,182, 65, 45,250,126,250,137,194,217,222, 26,106,157, 9, 47, 98,146, 60, 78,157, 56,210,218,173,230,199, 55,244,250,156, +254,233,207,174,231, 91,170,217,182, 83,215, 22, 65, 31,125,164,176,182,177, 70,142, 82,143,151,209, 9,158, 23,207, 30,109,233, + 90,243,227, 43, 12, 49, 12, 78,121,124, 70,197,222,117, 44,150, 96,118, 37,119,169, 84, 90, 98,186,181,181, 53,218,182,109,139, + 69,139, 22,241, 0,212, 47, 58,239, 79,131,159, 2,162, 99, 27,166,193, 90, 38,226,120,120,120, 40,172,172,172,222, 90,243, 85, + 34,227,213,204,131,118,190,251,219,244, 97,231,118,173, 8, 84,230,101,243,139, 47, 34,151,203,225,235,235,139,153, 51,103,154, +167,249,150,252,221,154,174,174,174,126, 45, 91,182,172,127,225,242,101,155,196,196, 68, 81, 98, 98,162,232,204,133, 11, 54, 77, +155, 54,173,239,234,234,234, 87, 68,195,146,124,254,176,110,221,186, 89,135, 15, 31,230,180,108,217, 18,182,182,182,104,219,182, + 45, 78,156, 56,193, 91,190,124,249, 66, 0, 51,203,203, 39,135,195,105,209,178,101, 75, 2, 74,145,156, 99,196,237, 69,126,120, +184,204, 31,121, 26,138,204,156, 92,168,213, 26, 72,165, 82,113, 65,177,174,185,251,222,172,105,211,166, 4,192,107, 83,149,151, +247,106,202,207, 87, 66,167,211, 67, 36, 18, 41, 8, 33, 98,115, 53, 41,165, 46,205,155, 55, 7, 0,232,245,250,215,101,173,217, +217,217, 36, 39, 39, 7, 58,157, 14,124, 62, 95, 64, 8,225,153,171,105, 37,227, 25,120, 2,209,228,161, 95,205,137, 27,250,213, +156, 56,158, 64, 52, 89,167,200, 53,153,147,102, 37,227, 25,254,201,235,147, 16,226,200,229,114,127,245,246,246,126,202,229,114, +183, 19, 66, 92,222, 70,147, 16,210,144, 16,178, 80, 42,149,158,171, 81,163, 70,156, 76, 38,187, 64, 8, 89, 76, 8,105, 90, 17, + 77, 66,136, 80, 42,149, 94, 88,184,112,225,254, 7, 15, 30,244, 61,127,254,188,215,227,199,143, 63, 93,178,100,201, 30,185, 92, +126,149, 16, 34,125,155,123,211,203,203,107,203,237,219,183, 27, 54,107,214,108, 51, 33, 68,244, 46,238,119, 66, 8,151, 16, 82, +151,152, 57, 38,208,223,125,222, 9, 33,110,245,234,213,171, 44, 22,139, 17, 20, 20, 4, 0,109,222, 82,179,233,232,209,163, 93, + 38, 76,152,192,127,248,240, 33, 54,111,222,140,195,135, 15, 35, 53, 53, 21, 93,187,118, 21,180,107,215,206, 69, 36, 18, 53,181, + 72,147,103,181,231,155,111,199,119,154, 52,110,132,226, 81,172, 30, 91,207,197,226,208,205, 36,164,170,132,232,246,233, 80,235, +142, 61,250,117, 20,138,172,247, 88,170, 57,117,202,148, 78, 35, 63, 31,168, 8, 77, 98,112,228, 86, 50,110,133,231,192,200,183, + 65,151, 79,191,176,173,211,188,211,199, 60,240,183,189, 15,231,232, 67,215,252, 96, 35, 88,132, 16, 74,233,171, 65, 92,247,135, +210,172,222, 1,228,199,126, 95, 47,156, 73, 56,132, 86, 9,108, 22, 90,169, 90,128,210,222,222, 30, 42,149, 10, 90,173, 22, 2, +129, 0, 26,141, 6,177,177,177,184,117,235, 22,108,109,109, 45,218,112,110,110, 46,228,114, 57,228,114,249, 59,209,156, 54, 44, + 72,244, 50, 46, 77,116,250,214,165,214,171,190,252,189, 73,181,186,109, 30,127,212,111,220, 19, 43, 71, 55,205,227,199,143,113, +227,198, 13,100,101,101,161,113,227,198, 31,202,185,187, 83,240,156,190, 67, 8,177,109,217,178,165,251,233,115, 87,108,243, 53, +140, 85,116,138,129,207, 48, 12,164, 82, 87,227,222, 3, 71,114,250,126,218,141, 16, 66, 82, 1,220, 41, 48,181,119,202,121, 17, +136, 1,248,245,238,221,123,234,151, 95,126,137,136,136, 8,140, 24, 49, 66,125,231,206,157,140,102,205,154,217,111,218,180, 73, + 50, 97,194, 4, 92,190,124,121, 54, 33,228, 15, 0, 81,148, 82, 77, 41, 55,161, 64, 32, 16,192, 88, 96, 23,244, 38,230,181,175, +207,205,205, 5, 85,103, 65, 32, 16,112, 1, 56, 2, 48,171,158, 28,195, 48, 2, 62,159,255,218, 92,197,166,228, 34, 54, 85,133, +220,124, 29,212,106, 35,116,106, 10,174,212,158, 7, 68, 59, 3,136, 54,243,120,114,197, 98, 49,140, 70, 35,242,242, 94,101,163, + 48, 50,166,211,233,144,147,147, 3, 46,151, 43, 7, 96, 5, 32,211, 28,193, 87,149,215,113,168,160,184, 15,119,119,118,119,120, +113,124,154,190,247,156,167,175,211,172,100, 60,195,129, 9, 53,184,246,238,117,174,213,237,187,205,191, 48,237,159,172,127, 69, + 8, 17, 57, 58, 58, 94,220,191,127,127,141,234,213,171, 35, 42, 42,202,191, 79,159, 62,141, 9, 33,117, 45, 29, 51,145, 16, 34, +229,112, 56, 63,126,246,217,103, 95, 14, 24, 48,128,248,248,248,128,199,227,193,104, 52,186, 71, 68, 68,180,221,183,111,223, 20, + 30,143,183,201,100, 50,125,103,110,189, 62, 66, 8, 71, 40, 20,238,221,184,113, 99,171,198,141, 27, 99,251,246,237,184,115,231, + 14,211,176, 97, 67,206,144, 33, 67,224,233,233,217,120,200,144, 33,135, 8, 33, 93, 42, 18,201, 34,132,120, 14, 26, 52,168, 50, +151,203, 69,179,102,205, 4, 55,110,220,168, 7,224,198, 91, 30, 83,185,187,187,251,229, 54,109,218,212, 61,119,238,220,125, 66, + 72, 27, 75,234, 49, 18, 66,122,184,185,185, 45,177,182,182,182,181,224, 25,171, 74, 72, 72,152,104,193,120,164, 77,234,215,175, +143,152,152, 24,248,249,249, 65, 32, 16, 52, 37,132,140, 2,208, 9,192, 12, 75, 70,135, 32,132,184, 53,109,218,212,161, 77,155, + 54,100,241,226,197, 0, 0, 62,159, 15,147,201, 4, 14,135, 3, 62,159, 15,127,127,127, 18, 25, 25,105, 71, 8,113, 51,167,184, +208,193,187,109,183,102, 31,117,106,209,170,113,109,206,242, 3, 47, 96, 98, 76,224, 18, 35,120,132, 1, 99, 16, 65, 36,224,194, + 39,176, 1, 55, 60,228, 81, 99, 7,223,246,221,210,159,157, 61,106,142,102,167,110,221, 91,214,240,243,225,172, 58,244, 18,217, + 9, 79, 77, 9, 97, 87,210, 57, 92, 14,106,212,111,231,224, 19, 80,151, 91,183,113, 27,126, 98, 84, 72, 91,187,234,173,131, 50, + 95, 92,102, 77,197, 95,255,252,121,237, 69, 62, 24,131, 85,156, 3,161,116,150,149,144,120,237,219,183,155,147,150,167, 87, 70, + 68, 68,192,193,193, 1,174,174,174,176,182,182, 70,104,104, 40, 46, 92,184,128,103,207,158,129, 97, 24,212,169, 83,199,162, 13, +167,167,167,227,209,163, 71,176,181,181,125,103,154,213, 42, 59,226,235,202,142,130,148,140, 92,193,185, 59,207, 26,255, 50,237, +211, 0,142,255,167, 91, 52,154,255,191,251,117,186, 15, 99, 36,145,162,173, 5, 61, 60, 60,154,111,221,186, 85,160, 53, 66,225, + 51,234,230, 82,165,198, 36, 3, 0,153,152,171, 12, 94,226,251,221, 15, 63,252,160,252,252,243,207,253, 99, 99, 99, 23,149,167, + 43, 20, 10, 23,116,238,220,121, 18,165,148,255,205, 55,223, 0, 0,134, 14, 29,154,123,235,214, 45, 31, 74,105, 42, 33,196,109, +248,240,225,207, 47, 94,188, 40, 29, 63,126, 60,215,104, 52,134,242,120, 60, 74, 8,153, 71, 41,157,243,167, 16, 41,135,115,239, +254,253,251, 85,220, 60,125,225,105,207, 65,203,153,175,134, 83,179,151, 50,136,143,126,137,176,199,119,224,226,226, 98,237,234, +234,250,212,207,207, 79,159,144,144, 48, 37, 63, 63,127,125, 89,121, 20, 8, 4, 15,131,131,131, 93, 61, 61, 61,145,159,159,143, +248, 52, 21,198, 29,148, 34, 87,253, 42,104,193,135, 26,117, 43,251, 42, 36, 28,221, 29,103,103,103,189, 78,167,251, 62, 59, 59, +187,204,225, 62,248,124,126,198,227,199,143,229, 30, 30, 30,208,104, 52, 52, 51, 51,147, 40,149, 74,228,229,229,145,227,199,143, +247, 76, 74, 74,106,232,229,229, 69,220,221,221,231, 85,175, 94, 93,157,144,144, 48,194,156, 58, 94,251,103,251,235, 9, 33, 38, + 30,143,183,124,228,200,145,125,255,248,227,143,123, 7,230,212,232, 65, 41,213, 23, 60, 76,172, 3, 3, 3, 79,215,174, 29,224, +182, 99, 89,173,213,148,210,165,239,193,229,245,217,244,233,211,107,216,217,217, 97,244,232,209,152, 59,119, 46,102,205,154, 85, +125,244,232,209, 35, 1,252,100,193,131, 82,226,226,226,114,119,213,170, 85,254,205,155, 55,199,137, 19, 39,176,123,247,110, 68, + 70, 70, 26,189,188,188,120,141, 27, 55,198,236,217,179,209,177, 99,199, 17, 99,199,142,109, 77, 8,169,103,166,233,248,124,246, +236,217, 61, 90,180,104,129, 97,195,134,105, 47, 93,186,212, 23,192,153,179,103,207,182,187,124,249,242,129,157, 59,119, 74, 22, + 46, 92, 24, 52, 97,194,132,209, 0,214, 84, 96,255,123,182,106,245,106,108,227, 22, 45, 90, 96,201,146, 37, 29,223,198, 96, 17, + 66,132,246,246,246,199,183,111,223, 94,215,215,215, 23,131, 7, 15,174,215,183,111,223,227,132,144,246,148, 82,179, 30, 72,149, + 42, 85,250,241,240,225,195,222,165,149, 36,148,132, 86,171,181,251,228,147, 79, 22, 3,176,200, 96,237,218,181, 11, 19, 39, 78, + 68,157, 58,117,106, 55,105,210,100,195,168, 81,163,208,187,119,239,143, 8, 33,206,148, 82,165, 89, 47, 22, 30,207,171,107,215, +174,252,131, 7, 15, 2, 0, 90,181,106,133,160,160, 32, 60,121,242, 4,215,174, 93, 3,151,203,133, 76, 38, 67,243,230,205,133, +137,137,137, 94, 0,202, 53, 88, 28,145,244,179, 30, 93,187, 40,142,220, 74,130,137, 49,162,129,183, 21, 26,251, 59, 33, 60, 62, + 23,193, 79,227, 97,210, 9, 96,101,103,143,166,173, 59,216, 37, 39, 68,126, 6,160,252,250, 88, 34,233,103,189,122,124, 44, 63, +114, 51, 17,217,137, 97,244,197,157, 63, 46, 24, 52,202, 17, 0,112,239,252,158, 13, 46,246,146,246, 62,245, 27,112,219,180,239, +110,123,112,119,242,103, 0, 88,131,197,242,246, 6, 11, 0,242,244, 72,249,232,227, 79,113,255,254,125, 0, 64, 70, 70, 6, 50, + 50, 50,224,237,237,141, 53,107,222,124,110, 85,196,184, 48, 12,243,206, 53, 1,192,217,222, 10,131,187, 52,226, 93,123,180, 91, +172, 76, 75, 19,203,229,114,205,135,102,176,138, 98, 52, 26,197, 94, 94, 94,200, 85,131,228,168, 12,242,244, 61,175, 34,251, 14, +253, 47,201,117, 58, 29, 71, 46,151, 67,171,213,138,205,120, 17,240,123,244,232, 49,105,239,222,189,252,176,176, 48, 84,171, 86, + 13,122,189, 30,183,110,221,138, 47, 24,160, 24,148,210, 68, 46,151,155,200, 48, 76,245, 58,117,234, 96,209,162, 69,240,247,247, + 39, 93,186,116,153, 82, 96,178,152,162,154, 73, 73, 73, 63,142, 26, 53,170,221,190, 3,127,216,109,236,167, 70,110, 78, 46,242, +243,243,241,240,193, 61,100,166,104,240,203, 47,191, 64, 44,150, 16, 0,130,212,212, 20,193,248,241,227, 87,187,187,187,119,138, +143,143,239, 90, 90, 62, 19, 19, 19, 23,124,245,213, 87, 77,247,236,217, 99,147,151,151, 7,181, 90,131, 76,165, 20, 79, 87,190, + 26, 95,183,198,183, 79,177,110,237,122, 78,173, 42, 50, 7,149, 74,133, 47,191,252,114,133,155,155, 91,243,196,196,196,225,165, +105, 38, 36, 36,220,254,250,235,175,157,119,238,220, 41,214,233,116,122,147,201, 4,181, 90,205,217,179,103,207,148, 42, 85,170, +216,110,218,180,137,136,197,146,130,101,227, 5, 99,198,140,217,235,226,226,178, 51, 57, 57,121, 88, 57,199,148,203,229,114, 87, +238,216,177, 99, 72,191,126,253, 20, 73, 73, 73, 1,135, 15, 31, 22, 1, 80, 23, 44,226,218,190,125,251, 42,203,150, 45,115, 12, + 12, 12,156, 66, 8,225, 83, 74,255,209, 65,195, 29, 28, 28,198,246,232,209, 3,139, 23, 47,198,209,163, 71, 39,216,217,217,173, +152, 59,119, 46,220,220,220,190, 38,132,172,180, 96, 0,221,165, 63,253,244,147,191,191,191, 63,134, 14, 29,170, 59,119,238,220, +116, 0,135, 0,196, 92,189,122,213, 99,219,182,109,221,246,238,221,187,120,213,170, 85,226, 53,107,214,120,127,250,233,167, 43, + 1, 12, 47,247,254,118,118, 30, 63, 96,192, 0, 44, 91,182, 12,151, 46, 93,250,148, 82,122,162, 96,214, 73, 66, 72,183,133, 11, + 23,158,159, 57,115, 38,126,250,233,167,111, 44, 53, 88,132, 16,121,141, 26, 53,190,239,212,169, 19,174, 94,189,138,150, 45, 91, +162,105,211,166, 19, 8, 33,171, 41,165,233, 21, 48, 87, 28,185, 92,190,119,235,214,173, 45,171, 84,169,130,249,243,231, 99,210, +164, 73,216,178,101, 75,203,193,131, 7,239, 37,132,244, 42,126,207,148,132,181,181,181, 92, 42,149, 98,202,148, 41, 52, 50, 50, + 50,171,188,229, 43, 87,174,108,187, 98,197, 10, 98,107,107,107,109,174, 25, 22,139,197,205,106,214,172,137,217,179,103,227,236, +217,179,152, 57,115, 38,106,214,172,137,152,152, 24,244,239,223, 95, 58, 99,198,140,222, 0,204, 26,151,144, 82,106,109,111,111, +143,212,212, 84,240,249,124, 52,111,222, 28,135, 14, 29,130, 86,171,133,147,147, 19,178,179,179,209,168, 81,163, 66, 51,102,109, +222,209,164, 53, 29,236,172,145, 26,146, 0, 30,140,168,239,227,128,139, 79, 50,160, 55, 48,112,178,183, 65,114,106, 10,154,212, +116,135, 78,231, 1, 74,153,154,230, 40, 10,185,156,250, 34,177, 4,153,121,233, 72,120,122, 41, 67,111,210,142,202,142,188, 22, + 7, 0,118,213, 90,141,186,119,237,236,189, 62, 31,183,114,202, 87, 86, 6,161, 76, 35,214, 50,176, 88, 2,199,140, 27,229, 79, +105, 42,213,159, 75, 9,222,214,184,252, 21,154, 37,241, 33, 26,172, 66, 10, 7, 71,214, 25, 24,232, 12, 76,225,191, 88,168,213, +106,115,163, 98,134,211,167, 79,111, 31, 55,110, 28, 86,172, 88,129,231,207,159, 67, 32, 16,160,102,205,154,174,132, 16,121, 97, +196,165,126,253,250, 78, 28, 14, 7,225,225,225, 88,190,124, 57, 62,255,252,115,122,227,198,141, 45, 37,189, 40, 40,165, 15, 50, + 51, 51,215,142, 26,241,121,118, 86, 74, 44, 12,234, 44,164, 38,188,132, 86,153,141,249,139,126,132,202,192, 67,114,142, 30,201, + 57,122,112, 68,118,216,176,105, 43,183, 70,141, 26,157,120, 60, 94,215, 50,242,121, 43, 37, 37,101,211,152, 49, 99,178,147,147, +147, 95,239,159,206, 64,161, 51,188,121,189, 74,165, 82,172, 92,185,210,218,199,199,167, 7,159,207,111, 91,134,102, 82, 92, 92, + 92,216,152, 49, 99,116, 41, 41, 41,200,201,201,193,145, 35, 71,186, 85,169, 82,197,118,241,210, 21, 68,169,231, 33, 57, 91,143, +228,108, 61,132,114, 39,236, 61,240, 7,215,215,215,119, 32,159,207,111, 90,158,185,218,185,115,231,144,126,253,250, 41,150, 46, + 93,154,121,248,240,225,117,148,210,162, 39, 36,124,229,202,149,251,246,238,221,155, 55,105,210, 36,187, 37, 75,150, 76, 32,132, + 76,255, 7,195,243,109,251,245,235,231,199, 48, 12,246,239,223,255,152, 82,250,211, 31,127,252,113, 87,171,213,162,127,255,254, + 94,120, 85, 92,100,142, 78,195,129, 3, 7,126,217,178,101, 75,124,251,237,183,250,115,231,206,213,167,148,174,160,148, 70,211, + 87,196, 80, 74, 87, 95,190,124,185,206,216,177, 99,181,141, 26, 53,194,176, 97,195, 62, 39,132,180, 44, 71,183,217,128, 1, 3, +252, 25,134,193,158, 61,123, 30, 21, 49, 87,133,231,241,194,129, 3, 7,110,233,116, 58, 12, 26, 52,168, 42, 33,164,157, 5,251, + 46, 16,137, 68,251,127,248,225, 7,155,132,132, 4, 12, 25, 50, 68, 27, 30, 30,142, 57,115,230, 72,172,173,173, 79, 20,222, 3, +150, 32, 18,137,126,249,249,231,159,123,212,170, 85, 11, 99,198,140,209,173, 95,191,126,220,151, 95,126,169,171, 95,191, 62,214, +173, 91,215, 67, 40, 20, 90, 52, 4, 72, 98, 98, 98,118,104,104,168,125,121, 83,124,124,124,138,153,251, 44, 85, 40, 20, 55, 3, + 3, 3,115,107,214,172,217,192,104, 52, 34, 52, 52,244,229,246,237,219,153,154, 53,107, 98,237,218,181, 88,178,100, 9,186,118, +237, 10, 46,151,219,219,146,188, 42,149, 74,136,197, 98, 8, 4, 2, 4, 7, 7, 67,171,213, 66, 42,149, 66, 44, 22,131,203,229, +194,198,198, 6, 10,133, 2, 0,168,121,121, 5,205, 85, 25,192,231,115,192,227, 48, 8,139,201,129,222,192, 64, 44,224,130,207, + 35, 0,101, 96, 35,227, 67, 44,228,130, 67, 8, 99,166, 38,114,148,122, 8, 5, 28,240, 5, 66,194, 49,154, 36,175, 95,142, 60, +147, 68, 34, 17, 18, 7, 43, 17,196, 2,182, 79,110,150,119, 28,193, 42,140, 50,153, 99, 82,180, 90,237, 59, 55, 62,111,171, 89, +146, 57,124, 91,205,247,242, 36,242,120,154,103,207,158, 9,173,236,221, 24,123, 5, 63,171,202,231,215,172, 1,192, 78,206,203, +209,155, 12, 76, 98, 98, 34, 68, 34,145,198, 28, 45,141, 70, 51,130, 16, 50, 31, 64, 0,143,199, 59,182,117,235, 86,178, 99,199, + 14,219, 1, 3, 6, 68, 16, 66, 18, 2, 3, 3, 61,183,110,221,106, 5, 0,171, 87,175,166,123,247,238,237,136, 87, 93, 95, 36, +151,166,153,156,156, 60,135,207,231,223,248,234,171,175,214, 8,133, 66, 91,153, 76,102,127,245,234, 85,162,209, 83, 52,156, 30, +243,186,101,161,149,132,131, 43,211,172, 48,114,228, 72,238,211,167, 79, 23, 1, 56, 86,134,230, 20,145, 72,116,245,249,243,231, + 43,172,221,235, 58,202, 60,167, 91, 55,158, 22, 14, 0,240,116,224,131, 83,240, 60,204,206,206, 70, 90, 90, 26,190,252,242, 75, +219,136,136,136, 41, 0, 46,150,166, 25, 31, 31,127, 89, 36, 18,197,135,132,132,180,225,243,249, 66,153, 76,214,240,230,205,155, + 68,163, 99, 80,123, 74, 12, 50,243, 95,229,211, 78,206,195,189, 31,156,241,245,215, 95,243, 94,188,120,241, 35,128, 22, 37,254, +123,225,112,150, 20, 53, 87,147, 39, 79,126, 8,160, 42, 33,228,141, 34, 80,147,201, 68, 6, 13, 26,244, 4, 64,205, 73,147, 38, +217, 81, 74, 39, 16, 66, 50, 41,165, 27,255,238,107,201,202,202,106,241,168, 81,163,176,119,239, 94,100,101,101,173, 4,128,220, +220,220,159,118,237,218,181,103,196,136, 17,248,237,183,223, 22, 19, 66, 78,153, 17,197,234,220,191,127,127,156, 60,121, 18,231, +207,159,255,158, 82, 26, 90,202, 61,250,156, 16, 50,229,240,225,195,171, 6, 12, 24,128, 95,127,253,181, 19,128,171,101,232,182, +239,216,177, 35, 78,156, 56,129,140,140,140,117, 37, 45,144,157,157,189,254,200,145, 35, 77, 58,118,236,136, 69,139, 22,181, 7, +112,193, 12,163,225,111,109,109,189,117,213,170, 85, 13,107,213,170,133,129, 3, 7,106,244,122,125,167, 73,147, 38, 29,221,189, +123,183, 98,251,246,237, 13, 70,142, 28,121,155, 16,242, 5,165,244,150, 57,199,146,203,229, 46, 92,179,102,205,240, 54,109,218, + 96,194,132, 9,198,211,167, 79,119,167,148,158, 33,132, 68, 76,158, 60,249,248,242,229,203,185,203,150, 45, 27,206,229,114,211, + 76, 38,211, 63,101,170,127, 88,189,122,117,147, 14, 29, 58,224,229,203,151,184,117,235, 22,244,122,253,111, 55,111,222,188, 82, +189,122,245, 31,116, 58,221, 81,153, 76, 54, 84,161, 80, 4,214,173, 91,183, 29, 33, 68,106, 78, 61, 60, 66, 72,118, 68, 68,132, +204,201,201, 9,124, 62, 31,143, 30, 61,130,147,147, 19, 0, 32, 53, 53, 21, 53,107,214, 4,151,203, 69,118,118, 54, 0,228,152, +103,134, 56,143, 35,162, 19,171,218, 41,100,128, 73,140, 7,225,241,112,116,176,133,137,112,144,156,156,132,186,126,238, 32,132, + 32, 59, 35, 25,132,144, 39,230,104,154, 40, 19, 28,155,152, 90,201, 94, 33, 66,173, 38, 29,236,111,158, 74,219, 97, 93,173,197, + 72, 30,151,112, 69, 98,171,141,195,135, 13,115, 96, 24,138,236,140, 20,240, 56,156, 59,172,101, 96,169, 80, 4,171,180, 74,101, +175, 42, 75, 75,203, 52, 41, 98,177,248,117,244,196,130,127,118,239, 92,179, 60,254, 10,205,127, 48,210, 48,141, 16,114,152, 16, + 50, 45, 46, 46, 46,108,248,240,225,122,163, 94,155,119, 99,126,213,169,247, 23, 85, 25,115,115,142,235,152, 67,227,172,167,170, +114, 50,243, 86,175, 94,109,136,139,139, 11, 43,186, 78, 57,198, 52,150, 82,122, 98,219,182,109,235,247,239,223,143,154, 53,107, + 34, 52, 52,212, 73,169, 84,214,123,242,228,137,157,191,191, 63,118,236,216,129,189,123,247,174,160,148,158, 45,203, 92, 21,137, +174,157, 75, 74, 74,242,141,137,137,241,182,177,177, 49,216,216,216,160,120,203,194, 92, 53,131,140,236, 28,216,217,217,195,202, +202,202,171, 60, 77,173, 86,123, 34, 41, 41,201,135,177,245,107,229,147,190, 50, 39,120, 97,101, 4, 47,172,140, 19, 83,220,224, +106, 35, 68, 86, 86, 22,210,210,210,144,150,150, 6, 66, 8, 12, 6, 67, 13, 51, 52, 35, 19, 19, 19, 55,199,198,198, 30,118,118, +118,134, 66,161, 0, 5,144,156,109,192,195,101,254,120,184,204, 31,201,217, 6,228,230,229,161, 74,149, 42, 80, 40, 20, 53, 75, + 57, 63,156, 74,149, 42,117,233,215,175,159, 2, 0, 10,140,211, 71,148,210, 49, 37, 76,163,141, 70, 99,243,194,101, 39, 78,156, +104, 7,160,227,223,124, 61,113, 9, 33, 95,141, 24, 49,162,129, 88, 44,198,218,181,107, 35, 1,236, 44,152,189,127,253,250,245, +225, 0, 48,110,220,184, 64, 0, 19, 10,186, 72, 40, 21,129, 64, 80,191, 70,141, 26,184,121,243, 38, 0,252, 81,206,230, 15,220, +184,113, 3,213,171, 87,135, 88, 44,110, 88,206,178, 94,149, 43, 87, 70,120,120, 56, 0, 60, 40,101,153, 7,225,225,225,168, 92, +185, 50, 8, 33, 94,102,236,123,143, 14, 29, 58, 60,190,120,241, 98,195,102,205,154, 97,248,240,225,186,219,183,111,119,161,148, + 94,121,240,224, 65,219, 65,131, 6, 41,125,124,124,112,249,242,101,255, 65,131, 6,221,224,114,185,243,205,208,252,124,222,188, +121,211,122,246,236,137,121,243,230,209,125,251,246, 13,164,148,158, 41,184,191, 78,239,217,179,103,200,130, 5, 11,104,175, 94, +189, 48,119,238,220,105,132,144, 49,229, 68,131,114, 76, 38, 19,148, 74,165, 89, 33,120,115,151,119,112,112,232,220,161, 67, 7, +204,156, 57, 19,149, 42, 85,194,209,163, 71, 41,128, 99,148,210,171, 90,173,182, 21,165,116,185, 82,169, 60,116,243,230, 77,180, +111,223, 94, 0,224, 99,115,182,111, 52, 26,163, 47, 94,188,168,183,183,183,135,187,187, 59, 60, 60, 60,160, 84, 42,145,157,157, +141,154, 53,107,162, 73,147, 38, 80, 42,149, 56,118,236,152, 62, 59, 59,219,172,134, 40, 70,157,114,251,217,227, 7,115,236, 21, + 34,184, 59, 89,163, 74, 37, 59,228,103,167, 35, 45, 57, 17,245,107,120,160,117,253, 42, 72,207,209,225,244,177,131, 89,121,121, +170,237,102, 69,253,181,170,173,231, 78, 29,205,177, 85, 8,224,235, 23,136, 65,195,199,213,173, 91,175,241,217, 70,141,154,159, + 94,186,120, 97,237,143,154,214, 32,241,233, 26,156, 60,246, 71, 86, 78,110,238, 86,176,252,229,124, 40, 21,220,223, 48, 88,165, +144, 62, 97,194, 4,136, 68, 34,184,186,186,190, 54, 69,133, 38, 69, 40, 20,194,213,213, 21, 70,163, 17,123,246,236, 1,128,244, +114, 54,166,237, 62,102, 17,163, 53, 80, 21,159,207,127, 39,154, 5,145, 2,237,167,147,127,101, 78,221, 40,185,145, 75, 69, 52, +255, 5, 52, 42,232,211,170, 17,165, 52, 43, 58, 58, 58,190,239,167,221,115, 98, 34, 66,146,149,217,137, 73,185, 25,113, 73,113, +145, 79,146,167, 79,153,144, 19, 31, 31, 31, 87,208, 23, 86,163,196,196,196,238, 0,204,173, 75, 48,161,111,223,190, 63,143, 24, + 49,130, 62,124,248, 16, 0, 16, 28, 28,140, 97,195,134,209, 33, 67,134,172, 4, 48,181, 2,249, 86,170,213,234, 55,162, 31,122, + 19,243,186,104, 47, 55, 55, 23,137,137,137,208,233,116,102, 59,225,231,167,151, 61,203,140,190,103, 8,244,148, 33,208, 83, 6, +255,202, 82, 16, 99,254,107,115,149,150,150,134,148,148, 20, 0,208, 88,144,207, 92,173, 86,251, 70, 62,139, 22, 65,230,230,230, + 34, 57, 57, 25, 38,147, 73, 87,202, 67,130, 73, 72, 72, 56,189,119,239,222, 60, 0, 88,186,116,105, 38, 33,228, 60, 33,228,231, + 18,166, 13, 60, 30,239,122,225,178,203,150, 45,203, 4,112,226,111, 52, 87, 61,107,213,170,149, 53,109,218,180,181,223,124,243, + 13, 54,108,216,128,164,164,164,169,148, 82, 99,225,190,164,167,167, 79, 94,183,110, 29, 62,251,236, 51,204,154, 53,107, 89,189, +122,245,114, 9, 33,131, 74,211,116,116,116,116,231,241,120,184,127,255,126, 46,165,244,101, 57, 15,212,228,251,247,239,167, 16, + 66,224,234,234, 90,173,172,101,237,236,236,188, 21, 10, 5, 18, 18, 18, 0, 32,170,148,197,162, 19, 19, 19,169, 80, 40,132,155, +155, 91,245,242,246,223,214,214,118,242,230,205,155,121, 33, 33, 33,248,232,163,143,226, 47, 95,190,220,158, 82,122,169, 32,111, +247,131,131,131, 91,182,109,219,246,217,217,179,103,241,227,143, 63,146, 58,117,234,140, 41, 79,211,211,211,115,244,231,159,127, +142, 53,107,214, 96,227,198,141, 99, 40,165,251,139,237,243,238,117,235,214,141,219,184,113, 35,134, 15, 31, 14, 47, 47,175, 65, +101,233,197,196,196, 76,105,211,166, 77,240,243,231,207,205, 26,161,192,156,229, 9, 33,109, 27, 55,110,236,173, 86,171,177,117, +235,214,151,222,222,222,119,247,239,223, 63,129, 82,250,168,216,162,135, 14, 30, 60,136,193,131, 7,163, 78,157, 58, 91, 9, 33, + 3,204,120, 73, 38,198,196,196,164, 63,122,244,136,225,114,185,112,119,119, 71,151, 46, 93,208,191,127,127,212,169, 83, 7,169, +169,169,184,114,229, 10, 19, 17, 17,145,110,110,135,163,233,207, 46, 30,141,138,122,118,253,254,237, 43, 6, 30,151, 3, 15, 87, + 59,124, 18, 84, 23, 95,244,110,142,250,254,149, 16,147,170,198,133, 11,103, 13, 81, 81, 47,111,154,211,130,176, 80, 51, 44,244, +209,141,144,251,215,140,124, 30,129,191,159, 15,102, 78,159,108,187, 96,246, 20, 27,159,106, 30,120, 20,153,131,179,103, 78, 26, + 18,227,227, 46,178, 45, 8, 89, 44,165,188, 34,194,165, 27, 54,108,104,180,121,243,230,246, 19, 38, 76,144, 15, 29, 58, 20, 98, +177, 24, 42,149, 10,238,238,238, 48,153, 76, 56,117,234, 20,238,221,187,151,207, 48,204, 89, 20,107,254, 79, 8, 9, 42,218, 87, +198,169, 8, 42,121,213,121,165,170,209,225, 62,125,222,137, 38, 0,200, 95, 48, 86, 25, 85,116, 59, 86,239,191,214,107,215,233, +251,228,219, 1,173, 57,245,253, 42, 3, 0,156,157,157, 97,101,101,101,177,230, 59,120,105,253,229,154, 69,139,111,147,146,146, +194, 9, 33,169, 35, 70,140,240, 47,172,208, 46, 18,137, 52,113,113,113, 97,133, 29,141, 22, 95,167,188,124, 22,180,116,251,146, + 16,114, 36, 39, 39,231,244,164, 73,147,176, 96,193, 2, 28, 61,122,180, 37,165,244,122, 69,246,157, 82,106,242,242,242,202,190, +115,231,142,115,245, 26,245, 80,213,137,143, 86,223, 63, 7,165, 20,246, 82,138,188,236, 76, 60,120,112, 31,121,121,121,183, 45, +201,167,155,155, 91,118,106,106,170,131,147,147, 19, 50, 51, 51,145,158,158,254,218, 92,101,101,101, 33, 51, 51,147, 18, 66,174, + 90,160,169,244,246,246, 86,133,133,133, 9,157, 43, 87, 71, 53, 39, 1, 26, 79, 15, 7, 40,133,135, 29, 7,121,185,217,184,121, +243, 38,114,114,114, 46,149,166,201, 48,204,119,131, 6, 13,226, 2, 24, 50,105,210, 36, 59, 0,117, 38, 79,158,124,182,120, 75, + 65, 62,159,255,211,142, 29, 59,106, 22, 22, 37, 78,153, 50,101, 5,165,116,243,223,117, 45,217,219,219,127,119,252,248,113,133, + 94,175,199,234,213,171,177, 98,197,138, 45,148,210,223,139, 29,143,227, 92, 46,119, 29,135,195,249,234,235,175,191,198,168, 81, +163,164, 13, 26, 52,152, 80, 36,202,245,134,102, 66, 66,194,204,250,245,235,207, 74, 77, 77, 53,171,194,254,243,231,207, 71,214, +175, 95,127,102,106,106,234,146,178,206,145, 76, 38,147,153, 76, 38, 68, 69, 69,101, 81, 74,115, 74, 57,119, 26, 31, 31,159, 4, +147,201,228, 46,149, 74,237,202,187, 62,179,178,178, 22, 54,104,208, 96, 78, 74, 74,202, 25, 0,243,139,119, 57, 66, 41,125, 72, + 8, 9,252,230,155,111,198, 46, 94,188,184, 87,114,114,242,158,242, 52, 99, 98, 98, 22,182,109,219,246,251,103,207,158,109, 43, +173,168,151, 82,186,150, 16,162,223,177, 99,199,152,168,168,168, 69,101,105, 82, 74,143,161,140, 34,243, 18,180, 75, 92,190,168, + 38,151,203,157,188,120,241, 98,206,134, 13, 27, 64, 41, 93,102, 52, 26, 75,203,231, 35, 46,151,187,189,121,243,230, 67,247,239, +223, 47, 14, 12, 12, 28, 5, 96,119,121,215,167, 86,171,189,117,227,198,141, 38,209,209,209, 14,109,219,182, 21, 20,254, 49,201, +206,206,198,177, 99,199,244, 17, 17, 17,233, 74,165,242,150, 37,207, 16,163, 46,119,192,141, 11,135,119, 71, 63,127,210,180, 77, +167, 30,182, 58,189, 59, 68, 25, 92,100,103, 36,227,212,177,131, 89, 81, 81, 47,111,170, 84,217, 3, 44,209,212,107,115,250,223, +188,120,100, 79,124, 84, 88,147, 86,109,187,216,106,116,158, 16, 9, 56,200, 72, 73,192,169,227,135, 51,163,162, 34,175,106, 12, +218, 97,255,212,115,254,191,164,249, 33,134,227,202,157, 0, 8, 0, 4,201,229,242, 5,179,102,205, 90,118,251,246,237,101, 93, +187,118, 93, 38, 18,137, 22, 0, 8, 2, 32, 40,101,189,160,191, 83,179,161, 27,236,218, 86, 35, 87, 58,120, 19,102,116, 75, 91, +211,176,198, 50, 93,187,118,237,214,189,141,102, 69,167,191, 90, 19,192, 97,131,193, 64, 1, 36, 3, 56, 92, 48, 77, 43, 97,157, +105, 69,230, 39,199,198,198, 82, 0,135, 45,201, 39, 0,135,126,253,250, 49,121,121,121,180,111,223,190, 20,128,245,219,236,187, + 72, 36,106,219,170, 85, 43, 67, 74, 90, 38, 13,143, 76,160,183,130, 67,233,233, 11, 55,232,158,131,199,233,154,117, 27,105,237, +218,181,117, 0, 60, 45,209,228,241,120,237,218,182,109,155,145,146,146, 66,195,194,194,232,149, 43, 87,232,129, 3, 7,232,198, +141, 27,233,207, 63,255, 76, 43, 87,174,156, 2,192,217, 18, 77,137, 68,210,163,115,231,206,134,236, 92, 21,141, 74,200,160,143, +195,162,232,245, 59,143,233,169, 11,215,233,206,221,251,105, 64, 64,128,166, 60,205, 87,239, 49,238,154, 61,123,246,228, 82, 74, +105,143, 30, 61,226, 1,136,139,204,175,250,221,119,223,165, 82, 74,233,146, 37, 75, 50, 0, 76,255, 7,174,165, 78,149, 42, 85, + 10, 23, 8, 4,199, 1, 12, 41,103,189,254, 60, 30,239,168,139,139,203, 93, 0,159,252,221,247, 17,128,174, 78, 78, 78,183, 0, +116, 47,103,189,194,229,122,126, 8,247,251, 95,116,222,219,241,120,188, 43,120,213,199,149, 57,239,128, 31,184, 92,238, 9, 0, + 31, 89,146, 79, 0,110,114,185,188,133, 92, 46,239, 38,151,203,187,217,216,216,180, 0,224,246, 54,251,110,239, 19,212,205,163, + 94,247, 67,149,235,124, 28,227, 81,183,107,140, 87,253, 30,135,236,125,130,186,189,173,166,103,253, 30,135, 61,234,118,141,245, +168,219, 45,186,106,195, 30,135, 28,252,130, 58,127,104,231,253,125,214, 44,101, 59, 35,255,142,237,252, 37,121,183,112, 71,101, + 0, 62, 1,176,168,224, 83,246,182, 39,224,175,208,108,226, 10,223, 32,111, 18,214,197,143,151, 9,160,247,187,208,124, 15, 31, +142,219,116, 58, 29,213,104, 52, 84,165, 82,209,252,252,252, 55,140, 83, 81, 35,150,152,152, 72,227,227,227,105,108,108, 44,141, +142,142,166, 0,118, 90,154, 79, 43, 43,171,205,125,250,244, 49,241,249,252, 53,239, 98,223,237,236,236, 22, 53,110,220, 88,191, +106,213, 42,122,232,208, 33,186,105,211, 38,250,245,215, 95,211,154, 53,107,106,109,108,108, 6, 84, 68,211,197,197,101,166,159, +159, 95,198,150, 45, 91,232,206,157, 59,233,202,149, 43,233,140, 25, 51, 76,238,238,238,201, 10,133,162, 99, 69, 52,157,156,156, +126,105,209,162,133,254,151, 95,126,161,103,207,158,165,187,118,237,162,223,125,247, 29,245,247,247,215,202,100,178, 79,205,209, + 4,192,229,241,120,203, 71,143, 30,157,236,230,230,118,188,216, 60,105, 64, 64,192,221, 65,131, 6, 37, 2,152,194, 62,112, 89, + 77, 86,147,213,100, 13,214,135, 97,176,120, 22, 70,187,148, 0,254, 32,132, 28, 45,172,159,241, 14, 34,104,239, 92,243,102, 34, +125, 6,192,159, 16,194,123, 87,154,239, 33, 11,133, 66, 33,175,192,160, 22, 82, 82, 43,151, 59,110,110,110, 69,127,231, 0,176, +184,159,165,156,156,156, 47, 8, 33,227,138,117, 49, 80, 97, 50, 50, 50,166, 17, 66,246, 70, 70, 70, 46,178,177,177,169,111, 48, + 24, 12,185,185,185, 87,178,178,178,166, 80, 74,227, 43,162,153,148,148, 52,159, 16,114,100,230,204,153,147, 40,165,141, 56, 28, +142,198, 96, 48, 92, 74, 79, 79, 95, 68, 41, 77,171,136,102, 74, 74,202, 72,129, 64,240,107, 68, 68,196, 34,137, 68, 82,155, 97, + 24,157, 74,165,186,148,158,158, 62,158, 82,154, 98,230, 53,110, 2,240, 29, 33,100, 57,128,212, 98,243, 84,132,144,230,161,161, +161,246,148,210, 36, 54,166,206,194,194,194,242,223,168,131, 85,218, 11,227,157,155,150,127,139,230,123, 84,180,251, 2,192, 32, + 51,150, 91,244, 14,183,169,126,199,251,240, 24, 64,231,119,172, 25, 2, 96,200,187,212,212,235,245,183, 97,230,184,108,229,228, + 45,169,148,116, 61, 0,214, 92,177,176,176,176,124, 64,176,189,167,177,176,176,176,176,176,176,176,188, 99, 8, 94, 85,254, 46, +233, 95,181,217,173, 3, 8, 33, 65, 21,248, 55,127,142,213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,255,150,102, 17,237,210, +198, 54, 13, 47,166,247, 11,254,141,252,197,149,211,216, 10,128,172, 38,171,201,106,178,154,172, 38,171,201,106,254,231, 38,182, +136,144,133,133,133,133,133,133,133,229, 29,195, 26, 44, 22, 22, 22, 22, 22, 22, 22, 22,214, 96,177,176,176,176,176,176,176,176, +176, 6,139,133,133,133,133,133,133,133,133, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44, 21,135, 20,180, 6,120,245,131, 16, 74, + 41, 37,236, 97, 97, 97, 97, 97, 97, 97, 97,249, 71,140,201, 7,226, 69, 88,131,197,194,194,194,194,194,194,194, 26, 44,214, 96, +177,176,176,176,176,176,176,176, 6,235, 95, 96,176, 10,119,134, 53, 88, 44, 44, 44, 44, 44, 44, 44,255,164,177,250, 80,188, 72, + 97, 37,247, 54,132, 16,138,119, 48,160, 45, 11, 11, 11, 11, 11, 11, 11, 75, 5,248,160,188,200, 27, 69,132, 44, 44, 44, 44, 44, + 44, 44, 44, 44,172,193, 98, 97, 97, 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11,203,135,206, 95,218,209, 40, 33, + 36,136,213,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, 53, 88, 44, 44, 44, 44, 44, 44, 44, 44, 44,172,193, 98, 97, 97, + 97, 97, 97, 97, 97, 97, 13, 22, 11, 11, 11, 11, 11, 11, 11, 11,107,176, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,131,197,194,194, +194,194,194,194,194,242, 15, 65, 0,148,216, 18,128, 82,122,206,108,145, 10,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213, +100, 53, 89,205, 15, 79,179, 60,109, 75,252,199,123, 13,165,244, 47,155, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, +201,106,254,215, 38, 30, 27,196, 99, 97,249,151,115,128,112,145,229,231, 5, 74,221,192, 21, 38, 33,233,241, 75,204,166,204, 91, +107,166, 4,120, 66, 98,112,134, 81,156,134,148, 71,145,111,173,201,194,194,194,242, 31,130, 53, 88, 44, 44,255,118,210,252,125, +193,195, 34,112,224, 10,170,143,128, 99,192, 34, 0, 79,222, 90, 83,192,204,135,137,227, 14,170,127, 6, 39,191,197, 0, 66,217, +131,205,194,194,194, 98, 30,255, 72, 37,119,177, 88, 28, 44, 20, 10,127, 32,132,136,216, 83,192,242, 87, 65, 8, 17, 9,133,194, + 31, 36, 18, 73,240, 7,187,147, 59,106, 73,193, 49,117,214, 25,152, 74,167, 30,103, 59,169,180, 38, 95,112,140, 93,240,171,175, +252,173, 52,121,164,131, 70,207,120,236,188,163,114, 86,234,140, 53, 64,241,118,154,255, 63, 39, 54, 66,161,240, 20, 33,196,129, +189, 66, 63, 76, 2, 8,105,208,144,207,159, 88,131,144,118,132, 16,194, 30, 17, 22,214, 96,253,141,104,181,218,122,245,234,213, +155, 32, 20, 10, 99, 8, 33,221,255, 75, 7, 92,161, 80,220,176,182,182, 78,177,177,177, 73,177,182,182,190, 95, 94,250, 7,106, +124,124,157,156,156, 98,236,237,237,159, 21, 77,119,170,211,171,153, 79,139,161,179, 29, 2,123,182,126, 7,219,232, 46, 18,137, + 98, 26, 55,110, 60, 94,163,209,212,251, 96, 15,166,134,113, 6,135,219, 54, 36, 73, 37, 77,202, 53, 56, 7, 71,171, 20, 0,183, + 13,116,112,173,176,102, 14,227, 12,208,118, 15,227,213,178, 27,153,142,206, 87, 95,106,173,192,225,180,133,134,184,188,245, 3, +135,195, 25,195, 48, 76,123,129, 64,240, 45,251,248,253, 48, 17,114, 56,205,111,116,239, 62,127, 74,237,218, 99,253,129,110, 37, +153, 44,242,138,113, 53,106,212, 56, 73, 8,233,255, 14,159, 45, 63,250,251,251, 39, 16, 66,190, 97,207, 4,203,191,198, 96,245, +169, 74,154, 15,172, 70, 46,247,171, 74,242,250, 87, 35,249, 67,170,145,107,189,171,146,118, 21,221,240,149, 43, 87, 36, 97, 97, + 97, 78,173, 91,183,222, 35,145, 72,174, 17, 66,124, 42,162, 35, 22,139, 79,241,120,188, 62, 69,211,164, 82,233, 41, 30,143,215, +175, 88, 90,136, 84, 42,205,145, 72, 36, 47,205,212,125, 33, 20, 10,149, 98,177,248, 69,209,116, 30,143,215, 79, 38,147,157, 42, +150,214,167,120, 90,105,240,249,124,247,184,184, 56,167,248,248,120, 39,161, 80,232, 92, 52, 61, 54, 54,214, 41, 46, 46,238,141, +116, 75,225,243,249,237,228,114,249,129,226,105, 10,133,226,128,185, 26,114,185,252,119, 62,159,223,174,152, 49,252, 83, 90, 69, +205, 85,135, 14, 29,174, 37, 37, 37,121,216,216,216,216, 20,157,103,103,109,211,241,183, 45,235, 38,244,232,210, 97,140, 83,192, + 39,181, 42,168,239, 35,149, 74,175, 53,106,212,104,207,133, 11, 23,156,118,238,220, 41,253, 96,239,222, 3, 1, 2, 16,166, 21, + 67,169,227,211, 4,141,227,199,221,251,240, 30,196,169, 29, 13, 38,147, 29,192,109,131,109, 85, 68, 21,210,228, 25, 90, 50,148, + 58,159,143,230, 59,182,237, 59,150,123, 33,154,231,104, 48,153,236,193, 65,235, 10,105,254,255,220,240,185, 92,238,132,229,203, +151,115, 0,124, 77, 8, 17,254,151, 30,182,141, 43,145, 74, 31, 85,231,221,169,239, 70,154,191, 67, 67, 17, 40,147,201,238, 17, + 66,124,223,151,253,212, 49, 76,248,158,200,200,211,131,189,189,187, 78,169, 93,251,179,226, 38,171,224,251,148,197,139, 23, 15, + 9, 9, 9,113,172, 90,181,234, 40, 66, 8,231, 29, 28,139,149,139, 23, 47,158, 28, 18, 18,226,230,229,229, 53,247, 93,104,178, +188, 95,222, 29, 64, 91, 0, 31, 3,248, 8, 64,163,130,239, 13, 11,166,143,241,170, 87,132,162,159, 13, 11,214, 45,156,223,184, + 20,141,143, 75, 88,175, 97,145,244,162,191,139,127, 47,157,130,214, 0,180,232,103,241,169,159, 23,230,140,109, 86, 73,245,244, +232, 46,154, 31, 23, 73,179,194, 30,208, 7,191, 44,164, 99, 27, 58,170, 6, 86,197,143, 21,104,125, 64, 41,165, 52, 56, 56,152, +170,213,106,122,226,196, 9,198,217,217, 89, 35, 20, 10, 87, 2,144, 89,162, 37, 20, 10,243, 29, 29, 29,243, 36, 18,201, 86, 0, + 66, 74, 41, 68, 34, 81,190,139,139, 75,158, 88, 44,222, 1, 64, 68, 41, 69,199,142, 29,213,148, 82, 42, 18,137,148,230,232,118, +238,220, 89, 73, 41,165, 66,161, 80, 89,144,103,145, 88, 44,254,173, 65,131, 6,185, 34,145, 40,191, 32, 77, 40,149, 74,183, 54, +108,216, 48, 87, 44, 22,231,155,163,107,103,103, 23,103, 50,153,232,209,163, 71,169,147,147, 83, 98, 97,186,173,173,109,156,201, +100,162,135, 15, 31,166,142,142,142,137, 21, 56,166, 28,185, 92,190,180, 81,163, 70,217,114,185, 60,163, 72,218,178, 38, 77,154, +228, 20,166,153, 51,201,100,178, 12, 15, 15,143, 44,185, 92,190, 12, 0,135, 82, 10,185, 92,158, 81,165, 74,149, 76, 43, 43,171, +165,133,105,230, 76,110,110,110,163,156,156,156, 18,157,156,156, 18,109,108,108, 22,184,186,186, 38,167,165,165, 81, 74, 41,173, + 86,173, 90, 42,165, 20,142,181, 63,105, 86,189,249,144,217, 78,129,221,199,111,216,127,243,246,149, 39, 25,105,181,219,143, 89, +106, 93,187,135,181, 5,251, 47, 19, 10,133, 43, 93, 92, 92, 52,135, 15, 31, 54,165,164,164,208, 71,143, 30,209,164,164, 36, 90, +218,117,253,175,159,214, 5,184,211,141,126,123, 66,103,121,132, 93, 89,220,201, 64,163, 47,208, 93,159, 57, 26, 46,143,175, 20, + 65,127,246,255,157,110,172, 81,185, 66,154, 63,215,216,245,104,134, 71,248,154,185,227, 12, 49, 49, 49,116,226,208, 78,198, 51, + 99, 43,189,164, 27,252,247, 87, 72,243,255,231,104,192, 39,159,124,146, 31, 27, 27, 75, 3, 2, 2,148, 92, 46,119,248,127,165, + 53, 81, 35, 55, 84, 10,242, 21, 38, 60,218, 57,145,233, 22, 40,205,168,231,138,230,239,160, 21, 87,160,147,147, 83,250,182,109, +219,168, 66,161, 72, 5,224,251, 62,236, 43, 0,226, 15,116,223, 94,187,246, 97,166,119,111,211,246,218,181, 15,251, 3,221,241, +170, 91, 32, 2, 96,234,146, 37, 75,130, 13, 6, 67,240,214,173, 91,131,187,119,239, 30, 12, 96,226, 91,110,115,213,143, 63,254, + 72, 13, 6, 3,221,186,117, 43,237,222,189, 59, 5,176,218,220,245,229,114,121,245, 90,181,106,237, 8, 8, 8,136,173, 83,167, +142,174, 70,141, 26, 26, 95, 95,223,232,192,192,192,109, 34,145,200,139,109, 17,247,183, 93, 59,101,121,145, 70, 83,167, 78,157, + 6,128, 78,157, 58,117, 26,165,244,227,130,229, 62, 46,250,189,248, 39,165, 52,168,232,239,146, 52, 10,167,146, 52, 75,218, 70, +177,239,165,239, 79,225,206, 0,104, 13,224,114,241, 5,250, 84, 69,179,177,205, 42,169,213,105, 73,244,201,194,111,233,197,182, +238,244,122, 27, 23,250,108,194, 39, 52,105,231, 74,250,101, 93, 91, 85,239,170,104, 91, 17,131,117,248,240, 97,122,230,204, 25, +250,242,229, 75,154,146,146, 66,191,255,254,123,157, 76, 38,203,226,114,185,131,204,213,146, 72, 36, 57, 9, 9, 9,244,251,239, +191,215, 22, 68,155,170, 74,165,210,156,228,228,100,186,112,225, 66,157, 68, 34,137, 4,224, 35, 18,137,242, 95,190,124, 73,197, + 98,177, 89, 6, 75, 42,149,230, 60,121,242,132,138, 68, 34, 37, 0, 31, 71, 71,199,200,243,231,207, 27, 24,134,161,238,238,238, +185, 0,170, 58, 58, 58,190,184,112,225,194,235, 52,115, 13,150, 90,173,166,103,206,156,161,206,206,206,137,197,211, 79,158, 60, +249,134,241, 50,243,120, 58,187,186,186, 62, 40,204,159,151,151, 87, 26, 0,103, 55, 55,183,135,151, 47, 95, 54, 20,152,153, 52, +115,245, 92, 92, 92, 82, 83, 83, 83,233,234,213,171,181, 10,133,226, 62, 0,103, 23, 23,151,212,180,180, 52,186,118,237, 90,173, +149,149, 85, 48, 0,103,115,180, 28, 28, 28, 18,117, 58, 29,205,206,206,166,141, 27, 55,206,191,126,253, 58,205,205,205,165,148, + 82, 90,165, 74,149, 84, 74, 41,252, 90, 15,255,225,246,243,252,220,207, 39,175,219,231,213,104,224,194,211,119, 18,226, 55, 31, +186, 23,236, 16,216,163,147, 57,219,224,114,185,131,100, 50, 89,214, 79, 63,253,164,207,202,202,162,145,145,145,244,214,173, 91, +244,214,173, 91, 52, 37, 37,229,195, 52, 88,251,193,165, 27,253,122,208,141,126,193,219, 6, 59,164,231,221,223, 77,233,217,111, +232,203, 31,170,210, 89,157, 20,121,204, 70,191, 96,186,209,191, 55,157,211,154,103,145,230, 47, 53,186,209,141,126,193, 63,246, +241,204,120, 16,124,151, 94,190,124,153,174, 95,185,132,142, 13,170,164,100, 54,250, 5,211,159,107,244,178, 72,179,200, 36, 18, +137,158, 95,187,118,141, 94,185,114,133,206,157, 59,151, 74,165,210,216,183, 63, 14, 53, 4,244,103, 95, 79,186,206,167, 13,221, +226,227, 74, 47, 85, 44,111,127,181,185,106,239, 43,140, 79,127,112,136,210,204, 23, 52,121, 89, 0,237,228,199,127, 43,147, 85, + 96,174,210,162,163,163,105,114,114, 50, 93,177, 98, 5,181,178,178,122,175, 77,150, 31,208, 3,192,180,165, 75,151,190, 54, 87, +235,214,173, 11,126,252,248,113,176,135,135,199,137,183,216,214,234,165, 75,151,190, 54, 87,235,214,173,163,143, 31, 63,166,158, +158,158,113,229,173, 59,120,240, 96,105,179,102,205,130, 7, 13, 26,164,218,182,109, 27,141,142,142,166,143, 31, 63,166, 75,151, + 46,165,179,103,207,166,191,254,250, 43,237,213,171,151,178,113,227,198,183,123,247,238, 45,182, 48,111, 60, 74,169,176, 96,226, + 83, 74, 11, 13, 38, 15, 0, 31, 0,151, 53, 85,127,246, 6,165,121,145,210, 76, 84,105,198,170,248,188, 50, 12, 88,153, 70,173, +188,237,149,181, 63, 69, 67,168,151, 40,165,127,170,251,194,163,152, 55,242,187, 31,196, 81,219, 86, 32,101,239, 90,112,179, 83, +192,207,203,128,246,218,113, 24,174, 29,193,144,166, 77, 37, 18, 66,230, 87, 36,222, 39,145, 72,192,227,241,144,152,152,136,196, +196, 68,140, 26, 53, 74,112,237,218, 53,155,150, 45, 91,254, 34,151,203, 31, 18, 66,106,155, 17, 22,134,155,155, 27,198,142, 29, + 43,220,190,125,123, 53,133, 66,113,223,100, 50,241,157,157,157, 49,102,204, 24,193,254,253,251,171,216,216,216,220, 53,153, 76, + 2,161, 80, 8,115,235, 92, 18, 66, 32, 16, 8, 96, 52, 26,249,141, 26, 53,186, 23, 26, 26,234,213,186,117,107, 94, 88, 88, 24, +210,211,211,121, 13, 27, 54,124, 24, 26, 26,234,221,170, 85, 43, 94,100,100, 36,114,114,114,168,185,186, 58,157, 14, 34,145, 8, + 28, 14,231,141,116,173, 86, 11, 75,242, 88, 88,252,215,188,121,243,144, 71,143, 30,213,105,221,186, 53,239,201,147, 39, 72, 79, + 79,231, 55,110,220, 56,228,225,195,135,181, 91,180,104,193,123,246,236, 25,114,114,114,204,110, 98, 47, 22,139,225,232,232,136, + 33, 67,134, 8,247,239,223, 95,199,209,209,241, 17,143,199, 19, 58, 56, 56, 96,208,160, 65,194,253,251,247,215,117,118,118,126, +104,102,145, 33, 23, 0, 12, 6, 3, 70,141, 26, 37,179,178,178, 66, 92, 92, 28, 24,134,129,201,100, 2, 0,100,100,101, 60,126, +248,248, 73,216,144, 1,125, 90,171,245, 90,237,205, 59,247,158, 86,171,226,233, 78, 8,173, 82,206,177,172, 45,149, 74, 31,246, +239,223,127, 83,108,108,172,205,160, 65,131,248,209,209,209,200,200,200, 0,159,207,135, 88, 44,126,227, 24,127, 80,228, 6,216, +131, 65,251,152, 52,157, 72,100,227,174,144,187,250, 2,177, 87, 80,213, 81, 4, 46,135, 43,190, 27,169,146, 1,180, 61, 60,210, +237, 45,211,100,218, 71,166,234, 68, 6,187,154,114, 55,119, 15,100,100,100,160,114, 53,127,104,132,142,194, 27, 47,148,114, 16, + 11, 53,255,127,174, 90,250,248,248,184, 84,175, 94, 29,233,233,233,168, 87,175, 30,108,109,109,109, 9, 33,237, 43,124, 12,182, + 85, 17, 33, 23,205, 65,200,114,112, 57,115, 97,224, 45,194,139,180,122,248,165, 62,255,125, 42, 22,180,146, 11,111,237,222,179, +183,146,189, 71, 13,224,248,231,112,182, 17, 97,203,152,122,118,142,214,162,195, 21, 41, 46, 36,132, 4, 58, 59, 59, 95,184,125, +251,182,131, 88, 44,198,253,251,247, 17, 16, 16,128, 21, 43, 86, 56,218,218,218, 94,121, 31,138, 11, 41,165, 52, 12, 56,250,227, +163, 71, 91,119, 68, 68, 28, 27,236,237,221,117,144,175,239,130,209,253,251, 15, 31, 55,110, 28,150, 44, 89,130,195,135, 15,163, +121,243,230, 24, 57,114,164, 33, 54, 54,118,123, 5,139, 5,215, 46, 91,182,108,236, 55,223,124, 83, 92, 83, 31, 19, 19,243, 99, + 89,235, 6, 6, 6,186, 63,127,254, 60, 97,194,132, 9,245,118,236,216, 33,145, 74,165,200,206,206,198, 47,191,252,130,105,211, +166,129, 16, 2, 74, 41,126,253,245, 87,233,103,159,125,214, 40, 34, 34, 34,161, 74,149, 42,230, 84,223, 32, 0,196, 0,164, 5, +147, 12,128,116,247,238,221,214, 61,122,244,176, 42, 72,147, 0,144,176, 13,189, 74,164, 68, 47, 82,228,156, 31, 43,118,173,117, + 45,158, 86,124, 30,165,180,107, 89, 26, 22, 94,219, 93,205, 93,191,232,219,167, 13, 33,228,242,159,196,128,218, 46, 94,126,200, + 57,187, 31, 18, 30,129,132, 91, 48,241, 8, 56, 47, 31,163,178,152, 15, 3,165,129, 21,172, 63, 5,137, 68, 2,137, 68, 2, 66, + 8,178,178,178, 96,101,101,133,189,123,247,138, 87,175, 94, 93, 75, 42,149,222,180,182,182, 94, 84,158, 97, 1,128,103,207,158, +161,110,221,186,228,216,177, 99, 86,163, 71,143,230, 1, 64, 76, 76, 12,106,213,170, 69, 46, 94,188,168,152, 52,105, 18, 17,137, + 44,187,150, 5, 2, 1, 38, 79,158, 76,174, 95,191, 46,151, 74,165,120,242,228, 9,242,243,243, 49,105,210, 36,222,141, 27, 55, +228, 50,153, 12, 17, 17, 17,208,104, 52, 22, 25, 55,157, 78, 7,129, 64,240,198, 58,132, 16,232,245,122, 8,133, 66,179, 77,129, +131,131,195,236, 6, 13, 26, 28,184,116,233,146,189, 68, 34,193,227,199,143,161, 82,169, 48,127,254,124,233,181,107,215,236, 21, + 10, 5,194,195,195,161, 82,169, 44, 50,109,133,219,127,241,226, 5,124,124,124,200,241,227,199,157, 70,142, 28, 41, 46, 60,166, +190,190,190,228,196,137, 19,206,254,254,254,251,157,156,156,102,149,165,197, 48, 12,146,146,146, 16, 18, 18,130,151, 47, 95, 34, + 45, 45, 13,233,233,233,200,203,203,131,209,104,124, 85, 63, 46, 47,247,248,238,125, 71, 31, 74, 36, 18,105,128,175,143,199,227, + 39,161,169, 18,137, 68,234,233,225,225, 75,200,220, 18, 15,134, 66,161, 88, 36,145, 72,110, 30, 57,114,164,246,166, 77,155, 68, +233,233,233,136,137,137, 1, 33, 4, 98,177,248,245,196,229,114, 63,188,199, 15, 33, 4, 68,231, 3, 66,234,221,122,169,180,107, +217,117,128, 0,145,167, 0,198, 0,112,120,104, 83,219,157,119,248,177,210, 25, 20,181,161,133, 63, 96,198,201, 39,132, 0,250, +234, 0,105,112,230,185,209,190,249, 39, 99, 4, 9, 9, 9, 16, 8, 4, 16,137, 68,168,215,238, 83,222,238,135, 6, 23, 16,212, +129, 30,126,102,105,190,249,103,234,251,217,179,103,203,138,106, 14, 31, 62, 92,102,109,109, 61,187,194,230, 74, 41,109, 10, 19, +253, 54, 36, 65,237,185,224,120,178,255,203, 84,181, 63, 40,190, 3, 12,117,223,214,100, 17, 66,218,136,197,226, 72, 66, 72,139, +183, 50, 87, 10,225,205, 61,123,246, 86,178,171,252,202, 92,193,168, 1,248, 18,184, 56,218, 96,203,248,182,118,142, 54, 18,139, + 76, 86,129,185, 58,127,235,214, 45, 7,177, 88,140,224,224, 96, 8, 4, 2,136,197, 98,212,170, 85, 11, 27, 55,110,116,180,179, +179,123,175, 76,214,226, 71,143,182, 45, 10, 9,121, 54, 53, 48,208,191,167, 76,102,247,213,160, 65,214, 51,102,204, 56,118,228, +200,145,173, 31,127,252,113,250,157, 59,119,126,162,148,238,183,240,252, 16, 66,200,186,229,203,151,127, 85,104,216,102,204,152, +241,235,145, 35, 71, 22,125,252,241,199, 73,119,238,220,153, 64, 41, 93, 87,150, 70,126,126,254,145,153, 51,103, 90,127,242,201, + 39,133,191,113,237,218, 53,108,223,190, 29, 50,153,236,141,101,187,119,239,142, 17, 35, 70,216,234,116,186,223,203,210,116,114, +114, 10,186,117,235, 86, 0, 0, 1, 0, 81,161,193,122,242,228,137, 77,110,110,174,141, 92, 46,183,113,117,117, 85, 20,154,172, + 79, 62,249,196,134,207,231,183,100, 61,213, 27,148,232, 69,138, 26, 28,115,210, 42,186,188,185, 38,203, 34,131, 69, 41,189, 12, +160, 85, 73, 11,233, 51, 83, 32,130, 9, 18, 46,129,148, 91,196,100,129, 1, 47, 39, 21, 21,109,136, 91,244, 69, 40,145, 72, 32, + 22,139, 95, 71,114,114,114,114, 64, 8, 41,215,108, 20, 26, 7,185, 92, 14,181, 90, 13,189, 94, 15,177, 88,252, 58,205,104, 52, +194,104, 52, 66, 34,145, 64, 36, 18, 89, 28,193, 50, 24, 12, 8, 9, 9, 65, 68, 68, 4, 56, 28, 14,100, 50, 25, 12, 6, 3,158, + 62,125,138,132,132, 4,240,120, 60, 72,165, 82,139, 12,140,201,100,130, 80,248,231,250,189, 6,131,193,162, 8, 22,135,195,129, + 74,165,162,207,159, 63, 71,116,116, 52, 4, 2, 1,172,172,172, 32, 20, 10,145,150,150,134,248,248,248,215,105,150,228,175,112, + 89,137, 68, 2,165, 82, 89, 88,215,237,117,154, 86,171, 5, 33, 4, 92, 46,183,220,243, 99, 50,153,144,152,152,136,180,180, 52, +196,197,197, 33, 61, 61,253,181,201, 98,152,183,239,183,242,222,189,123, 52, 52, 52, 20, 90,173, 22, 34,145, 8, 98,177,248,141, + 79, 30,239, 3,236,234,109,125,160, 53, 12,252, 14,233,249, 6, 81,154, 94, 96,237, 28, 24, 4, 68,158, 4, 56, 60, 64,108,139, + 38, 53,171, 34, 38,203, 36, 11, 79,209,137, 65,208, 17,235,124,109,205,210, 52,241,219,167,229, 25, 68,209,122, 71,171, 26,181, +235, 35, 37, 37, 5, 34,145, 8, 34,145, 8, 13,154, 7, 33, 50,195, 36, 13, 77, 80, 75, 65,209,193, 44,205,255, 95, 79,213,228, +114,121,211, 22, 45, 90,144,162,154, 93,186,116, 1, 33,164, 22, 33,196,223,162,253, 95,227, 45,132, 94,218, 4,124,250,109,104, +146,202,237,240, 19,141,111,183,158,159,218,173, 60,151,234, 31,150,164,241, 2, 99,156, 8,170,175, 95, 81,147, 69, 8,105,173, + 80, 40,142,173, 89,179,198, 75, 44, 22,159, 36,132, 84,232, 5, 40,151,112, 55,124,255,213,128, 74,182,133,230,202,160, 2,120, + 18,128, 47, 1,120, 18,184, 56, 57, 96,254,136,246,118, 82, 49,255,160, 5, 70,117,247,186,117,235, 28,139,155,171,194,169, 94, +189,122,152, 53,107,150,163,157,157,221,174,127,248, 63, 64, 7, 27, 27,155, 29, 65, 65, 65,183, 18, 21,138, 17, 73,245,235, 11, +207, 91, 91,231,124,148,147, 99,237,249,228,137,222, 15,120, 12, 96,125, 92, 92, 92, 39,115,205, 21, 33,164,191,181,181,117,112, + 80, 80,144, 94,161, 80,196,174, 88,177,226,203,175,191,254, 26, 75,150, 44,193,204,153, 51, 55, 1,248,130, 82, 58, 61, 46, 46, +206,173, 60,115, 5, 0,201,201,201, 3,167, 76,153,146,158,158,158, 14, 0,168, 85,171, 22,178,179,179, 49,113,226, 68,124,251, +237,183, 0,128,186,117,235,130, 82,138,148,148, 20, 44, 91,182, 44, 37, 57, 57,121, 88, 57,127, 40,227,246,239,223,223, 72,175, +215,187, 23, 20, 3,138,178,179,179,173, 50, 51, 51, 21,122,189, 94,198, 48,140,204,198,198, 70, 14, 64, 58,100,200, 16, 94, 72, + 72, 72,128,209,104, 76, 96, 61,213, 27,230,165, 84, 47, 82, 65,142,191, 77,164,170,164, 8,152,217,193,138, 2, 33, 82,244,179, + 40, 92,130, 71,177,247,174,192, 46,176,254, 27,209, 43, 41,151, 64, 98,101,141,200,184, 24, 8, 64, 66,222,214, 96, 21,154,172, +208,208, 80,124,244,209, 71,170, 57,115,230, 60, 86, 42,149, 77,179,178,178,166,153, 99, 6,172,173,173,113,253,250,117,218,171, + 87,175,220, 85,171, 86, 25, 11,211,110,221,186, 69,219,183,111,159, 55,111,222, 60, 90,188, 88,206, 28,131,181,106,213, 42,218, +182,109,219,156,219,183,111, 83,153, 76, 6,169, 84,138, 85,171, 86, 25, 91,181,106,149,115,241,226, 69, 42,147,201,254,244,111, +167, 60, 83, 84,104,176,138,154, 30, 14,135, 3,134, 97, 44, 50, 88,169,169,169,115,195,194,194,250,180,107,215, 46, 37, 36, 36, +132, 90, 89, 89,193,218,218, 26, 83,167, 78, 85,213,173, 91, 55,245,209,163, 71,175,211, 44, 41, 42, 43,220,190, 66,161, 64, 72, + 72, 8,237,218,181,107,234,250,245,235, 53,133,105, 79,158, 60,161,157, 59,119, 78, 9, 9, 9,233,147,156,156, 60,175,188, 8, +214,203,151, 47, 95, 71,172, 52, 26, 13,210,211,211, 17, 23, 23,247,186,136, 80, 45,179,234, 52,160,111,183, 58,106,181, 90, 21, +250,236,121,108,173,154, 1, 78,106,181, 90, 21, 19, 27,251,140,210,217, 37,186,176,188,188,188,105,106,181,186,233,130, 5, 11, + 30,247,233,211, 71, 21, 30, 30,254, 39,115, 37, 22,139, 63, 76,131,197, 97, 92, 64,104,139,171,207,243,109,218,119,235, 39, 36, +201,119, 0,125, 62, 32,178, 5, 68,182,224,201,236,209,185,101, 93,238,182, 91,185, 46,160, 76, 51, 8, 68,238,229,106,242,169, + 51,192,180, 60,251, 76, 99,219,162,247, 88, 97,102,102, 38,184, 92,238,107, 51, 36,149,201,240, 81,207, 33,156, 95,239,104, 93, + 0,218, 28,132,235,110,110,118,133, 66,225,228,239,191,255, 94,144,149,149, 5, 14,135,243,127, 77,169, 20,163, 71,143, 22, 89, + 89, 89,205, 52,123,223, 15, 4, 8,192, 23, 53, 1, 67,191, 13, 79, 86,187, 29,121,164,246,253,110,209, 22, 73, 96,221, 70, 24, +213,198, 73,178,232, 68,106,192,195, 4,149, 23, 96,154, 0,163,174,129,165, 38,139, 16,210, 82,161, 80, 28,191,119,239,158,180, + 75,151, 46, 88,182,108,153, 76, 34,145,156, 36,132, 88,252,192, 87,230,155,190,158,183,250,183,148, 71, 63,117, 4,244,202, 87, +198,170,200,148,154,207, 96,214,150, 11, 57, 6, 3, 29, 96,174,166, 90,173, 30,250,197, 23, 95,100, 28, 60,120,240, 79,230, 74, + 44, 22, 35, 42, 42, 10, 11, 22, 44,200,204,204,204, 28,246, 79,154,171,175,191,254,122, 65,124,124,188,223,217,179,103,121,105, +105,105, 78,203, 55,111,206, 57,144,147,147,185,232,201,147,240,233, 53,107,250, 76,173, 93,123, 88,105, 93, 56,148,102,174,190, +250,234,171,221,241,241,241,245,206,157, 59,199, 79, 75, 75,115,255,234,171,175,176,116,233, 82,204,156, 57,115, 35,128, 81,133, +181,163,205, 69,167,211,133,103,101,101,117,237,216,177, 99,118, 86, 86, 22,106,215,174,141,110,221,186,193,197,197, 5,110,110, +110,232,209,163, 7,124,125,125,145,145,145,129, 1, 3, 6,100,166,165,165,117,164,148,150,217, 10, 61, 35, 35,227,197,174, 93, +187,158,127,253,245,215,245,227,227,227,107, 0,176,207,203,203,147,229,229,229,137,116, 58,157,196,214,214,214,182,110,221,186, + 14, 35, 71,142,148,223,191,127, 63, 32, 33, 33, 33, 15, 64, 52,107,171, 94,155,154, 82,189, 8,128,180, 2,163,163, 43,246,153, + 86,206, 60,115,215, 45,241,187, 25,203,149, 31,193, 42, 13, 61, 48,107,251,254,109, 26,161, 71,117, 88,251,213,129, 84, 44,134, + 68, 40,132,196,214, 30, 90,134,193,230,168,100,149,146,210,153, 21, 56,144,175,139, 7,197, 98, 49,242,243,243, 49,118,236, 88, + 77,223,190,125,179,163,162,162, 70,231,230,230,214,161,148, 62, 50,199, 12, 40,149, 74,204,153, 51, 71, 61,117,234,212,151,121, +121,121,245, 4, 2,129, 65,175,215,227,251,239,191,215,140, 25, 51, 38, 58, 59, 59,187,161, 64, 32,208, 91,250,178,229,243,249, +224,241,120,134,156,156,156,122, 83,166, 76,137, 88,176, 96,129, 90, 32, 16, 64, 32, 16, 24,114,115,115,107, 77,155, 54, 45,124, +218,180,105,106, 62,159,111, 81,100,172, 48, 34, 84,188,136,176,104,164,200, 92, 12, 6,195,133,212,212,212, 58,223,124,243,205, +131, 85,171, 86,169,228,114, 57, 68, 34,145, 46, 53, 53,181,246,151, 95,126,249,112,217,178,101, 42,185, 92,110, 81, 4, 75,175, +215,131, 97, 24,172, 89,179, 70,245,205, 55,223, 60, 76, 75, 75,171, 93,112, 65, 98,213,170, 85,170, 47,191,252,242, 65, 74, 74, + 74, 29,131,193,112,193,140,104,157, 41, 55, 55, 23, 60, 30, 15, 79,158, 60,209, 10, 4, 2,112, 56, 28,188,120,241,226,181,193, +178,179,179, 11,168, 83,171,166,255,111,187,247, 95,150, 8, 68,162,166,141, 26,212,120, 25, 29, 19, 79, 41,137, 46,231, 26,122, +164, 84, 42,235,196,197,197,141, 30, 62,124,120,246,119,223,125,167,201,207,207,127,227,133,195,231,243, 63,188,167, 16, 7, 82, + 16, 72,158,167,106, 21, 98,142,145,224,217,161, 87,230, 74,108, 3,136,109, 1,177, 45, 42, 85,114,199,157, 40,149, 2, 28, 8, + 97, 50, 56,153,113, 67,202, 64, 32,125,146, 2, 5, 95, 40, 33,201,201,201,175,141, 80,225,228, 85,189, 6,238,199,228,203, 65, +168, 8, 92, 88,210,149, 72, 87,123,123,123, 94, 82, 82,210,159, 52, 3, 2, 2,184, 6,131,161,163,217, 74,137, 38, 87,128,249, +250, 89,170,198,237,143,135, 42,223,241,139,126,149, 72, 76,217,192,189,213, 8,172,230,134,241,189,235, 10,103, 28, 78, 11,188, + 27,173,170, 6, 30, 29, 13, 38,223,209, 2, 99,208, 66,161, 80,156,188,123,247,174, 84,161, 80,224,229,203,151,104,212,168, 17, +126,249,229, 23,169, 84, 42, 61, 65, 8,105, 99,201,105,186,149, 76, 99,242,243, 76, 77, 39,239,143, 77,126,148,100,124,195, 92, +165, 41, 41,190,248,241, 72,118, 86,174,230,211,155,177,229,223, 71, 69,174,249, 7,217,217,217, 29,102,206,156,153,145,150,150, +246,198,181, 30, 19, 19, 83,104, 4,218, 80, 74, 67,254,169,203,211,218,218,122,208,162, 69,139,112,247,238, 93,116,233,210, 5, + 87,174, 92, 65,102,102, 38,246,156, 60,249,124,215,243,231,211, 11,235,100,149,212,133, 67,105, 88, 89, 89,125,183,104,209, 34, +220,187,119,239,181,102, 70, 70, 6, 22, 45, 90, 20, 15, 96,140,165,230,170,144,148,148,148, 59,225,225,225, 29,107,215,174,253, +116,205,154, 53,241,174,174,174,204,200,145, 35,241,197, 23, 95,192,209,209,209,180,114,229,202,216,150, 45, 91, 62,137,136,136, + 8, 82, 42,149,143,205, 56, 63, 52, 61, 61,253,250,166, 77,155,110,182,107,215, 78, 54,120,240, 96,167,195,135, 15,219,171, 84, + 42, 55,129, 64,224,172,211,233,132,161,161,161,188, 3, 7, 14,184, 62,125,250, 52, 74,173, 86,223,169,104,222,255,131,220, 45, +136, 70,157, 43,246,121,183,156,121,230,174, 91,218,247,242,150, 43,219,232,148, 55, 13,170,134, 57,163,107, 42, 84, 55, 6, 55, +161,201, 35, 91,208,148,126, 53,232,181,214,118,116,184, 55, 81, 14,173, 96, 55, 13, 38,147,137,166,164,164,208,148,148, 20, 58, +127,254,124,163, 68, 34, 81, 75,165,210,149,176,176,155, 6,185, 92,158,239,227,227,147,103,109,109,253,186,155, 6,133, 66,145, +239,231,231,151,103, 99, 99,243,186,155, 6,153, 76,150, 79, 41,165,114,185,220,172, 86,132, 86, 86, 86, 57,249,249,249, 84, 42, +149, 22,118,211, 32,176,182,182,222,228,227,227,147, 39,151,203, 11,187,105,224,219,218,218,110,240,245,245,205, 83, 40, 20,249, +102,182,208,139,139,143,143,167,241,241,241,180,114,229,202,137, 69,211, 99, 98, 98,104, 76, 76, 12,117,119,119,175, 80, 55, 13, +142,142,142, 75, 27, 54,108,152,233,232,232,152, 81, 36,109, 89,195,134, 13,179, 10,211,204,108,249,151,209,160, 65,131, 44, 71, + 71,199,215,221, 52, 56, 58, 58,102, 20,104, 91,212, 77,131, 68, 34, 25, 37, 22,139, 19,197, 98,113,162, 72, 36, 90, 80,165, 74, +149,212,125,251,246,209,149, 43, 87, 82,133, 66,241,170,155,134,128,238, 77,171, 55, 27, 54,221, 49,160,199,119,111,211, 77,131, + 84, 42, 93, 41,145, 72,212, 11, 23, 46, 52, 42,149, 74,106, 48, 24,104,193,195,235,195,106, 69,248,139,111,117,250,179,255,145, +136,121, 94,161,223,180,146,106, 30,207,175, 67,233,239,159, 80,122,226, 11, 74, 47, 76,166,119, 54,142,164,205,188, 68,166,235, + 19, 43, 63,163, 27,252,254, 48,171,107,133, 95,106, 85,167, 63,251,159,120, 62,215, 43,116,104, 75, 55,205,230,245, 43,233,237, +219,183,233,147, 39, 79,232,203,151, 47,233,137, 67,251,104,179,106,210, 87,154, 63,251, 31,177,164,187, 6, 0,205, 69, 34, 81, +254,138, 21, 43,232,173, 91,183, 94,107, 30, 57,114,132, 74,165, 82, 21, 96,102, 43,100,128,208,117, 1,159, 24,215,251, 93,155, +217, 94,158,159,113,108, 50,165,143,183, 81,250, 75, 32,165, 91, 27, 83,186,239, 99, 74,143, 14,163,183, 86,246,166,205,189, 4, + 6,186,193,239, 42,221, 18,208,222,220,124,242,249,252,220,131, 7, 15,210,196,196, 68,122,229,202, 21,122,239,222, 61, 26, 22, + 22, 70, 99, 99, 99,233,241,227,199, 41,159,207,215, 0,176,184,149, 98, 99,103,120, 6,249, 8,146, 30, 46,110, 78,233,225, 1, + 52,109,215, 32,218,181,166, 34,179, 73,101, 94,187,183,104,109, 85,215,222,222, 62,253,248,241,227, 52, 42, 42,138, 94,190,124, +153, 58, 57, 57,165, 3, 8,252,167,175,207,160,160,160,219,148,210,224, 46, 93,186, 4, 3, 56, 21, 20, 20, 20, 28, 25, 25, 25, +220,168, 81,163, 91, 40,163, 11,135,178, 52, 63,250,232, 35, 61,165,148,118,233,210,133, 2, 72, 12, 10, 10,162,145,145,145,180, + 81,163, 70,186,119,212,122,141, 11, 96, 24,159,207,223,108,103,103,119,209,214,214,246, 2,151,203,253, 5,192, 96, 75,158,119, + 37,104, 86, 2, 16,128, 87,253, 37, 53, 40,248,238, 6,182, 5,225,127,163, 85,164,185, 11,246,246, 66,243,207,170,145,203, 3, +171, 34,111, 64, 85,228,127,238, 77,174,125,234,133,118, 21, 25,109,187,208, 96, 29, 61,122,148, 86,174, 92, 89,169, 80, 40,174, + 1,240,169,200, 8,222,182,182,182,167,184, 92,110,159, 18,210,250, 21, 77,179,182,182, 14,177,177,177,201,177,178,178,122,105, + 78, 62,173,172,172,194,164, 82,169,210,202,202, 42,172, 88,151, 0, 61,236,237,237,143, 23, 75,235, 94, 60,173,180,125,119,113, +113,137, 75, 76, 76,164,105,105,105,212,195,195, 35,177,184,241, 74, 78, 78,126,195,120, 89, 58,122, 57,143,199,107,231,232,232, +120,160,188,180,178, 52,157,157,157,127,231,241,222,124,248,151,148, 86,145, 81,214, 1,248, 86,170, 84, 41,117,249,242,229, 84, + 46,151,167, 22,157,231,215,234,243,239,111, 63,207,207,253, 98,202,207,251, 28,107,244,172, 85,145,145,219, 1,248, 40, 20,138, +107,158,158,158,202,243,231,207,151,105,176,240,111, 29,181,126,127, 13, 1,221, 88,163, 57,221, 80,227,120,216,108,207,167,195, + 26,203,180,193,203,187, 80,122, 97, 50,189,245,243, 23,180,169,151,240,149, 17,218,232,127,146,254,234,219,138,174,174, 38, 52, + 75,115,179,119, 75,186,209,255,100,232, 44,207,167,159,212,119,212,237,222,182,145,190,120,241,130, 30, 57,176,139, 54,169, 90, + 96,174, 54,212, 56, 67,127,174,209,214, 44,205, 18, 76,214,150, 45, 91,232,139, 23, 47,232, 31,127,252, 97,150,185,122, 67, 19, + 32,244,231,128,158,198,245,126,215,166, 5,201,179,191,104, 44,214, 14,168, 43,212,245, 8, 20,232, 59, 84, 23, 24,155,121,242, + 76,117, 92, 57, 76, 13, 71,208, 14,126, 18, 45,221,224,119,149,110,168,209,209,220,124, 10,133,194, 88, 20,233, 19,167,248, 36, + 18,137,210, 74, 51, 88,229,157,247,198,206,240, 12,242, 21, 37,157,159,215,142,118,171,173,200, 48,199, 92,149,167, 9,160,174, +131,131, 67,250,214,173, 91,169,179,179,115,154, 57,230,234,239,184, 62,173,173,173,119,228,231,231, 7,159, 62,125, 58, 56, 40, + 40, 40,120,199,142, 29,193,215,174, 93, 11,150, 74,165, 59, 74,235,194,161, 6,208,177, 44, 77, 43, 43,171,224,188,188, 60,122, +250,244,105, 26, 20, 20, 68,119,236,216, 65,175, 93,187, 70,165, 82,105,240,123,117,111,178,154,236, 84, 17,131,245, 46, 79, 0, + 0, 58,120,240, 96,149, 84, 42, 77, 1,208,253,191,116,241, 57, 56, 56,220,112,118,118, 78,113,118,118, 78,113,116,116,188, 95, + 82,186,131,131,195,253, 15,249,198, 3,224, 43, 16, 8, 98,248,124,254,179,162,233,142, 1,221,155,122, 55, 31, 58,211, 57,176, +123,231,183,205, 39,128,238, 82,169, 52,165, 87,175, 94,202, 15,206, 96, 81, 10,186,186,154,176,208,100, 61,158,233, 25,214,173, +166, 84,255,203,132, 14,180,105,149, 98,230,106,171,167,200, 34,205, 2,147,245, 96,134, 71, 88, 91, 95,185,113,209,204,241,180, + 73, 85,201,155,230,202, 18,205, 98, 38, 75, 42,149,230,205,158, 61,219,236,200,213,159, 52, 55,251,121,208,159,253,119,190, 50, + 79,229, 77, 53, 54,211,181,126, 30,239,203,121,111,236, 12,207,143,124, 69, 33,230, 70,174,204,209, 4, 80,215,214,214,246,169, +185,145,171,191, 99,223, 1,116, 24, 61,122,116,112,100,100,100,240,203,151, 47,131,175, 93,187, 22,220,179,103,207, 96, 0, 29, + 74,234, 39, 75,223,171,151,182, 46,135, 51,190, 28,205,254,163, 71,143,166,145,145,145,244,229,203,151,244,218,181,107,180,103, +207,158, 20, 64,127,214,184,176, 6,235,125,157,254,145, 26,192, 10,133,226,254,193,131, 7, 79,169,213,234, 5,148, 82,237,127, +169, 16, 57, 45, 45,173,153, 37,233, 31,104, 69,198,103, 0, 60,255, 84,105, 63,228,240, 77, 0, 55,223,209, 54,142, 16, 66,206, +156, 58,117,106,134, 66,161,232,244,193, 29,196,177, 17, 58,172,241,190, 7,161,112,113,205, 74,210,169,223,119,161,100,209,233, + 27,158, 75,122, 57,197, 54,243,150, 69,129,207,252, 8,162,189,131, 97,209, 90, 11, 53,239, 64, 98, 88, 92,167,178,116,234,194, + 30, 32, 63,158,220,230,185,180,167,125,108,179,106,242, 88, 80,252, 8,145,234,166, 69,154,111,158,147,235,132,144,206,203,151, + 47,223,174, 82,169, 70, 80, 74, 47, 90,254,240,224, 36, 67,105,152, 5, 3,183, 38, 40,132,101,108, 76, 5, 14,158, 32,131,147, +242,190,156,178, 91,201, 52, 6, 64,224, 59,190,151, 30, 0,168,241,158,221,223,103, 8, 33,216,181,107,215, 32,127,127,255,106, +161,161,161, 47, 85, 42,213, 78, 74,233,153,162,117,149, 8, 33, 71,127,124,244, 72,185, 54, 52,244,186,142, 97,174,151,163,185, +167, 64,243, 59,127,127,255,192,208,208,208, 16,149, 74,181,156, 82,186,135,173,154,196,242,190,242,143, 24,172,220,220,220,250, +236,161,103,249, 27, 30,244, 90, 0,223, 23, 76, 31, 30, 69, 76, 86,125, 15,201,216,131,163, 37, 42, 80, 18, 15, 62,179,210, 98, +115, 85,130,201,106,228, 41,249,246,143, 81, 18, 21, 40,146, 65,241,211,219,152,171,162, 38, 11, 64,213, 10, 11,244, 14,213, 3, +136, 2, 33,209,152,131,210, 43, 71,207,193,235,191,217, 44,255,140,201, 2,112,166,156,101, 40,128, 11, 5,147, 57,154,123, 0, +176,134,138,133, 53, 88, 44, 44, 44,127,147,201, 58, 16,112, 23,233,220,137,224,160, 42, 96,140,129,210,152,140,177,209,186,183, +212,188,141,116,242, 13,184,240,133,208, 24,129,124, 93, 50, 70,191,133,230, 95,240, 6,199,171,186, 81, 37, 51,155,189, 52, 88, + 88, 88, 88,131,197,194,194,242, 54,188,138,234,196, 23, 76,239,175, 38, 11, 11, 11,203,127, 8, 2, 32,168,148, 63,136,231,204, + 22, 33, 36,168, 2,127, 64,207,177,154,172, 38,171,201,106,178,154,172, 38,171,249,223,210, 44, 79,219, 18,255,241, 94,243, 79, +180, 34,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,144, 39, 14, 88, 88, 88, 88, 88, 88, 88, 88, 88,222, 41,255, +104, 29, 44,169,131,175, 43,120,156,218,132,161,254, 0, 64, 57, 36, 12, 70,230,145, 42,253, 89,210,219,106, 43, 42,249,217, 81, + 8,247, 19,232,250,228, 37,132,103,190,173, 94, 45, 63,235, 94,206, 14,138, 65,201, 25, 57,219,159,132,229, 29,182,100, 93, 27, +155, 42,214, 98, 59,219,222, 90,189,161,166, 80, 32,136,213,103,231,254,146,153, 25,145,199, 94,126, 44, 44, 44, 44, 44, 44,255, + 49,131, 85, 37,176,229, 93,177, 88,226, 5, 0, 12,165, 96, 40,160,204,205, 14, 78,138,184,219, 17, 0, 28,189,234,159,230,139, +173,234, 51,244,213,124, 19, 3, 24,245,154,168,156,232, 91, 13,205,217,176,220,201,239,147,160, 14, 65,189,186,118,253,216,175, + 86,205, 90,222, 0,240,248,201,227,136, 99,199,142,135,203,157,252, 14,230,167,134,255,241, 54, 59, 70, 33,254,161, 65,131,186, + 45,238,221,187, 63, 15,192, 87,111,123,160,236,237,229, 99,207,252, 62,177,213, 71,189,150,201, 0, 88,100,176,196,118,182,189, +123,116,235, 84,119,210,184,209,156, 47, 38, 46,244,186,123,253,210, 18,133, 91,205,108,202, 24,206, 40, 83,250, 93, 45,109, 64, + 99, 22, 22, 22, 22, 22, 22,150, 15,204, 96,137,197, 18,175, 91,151,142,217,253,113, 45, 14, 0, 16, 84,207, 5,211,231,175,233, + 64, 8, 9, 7,128,238, 95,204,241,157, 55,109, 28,110,132,164,130, 82,138,186,213,237,209,185, 71, 31,179, 54, 42,113, 9,104, +216,175,111,223,129, 19, 39,126,215,253,197,139, 23,209,187,119,239,190, 10, 0, 45, 91,181,170,190,112,225,194,190,203,108,237, + 68, 18,151,128, 4,117,114,232,221,138,236,148,164,146,119,165, 0,159,218,131,246,254,186,134,211,166,227,167, 3, 36,149,188, + 23,169, 19, 34, 18,204, 89,215,209,209,241, 27, 62,159,111, 13, 0, 12,243,127,223, 83,173, 50,215, 5, 0,140, 38, 70, 97, 87, +201, 63,143, 43, 16,155, 68, 34, 65,104, 94,126,254,246,156,248,208,205,101,105,106, 13,134,192,111,199,124,198,121,240, 50, 3, + 94,129, 45,185, 43, 23,205, 0, 99, 50,216,142,159, 54,191,247,189,219,123, 1,204,190,204, 94,138, 44, 44, 44, 44, 44, 44,255, + 1,131, 5, 0,114, 9, 15,225,145,201, 0, 0, 27, 9, 48,118,212, 80,100,164,167,249,234,140, 12, 62, 31, 58, 24,247,195,146, + 16, 30,149, 6, 74, 41,124,221,165,102,111,148, 11,166,193,231,195, 63,111,125,250,204,153, 59,223,207,252,254, 55, 66, 94,245, +222,189,241,151, 77, 77,103,205,158, 53, 98,240,208,193,237, 15, 28, 56, 16,130,242, 70,170, 46,109,167,136, 98,205,210,197, 11, +132,241,233, 26,205, 55, 19,167, 50,223, 77,248,102, 37,128, 79,205, 89,151,207,231, 91,199,199,199,203, 57,156, 55,171,167,253, +184, 96,234,149,246,189,150, 61,143,142,205,126,112,250,200,145,134, 1, 1, 1,136, 79, 72,110,190,100,213,134, 58,174,222, 13, + 63,203,203, 85,247, 82,166,133,150,216,107,180,136,207, 15,153,187,228,231,186,140, 77,117,206,244, 17, 93, 16,232,237,134,132, +212,108,180,234,216,157, 23,124,247,110, 7, 0,172,193, 98, 97, 97, 97, 97, 97,249,128,224, 0, 0, 33,164,196, 14,251, 76, 38, +138,240,168, 36,132, 71, 37,225, 78, 88, 26,244,148,143,149, 75,230, 98,249,162,217,200, 84,115,240,199,141, 56, 60,139, 74,198, +179,168,100,164,103,229,255,105,253,226, 77, 45,151, 47,150,214, 91,185,210,122,105,135, 86,178, 54,118,182,182,182,207, 67,126, + 83,206,154,144, 82, 99,238,183,113, 2,190, 78, 20, 47,147,203,154,237,223,191, 47,192,217,209, 73, 38,151, 43, 38,203,220,235, +110,177,177,169, 99, 93,150,102,113,164,206, 53,186,119,255,184, 83, 59, 23, 23,103,102,244,202,224,176,154, 53,252, 13, 62,213, +125,154, 75,157,125,187,151,182, 78, 81, 77,134, 97,192,225,112,144,146,146,130,196,196, 68, 68, 70, 70,226,217,179,103,136,139, +139, 78, 97, 40,229,155,192,112, 92, 93,221,193,227, 9,225, 85,197, 19, 63,175, 92, 36,157, 63,103,122, 35,177, 76,120,152, 16, + 66, 74,210,212,100,102, 29, 56,113,234, 76,194,201,221, 63,155, 0, 32, 53, 43, 31, 23,238,190,192,253,208, 56,139, 78,214, 95, +209,116,149,213,100, 53, 89, 77, 86,147,213,100, 53,223, 7,205,210,188,200,191,218, 96,149, 70, 68, 92, 38,194, 35,147, 81,223, +191, 18,188,171,184,226,206,179, 44,236,188, 16,135, 45,167, 99,112,225, 97, 26, 24,158, 2,201,185,192,243,232, 20, 60,143, 73, + 47,171, 95,101, 0, 0, 87,196,239,247,237,183, 57, 19,107, 5,228, 54,185,116,114, 44, 42, 57, 62, 15,152, 50, 37,123, 44, 87, +196,239,103, 91, 89,177,123,234,196,241,131, 20, 82,169, 80,167,213,161, 90, 85, 79,241,184,175,199,126, 70,108, 69,187,205,221, + 25, 43,247, 0, 91,145, 68,178,121,254,156,201,162,159,254,120, 30,171,212, 65,121,240,102,202,203,239,166,206,202,228,241,197, + 63, 91,185, 7,216,154,171,101, 48, 24,160,213,106,161,211,233,160,215,235,145, 16,247,180,251,249, 63, 38,117,172, 90,217,174, +163, 72, 44, 6, 5,144,171, 54, 34, 50, 73,133,182, 31,181,231,214,175, 87, 47, 80,238, 90, 99,120, 73, 90,217,217,209, 57, 12, +229, 42,142, 29,218,197,221,119,246, 1,126, 59,118, 23,135, 47, 62,192,157,203, 39,141,148, 49,188, 30, 78, 66,225,230,227,171, +112,171, 29,163,168, 84, 39,229,245,228, 94,235, 30,251, 63,128,133,133,133,133,133,229,223, 69,169, 69,132, 26,141, 58,234,211, +126,131,225,234,228, 34,239,209,102,152, 32, 56, 34, 27,105, 73, 49,120,241,236, 9, 84, 26, 3, 4,182, 85, 1,177, 11,170,120, +121,226, 81,248, 97,253,234,165,199,243, 25,163, 54,170, 52,189, 30, 61,220,220, 93, 29,101,156,165, 75, 60,110, 61, 11,207,170, +191,107,230, 86, 12, 28, 40,119, 88,186,196,227, 86,244, 75, 25, 71, 42,166,205, 62, 27, 58,128,112, 8,197,148, 41, 19,209,163, +107, 39,124,254,217, 16,178,125,251,182, 38,230,238, 12, 3,254,218,105, 51,230, 10, 83,178,141,186, 59,207,242,181, 82,153, 68, +114,253,121,190, 50,208,203, 67,210,165,215,176,196,227,251, 55,255, 4, 96,168, 57, 90,133,198,202, 96, 48, 64,175,215, 3,128, + 9, 0, 56,156, 87,159, 25,121, 58,164,102,107,145,146,173,133,209,196,160, 87,191,161,146,187,247, 30, 14, 5, 80, 74,125, 44, +134, 49, 24, 13, 56,120,246, 62, 18,238, 30, 96, 8,135,155, 83, 88,201,189,208, 92,185,184,120, 92,233,218,107,136,163, 80,252, +170,184, 53, 79,169,197,246, 13, 75,216,171,148,133,133,133,133,133,229, 67, 49, 88,209, 33, 87, 27, 2,128, 95,195,142, 25,114, + 49,207,142,199, 33, 72,137,143,192,246,101,223,128, 97, 40,186,140, 88, 10,133,151, 11, 36, 2, 46,180,249, 25,249, 25, 47, 46, +217,151,181, 33, 66, 12,237,215,109, 76,240,250,114, 76, 53,171, 93,187,242,249, 0,176,107, 87, 62,127,204,232,202, 86,235, 55, + 70,121, 53,110, 81, 31,212,100, 66,215, 30,159,162, 95,255,126,136, 78, 86,225,247, 43,177, 80,170,117,102,141,127, 38,117,172, + 81,199,201,173, 82,167,111,135,117,146,241,184,132,248,120, 90,115,227,210, 12, 70, 46,151,111, 58,122, 55, 39,177, 87,175,254, + 14, 23, 78,236,107, 39,117,172, 81, 71,149,246,244, 97,121,122, 90,173, 22, 38,147, 9, 90,173, 22, 6,131, 1,118, 14, 85, 79, +180,255,116, 89,124, 82,114,222,241,228, 44, 77, 99,165,193,136,148,108, 45, 82,179,181,200, 86,234,225,162,176,133,209,160,171, + 85,154, 30,165,244,183,158,159, 14, 30, 2,128, 67, 56,198,173,121,137, 79,159, 21,206, 43, 52, 87,157,122, 12,116,188, 18, 28, +129, 23,247, 78,102, 81,198,104,120,117,224, 24,118,168, 18, 22, 22, 22, 22, 22,150,127, 25,156,255, 27, 32, 66, 75, 43,255, 76, + 72,201,132,189,156, 7, 71, 55, 47, 12,250,102, 57, 0,192,100, 50,128, 82,192,104, 50,175,135, 1, 74,249,103,191, 26,227, 21, + 85,197,139,228, 12, 26, 40, 85, 3,192,160,129, 82,117, 21, 47,146,243,213, 24,175,168, 60,141, 92,111, 52,153,112, 61, 36, 21, + 75,247, 62,197,172,109,143,113,234,158,249,221, 97,113,133,130, 49, 75, 22, 47, 18,240,184,132,132,196,228,231,199,103, 24,243, +185,124,190, 94, 42, 21, 82, 29,229,105,163,211,105,198, 71, 61, 63,123,193,225,146,225,101,233, 20,182, 28, 44, 44, 34, 44,140, + 96, 81, 74, 41, 1, 24,134,152, 76,241,233, 26,196,165,169, 17,151,250,255, 41, 37, 75, 91,106, 9,169,194,205,199,215,218, 74, +126,202,214,198,234, 51, 27,107,171,161, 50,137,237,105,133,155,143,111,113,115,117, 43, 36, 17, 17, 15,206,165,152,244,170,190, +121, 9, 15,157,243, 18, 30, 58,231,197, 63,110,192, 94,166, 44, 44, 44, 44, 44,255, 5,202,242, 34,255, 74,131, 69, 41, 37,133, +211,159,141, 17,240, 60, 38, 29, 66, 30, 3,247, 42,222,160, 69,108, 4, 5, 96, 52,153,119, 28, 14, 31, 78,140,175, 86, 93,201, + 76,158, 28,219,180,102, 45,251, 71, 99, 70, 87, 14,171, 89,203,254,209,228,201,177, 77,171, 85, 87, 50, 6, 35,223, 68, 11,250, +219, 42,236, 91,171,160, 59,126,115,119,165, 81,157,128,170,220,185,187,158,199,126,185,254, 89,184, 64, 32, 48,184, 59, 72,137, +167,179,148,235,225, 40, 17,106, 13, 28,173,111, 96, 61, 29, 56,164,158, 57, 6, 75,167,211,189, 49,101,164, 69,116, 63,243,251, +196, 30,149,156,109,135, 37,164,169, 17,155,170, 66, 92,154, 10,177,105, 42,168,180, 70, 60,126,250, 18,224, 10,158,148,164,105, +165,176, 59,189,123,231,111, 30,117,106, 84,115, 10,240,173,226,180,121,219,111, 30, 98,177,205,105,133,155,143,175,135,151, 95, +240,237,115,251, 28,111,133, 36, 34, 38,252, 94,178, 81,155,187, 91,153, 18,118,158,189,205, 88, 88, 88, 88, 88,254, 75,148,229, + 69,254,141,152,213,147,187,167,187, 51,110, 63,137, 66, 45,255,170,176,182, 82, 32, 44, 34, 30, 92, 14, 31, 28, 2, 24,140,230, +155, 32,170, 55,236, 93,177,194, 26, 49, 81, 50,206,250,159,163,188,190, 26,227, 21,181, 98,133,245, 77,170, 55,236, 5, 48,152, +210, 87, 99, 35, 22,118,108,106,178,160,251, 77,202, 24, 42, 59,219, 73,185,247, 94, 42, 51, 56, 28,174,214,222, 90,204,216, 91, +139, 56,246, 10, 33, 95,192,231, 50, 70,202,209,187, 59,121,105, 40,195,212, 49, 71,175,104, 17,161,201,100, 2, 33, 28, 83,129, + 1,147,197,101,168,145,163,225, 34, 37, 91,139,172, 60, 61,124, 42,201,112,238,194, 1,149,201,160,222, 85,146, 22,151, 47,176, +246,246,114,199,244, 31, 86, 64,173, 53,225,121, 66, 62, 4, 34,145,139,179, 75,224,195,193, 95, 78, 21,141,251, 37, 2,195,219, +217, 99,194,213,136, 4, 85,138,120, 42,123,155,177,176,176,176,176,176,252, 7, 12,150, 92, 42, 6,229,138,113, 53, 56, 2,126, + 1,181,177,237,200, 29, 84,175,213, 4, 73,121, 70, 80,112,202,109, 61, 88,200,119, 83, 85,247, 1,220,239,209,195,205,253,147, + 79, 42,181,167,148,127,118,253,134,156,120, 0,248,121, 79,107, 80, 0, 12, 67, 65, 41, 64,153, 87, 70,203,108, 8, 47, 38, 42, + 41,183,138,151,139, 12,161,241,122,173, 76, 36,224,216,202,132, 92, 71,107,161, 64,192,227,193, 68,137, 54, 41, 41, 66, 75,128, +104,115,228, 10,139, 6, 11, 63,165,114,215, 19, 31,245, 92,154, 22, 29,155,115,207, 39, 83, 85, 39, 71, 47, 4,165,128, 79, 37, + 25,158,220, 58,110, 74, 73,120,241, 92,157, 18,190,161, 36, 45,134, 1, 87,111,100,240,240,101, 14,178,149, 6,100,231,235,209, +188,109, 55, 65,243,160,238,184,250, 36, 29,140,209,128, 37,155,142,231,153,168,161, 31,165,161, 6,246,178,100, 97, 97, 97, 97, + 97,249,119, 99,214, 96,207, 38,134,194,193,222, 14, 98,153, 21,162, 82,244,200, 35, 78,200, 82, 81,152, 76,175, 34, 88,165, 5, +154, 8, 33, 65, 37,165, 31, 62,156, 24,127,232, 80,218,150,195,135, 19,139, 84,224,254,127,228,234,245, 39, 67,205,214, 36,212, +116,238,200,201, 75, 57,221, 27, 59,218,114,184, 92,181,128,207,209,242, 4, 92,189,128,199, 49, 8,120, 28,157,179, 21,159,123, +233,232, 30, 33, 37,184, 84,158,166, 70,163, 65, 80, 80, 16,186,116,233,130, 30, 61,122,160, 79,159, 62,240,245,173,225,196,225, + 18, 29, 37, 12,227, 40,204,131,183, 35, 1, 79, 19,135,243,123,126, 84, 61,185,126,232,161, 73,171,233, 70,139,148,105,190,161, + 73, 41,147,153,163,133, 70,111, 66, 86,190, 30, 89, 74, 61,140,142, 77,113,232, 70, 34,212, 58, 19, 98,130, 15,168,211,146,227, +191,209,164, 60,143, 42,211, 67,150,178,239,111, 3,171,201,106,178,154,172, 38,171,201,106,190, 15,154, 31, 26,102, 68,176, 40, +170,185,202, 80,189,146, 12, 26,189, 19, 52, 58, 19,148, 26, 19,114, 85,122,228,170, 12,136, 74, 86,225,201,145,183,207,200,171, +168, 21, 64, 10,190,131,188, 50,118,230,198,176,132,122,221, 15,203,151, 44,236,187,167, 94, 93,221,184,143, 93, 43, 63,138,210, + 37, 18,194, 81,115,184, 60,131,157,130,199, 15, 11,123,148,118,243,202,137, 86, 98,163,105, 72, 89, 58, 70,163, 49,167, 82,165, + 74, 0,222, 28, 42,167,134,183,164,199,245,227, 83,170,182,238,190,196,241,167, 5, 19, 85, 28,174,128, 33, 60,193, 19,147, 65, +189, 91,157, 18,254, 51, 45,163,194, 24, 71, 32,126,122,251, 65,104, 19, 27,187,202,120,145,160,132, 82, 99,132,222,200,192, 86, + 46, 64,252,227,211,250,168,176,123,251,242, 18, 30,110, 99, 47, 71, 22, 22, 22, 22, 22,150,255,136,193,210,104, 52, 81, 45,130, +186,129, 97, 40, 76, 20, 96, 76, 5,145, 38,230,255,209, 38,147, 65, 19,245,182, 25, 97, 24,211,157,181,191,108,233, 82,175, 81, +107,110,128,135, 28,185, 25,201,184,117,253,162, 17, 12,189,105,206,250,233,233,207,242,165, 46, 62,159,246,237,253,201,254,161, +159,143,206,110,213,182,173,204,201,201, 69, 27,159, 16,175,250,117,199, 78,195,233, 19,135, 91, 49, 48,246, 79, 79,127,158, 95, +150, 78,118,118,246,170,146,210, 63,106, 81,185, 57,128,170, 92, 30,209,169, 82,159,201, 44,217,183,244,132,184, 94, 11,127,152, + 19, 61,112,196,120, 97,181, 74,222, 72,205,225, 34, 42, 62, 25, 97, 87, 14,107, 19,158,221,253, 35, 55,254,254,112,246, 82,100, + 97, 97, 97, 97, 97,249, 15, 25,172,216,208, 87,253, 97,253,213,228, 37,167, 14,222,182,237,183,249,191,237,216,211, 92,163,211, + 85,162, 16,196,153,140,186,203,249, 38,204, 50, 87, 67,149,252,252,158,131,131,111,205, 95, 55,173,157,241,235,150,245,173,193, +152,252, 9, 16, 77, 9, 46,137, 13,166,161,229,153,171,178, 13, 92,222,198,246,159, 46, 83,103,100,228,255,102,233,186,170,244, +176,100,185,115,181,202, 27, 87,254,176,148,195,225,118, 48,153, 24, 62, 99, 50,188, 48,233, 53, 63,170,211,194,143, 80,203,154, + 75,178,176,176,176,176,176,176,252,219, 13,214,223, 69,102,102, 68, 30,128,113,111,171,147,158,254, 44, 31,192, 59,111,137,247, +248, 89,206,239, 0,126,175,232,250,249, 41, 47,211, 96,102, 47,242, 44, 44, 44, 44, 44, 44, 44,255,110, 56,236, 33, 96, 97, 97, + 97, 97, 97, 97, 97,121,183, 16, 0, 37,182, 4,176,100,164,236,138,180, 38, 40, 79,159,213,100, 53, 89, 77, 86,147,213,100, 53, + 89,205, 15, 79,179, 60,109, 75,252,199,123, 13, 45,232, 49,253,175,152, 0, 4,177,154,172, 38,171,201,106,178,154,172, 38,171, +201,106,254,215, 38,182,136,144,133,133,133,133,229, 63,135,131,131,175,220,193,193, 87,110,238,242, 50,199, 0,103,153, 99,128, + 51,123,228, 88,204,133, 53, 88,111, 9, 33,132,248,121,201,199,118,104, 93,245,144,127, 53,105,143,127, 74, 83,238, 92,205, 81, +225,209,240,186,149,123,205,206,127,193, 62,138, 2, 3, 3,155, 6, 6, 6, 54, 37,132,136,222,133,166,204,217,111, 64,101,159, +166, 87,156,189,235, 93,148,187,248,246,126,215,121, 86,184,249,216, 43, 60, 26,252,174,168, 84, 39, 75,225, 86, 39, 87, 81,185, +193,101, 43,199,128,106,229,173,231,209, 99,145,255,188, 61, 33,187, 61,122, 44,242, 47,105,190, 93,231, 53,138, 57,123, 95, 44, +112,232,190, 68,206, 94,253, 21,195,163,197, 64, 27,183, 54, 19,237, 45, 93,207,221,175,105,136, 87,205, 86,169,149,124,155, 60, + 49,119,157,202,254,205,238, 87, 9,108,145, 82,217,175,217, 61,246,200,155,135,196,169, 90, 83,137,157,231,113,177,157,231, 9, +177,125,181,182,111,171,231,230,230, 38,169, 81,163, 70,167,166, 77,155,142, 10, 10, 10,250,182, 94,189,122, 35,171, 84,169,210, +129, 16,242,143, 53,178,146, 57,251, 77,211,242, 73,186,150, 79,210,101,206,126,211,202,127,190,250,207, 39, 28, 83, 34,225,152, + 18,229,206,254,243,223,151,115, 37,118,241,243,148, 57,251,173,176,114, 13,188, 35,117,246,237,102,233,250,118,118,118, 29,156, +156,156,122, 22, 78,118,118,118, 29,216, 59,224,221, 97,241, 5, 78, 72,125,190,220,213,240,173, 80, 44, 25,198,225,192, 42,245, +197,173, 74,239,243, 14, 58, 86,107,124,143,203,225,186, 23, 77, 51, 49,166,248,180,151,183, 27,188, 11,125,191, 42,146,225, 51, + 38, 15,158, 48,160,111,144,103, 80,215,111, 8,128,195, 37,190,240, 61, 26,222, 32,132, 83,149, 67, 0, 14,135,128, 67, 0,128, + 38,166,191,188, 93,175,162,154,133, 88, 59,121, 87, 21,202, 29,175,180,232,241,149, 75,240,185,157,219,100,142, 1,237,149,105, +161,143,222,129,177,114,244,246,246,110,232,235,235,107, 63,118,236, 88, 1, 0,252,244,211, 79,213,171, 87,175,158, 17, 17, 17, +113,151, 82,154, 86,161,135,155,147,255,224, 85,203,230,253,214,185,115, 23, 36,166, 43,177,100,197,186, 54,114, 23,223, 62,249, +201,207, 14,188,139,115, 98,107, 91,213,138,103,101,251,248,155,201,243,156, 58,181,105,200,205,215, 24,113,234,202,131,150, 59, +215,205,187, 99,229, 24,208, 40, 55, 45,244,101,105,235, 50,170,156,153,206,114,218,137, 81,229, 0,192,128,226,243, 43,201, 13, + 65,142, 18, 83, 39, 87, 17,239, 1,128,131,229,230,197,171,197,105,190, 72,228,201,225,112, 80,120,238,185,228,213,249, 55,232, +213, 49,241, 79,175,116,124, 31,238, 19, 43,207,198,201,224,242,236, 57,228,255,249, 35, 5,215, 41,161, 52, 55,233,217, 85,251, +119,112, 61, 89,215,172,110, 19,248,113,243, 22,191, 94,142,204,148,121,180, 30,127,156, 80,206,250,152, 43,203, 31,154,245, 50, + 17,139,109,143, 30, 61,234,216,169, 83, 39,107,231,154, 61, 47,155,245,199, 67, 40, 14, 56,118,236,136,160, 83,167,142, 22, 92, +159,126,237,193,225,236, 32, 0,159, 97,232, 79, 92,134,238,203,207,120, 22, 97,105,119, 42, 82,103,255,225, 28, 80,179,159, 51, + 12,200, 61, 85, 74,216,150, 10, 30, 91,174,196,201,111,152, 68, 44,158,232,227, 87,195, 55, 42, 50,226, 89,110,110,206, 10,117, +234,179, 45,148, 82,198, 34, 49,131,113,210,185,171,193,157,121,124, 62,233,244, 81, 99, 46,128,139,111,115,222,157,157,157,123, +174, 89,179,166, 90,211,166, 77, 1, 0, 70,163,209,106,255,254,253, 46, 63,252,240,131,204,156,123,168,148,253,173,228,232,232, +232, 33, 20, 10, 43, 1,128, 78,167, 75, 72, 75, 75,139,165,148, 38,148,123, 77,184,120, 59, 16,240,230, 93,189,114,133, 7, 0, + 45, 91,182,154,239,217,114,172, 45, 87, 32, 87,151,120, 56,116,121, 50, 0,227,111,221,190, 73, 0,160, 73,227,166, 83,101,142, + 1,107,149,105,161, 41,255,152, 9,118,246,111,204, 1, 38, 52,111,213,190, 87,191,254,131, 57,129, 62, 30,232,208,190,221, 20, + 0, 71, 45, 50, 0, 60,158,228,206,157, 59,222, 28, 14,135,107, 52, 26, 53, 77,154, 52,137,125,155,124, 85,242,107,118,131,128, + 83, 89,111,212,109, 74,123,121,111,126,241,107,143, 16,194,181,174, 92,111, 6,184,188, 17, 12,195,196,229,198,220,109,198, 26, +172, 34, 7,199,202,189,238,181,190,253, 6,213,252, 97,242, 72,241,234, 29,103, 97, 87,181, 81,104,102,228,157,128,247,117, 7, +185, 28,174,251,153, 51,167,157, 36, 34, 46, 0, 32, 95,109, 66,103, 51, 30,182, 54, 94,141, 47,113, 8,241, 43, 28,210,219,100, +212,139,121,124,161,134, 0, 0,121,213, 58,192,193,173,202, 5, 87, 87, 59,233,128,190, 65,158, 59,246,156,141,143,141,207, 40, +245,161,207,225,112,221, 15, 31, 57,234, 84,201, 94, 12, 30,151, 32, 95,109, 68,167, 46,221, 76, 37, 45,235,234,106,247,241,128, +190, 65,158,187,246,158,139, 77, 74,202, 60, 94,230, 67,220,213,183,190,204,218,249, 84,175, 81, 63,216,107, 56,118,152,181, 96, +149,195,149,147,187, 46,183,254,120, 48, 19, 19, 19,167,161,132,132,102,101, 38,125,155,159,244, 34,220,220,115, 44,151,203,171, +201,229,242, 58,157, 59,119, 22, 79,156, 56,145,223,166, 77,155,215,243, 71,142, 28, 41,184,116,233,146,235,178,101,203,186,184, +185,185,105,242,243,243, 31,230,231,231,191,164,148,154,204, 61, 39, 46, 46,142, 95,127,250, 73, 55,180,235,245, 21, 76, 12,193, +200, 47,199,227,244,201,131,163, 1,188, 19,131,101,144, 90,253, 48, 98,212, 68,199, 38, 13,235,114,231,237, 10,135, 68,200, 67, +199, 6,126,228,179,177, 51,109,182,172,158,183, 25, 64,235,146, 34, 87,140, 42,103,102, 77, 7, 93,255,238, 77,171,226,200,110, + 93,127,247,160, 41,224, 72,173,231,199, 30,158, 22, 6, 0,222,157,199, 41,108, 37,146, 53,110, 54, 92, 39,145, 41,109,141,119, +231,113,231, 34, 78,174,206, 43, 43, 47,124,145,200,115,207,238, 93, 62,182,114, 1,184, 92, 2, 30,135, 3, 46,151, 64,171, 55, +161,119,159,254,239, 42,194,200,149, 56,249,116,225, 0,159,189,122, 81, 99,171, 58,245,249, 9, 75,206, 9,225, 10,236,143, 29, +249,131,231,100, 45, 2,151, 75,192,229, 0, 92, 14, 65,116,138, 26,195,135,127,102,253,182, 70,189,115,115,167,134,151,214,182, +238,216,164,166, 93,237,189, 55,137,117,147,206,253,236,211, 53,210, 97,123, 14, 95,236,239,209,106,194,109, 74,153,165,113, 87, + 87,158, 41, 75, 71,171,213,166,116,236,212,217,138,240,100,210,115,135,182,181,226,113, 8, 12, 38, 10,163,137,194, 84, 48,118, +233,171,251,149,128,195, 33,160, 12,197,136, 17,195,209,177, 83,103, 21, 99,100,226,205,206, 48,135,179,227,212,185,235,142, 90, + 3,131,101,107,182,204, 83,230,164,205,139, 12,179,143,150, 58,251,142, 87,165, 60, 51,123,220, 10, 14,104,131,184,151, 79, 70, +237, 58,118, 11, 53, 3,106,192,196,188,202,167,159,187, 12,187,142,223,130,191,159,255,171,124, 51, 20,190,149,229,104,216,160, + 33, 0,108,177,252,248,182,225,201,156,253,119,119,239, 61,180,119,175,222, 3, 96,103,107, 5,157, 94,235,123,254,244,137, 95, +126, 94,179,164, 57, 33,100,152, 69,230,144,154, 94,191, 23, 40,195,188,117,148,201,205,205,205,177, 97,195,255,119,167,104, 52, + 26,225,229,229,133,132,132, 4,191, 10, 92, 75, 82, 87, 87,215,143, 55,110,220,232,212,165, 75, 23,190,139,139, 11, 0, 32, 57, + 57,185,210,169, 83,167,234,185,185,185,165, 38, 37, 37, 29,167,148,170, 74,211, 48, 25, 56, 2, 14, 15, 92,177, 88,250,106, 31, + 65, 56, 19,191, 30, 82,219,217,213, 77, 91,210,242,105,105,201,194,201, 95, 93, 36, 60,158,160, 96,121,112, 40,101, 72, 25, 81, +161, 32, 62,159, 47, 41,105,158,158,107,213,132,242,173,191,224,112, 57,175, 46, 86,163, 33, 45, 51, 38,184,134, 5,145,183, 64, +190, 80,240,243,192,161,163,154,245,238,213, 3,174,142,214, 56,119,237, 17, 70,127, 61,193, 96,212, 27, 86, 84,232, 29,201,229, +242, 82, 83, 83,163,109,109,109, 93,222,254,125, 75,170,158, 61,125,210,233,220,249, 11, 83,151,175, 92, 61,198,205,183,165,129, +161,244,245, 56,195, 30, 53,219,241,219,119,237,107,229,228,221, 68,188,122,246, 23,124, 54,130, 85,212,249,187, 5,124,219,167, +111,223,154, 95,141, 30, 41,254,118,205, 53,156,223,253, 83,250,187, 50, 87, 10, 39,191,166,132,203, 27, 69,184, 92, 25,225, 16, + 33, 99, 98,226,140, 58,221,124, 85,250,179,164,183,213, 54, 49,192,239,215, 83, 45,187,145, 41,170,239,216,119,200,201,217, 70, + 4,141,206,136,126, 3, 6, 99,199,142,223, 20, 14, 86, 66,104,116, 70, 44, 93,190, 60, 47, 63,250,184, 83,116, 92, 86, 66, 80, +183, 9,103, 94, 70,165, 62,137, 77,210,236, 43,253,193,192,129,147,181, 8, 11,246, 60,131,149,132, 15, 91,133, 0, 28, 14, 41, +250,224, 32,190, 85,100, 95, 87,174,236,216, 54, 49, 41, 43,167,136,230,206, 82,111, 54,215, 90, 29,173,109,221,118,127, 50,106, +129,205,243, 84, 30, 40,244,136,176, 18,163,239,176,113, 86,213, 92, 36,144,137,185, 54,145, 49, 9,174, 19, 39, 77,186,102,237, +228,221, 40, 39, 53, 34,178,188,253,174, 82,165, 74,175,174, 93,187, 74,191,251,238, 59,126,229,202,149,177,117,215,126,207,150, + 29,251,116, 75, 76, 74,169, 76, 41,133,179,147, 83,220,136,207,250, 28, 61,113,226, 68, 76, 92, 92, 28,127,201,146, 37,141,255, +248,227,143, 0, 75,254,137,154, 40,133, 70,107,130,169,224,197,152,150,163,181,244, 33, 75, 42, 85,170, 36, 74, 72, 72,208, 22, +190, 56, 8, 33,175, 15,166,188, 82,221,142, 31,181,110,204,219,120, 50, 10,249, 26, 19,100, 98, 62,162, 82, 84,104, 80,183, 22, +217,100, 50,214, 41, 73,115,120,223,143,103, 58,203,105,167,238, 77,171,194,201, 86,138, 95,215, 46,192,145,155,145,157, 82,242, + 9, 28,186, 47, 25,229, 42,226,181,119,148, 10,214,180,105,224,237,210,174,190, 39,238, 54,240,118,185, 18, 28,254,172, 86,223, + 21, 99, 19,242,249,231, 50, 79,142,205, 43,249,129,195,129,157, 66,136,205,167,162, 33, 21,243, 32, 19,243, 32, 19,189,250, 44, +122,254, 43,244, 47,214, 45,160, 50,151, 49, 13,183,114, 11, 24,222,191,111, 31,183,129,253,251, 80,112, 57,216,255,251,209, 30, + 59,119,238, 72,146,187,248,109, 54,113,184, 91,212,137,161,113,229, 30, 83, 14,224,100, 45,196,164,205, 79, 96, 37,225, 67, 33, +229,195, 74,202, 71,187,218,142,224, 86,176, 34, 1, 33,196,118,116,143,106, 93, 30,253, 22,212,214,207, 67,238,243, 48, 34, 39, +116,248,252,123, 43, 47,101,183,253,118,237, 79, 1,246,249,217, 58,222,172,137, 35,120,241,137,137,109,247, 31,189,220,206,173, +209,240,112,163, 94, 57, 61,245,225,190, 18, 35,182,113, 97, 55,234,185, 55,237, 35,214,231, 27, 30, 63, 12,143,247,206,210,138, + 16, 18,157, 11,153,152, 7,121,225,177, 21,243, 32, 19,243, 33, 23,243,144, 24, 31,133, 76, 37,247, 90,130, 61,167, 45,189,116, +195,104, 73,222, 53,122, 19, 30, 68,230,163,138, 95, 93,184,186,186, 65,215,101, 80,149,219, 23,126, 63, 44,115,173,177, 72,153, +244,116,186,185, 58,187,142,221,194,212,241,163,130, 9,112,191,224,229, 92,111,214,226,117,245,231, 77,253,234,141,180,137,115, + 87,215,175,168,185,150, 58,251,237,108,253,241,224,222,181,154,116,192,203,168, 40,156, 60,122, 15, 31,181,239,140, 46,221,122, + 65,167,211, 14,217,178,113,245, 93, 0,235,254,244,204,117,173,209,162, 86,205, 26, 59, 43,185,185, 85,102,152, 87,163,114, 80, + 10,180,104,221, 14,147,191, 29, 1,134, 82,212,169,215,168, 93,151,254, 99, 41, 45, 24,189, 35, 61, 35, 93, 25, 30, 22, 26,164, + 78, 9,187,109,246,177,212,104, 12,105,105,105,120,240,224, 1,158, 61,123,134,144,144, 16,100,100,100,192,218,218, 58,223,194, +125,181,170, 93,187,246,192, 11, 23, 46,136,109,109,109, 95,167,235,116, 58, 40, 20, 10, 12, 28, 56,144,223,161, 67,135, 74, 31, +127,252,241, 80, 66,200, 46, 74,105,110, 73, 58,234,140,231,137, 86, 46,254, 27, 90,183,105, 61, 6, 0, 36, 86,174,145,107,182, + 30, 13, 41,243, 94,179,118,243,108,214,172,185, 55, 40, 5, 1, 93,165, 76, 15, 79, 46, 35, 42, 36,187,117,235, 86, 53, 46,151, +251,250,253,202, 48, 12,214,255,186,215,255,236,213,199,189, 22, 47, 93, 38,182,146,137,144,150,163,195, 23,131, 62, 49,251, 29, + 44,117,241,239,210,188,121,235,195,243,230,126,207,147,203,100, 56,115,251, 37,198,126, 59, 73,147, 20,253,100, 25,101,248,235, +148,169,225,169,111,249,170,124, 39, 29, 94,251,184,203,161,232,222, 81, 60,122, 72,119,177,206, 96, 66,182,210, 0,173,222, 4, + 19, 67,145,163, 52, 32, 52, 54, 15, 14, 86,194,138, 72, 55, 4,224, 8, 32, 13,192,221, 98,191, 81,240, 29, 37,252, 78,127, 21, + 22,129, 61, 0, 29,128,162, 27, 47,252, 93, 90,122,225,250,161, 0,106, 20,104,154, 0,220, 1,144, 85,174,193, 34,132, 80, 74, + 41, 41,114, 17,191,241,187, 40, 2,161,188,239,212,177,131,197, 63,236, 10,198,249,221, 11,211,211, 34,110, 22,238, 0,156,188, + 27,223, 79,141,120,179,184,203,156,166,150, 18,183,128,202, 60,194, 93,209,186, 77,171, 14, 99,190,252, 18,126,213,220, 5, 38, +147,137, 62,121, 22,105,216,182,229,215, 97,214,149,107,173,204,141,127, 50,179, 48,212,104,105,243, 77, 19, 99,138, 47, 30,177, + 50, 49,166,248,242,242, 73, 8, 96, 35, 19, 96,195,137, 72, 80, 10, 16, 80, 88, 73,249,216,115, 41, 30,145,193, 7,115,187,214, +201, 85, 14, 92, 60,167, 93,219, 46,227, 46,132, 70,104,246,165,166,106, 78, 83, 74,147, 75,211,228, 16,128,199, 37,176,146,242, + 97, 45, 21,192, 70, 38, 0, 41,242,226, 42, 90, 44,216,166,203,184,179, 23,174,199, 76, 7,144, 70, 41,213,150,164, 41,113,241, +105,104,101,227,190,175,215,152, 37,138,199,241, 70,240,184, 64, 85, 23, 9,236, 20, 2,232,140, 4,209,105,250,130, 59,198, 6, + 99, 39,206,181,155, 58, 97,204, 9, 66, 2,106, 82, 26,170, 47,107,223, 85, 42,149,112,240,224,193,124,131,193,160, 31,248,197, + 55, 29,146,147,211,122,172, 95,245,163,200,201,201, 25, 42,141, 17,193, 33, 47,106,204,155, 55,183,234,209, 83,151, 14,205,153, + 52,250,112,167, 78,157,172,247,238,221,203, 88,114,222,211, 82,210,215,254,186,243,192,111, 63, 45, 91,136,240,152, 44,108,217, +184, 14,212,100,220, 80,230,157, 95, 68,147, 82, 74,167, 79,159, 46, 57,116,232,144,187, 76, 38,203, 85,169, 84,105,111,196, 31, + 56,132,151,146,169,130,131, 66, 8, 1,143, 3,103, 91, 49,156,172, 69,224,115, 1, 14, 33,166,146, 52,183,236, 59, 62,159, 81, +229,224,200,110, 93,255, 95,215, 46,192,231, 95,207,192,147,116,225, 41,142,212,122,254, 87,253,123, 77,117,148,152, 58,185,217, +112,156,218,213,175, 2,153, 88,128,105,227, 6,163, 81,112,180, 83, 66, 54, 51, 35, 77,205,173, 11, 96, 70,137,231,157, 67,192, +227, 18, 40,164,124,156,218,185, 52, 85,153,147,150, 83, 88,244,166,211,106, 98,204,122,234,149,112, 60,101,206,126, 83,235,215, +173,189, 96,204,200,225,156,230, 77, 27, 81, 14,135,143,244, 60, 29,161, 20,248,118,236,104,124, 53,122,132, 75, 92, 98,234,172, +117,235, 54,204,148, 59,213,248, 33, 63,245,233,156,178, 52, 57,228, 85,212, 71, 46,230, 65, 46,121,101, 88,228, 98, 30, 52, 58, + 19, 8, 1,215,214,179,126, 14,121, 21,185, 77,204,136, 46,249, 31,119,113, 77, 59,143,192,243,103, 35, 21,254, 89,251,178,110, + 70, 37,134,204, 15,126,148,114,135, 82,154,233,209,122,194, 80,189,145, 34, 95, 99, 68, 84,138, 10, 70, 61, 37,159,119,246,132, + 87,111,226,183,240,215,251,191, 17, 66,172, 10,141,115,113,205,248,155,251, 53, 14,181,122,245,251,105,245,198,187,203, 22,204, +224,166,231,232,192, 80, 10,177,144, 11,137,144, 87, 48,113,161, 86,230, 96,221,207,155,146,141, 32,189,232,165, 75, 70,139,158, + 75, 12, 29,244, 73,151, 86,123, 8, 32, 36, 28, 65,188,155,103, 21,207,143,186, 13, 19,127,212,125, 48, 76, 70,221, 84,153,179, +255, 69,101, 74,216,121,115, 52,107, 6,212, 0, 1,238,231,167,132,143, 6, 0,185,179,223, 6,127, 63,255,250,197,211,170, 87, +247,171,111,206,121, 47,120, 70,115, 36,142, 62, 35,171,251,215,154, 60,230,251,141, 85,162,146, 84,176,171,236,131,144,199, 15, +112,114,239,218,251,234,188,172,101, 39,143, 28,156,252,195,143,171,234,116,235,217, 23,135,255,216,251, 29, 33,100, 61,125,197, +185, 34,209,169, 65,219, 54,255, 82,153, 47, 20,193, 96,100, 96, 48,209, 87,159, 70, 19, 50, 51,179, 96, 48, 50, 16, 75, 21, 48, + 50, 4, 6, 19, 3,131,145,129, 86,103,148,141, 30,252,241,151, 0,110,151,148, 79,247, 26,109, 78, 11, 68, 34, 79,138, 87, 99, +203, 82, 74,193, 53,234, 56,174,174,174,187, 0, 64, 36, 18, 65, 36, 18,129, 97, 24, 4,135,167,125,237,232, 31, 52, 6, 5,198, +206,164,215,197,100, 69, 93,235, 88,218,190,187,184,184,116, 43,110,174, 52, 26, 13,242,243,243,113,245,230, 93,235,205,191, 29, +232, 20, 21, 19, 95,141,161,214, 90,133, 83,181,142, 0,186,149,118, 60,115,147,195,190,172,220,116, 36,231,187,175,134, 86, 95, +189,237,216,157,231,167,126, 40,179, 30, 86,213,160,169,186,239, 70,125,218, 96,241,170, 45,207, 51,175,253, 60,190,188,115,196, +227,241,248,105,105,105,175,239,239, 53,155,118, 55,184, 31,158,208,115,229, 79, 43,197,193, 47,243,240, 56, 42, 17, 67,131, 60, +240,198, 75,160, 12, 77,185,139,183,131,183,183,255,174,117,171, 22,243,158, 39,106,176,246,224, 29, 92, 56,188,225,106,114,234, +237, 78, 52, 57, 81, 93,145,103,200,219, 26,172,178, 52, 47, 62, 74, 71,190,198, 8,173,206, 8, 3, 67,145,171, 50, 32, 53, 91, +135, 92,149, 30,249,106, 35,134,182,247, 40,205, 68,151,229, 71, 28, 9, 33,199, 40,165, 93,241,170,123, 41, 97,145,223, 32,132, + 28, 43,200,215, 27,191,167, 78,157, 58,125,209,162, 69, 33,133,203, 22,166, 23, 46, 91, 86,122,145,245,237,167, 77,155, 86,115, +241,226,197, 11,155, 54,109,186,231,198,141, 27,145,102, 25,172,162, 59, 65, 8, 41,243, 0,139, 4, 60, 55,169,194,246,149,225, +248,127,192, 0, 85,106,182,201, 88,185,100,158,157,171, 79,147,152,164,231,183, 60,205,143, 90,249, 54,147, 72,164,199,151, 47, + 95,142,254,221, 90, 74, 98,211, 13,249,143, 98,213, 41, 74, 29,140, 78,142,190,194,249, 11, 23,203, 23, 47, 89,250,213,177, 35, + 76, 54,128,165, 37, 23,229, 53,188,199, 37, 69,234, 88, 17, 2,202,152,226, 51,163,238, 52, 0,128,183,169,107,165,212, 24,193, + 45,168, 59, 67, 8,160,210,154,192,229,146,212,236,240,125,161, 3,127,152,223,110,199,158,179,137,148, 99,147,167, 84, 70, 73, + 41,165,241,101, 71, 8, 8,114, 85, 6, 88, 75,249,176,145,243, 97, 45, 19,128, 91,228,230, 42, 44, 22,220,177,251, 76, 66, 76, + 76,198,221, 2,115, 85,170, 38,143,203,137,164, 38,131,134, 82,147,162,107, 67, 71, 56,217, 8,225,106, 43,130, 72,200,131,193, + 8,168,117, 12, 52, 58, 19,162, 83,213,200, 83, 75, 80,171,117,159,170,246,174,247,180,246,158, 13, 15,101,196,220,237, 85,166, + 41, 53,153,176,109,215,129,234,137,137, 41, 61, 78, 28,218, 41, 74,203, 53,224, 81,180, 18,169,217, 90,128,235,136,217, 11,215, +138,166,140, 31,217,115,219,238,223, 99, 62,106,217, 56,198,226,227,154, 26,182,163, 86,179,143, 55,116,237,218, 83, 18,114,251, + 4,158, 63, 56,191, 32, 63,197,252,250, 87,132, 16,206,254,253,251,141, 35, 71,142,204, 91,184,112, 97,229, 35, 71,142,120,165, +165,165, 61, 0, 96,176,177,177,241,247,173,238,249,240,204,169,147,149, 62,238,217,135, 31,159,174,134,181, 84, 0, 79, 39, 41, +110, 94, 61,109, 16, 10,249, 37,214, 39, 41, 40, 6, 28,224, 30, 52, 5, 71,110, 70,118, 10,201, 16, 95, 26, 49,124,104,204,153, + 43,225, 25,107,126, 59,243, 99, 37,185,225,129,152, 73, 91,115,175,129,183,203,212,177,131,177,104,245, 14, 92, 14, 14, 79, 85, +114, 92, 23, 36,105,141,103,231,244,155, 92, 74,200,252,149,177, 86, 72,248, 80,230,166,229,188, 8, 62,233,251,142,162,207, 67, +207, 28,218,193,201,204, 51, 32, 46, 93, 67, 18, 51,243, 96, 98, 40,108,164, 2, 24, 25,138,236,204,116,178,115,199,111,184,123, +247, 38, 7, 92,206, 23, 0,230,148, 89,156, 69, 94, 21, 9,202,197,252, 87, 17, 32,201,171, 79,131,137,129, 95,117,111,252,178, +102,133,149,131,147, 51, 90,180, 50,191,206,179,194,222,179,206,158,173,107,112,233,198,253, 54,151, 87,174,109, 40,119,115, 92, +109,229, 30,176,204,218,171,189, 70,171, 55, 33, 39, 59, 11, 66, 93, 28, 26, 85, 74,131,157,212,132,232, 92, 87, 60, 73,126, 46, + 47,175, 56, 43,253,241,193, 7,142, 53, 63,153,121,224,232,133, 69, 29,219,183,193,147,232, 92, 72,132, 60,136,133, 92,136,133, + 92,240,137, 9, 43,126,222, 96,200,202,201,235,154,254,228, 80,122, 5,174,207,115, 5,255,118, 95,189,220,156,171, 57,238, 88, + 61,115,251,136,201, 75, 58,118,250,100, 24,121,114,247,226,116, 0,231,205,251,131, 71,205, 74, 99, 24,106,246,181,239,228,221, + 96,215,214,109,187,251, 5,248, 84, 70, 74,182, 1,137, 89,122, 92,189, 31,129,237,155,103,102,103,165,188, 28, 4,125,126, 62, + 67,140, 57,167, 79, 29, 61,245,245, 55,147, 17, 88,179, 78,149,220,248, 92, 43, 0, 57,111,108,147, 75, 54, 14, 25, 62,170,159, +179,179,179,226,255, 17, 44, 10, 95,191, 0,116,233,254, 41, 78, 31,254, 3,161, 33,143,192,208, 87, 70,137, 97, 40,178,179, 50, +146,141, 6,221,182,210,242, 39, 20,139, 61,127,221,250,155, 15,135, 67,160, 55, 48,208, 25, 25,140,255,242, 51,221,232,111,167, +183,232,210,161,117,136,144,139,220,232,216, 36,155,155,247,159,214, 98,248,242,202,195, 39,174, 16,104,180, 38,228,168, 12, 56, +177,165,116,143, 35,177,243,108, 90,167, 89,207,225,163,191,255, 69, 36,226,114,244,129,190,149, 35, 91, 55, 9,140,243,112,115, +200,155,183,120,109,163,107,183,239,119,233, 59,112,184,120,168,127,125,226,102, 47, 81,124, 54,240,147,218, 50,123,143, 33,202, +140,216, 82,135, 54,227, 75,109,179, 61,188,170,171,254, 31, 33,242, 59, 72, 40,170,190, 97, 34, 8, 34, 85,201,225,189, 0,192, +213,205, 67,195, 23, 89,229, 89, 96, 64, 40, 0,172,222,180,187,193,195,103,137, 35,126,250,105,165, 52,248,101, 30, 30,188,204, +129, 72,192,129,222,192,128,152, 25,196,102, 40,119,212,140,105, 83,173,178,148, 38, 92,122,148,134,144,123, 23,169, 46, 95, 51, + 80,106,180,234, 37,115,246, 27, 2,192, 27, 64, 4, 33,116,163, 50,197,229, 48,165,151,140,150, 94,247, 12,243,234,127,178,181, +147,119, 85, 19, 79,212,133, 47,148, 53, 37,132, 6, 18, 10, 91,128, 38,100, 20,188, 83,205,117,104,202,148,103, 88,178,112, 22, + 86,109,254, 3,137, 25, 26, 88,155,226,112,120,203,124,124,183,104, 23,212, 90, 83, 89,215,120,153,126,164, 36, 67, 84,220,104, + 21,126, 47, 92,110,209,162, 69, 93,139,157,155,174,165,156,179, 63, 45, 87,184,254,226,197,139, 23, 22,153,175, 50,187,136,176, +112,103,202,218, 41, 43,199,128,106, 2, 43,185,200, 74,194,135,151,135, 43,250,143,153,227,224,226,211, 60, 85, 36,228,113, 15, +237,254,197, 46, 93, 45, 2,225,112,148,102, 23,111, 56,251, 55, 86, 40, 20, 39, 14,254,254, 7,170,121, 56, 9,118, 94,205,140, +186, 31,169,126, 29,210,205, 77,139, 17,122, 89,169,120,189, 62,249, 68,122,254,194,197,111, 75, 51, 88, 92,194,117,223,244,219, +239, 78, 10, 9, 31,132, 0,121,106, 35, 70, 12,249,244,237, 95, 95,148,225,126, 62,108, 8, 72,129,185,202,205, 72,198,244,201, + 99, 52, 50,195,243,208,216,232,216,132,160,110,223,157,207,205, 39,154,126,131,191,188, 27,250,108, 81, 86,249, 87,175, 33,190, +203,199, 93, 4,175, 34, 5, 0,151, 16, 48,148, 73,241,243,146,143,253, 83,177, 96,178,118, 83,121,134, 45, 47, 33, 60, 83,225, + 90,171,247,142,229, 95,111,114,115,118,178,151,203, 36, 84, 46, 21,145, 64,127, 31, 65,147, 38,205,132, 94,126,181, 5, 87,159, +170, 17,155,166, 70,100, 98, 14, 68,206,117,121,253,219,117,198,142,149, 19,219, 16, 66, 56,229, 85,124, 61,123,233, 86,183,205, + 63,255, 36, 74,201,214, 35, 44, 54, 31,201, 89, 26, 36,101,105,145,156,169,129, 92,194, 71,171,238, 35, 69,199, 15,111,236,246, + 81,203,198,171, 43,114,120, 35, 35,163,142, 71, 39, 36,245,169, 93,175, 17,118,108,223,218,210,214,182,170, 85, 86, 86,100,174, +185,103,103,254,252,249,194,197,139, 23,243,214,172, 89,147,219,164, 73, 19,151,105,211,166,117, 76, 77, 77,189, 83,165, 74, 21, +191,211, 7,183, 93,168,219,170, 71, 67, 48,122,199,150,173,219, 10, 68, 12, 15,103,142, 29,211,239,219,187, 51, 67,173,206, 27, + 93,166,209,144, 90,207, 79,201, 39,112,172, 84, 41, 68, 46, 52,181,231,113,178,159,101,158, 28,251, 27,128,131,222,157,199,157, +187,120, 47,252,217,255,216, 59,235,240,168,142,182,141,223,179,158,149,184, 59, 16, 8, 9, 33,193,221,221,181,104,161,148,182, + 72,169, 80,164, 45,148, 22,107,145, 82, 90,164,165,197,138,211,226, 90,220, 93,131, 67, 18, 8, 81,226,178,146,117, 57,243,253, + 17,121, 3,111,100, 67,233,215,183,116,126,215,181, 87, 54,187,231,220, 59,115,206,156, 57,247,121,198, 26,223, 76,244, 58,117, +243,113, 86,158,206, 92,251,201,225,201, 21, 86,184,124, 66, 32,224,243,224, 40, 21,128, 87, 84,155, 58,250,215,127, 12, 66, 60, +139, 35,165, 4,164,232, 47, 64, 8,210,242,146,162,237,232,147, 65, 40, 71,129,152, 84, 45, 10, 12,133, 33,248, 0, 15, 25,178, + 51, 83,241,243,242, 13,136,190,113, 29, 93,123,244,197,138, 53, 91, 48,230,173,193,134,202,212,120,188,162, 8, 86,169,232,149, + 66, 42, 0, 64,160,212, 90,176,235, 66, 10,106,214,224,217,125, 67, 0, 0, 71,133, 12, 42,141, 30, 60,145, 35,158,220, 60, 36, + 59,124,250,234,244, 47,191, 94,242,105,126,250,157,228,199,119,207, 35,204, 67,133, 26,254,102,220,207,112,194,141,220,234, 8, +171, 21, 2,158,232,186, 93,218, 57,247,163, 22,237,227,237,234,221,184, 65, 68,139, 96, 47, 23,232, 77,182,162, 40, 22, 31,235, +215,109, 66, 98, 66,234,187, 57,247,247, 70,191, 10, 39, 91,144, 25,159,237,224, 29,250,193,221,171, 39,159, 14,120,243, 3,248, +250, 7,213,183,255,166,101,159,153,178,217, 97,176, 8, 33, 60,183,106, 13, 54,110,220,188, 99,104,141, 32, 31, 28,191,154,128, +107,177,185,240,240,112, 7, 95,230,131,208,118,163, 93,238, 30, 89,246,134, 62,167, 96,163, 80, 36,123,175, 89,243, 86,160,148, + 34,230,225,253, 60,149,202,249,191,234,102, 93,218,163, 91, 0,156,158,107,134,242,172, 83, 95,225,236,118,203,104,182,225,217, +179, 84, 92,188,116,166, 97,209,118,118, 35, 17,241,113, 44, 58, 11,102, 11, 7,179,149, 67,219,118, 93, 76, 34,158,177,205,188, + 37,235,154,167,167,165,243,228, 78, 30,156,155,127, 29,145,175,196,108,188, 29,175, 18,153, 45, 28, 66,252,228, 21,106,122,250, +213,154, 63,117,234,164, 58,124,145, 20, 26,173,209,148,158,246,204,103,245,111,167, 11, 30, 62,186,235, 31,224,229,236,244,237, +210, 85, 34,181,129, 32, 75,101, 68,158, 70, 77,222, 28,247,153,223,218,159, 22,140, 0, 96,247,218,177,132,162,198, 31,199,206, +135,187, 58,138, 72,129,193,202,229,170,205,182, 55,251,255,185, 65,148, 69,230,106,236,146, 31,150,202,162,227, 53,184, 29,175, +130,131,136, 15,177,136, 7,147,133,131, 61,151, 19, 33,132, 87, 35,178,221,248,150,141,163,112,244, 86, 14,248,124, 30,244,154, +124,157, 0,185,177,141,219,119,149, 53,106,218, 28, 29,218,183,195,227,216,152,160,131,251,119,117,186,124,241,108,134,194, 43, +236,195,130,172,152, 61, 85, 42,231, 58, 29,223, 34,246, 25,237,235, 95,173,213,192, 97,163,157,131,131,252,137,151,135, 59,172, + 84,128,177,111,189, 97,247,149, 95,104,200,129,133, 95, 79,135,209,104,130,167,139, 24,148, 2,235,150,207,134,201,100,130,159, +187, 4, 42,173,165, 34, 99, 90,161, 31, 41, 47,234, 84,197,230,230,131,101,153,172, 23, 63, 39,132, 28,156, 54,109,218, 23, 0, +232,180,105,211,190, 40,254,127,193,130, 5,122, 0,105,118, 25,172,226, 76,149, 91, 81,250,133,214,118,245,242,187,176,125,227, + 79,174,249, 5,102, 56,136,248, 8, 8, 12,198,231,115,151,121,246,104,236,129,108,131, 12, 59,118,174,207, 51, 25,116,219,236, +107, 75, 14,109,236, 40,119, 58,186,113,243, 54,206,195,221,157,247,243,177,236,248, 92,141,181,164,233, 42,246,234,126,238,198, +209,213,190, 20,228,136,131,131, 67, 45,147,201,228, 90,217, 9, 93,119, 44,169,168,115, 46,121, 21,117, 42, 8,159,111,219,178, +101, 51,220,157,196, 48, 90, 56, 76,251,116,162,126, 84, 87,133,242,205, 33,195, 58,118,232,249,241, 41,161, 60,244,100,203,134, +161,180, 65,131, 6, 74, 62,159, 95,169, 94,238,211,107,255, 53, 90, 34,188,186,236,189, 25,159,141,154, 81, 70,179,160, 93, 29, +114, 53,233,119, 47, 0,120, 46, 34, 66,106,214, 20,111,221,177,111,226,160, 33, 67,191,244,175,223, 95,145,144,174,130,136,152, +209,164,142, 47, 78, 31,217, 67, 83, 19, 99, 39,217, 51,170, 40, 43, 59, 47,208,211,211, 27,209, 79, 11,240, 44, 87,143,140, 34, +115,149,158,111,132, 70,175, 65,189, 96, 63, 40, 85,170,192,151, 62,190,192,158,163, 71,143, 14,238,217,111, 40, 62,254,116, 78, +235, 95,127, 89,124, 71,225, 83,251,157,130,140,216, 51,246, 60, 25, 18, 66,242, 62,255,252,243,154,107,214,172,225,141, 24, 49, + 66, 31, 21, 21,229, 48,114,228,200,214,155, 54,109,114,144,201, 28,244,183,207,239,255,242,189,143,166,245, 91,189,236,155,250, +249,249,249,196,106,177, 28, 54,231,231, 79,211, 84, 98,226,146,247, 77,127, 68, 34,230,188,221,165,141,231,126, 55, 25,175,174, +132,154,134,145,136, 57,219,232,131, 89,230, 39,135,151,107,162,134,252,240, 81,154,146,155, 97,224,121,205,171,204, 92, 1, 0, +143, 79, 96,178,112,112,148, 10,193,227,241,138,205,187,239,250,109,135,101,158,206, 98, 8,249, 60, 8,248,133,209,205, 28,181, + 25, 31,140,238,103,247, 19,128,213, 70,161, 55, 89,161, 43,122, 26,212,168,115, 48,253,211,201,232,209,103, 0,222, 27, 63, 25, +249,122,224,198, 83, 13,204, 22, 75,165, 23, 5,143,240,160, 51, 90,241, 78,215, 96,228, 21,152,161,213, 91, 97,178,114,144,137, + 5, 16, 10,120,144, 59, 8,224, 36, 19, 2,148,138, 8, 33, 99, 1, 64, 40, 20, 26,204,102,243,230, 10,206, 19,170, 7,122, 67, +111,225,161,233,208,197,232,220,162, 54,238, 95,216, 37, 56,123,229,110,141, 79, 62,157,129,137, 99,250, 96,231,163,154,112,243, + 10,134, 66, 46,133,133,242, 0, 80,187, 58,228, 81, 58,139,243, 13, 31, 56,124,229,154,117, 49,115,103, 78,115, 80,106, 9, 36, + 34, 62, 78,157, 60,129,203, 87,111, 44,203,190,191,119, 51, 94, 33, 66,202,243,118,114,114,130,131,152, 15,147,217,104,178,191, +139, 2, 5, 5, 26, 42,188,195, 86, 22, 61,225, 55,180,113, 40,227, 51, 90,217, 13,129, 56,251, 69,174, 95,185,118,203, 8, 63, + 31, 47,236, 57,121, 7,235,215,252,136, 26, 13,122,227,194, 31,235,225, 92,189, 57,228, 65,173, 33,118,220, 49,150,199, 23, 68, +125,248,201, 23, 3, 27, 53,105,129,139,231, 79, 33, 43, 35,125, 37,165,143,236,138,104,240,133,228,227,142, 93,250,192, 96,178, +161, 77,167,222, 56,114, 96,207, 71, 40, 26, 60, 97,255,205,235,133,250, 25, 60,235,228, 73, 31, 11,179, 84, 38, 97,142,202,132, +148, 28, 61, 18, 51,180,216,251,251,175,212,254,250,194,212,164,109,189, 0,225,216, 69,167, 82, 2, 3,124,141, 66,163, 94, 26, +251, 36, 62,252,189,209,163,132, 53,106,133,243,178, 84, 70,100,171,140,200, 81, 25, 81, 96,176,162, 86, 64, 40,207, 98, 37, 45, +170,122,158, 61,156,197,194, 21, 7,158,194, 73, 46, 68,203,240,151, 31, 56,203,113,220,127,204,213,146, 66,115,117,231,169, 10, + 18, 17, 31, 18, 17, 15, 18, 17, 31, 86, 27,181,235,129, 69,234, 85,187,231, 7, 31, 78,240, 51, 89,129, 92,149, 9, 2, 62,129, +151,135,171,188, 73,253,225, 88,183,248, 35, 0,192,152,207,127,198,123,239,140, 68,157,186, 81, 80,230,231,251, 12, 31,212,115, + 9,128, 61,246,166,245,208,177, 51, 65,199,206, 69,127,254,193,212, 89,138, 33,125, 58,240,111,197,171,144,158,103,196,147, 88, + 77,149, 34,109, 0, 96,181,113,160,160,216,176,237, 32,164, 98, 1,178, 85,102, 80, 74,241,205,143,219,225, 40, 21, 34, 61,191, +176, 89,191,146, 58,158, 84,242,125,239, 63, 21, 63, 41,220, 63, 27,255,233,167, 85,105, 4,107,193,130, 5,247, 23, 44, 88, 80, +102, 68,172, 82,131, 85,145,185,114,113,245,189,184,127,219, 26,183, 61,209, 38, 92,217,113, 3,189,154,249, 66, 36,224, 65,230, +236,137,219, 79,181, 56,122,228, 55,229,161,253, 59,159,229, 9,117,223, 85,106,174,124,195, 26,202,165, 78, 39, 86,172,222,104, +245,240,242,194,230,243,121,169,249, 90,171,229, 63,205, 83, 22,114,227,232,234, 26, 86,206,210, 93,159, 17, 87,233,227, 44, 71, + 33, 90,240,203, 62, 0, 20, 28,199,129,114, 28,132, 14, 10,185,103,205, 22,153, 69, 21,156,131,128, 71, 12,165,175,124,202, 89, + 83,179,227, 43, 14,119, 18, 0, 78, 50, 33,182,157,125, 6, 0,153,124,205,205,135,111, 14, 41,108, 22, 52,152, 28,212,117,107, +214,164, 77,154, 52, 81, 74,165,210,151, 62,201, 85,109, 22,180,171,224, 60,121, 98, 2,176,200, 47,172,205,128,110,138,122, 77, +197, 60, 17, 26,133,249,226,244,209,189,244,202,145,117, 99,116,153, 49, 27,237, 44,128, 40, 48, 88,144,150,107,192,179, 92, 3, + 50,242, 13,200,200, 51, 34, 35,223, 0, 66, 8, 12, 38,235,159,186, 97,105,179, 98,118,108,222,184,182,175,209,140, 97,109,187, + 14,192,228, 89, 43,130, 55,175, 92,120, 66,234, 29,222,202,158, 14,180,148, 82, 27, 33, 36,113,244,232,209,245,127,251,237, 55, +126,100,100,164,254,225,195,135, 50, 0, 28, 0,179, 66, 33,147,254,250,211,130,163, 77,155, 54,253,253, 89,236,163, 83, 0,242, +237, 25, 73, 85,173,253,104, 73,184, 83,222,216, 32,121,203,110, 33, 62, 50, 4,201, 53,221,194, 21,183,191,243,234,244,201,252, +172,147, 75,179,210,141,214,227,217,122,126,131,103, 5, 66,187,250, 2, 90,140,134,164,129,131,134,130, 79,120, 48, 27,116, 73, +197,133,203,203, 89,140,217, 91, 30, 65,225, 32,132,163, 84, 0,133, 84,136,214, 17,110,168, 66, 61, 70, 45, 54, 14, 58,163, 13, +122,163, 21, 6,147, 21, 30,129,174, 88,179,121, 7,146,179,244,216,119, 61, 7, 49, 73, 26,132, 6,200, 65,105,229,213, 35,103, +179,104,251,188, 49,194,145,207, 35,224,243, 8, 47, 34,188, 54,242, 10,204, 16, 9,120, 16, 57, 72, 33,151, 8,224, 36, 21, 66, + 36, 18, 34, 43, 43, 11, 70,163, 17, 65, 65, 65, 14, 21, 91, 64, 10, 71,133, 20,161, 53,252, 96,182, 88,113,232,220, 3,204,155, + 52, 16, 93,218, 54, 6, 17, 42,240,200,216, 16,142,110,142,224,120, 60,152,173, 28, 76,102, 27, 0, 94,185,209,182,160,160,160, +142,114,185, 92,174,211,233, 52, 73, 73, 73,103,210, 31,237, 78,246,170,219,127,236,145, 99,167, 54,247,238,209, 5,209,119,238, + 99,231,158,253,231,115,220, 85, 83,139,247,137,140,140,108,238,225,225,161,200,205,205, 85,223,189,123,247,218, 75, 62,237, 18, +185,119,248, 39, 45, 90,183, 71,129, 50, 11,153, 41, 9,118, 63, 53,215, 9,118,196, 87, 11, 86, 52, 10,171, 29,214,200, 70, 11, + 13, 87, 68,144, 35,166,204, 90,222,168,102,104,237, 70,197, 3, 61,234, 4, 85, 60,173,154,220, 59,108,194,188, 31,126,121, 43, + 40, 48, 16,135, 47, 62,194,130, 25,227,163,229, 50,199,234, 1,222,174, 46,162,186,141,113,235,214, 37,120, 65, 12, 39,239,208, +128, 97,125,199, 5,116,235,209, 23,119,111,223,192,210, 69, 95, 95,214,242,165,243,237, 73,171,194, 59,196,179, 65,147,182,111, + 58,186,121, 67,169,210,192,209,213, 11,117,234, 53,121, 83,225, 29,242,121,209, 98,245, 47,103, 54, 40,133,209, 76,145,175, 49, + 35, 57,187,208, 92, 37,100,234,192,113, 85,232,243, 99,227,136,194, 65, 32,112,179, 60, 14,186,123,226, 20, 13, 14,244, 38,139, +190,254,148,111,134, 3,178,149,133,230, 42, 91,109, 66,182,202,132, 2,131, 5,110,114, 1, 56, 27, 87,229,167,237,252, 2, 51, + 28,139,250,201,218,184,151,239,243,253,203,250,109, 97,183, 99,211,250,255,240,195, 82,217,173,167,165,204,149,176, 48,122, 37, + 17,241, 97,227,184,162, 59, 77, 37,230, 94, 32,252,184, 95,207,206, 72,201,209, 23,141, 68, 38, 8,141,106, 10, 15, 41,135, 78, + 67,167, 1, 0,250,244, 44,236,103,252, 52, 93,139, 3, 87,178,129,231, 59,108, 87, 92, 23,235,245,252,213, 91,254,248,100,199, +246,223,157, 13, 54, 1, 86, 29, 78,132,206,104,133,131,136, 15,137,136, 15,169,136,255, 92,151,160,202, 13, 86, 97,159,186,228, + 28, 11,116, 6, 3,212,122, 11, 40,128,107,143, 11,160, 55, 89,161,210, 90,208, 60,220,245,207, 62,243,252, 1,160,215,139, 70, +232, 69,147, 84, 42, 2, 85, 22,215, 75,107, 20,111, 95,158,129, 43,221, 39, 11,128, 93, 15,130,130, 23,157, 98,233,255, 29,253, + 66,107,187,184,248, 94,220,255,251, 26,183,221,209, 70,156,190,157,139, 65,109, 2,160, 83,101, 96,225,130,207,242, 8,168,137, +199,231, 41,141, 6,253,238, 92,153,121, 30,125,240,196, 92, 97, 37,225, 25, 81, 79, 42,147,157,250,118,233, 42,179,151,183, 63, +183,251,138, 50, 75,165,179, 61, 23, 43,180, 25,141, 60,202, 81,145, 61,230,170,168,105,195, 60,235,163, 1,224, 40,197,236,165, + 59, 48,127,234, 80, 40,164, 35,100,132, 16,153,214, 96,197,164, 57,107,241,253, 87,239, 58,202, 36, 2, 16, 2, 24, 76, 54,188, + 53,108,128,125, 5,207, 96,197,147,171,191, 21,104,158, 30,124, 88,186, 89,176, 89,235, 30, 55,154, 53,107,166,116,117,117,133, + 84, 42,253, 79,100,194,206,202,186,172,209,130, 89, 74,164, 58, 58, 58,182,115,114,114, 42,173,167, 85, 42,149,123, 95,166,244, +105,148, 57,167, 50, 18,239, 54,109,213,161, 15,206, 28,221, 75,175, 28,254,117, 76, 85,230,216,113,117,115, 77,185,121,247, 73, + 29, 66,220, 10, 35, 88, 69,230,202,100,225, 16,236, 45, 67, 74,226, 19,184, 56, 59,167,216,171, 39,243, 10,239, 71,120,116, 60, + 1, 93, 87,144, 17,187,163,200,236, 12,151,251,132,223,185,127,239,214,188,222,111,126, 44,232, 58,104, 2,127,229,130, 15,191, +192, 11,157, 83, 43,192, 28, 19, 19,243,224,221,119,223,109,121,249,242,101, 27, 0, 29, 33,196,194,231,243,101, 38,147, 73,212, +161, 67, 7,213,163, 71,143,206,194,142,206,136,109,222,217,233, 65, 36,154, 30, 53, 67,155, 12, 15,118,212,116,233,208,166, 5, + 90,212, 13, 68, 74,155, 22, 0,240,113, 82,129, 34,172,245,251,191,110,171,225, 25,112,104,229,250, 3,243,199, 12,237, 60,201, +175,207,156, 31,210, 14,204,170,176,131,105,242,131, 51,221,202,178,239,133,205,134, 66, 40,164, 2, 56, 74,133,112,116, 16,194, + 98,165, 85,121, 82,164, 22, 43, 87, 24,193, 50, 89, 81,160,183,226,212,173, 76,100,168, 76, 80,106,204,208,155,109,160,160,133, + 79,159,118,212,226, 89,113, 23, 92, 74,206,125,112, 35,213,234, 31, 23, 59,237,186,144, 90, 50, 66,207, 89, 38,134,163,172,112, + 84,245,185,115,231,224,238, 94,249,211, 61,199,113,216,121,228, 26,126,216,112, 10, 71,214,125, 6, 7, 17, 31,245,250,205,193, +219,253,155,129,163, 28,158,196,220,207, 12,141,168,239,205,227, 73,193, 35, 4, 70, 11, 7,128,150,123, 60, 77, 38,147,123,114, +114,178,186, 86,173, 90, 62,254,254,254,131,248,124, 62,149, 0,198,189,191,231,233, 78, 30,220, 42,211,234,141, 54,153, 85,181, +174, 86,186,190, 87,104,104, 40, 8, 33,212,195,195, 67,116,234,212,169,130,168,168, 40,207,151, 52, 87, 60,169, 87,237,101,239, +189,255,201,160,154, 33, 33,216,177,117, 29, 40, 37,187,236,221,127,203,129,203,248,122,250,243, 35, 6,167,204, 90,222,232,251, + 57, 31, 63,247,217,251,211,127,104, 84, 81,157, 17, 16,217,241,179,240,240, 8, 92,190,159,138, 69, 95,190, 31,109,200,122, 58, +220,164,112, 31,103, 46, 72,159,220,160, 97, 99,248,184, 59, 33, 45,207,136,190, 35,250,163, 85,235, 54,184,123,251, 6,190,254, +234,211,203,208,153,186,210,236, 7,122,123,210,202, 81,225,248, 14,221,250, 11,245, 70, 51,150, 47,154,137,113, 83,231,161,121, +199, 62,194,123,183,174,140, 7, 48,215,222, 60, 27,205, 54,116,136,242, 40, 52,205, 22, 14,251,159,242, 5,101,149, 64, 1,159, +240, 26,132,184, 64,111,178, 66,173,179, 84,124,163, 18, 9, 51,148, 42,117,181,159,230,127,194,215, 26,172,200, 86,153,144,165, + 50, 34, 71,249, 31, 99,149,163, 50, 34, 91,101,130, 80, 64, 16, 27,159, 4,158, 80, 80,229,254,119,249, 5, 22, 52,173,237, 90, +120,141,190,100,107,136, 69,224,212,236,200,217,219, 3,127,248, 97,137,195,237, 4, 13,238, 60, 85, 23, 69,174,248,144, 8,121, + 16, 23,189,183,113, 64,101, 63,225,236, 85,179,198,168,119,199,116,114, 82, 72,145, 22,151, 5, 1,159,128,207, 39,112,246, 10, +132,179,196,128, 15,223, 31, 11, 15,119, 23, 36,231, 24,177,108, 79, 44,238, 60,120, 12, 78, 95,181,108, 47, 95,245,123,247,247, + 62,152,226,194, 19,138,177,233,104, 66, 97, 58,249, 54, 60,186,114,192,144,246,228,174,182, 64,157, 75, 65,109,118, 62,248, 19, +106,181, 21, 26,211,249,179,167,225,247, 13, 63,227,232,205,172,146,206, 89, 23,118,125,143, 79,166,127,131, 28,181,169,168,232, + 87, 28,185,122,225,255,236, 82,145,167,255,250,191,148, 41, 42,235,127, 82,244,191,169, 28, 13,211, 11,166,202,244,194,231,166, + 23,244,236,154,187, 79, 80, 81,228,202,217,213,231,226,190,109,171,221,118,223, 52,225,204,157, 66,115,101, 53, 42,241,203,162, +233,233, 58,165,186,109, 69, 19, 54,254,151,185,242,170, 29, 41,145,203,207,126,249,205, 50,163,183,127, 53,235,161, 91,234, 92, +141,193,246, 95, 97, 16,145, 76,110,147, 59,123, 26, 92,130, 27,254, 32,212,155,102,102,103, 63,208, 86, 22,105,226, 40,197,193, +171, 25,160,180,240,145,104,251,185,103, 40,122, 18,135,141, 43,108, 62, 57,126, 43, 11,130,162,126, 38,246,134,185,127, 89,245, +179,186, 87,148, 74,251,230,252,217, 37,205,130,205,235, 23, 70,174,156,156,156,224,226,226, 2,133, 66, 1,123,154, 8,139, 41, +111,180,160,163,163, 99,187, 91,183,110, 57, 56, 57, 57,129,207,231,195,104, 52,162,110,221,186, 47,117,129, 43,124,194, 63,104, +218,113,192, 23,173, 59,246,193,169, 35,187,233,149, 35,235,199, 86,117, 2,195, 94,157, 91, 30,248,250,235,217, 53,190,156,247, +147,196,209, 65,128,135, 5, 38,240, 8, 65,176,183, 12,238,114, 30,206,236,221,100, 24,218,167,165,221,147,218, 5, 6,250,111, +254,254,199,213,242,239, 23,206,233,224,232, 31,118, 74,243, 44, 38, 15, 0,180, 25,143, 22,201,124,194, 31, 4, 92, 58,118,168, +126,187, 1,240,246, 11,233, 82,133, 48, 47, 37,132,232,226,227,227,159,126,249,229,151, 97, 11, 23, 46,164,124, 62,159, 3, 32, + 89,186,116,169, 46, 46, 46,238, 22, 10,135,216,162,178,232, 85,167, 46,117, 39, 41,196,182,230,110, 50, 94,221, 16, 31, 25, 90, +212, 45,108,253, 28,218,171, 53, 2,131,130, 16,159,161,107,144,167,227,132, 5, 38,126,200,138, 85,119,174, 87,247,224,143,177, +234, 77, 15, 80,201, 36,176,229,149,217,226,142,239,197,209, 43, 71,169, 16, 28, 80,149, 39, 69,106,177,114, 48,154,109,208, 27, +109,208,155,172,208,154,108,208,153,108,224,104,225, 53, 65, 8,129,217,202,193,174,199,228, 23,202,190,147,155, 7, 66,170, 23, +142,122,117,148, 22, 78,217,224, 36, 19, 22,142,117,118,119,135,151,151,151, 93, 81, 80,147,185,240, 18, 55, 89,184,146,230,123, +147,217, 10, 74, 41, 98, 99, 99, 62, 75,124,250,180, 95,173,208, 90,109, 35,234,213,119,147, 73,120, 0, 80,174, 25,208,233,116, + 54, 71, 71, 71, 47, 55, 55, 55,222,179,103,207, 74, 76,115,173, 6, 29,172,123,118,239,194,192,129, 3, 10, 30, 94,187, 93, 50, + 84, 93,175,215,147, 86,173, 90, 57, 5, 6, 6,242,140, 70,163,186,106,199,128, 16,185,103,237,254,129,225, 45,231,189, 53,122, + 92,237, 14,157,187,227,244,201, 99,216,183,251,183,141,218,172,152, 99,118, 95,239, 97,225,255, 53,138,176,102,104,237,255, 26, + 69, 88,173, 70,104,185, 6,203,217,185,158, 83,189, 38,237, 3, 19,115,204, 56,124,248, 16,180,170,140,175, 76,166, 2, 29,132, +116,237,193,223, 86,188,251,222, 39,115,156,218,183,107, 3, 87, 39, 25, 4, 2, 62,110, 94,191,140,133,115,191,184, 12,157,169, +107,101,245,103, 73,126, 35, 34, 68,181,130,170, 77, 12,170, 25,137,155, 87,206,227, 73,236,189,251,183,175, 95,174, 91, 43,170, + 57, 60,253,130, 39,146,136,136,133,244,193, 3,115,101, 58, 38,131, 33,233,237, 81, 35, 81,122, 20, 97,139,134, 97,238,228,197, + 11, 0,128, 78,147,101,254,117,241,164,184,226, 81,132,156,217,148, 84,158,174, 42, 63,123,231,153,139, 87,167,246,235,213,157, +151,163, 54, 21, 70,172, 84,166,162,151, 17, 57,197,239,213, 70,132,250, 41, 16,115,255, 38,103, 80,229,236,170,226,117,105,120, +123,112,183, 7,197,101,151,227, 40, 8, 96,168,234,245, 77,133, 78, 99, 23,125,247,131,195,237,167, 5,184,147,160, 46,108, 18, + 20,242, 11,141,149,144, 87, 98,182, 10, 71,167, 87, 18, 13, 34,252,249,239,140, 26,134, 28,181, 25, 28, 7, 8,248,188,162,151, + 8,201, 26,130, 20,141, 14, 57,249,217,120,154,152, 4,101,198, 19,240,120, 60,120,248,213,134,189,225, 70, 27, 21,251,234, 76, + 52,106, 80,175,182,130,221,151,210, 33,147, 8, 96,212,100,226,240,182,197,217,198, 2,245, 60,189,174, 96,183, 62, 55, 46,205, +222,188,243, 8,201, 86, 23, 24,188, 37, 66, 62,118,108,248, 9,131,223,126,191,232,160, 20,254,249,108,198,215, 0,143, 32, 47, + 95, 3, 66, 72, 85,163,162,215, 43,249,255,101,120, 21, 26, 85, 55, 88, 50,153,251,137,125,191,175,118,187,244,148,135,107, 49, +249, 24,212, 38, 0, 22, 67, 62,150,125, 51, 57, 67,173,206,234,168,201,142,139,175,210, 47,241,120,221,134,190, 51,245,126, 72, +237, 8,227,233,123, 5, 9, 74,173,165,220,126, 12, 45, 6,125,121,255,198, 31, 63,246, 84, 89,226, 39, 40,252,234,218, 56,171, +117,145, 46, 43,102, 78, 57, 77,132,226, 57,203,118,148, 52, 15,126,190,112, 83,225,123,155, 13, 54,202,129,114,192,135, 95,253, + 2, 43,103, 3,103,179,129,179, 81, 88,108, 84, 86, 89,114,189,252,170,237,206,127,180, 61,252,205,185,255,221, 44,232,226,226, + 2,119,119,119,184,187,187,163,216, 16,253,217,102, 65, 39, 39, 39, 40, 20, 10,156, 63,127, 30, 82,169, 20,114,185,188, 74,186, +165,204,213,132, 38,237,251,253,212,177,239,187, 56,190,123, 21,189,126,238,192, 56, 93,102,204, 90,187, 35,241, 54, 27,177, 88, + 44,232,213,181,125, 82,244,253,199, 71,102, 76, 29,223,189,101,239,113,146, 22, 97,254, 48,152,108, 72, 77,124,130, 51,123,215, + 27,106,215,240, 61,218,169, 77,179, 36,139,197, 2,155,205, 86,233, 13,220, 96, 50,231,240,133, 82,249,176, 97,111, 10,175, 95, +187,182, 75,225, 85,123,135,141,240,110, 19,202,213, 35,132, 12,172, 87,175, 14,204, 22, 14, 58,157, 58,191,170,121,214,104, 52, + 79,215,173, 91, 87, 99,212,168, 81,178,136,136, 8,225,147, 39, 79,240,253,247,223,231,106, 52,154,167,246,106, 28, 59, 23,179, + 84, 64,242,227,196,156,121,120,176,163,166, 75,114,235, 22, 24,214,187, 53,126,255,227, 2,206,156,191,140,164, 2,197,173, 2, +171, 96,111, 74, 82,154,177,174,155,122, 87,223, 22,213,248, 59, 54,228,239,242,234, 48,125, 8,165,146, 99,217,103,102,105,237, +191,121, 3, 26,189, 5, 78,178,194,249,154,138, 35, 89,124, 66,236,118, 66, 4,120,122,254,242,205,200,198,161, 17,136,126,170, + 66,150,210, 8,189,209, 10,142,163,224, 64,225,238, 40,134,131,136,135,228,196,167,224,168, 57,161,138,183,136,236,118,109,219, + 9, 0, 2, 66,168, 64, 40, 16,128,162,112, 94, 68,169, 84, 90,224,229,229,101, 87, 4,203,108,181, 98, 96,247,102,104,222,164, + 30,250,141, 91, 12, 0, 56,185,113, 26, 92, 21, 66,252,190,121, 45,146,207, 46,217, 28,210,242,253, 99,247,238,222,127,227,126, +244,165, 55,123, 52,146, 54,240, 17,164,137,202,211, 43, 40, 40,216, 69, 8, 17,139, 68,162,238,109,219,182,117,219,181,107,151, +210,195,195,131, 19,139, 68,217,125,251,244,230,132, 34, 81, 94,241,182, 23, 47, 94, 20,142, 27, 55,206, 49, 63, 63, 63, 57, 51, + 51,243, 50,165,212, 82,241, 3, 96,120,103,240,240, 27, 8,113, 80, 72,101, 73, 45, 58, 15,243,107,210,188,153,115,255,129,131, + 33, 17, 75,112,252,216, 17, 44, 95,178,112,123, 65,250,195,119,170,114, 36, 95,197, 40, 66,149,202, 89, 27,247,224,118,126, 66, +150,201, 85,232, 18, 10,161,196,113, 28,113,246, 91,198,151, 40,102,121,214,239,239,180,115,255, 33,220,189,119, 15,110, 82, 11, +226,159,196,233,238,221,138,254, 89, 71,132,115,104,246, 3,157,189,233,148,229,218,222,104, 49,178,187,171,209,108,195,185, 83, +127, 24, 56, 43,215,253,242,217, 67, 79, 2,106, 55,113,136,108,210,201, 53,103,223,218,129, 0,126,175, 76, 39,245,225,127, 71, +108,131,194,154, 38,156, 60,117,194,217, 59,184, 46,159,128,192,108, 52, 32, 59,254,186, 85,151,249, 72,173, 74,189,107,215,168, +218,220, 20,124, 53,125,214,183, 19,154, 52,110, 44,167,112,120, 46, 98, 85,108,172,114,212, 38,120, 56,138,161, 87,103, 35,238, +250, 17,131, 46,155, 95,225,124,101, 86,147, 86,150,147,149, 89,210,148, 86,144, 25,211,188,162,237,115,178, 50,197, 86,147, 86, + 86,249,173,142, 15, 39,185, 24,119, 19,158,149,116,104,151, 8, 11,251, 94,137,133,252,146,126, 88,197,117, 65, 37,180, 23, 57, +184,224, 89,174, 1, 4, 20,156,205, 10,171,197, 4,141, 90,141,103,105, 25,200,204,200,132, 70,163,132, 76,225,138,200, 6, 77, +225, 40,119,192,237, 51,219, 65, 41,181,107, 94, 66, 11, 17,134, 53,105,222, 70,114, 47,177,176,175,149,131,144,226,192,111, 11, +115, 11,212, 89,109, 52,105,177,113, 85,173,139,173, 54,219,137, 59, 15,226,234, 6,248, 86, 39,183,158,168,176,121,205,143, 48, + 21, 69, 50, 45, 22, 27,238, 37,107,145,158,167, 67,114,252, 67,202,217,108, 39,240,154, 83,174,193, 18,137,133, 82, 39, 55, 63, +124, 61,124, 4,126,254,249, 23, 36,164, 60,195,242,175, 39,101,168, 53,217, 29, 52,105,113,177,118, 62, 5,118, 46,158, 43, 67, +155,241,104,209, 59, 63, 39,164,238,143,206,227,233, 77,180,194, 14, 60, 14,158,193,104,243,206,247, 71,245,154, 60,177,205,168, + 19, 28,216,252,206,111,101,105, 22, 58,102,152,230, 77, 25, 10,133, 84, 0, 66, 8,138,155, 5, 87,124, 61, 22, 50, 73, 97,219, +177,222,104,197,136, 73, 63, 96,243, 15,147, 65, 1, 12, 31,124, 65, 87, 94, 58, 75, 53,225, 5, 36, 37,102, 61,235,220,103,202, + 73,131, 89, 98,236, 61, 96,212,141,198,141, 27, 43,165, 82, 41,164, 82, 41,156,156,156,224,234,234, 10, 23, 23,151, 74,243, 94, +238, 36,162,165, 70, 11,242,120, 60,240,120, 60,200,229,114, 40, 20, 10,200,229,242, 10, 53,203, 53, 87,237,250,174,232,212,239, + 61, 28,223,189,154, 94, 63,119, 96,188, 46, 51,102,141,189,231,168,168, 89,231,246,192,129, 3,163,198,141, 27, 39,154, 53,117, +220,209, 63,142,157,137,221,113,112,117,159,252,124,101, 32,165, 20, 46,206,206, 41, 67,251,180, 60,208,161, 85,147,164,147, 39, + 79,114,191,253,246,155,145, 16,114,183,178,116,230,100,101,109, 60,121,226,212,236, 54,237,218, 99,237,134,223,218,221,127,240, +176,221,147, 39,113, 8, 12, 14, 65,245, 26,161,208, 17, 87,156, 58,123, 30, 5,202,172,141,246,164,243,133, 40, 22,201,207,207, +191, 52,116,232,208,174, 23, 46, 92,224, 13, 29, 58, 84,151,147,147,115,177,248,185,169,188,232, 85,105,205, 75,191,244,207, 6, +176,177, 90,251,209,219,159,153,149, 19, 1, 44, 12, 10, 14,194,153,243,151,113,249,194,213, 95,114,100, 65,115,222, 25, 49,122, +108,181,190,252,247,250,182,168,198,247,114,149, 97,235,234,239,249,251, 47, 39,254,144,152,107, 91, 11,224,107,123,206, 81,201, + 13, 67, 99, 70,171, 58,110,176,216, 40, 56, 90, 88,209, 58, 58, 8,203,172,112,203,210, 20,152, 36,239,140, 31, 55,238, 73,100, +189, 6,159,140, 24, 61, 94,212, 32, 36, 16,215, 30, 43, 1, 66,224,230, 35, 71,122,122, 58,206,237, 92,109,205,127,246,232, 23, + 62,159,155, 91,149,178,148,151, 24, 93,171,212,118, 99,115,114,114,112,230,204, 25, 20, 27, 43, 79, 79,207, 50, 13,214,139,154, +185,153,105, 23,191,254,110, 85,171, 49,111, 13, 64,239,246,117,113,246,250, 19,152,138,230, 91, 42, 30, 18,254,244,242, 74,241, +196,161, 33,166, 9, 3,107,171,245, 22,113,226, 87, 9,170,115,165, 71,185,190,168, 73, 41, 53, 17, 66,246,199,196,196,180,174, + 95,191,126,181, 67,135, 14,229,221,191,122,244,227,210,233,152, 50,101,138,226,231,159,127,150, 81, 74, 47, 26,141,198,120,187, +242,206,195,214,155, 55,110,184,155, 45, 28,206, 95,189, 93,167, 83,171, 6,224, 40,112,253,250,117,172,253,117,173,225,238,157, + 91,139,181,153, 62,115,203, 27, 32, 82,222,241,180,253,137, 81,132,197,154,148,158,177, 42,188,195,127,185,120,254,236, 12,137, + 95, 99,132,247,252,162,239,179,219,251,251,250, 68,116,131, 71, 72, 75,164,221,217,143,139, 71,183, 28,226,172,214,105, 14, 28, + 47, 73,155,253, 72,107,239,245, 94,140, 68, 42,251, 40,162, 81, 59, 36, 39, 37, 34, 33,238,222, 70,125,110, 92,154,194, 39,124, + 99, 90,106,210,248, 26,117, 91,225,194,209,223, 63, 46,207, 96, 85, 86,230, 3, 61,165,171, 15, 29,220, 63, 44, 53,117,165,143, + 86,111,144, 80, 74, 13, 18,177, 32, 67,193,211,108,179, 55,157,148, 62, 48,203,221,170, 15, 28, 60, 98,252, 31,203,151, 47, 17, +122,187,200,144,145,111,128, 90,111,134, 70,103, 6,143, 16,212,242,147, 67,167,201,195,217,157,223, 89, 76, 5,249, 67, 41,125, +108, 46, 79,179,112, 61, 65,250,225,148,247, 79, 67,236, 28,232, 87,163,211, 23, 21, 70,231, 52,105,119,250, 76,121,255, 64, 24, +165,180,147,194, 59, 92, 83,144,249,232,203,242,242, 78, 72,225,245,253,102,135, 64,152,173,133,243,135, 89, 57,192,198,113, 69, + 81, 61,128,150,180,219,147, 74,242, 78,184,109,127, 92, 68, 90,166, 18,122,147, 5, 70,147, 21,102,139, 13, 60, 62, 31, 46,174, + 46, 8,173,222, 16,206, 46, 78,200,204, 72,195,229,147,251, 17,123,231,236, 69, 66, 49, 71,151, 21,123,210,158,115, 36,146,186, +132,249,250,249,240,210,213, 38, 72,197,124,220, 58,123,200,108, 49, 25, 23,219, 99,174,202,210, 84,230,230,253,240,201,212, 79, +135,175, 95,183,193, 39,170,134, 19, 82,115,244, 72,205, 54, 64, 99,176, 20, 25, 48, 14,198,130, 28,220, 57,181, 33,195,102,208, +252,240,175, 53, 88,156,213,102,138,121, 28,143,105,115,190, 67,124, 98, 18,150, 47,248, 52,179,160, 10,230,170, 44,214, 77,168, +254,123,213,246, 40,154,146,100,110, 98,197,207,219, 47, 54, 11, 82, 14, 28,165, 56,112, 53,163,164, 89,144, 43,234, 81, 25,253, + 68, 89,165, 38,188, 59, 49,154, 45,122,125,166,243,163,199,139,243, 1,128,207,231,151,188,138,251, 74, 25, 12, 6,211,203, 52, + 11,190,216,161,157,227, 56, 56, 57, 57, 65, 42,149, 86,185,233, 81,238, 29, 54,172, 73,251,126, 63,117,234, 63, 6, 39,246,172, +161,215,207,238,127, 95,151, 21,179,186,202,125, 16,242,243,239, 19, 66,226, 22, 47, 94,220, 96,237,218,181, 53,166, 78,157, 26, +191,233,167,217,203, 1, 32, 55, 55, 23, 0, 16, 29, 29, 77,223,127,255,125,163,193, 96,120,154,159,159,127,147, 82, 90,105,211, +129, 62, 91, 54,127,237,138,133,145, 41,207,210, 7,132, 68, 54,133,103,141,166,240,169,213, 12,249, 26, 51,174, 61, 78, 67,252, +195,147,120,120,126,231, 33,157,194, 58,187,170,105,174, 95,191,126, 32,143,199,171, 94, 80, 80,224, 19, 17, 17, 81, 95, 46,151, + 71,215,175, 95,191,161, 64, 32, 72,189,113,227, 70, 98, 85,180, 18,207,172, 55, 86,107, 63,122, 89,146,198,177, 67,124,134,174, + 97,146,198, 49, 90, 39,113,158,156,117,114,169,209,187,235,226, 31,168, 57,231,254,142, 13,234, 93, 91, 87,127,207, 31, 49,118, +138,237,158,202,117,162, 64, 42, 62,190,224,237,168, 42, 52, 63,241,210, 39,140,234,247,159,105, 26,138, 34, 87, 69,239,237, 10, +199, 43,149,183, 85, 0, 62,151,250,213,253,233,222,196,113, 95,215,107,210,106,100,219, 30, 67,121, 86,145, 2, 71,247,172,164, + 79,239,156,218, 33,160,182, 25, 58, 59,102,239,175,180,217,199,100,170,212, 92,149, 25,121, 73,145,183,223,241,219,175,111,239, +218,179,123, 65,255,190,253,220, 87,124, 53, 4,223,173,218, 11,185, 84, 2,202,113, 24,218, 49,104,208,195,223,186,245, 9,244, +118,240,223,117, 58,245,220,135, 75,238,125,174,211,153, 99, 43, 27,229, 90,100,152,207, 59, 58, 58,102,183,110,221,186,185, 68, + 34, 33, 57, 57, 57, 2, 47, 47, 47,171,179,179,179, 41, 53, 53, 85,103, 52, 26,119, 81, 74,181, 85,201,167,217,194, 33, 33,211, +128,125,187,119,225,246,213,147,120,248, 48, 70,243,240,193,195, 31,137,128, 46, 41,200,136,205,123,153, 99,199,149, 57,138,144, + 86,121, 20,161,150, 47,157, 31,125,240,187,246,161, 29, 63,110,225, 94,179, 21, 92,131, 11,199,232,168, 82,239, 33,229,250,142, +125,154, 52,209, 96, 74,239, 89, 94,246, 28,251, 5,212, 8,165,124, 49, 46,157,249, 3,148,227,126, 1, 0,202,113,191, 68, 95, + 56, 52,190, 89,207,247,224,230, 85,173,126,241,216,249,170,106,139, 4, 60,237,225, 93,235,247, 36, 36, 36,224,209,163, 71,120, +252,248, 49,242,242,242,176,117,107, 66,149,206,143, 54, 47,225,184,194, 61,164,219, 27, 67,222, 60, 48,104,216, 91, 14, 53, 66, +163,120, 97, 1,174,112, 87, 8, 16,243, 56, 17,177, 55,238,112, 49,215, 14, 25,204,234,172,254,186,188,132,114, 13,159,220, 51, +194,155,240,232,180,226,181, 5, 91,180,104, 21,246,233,188, 5,205,221, 61,189,202,172,199,115,179,179,196,159,125,184, 63,236, +242,149, 75,118,173, 69,200,217,108,185, 99,223, 30,202,241, 11, 23,242, 68, 73, 92,154, 20,158,236,194,135,168,194,207, 41,103, +173, 52, 98, 63,122, 64, 27, 88, 57, 14, 90,189, 25,106,173, 17, 42,141, 1,233, 89,185,184,125,231, 14,206, 30,216,143, 39, 49, +183,159, 90, 76,166, 99, 60, 30,217,169,203,136, 57, 91,181,150, 37, 65, 13,119, 55, 55, 60,205, 43,128,131, 88,128,196,216, 27, + 70,173, 90,181,229,101,203,145, 46, 39, 54, 93,238, 29,214,117,232,208, 97, 71, 58,118,235,235,220,164,101,103,153,135,147, 11, + 68, 2,138,184,132, 52,220,188,120, 68, 27,127,251,156,218, 98, 42,232,254, 42, 86,105,249,199, 26, 44,181, 38,187,195,187,239, +140, 59,202, 19,240, 37,160,156, 65,167,203,239,254,103,204,213, 95, 5,165,182,212,183,135, 15,120,238, 89,192,202, 81,233,240, +193, 71,245,165,159, 13, 44, 54, 42, 27, 62,248,162,174,176,226, 40,191,195, 94, 73, 19,222,239,199, 83,147,146,114,175,231,229, + 25, 79,255,217,145,125,165,215, 22,172, 96,180,160, 54, 60, 60,188,196, 84,241,249,124,216,108, 54,187, 43, 32,145, 68, 58,166, + 99,223,119,201,137,189,107,232,181, 51,123, 39,232,178, 98, 87,189,252, 49,165,102, 0, 87, 9, 33,247,102,204,152,209,196,219, +219,219,123,230,204,153, 14,106,181, 90,184, 98,197, 10, 67, 78, 78, 78,134, 90,173,190, 76, 41,213,219,175,121,211, 2, 96,160, +194,187,118, 7,186,107, 77, 23, 23, 15,255,174,206,158, 1, 53,149,217,207,158,170,178,211,142, 1, 56, 81, 52,193, 99,149,104, +216,176, 97, 8,143,199, 27, 10, 32, 82, 46,151,215, 82, 40, 20, 18, 74,105, 56, 33,228, 62,199,113,119, 34, 34, 34, 14, 2,168, +210,249, 75, 60,179,222,216,118,194,175,191,229,233, 56,145,137, 39,250, 45,241,204,122, 35, 0,100, 30,155,170, 3,176,207,187, +195,180,129,251, 47, 39, 46,191,159,239,252,113,214,233,249,251,171,154,102,101,202,173, 90,175,170,252,235,211,238,167, 2,120, + 91,238, 29,246,253,221,232,203,179, 8,133,208, 6,235, 55,186,204,184, 27,175, 66, 95, 40, 20, 26,252,253,253,203, 28, 45, 40, +145, 72, 12, 21,159,243, 51, 86, 0,107, 9,105,191, 97,247,246, 13,111,239,221,191,111, 65,219, 78,253,221, 29, 2, 2, 80,221, +139, 96,195,180, 70, 31,159,140,206,190,214,247,211,115, 63,199,167, 25,238, 80, 74,171,212,223, 69,163,209,196, 18, 66,242, 11, + 10, 10,250, 81, 74, 83, 8, 33,129,249,249,249,183, 44, 22,203,221, 42, 27, 1, 14,111,182,104,209,116, 43, 33, 68, 64,173,220, +162,203, 66,254,111,134,244,135,169, 47, 99, 40, 74, 19, 85,221, 9,147,102, 46,107, 84,179, 86,237, 70,197,107, 17,214,173,230, +136,113,159,127,223,168, 90,141,208, 70,255, 89,159,176,226, 81,132, 52,237,166,158,120, 71,117,137, 57,182,248, 43,247, 39, 23, + 39, 72,221, 2, 20,218,156,196,188,252,196, 27,139,117, 89,222,139, 95,102, 98,201,210, 36, 60,190,191,100,237,226,207,167,166, + 63,123,186, 86,155, 21,123, 15, 0,180, 89,177,247,100,222,181,191,202,201, 72,157,154,155, 21,191,248,101,143,133, 86,171, 77, +219,178,101,139, 75,171, 86,173,120,222,222,222,200,206,206,198,233,211,167, 57,142,227,158, 85, 85,171, 32, 55,254, 52, 33, 53, +221, 54,174,250,105,145, 72,238,216,211,106,181,250, 81, 10, 8, 4,130,116,147, 78,125, 68,195,147,127, 74,243, 18, 42, 41,151, + 28, 1,192, 43, 94, 91,144,227, 56,178,104,249,134, 68,161,131, 99,153, 77,170, 22,131, 70,198,113,156,221,107, 17,230, 39,221, +168,249,170,174,111, 66,233,156,250,141,155,127, 97,177,152, 13, 40,236, 15,102, 0, 96,160, 20,185, 60, 30, 57,203,231, 44, 71, + 85,127,226, 33,138, 16, 56, 81, 34,128,163, 84, 0, 2,130, 2, 85, 30,173, 74,159,171, 50,207,119,102,204,125, 66,218, 7, 31, + 54,109, 31,117,234,248,161,193, 54,155,173,122, 81,201, 73, 48,234,181, 59, 10,210, 93, 55, 82,122,221,138,127, 1,228, 79,214, + 31, 85, 14, 33,254,175,107,134,135,200,250, 5,248,123,143, 74, 72,204,186, 22,159,162,219, 88,122,249,155, 63,171,153,146,146, +125, 58, 54, 81,187,166,244,242, 55,175, 42,239,114,175,176,174, 14,114,249,231, 6,189,118,147, 54, 35,102,195,171, 60,158,132, + 16,103,137, 68,210, 80,161, 80, 8,115,114,114,174, 82, 74, 85,255, 75,231,189, 65,131, 6, 65, 60, 30,175, 58,199,113,222, 0, +156, 81, 56,202, 35, 71, 32, 16, 60,187,113,227, 70,162, 61, 77,132, 47,210,230,157,157, 30,157,186,212,157,116,236, 92,204,210, +162,230,195, 18, 2, 6, 47,113, 24,217,179,195,148,141,187,247,253,215, 40,194,127, 98,153,255,255,210, 36,164,189, 64,225,155, +243, 54, 79,236,252, 77,167, 48,131, 46, 39,237,217,251,231,239,102, 95,165,148,106,254, 76, 58,197, 98,241, 8,179,217, 44, 21, +137, 68,122,147,201,180,229,127, 37,239, 50,239,240,119,121,160,118,175, 36,193,129,220, 40, 61, 24,165,188,116,146,136, 8,145, + 44, 27,174,186, 28,143,220,170, 26,171,191,231,188, 19,126, 84, 84, 84, 27,145, 72, 20,100,179,217,100, 38,147, 73,167,215,235, + 19, 18, 19, 19, 47,149,183, 32,249, 95,157, 78,133,119,237, 37, 34,145,100, 34, 0,152,205,198,101, 5,153,177,147, 42,218,183, +188,237,255,233,215,166,103,141, 38,113, 2,190,208, 19, 69, 19,106,115, 86,107,118, 70,252,181,208,191, 43,157,175, 29,180,104, +121,132,191,226, 5,160, 51,211,100,154, 76,147,105,150,177, 45,143, 29, 79,166,249,119,106, 58,248,214, 9,116,240,173, 19,104, +239,254,101,109,207,142, 39, 5,123,149,255, 18, 48,139,201, 96, 48,254,134, 7, 59,142, 29, 5,198,223,137, 62,237, 65,202, 95, +185, 61,131, 65, 80,184, 42,117, 89, 21,160,221,161, 63, 66, 72,231,151,168, 96, 79, 48, 77,166,201, 52,153, 38,211,100,154, 76, +243,223,165, 89,153,246,107,211,244,200,154, 8,153, 38,211,100,154, 76,147,105, 50, 77,166,201,154, 8, 95,237,139, 7, 6,131, +193, 96, 48, 24, 12,198, 43,133, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, + 6,131,193, 96, 6,139,193, 96, 48, 24, 12, 6,131,241,242, 16, 74, 41,138,150,152, 34, 0,158,123,207, 96, 48, 24, 12, 6,131, +241,255, 98, 72, 94, 51, 47, 82, 98,176, 0,128, 82, 74,152,193, 98, 48, 24, 12, 6,131,241,119, 24,172,215,201,139, 60, 23,193, + 42,157, 57,118,170, 25, 12, 6,131,193, 96,252,127, 26,172,215,201,139,176, 38, 66, 6,131,193, 96, 48, 24,255, 51, 6,235,117, +241, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, + 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, 50, 77,166, +201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, + 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145,151, 24, 77, + 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, 0,157,153, + 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139,193, 96, 48, + 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96, +188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, 73,134,152, +201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, 6,131,193, + 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88, 12, 6,131,193, 96, + 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248, 55,240,151, 78, 52, 74, 8,233,204, 52, +153, 38,211,100,154, 76,147,105, 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102, +176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, + 57, 18,128, 82,122,194,110,145,151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, + 63,254,167,161,148,254,101, 47, 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, + 12, 6,131,241,138, 97, 6,139,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, + 48,152,193, 98, 48, 24, 12, 6,131,193, 96,188, 60,132, 82, 10, 66, 8, 45,250,191, 61,165,244, 44, 59, 44, 12, 6,131,193, 96, + 48,254, 95, 13,201,107,230, 69, 74, 12, 22,165,148, 20,255,101,167,153,193, 96, 48, 24, 12,198,255,183,193,122,157,188, 8,239, + 5,231,216,158,157, 98, 6,131,193, 96, 48, 24,127,151,201,122, 93,188,200,115, 17, 44,118,106, 25, 12, 6,131,193, 96,252, 93, +230,234,117,242, 34,204, 96, 49, 24, 12, 6,131,193, 96, 6,235,175, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6, +131,193, 96, 48,152,193, 98, 48, 24, 12, 6,131,193,248,183,240,151, 78, 52, 74, 8,233,204, 52,153, 38,211,100,154, 76,147,105, + 50, 77,166,201, 12, 22,131,193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48, +152,193, 98, 48, 24, 12, 6,131,193, 96, 48,131,197, 96, 48, 24, 12, 6,131,241, 55, 65, 0,148, 57, 18,128, 82,122,194,110,145, +151, 24, 77, 80,153, 62,211,100,154, 76,147,105, 50, 77,166,201, 52, 95, 63,205,202,180,171,226, 63,254,167,161,148,254,101, 47, + 0,157,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,109, 47,214, 68,200, 96, 48, 24, 12, 6,131,241,138, 97, 6,139, +193, 96, 48, 24, 12, 6,131, 25, 44, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, 6, +131,193, 96,188, 60,164,104, 52, 0, 8, 33,148, 82, 74,216, 33, 97, 48, 24, 12, 6,131,241,183,152,146,215,200,139, 16, 74,105, + 73,134,152,201, 98, 48, 24, 12, 6,131,241,119,154,171,215,197,139, 48,131,197, 96, 48, 24, 12, 6,131, 25, 44,102,176, 24, 12, + 6,131,193, 96, 48,131,245, 15, 48, 88,165, 51,198, 78, 49,131,193, 96, 48, 24,140,191,211,100,189, 22,121, 41, 54, 88,204,100, + 49, 24, 12, 6,131,193, 96, 38,235, 47, 48, 88, 12, 6,131,193, 96, 48, 24, 12,102,176, 24, 12, 6,131,193, 96, 48,254,231,248, + 75, 39, 26, 37,132,116,102,154, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 6,139,193, 96, 48, 24, 12, 6,131,193, 12, 22, +131,193, 96, 48, 24, 12, 6, 51, 88, 12, 6,131,193, 96, 48, 24,204, 96, 49, 24, 12, 6,131,193, 96, 48,152,193, 98, 48, 24, 12, + 6,131,193,248,155, 32, 0,202, 28, 9, 64, 41, 61, 97,183,200, 75,140, 38,168, 76,159,105, 50, 77,166,201, 52,153, 38,211,100, +154,175,159,102,101,218, 85,241, 31,255,211, 80, 74,255,178, 23,128,206, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255, +182, 23,107, 34,100, 48, 24, 12, 6,131,193,120,197, 8,202,250, 80,216,108, 94,166,213,106,245, 2, 0,129, 64,144,101,185,246, +165,111, 69, 34, 66,160,147, 21, 88, 83, 36, 56,198, 66,233,241, 50, 52,143, 91,173, 86,215, 34,205,124,203,181, 47,187, 85,168, +217,244,155,163,207,109,127,117, 70,151, 50,226,139,124, 97,211,111,210, 94, 72,171, 95, 21,194,119,182,255,143,116,254, 83, 52, +255,205,136,154,207,203,180, 88, 10,203,145, 80, 40,200, 50, 95,173,184, 28,137,154,125,147,246,220,246, 87,102,120, 87,164, 41, +147, 74,114,107,250,123,254, 80,145,102,124, 90,206,100,173,206,224, 94,145,102, 85,175,205, 64, 95,223, 78,182,162,107,147, 15, +140, 73, 73, 75, 59,254,191, 84,150, 8, 33,141, 1,124, 9,192,169,212,199,119, 40,165,159,176, 82,201, 96, 48, 94, 59,131,101, +181, 90,189,110,238,153, 5,173, 17,232,244,214, 55, 94, 33,253, 87,109,253,175,109, 12,249, 98,229,253,109, 81,124,139,218,213, + 83, 96,118, 74, 75, 75, 35, 69, 21,230, 26, 0, 65,101,104,186,222,220, 51, 11, 58, 19,208,118,216, 28,215, 32,192, 41, 91, 36, +154, 34,149,203, 59,232,245,250,186, 0, 32,149, 74,239,235,181,218,211,158,102,243,247, 47,110, 95, 94, 6, 74,167,181,227,200, +111,188,194,251,175,250,216,198,113,226,103,215, 87,182, 53,228,196, 9,132, 86,227,138, 47,128,195,179, 0,155, 61, 7,228,185, +223, 29, 60,221, 93, 8,116, 20, 59, 56,212,119,113,117,109,195, 81, 90,135,227, 56, 98,179, 90, 31,168, 85,170,243,156,213,122, +219,106,210,186,223,220,191,128,171, 40,157, 47,230,101, 48, 32,216, 3, 12,146, 43, 20, 29,248, 66, 97, 75, 0,176, 89, 44,151, +180, 5, 5,167, 7, 0, 59,237,201,187,189,199,231,101,183,255,183, 97,177, 88,189,158, 30,157, 5,163, 5,104,248,198, 2,175, +122,111,110,220, 10, 0,166,172,219,222, 5,113,251,155, 1,128,188,102,239,171, 18,159,134,153, 0, 32, 72, 74,247,138, 61, 56, + 3, 70, 11, 80,167,247, 28,175,202, 52, 71,207,220,238,254,217,216,129, 18, 0, 56,182,235,167,218,167,118,255,210, 3, 0, 58, + 14,124,255,112,215, 55, 62,140, 5,128, 69,171,119,187,255,190, 96, 72,133,154,246, 93,155, 42,145, 42,238, 96, 45,147, 58,221, + 37, 80, 46,240,137,139,139,227, 1,128,159,159,159, 93,215,102, 0,224,156, 14,124,192,227,243,219,212,172, 85,171, 33, 0, 26, +255,228, 73,180,205,106,189,224, 11,172,120,197,101,233, 99, 74,105,159, 23, 76, 23, 43,144, 12, 6,227,245, 52, 88, 0,160, 53, + 2,103, 31, 3,237,154,215,195,216, 55,123, 42, 74,127,183,115,213,156,160,184,235,251,194,127,221,248, 61,175, 94,189,122,120, +250,244,169, 93, 63,166, 51, 1,103,226, 0, 40, 31, 58,230,203,229, 79,150,124,247,157, 83,151, 46, 93, 4,126,126,126, 32,132, + 32, 35, 35,163,249,137, 19, 39, 26, 79,154, 52,105, 60,148, 15,243,117, 38,104,206,196, 85,174, 91,156,214,186,181,171,225,203, + 15,135, 56, 3,192, 23,111,173,104,124, 61, 38,211,237,201,147, 39,157, 62,255,252,243, 92,254,233,211,191,120, 0,235, 51,129, + 20,123,210,185,233,192, 85, 7,231,244,223, 66, 70,124,248,225,174, 90,181,106, 41,130,131,131,137,163,163, 35,248,124, 62,242, +243,243,131,238,221,187,215,227,218,181,107,218, 19,103,215,136,111, 92,235, 27,159,229,208,204, 96, 87,222,245,105, 14,199, 28, + 29,239,143, 28, 48, 32, 96,200,144, 33, 14, 53,107,214, 4, 0, 60,121,242, 36,116,231,206,157,195,118,237,218, 53, 19,250, 52, +171,206, 4, 67,101,121, 47,209, 4,224, 0,180,116,241,242, 26,193, 23, 10,235, 90,173, 86,255,162,232,194, 51,155,197,114, 95, +153,149,181,229,197,237, 25,255,141,209, 2, 60, 76, 7, 58,183,105,136,145, 3, 59,203, 1,224,243,161,243,154, 39, 37, 60, 22, +153, 76, 38,212, 14,171,211,234,235, 5, 63, 28, 5,143,135,205,187, 79,148,108,111,143,230,157,135, 79, 49,235,235, 37, 72,187, +187,179,185, 77,245,184,131, 70,173,226, 3,128,147,179,243,192,157,219,126, 59,237, 23, 53,232,202,227, 28,179, 93,154, 21, 93, +155, 71,182,253,232,155,122,239,116,196,207,199,214, 9,131,130,130,112,247,238,221,170, 93,155,170, 24, 71,206,215,247,193,247, +159,126,234,211,182,109, 91, 40, 20, 10, 8, 4, 2, 88,173,214,206, 23, 46, 92,232, 60,107,214,172,247,161,138,209,218,123,109, +218,193,247,132,144, 14,163,199,126,236,219,179,223, 32, 12,236,222,138, 21, 68, 6,131,241,250, 26, 44,129, 64,144,213,101,212, +124,175, 54,205, 34,113,253,118,172, 42, 49, 57,189,160,248,187,188,251, 59,107,247,107,229, 31,113,238,220, 89, 24,141, 70, 92, +186,116, 9,183,111,223, 70, 66, 66, 2,198,141, 27,103, 20, 0, 99,202,209,204,111, 59,108,142, 43, 84,113,138, 80,113, 76,245, + 19,143, 30,241, 13, 6, 3,206,157, 59,135,252,252,124,136,197, 98, 4, 4, 4,160,107,215,174,130, 71,143, 30,185,117,234,210, +221,185,109,247,225, 79,225, 28, 90, 32, 16, 8,242,203,205,128, 64,144,213,233,173,111,188, 34, 66,171,225, 73, 98,154,234,203, + 5,191, 22,112, 28, 21,196, 39, 36,153,207,158, 61,139,134, 13, 27,226,248,241,227,238,121,121,121, 95,173, 88,177,226, 75,225, +183, 63, 47,179,152,114,167, 86,160,151,223,118,216, 28, 87,247,172, 29,193,167,142,236, 21,221,191,127, 95,180,114,229, 74,228, +230,230, 66, 44, 22,195,197,197, 5, 62, 62, 62,168, 93,187, 54,249,226,139, 47, 20,189,123,223,199, 71, 99, 6, 5,155, 67,222, +139, 41, 47,157, 37,121, 47, 72,146,121,168,143,213,220,253,199, 31,188,214,173, 91, 63,247,152, 94,163, 70, 13,116,235,214,205, + 97,196,136, 17, 53,135, 12,123,147,107,219,107,244, 19, 40,130,117,149,106,106, 83,164,238,186,203,126,157,135, 13,219, 63,103, +206, 28, 23, 31, 31, 31,200,229,114, 0,128, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 55,174,222,217, 38,104,219, 59, 37, 13, +242, 64,125, 69,199,243,223,138, 80, 40,200, 42,142, 26, 57,202,165,249, 41,169,153, 90, 0, 48,153, 76, 48,153, 76, 48, 26,141, +152,240,254, 56,254,152, 55,154,214, 10,110,243,241,173,132,103,153,121,117, 78, 92,113, 43,222,183, 50, 77,129, 46, 65,169, 76, + 62, 57,102,214,167,159,250,120,123,255,167,229,111,243,166, 77,252,188,188,188,206,179,102,205,138,160,178,246,202, 58,189,231, +184, 84,164, 89,209,181,169,140,253,163,250,215, 31,118,171,191,106,193, 65,216,108, 54, 92,190,124, 25,231,206,157,195, 15, 63, +252, 64, 15, 31, 62,172,114,146,203, 43,185, 54, 99, 28, 91,251,102,132,124,251,237, 46, 34,145, 72,176,111,223, 62, 60,122,244, + 8, 60, 30, 15,245,234,213,195,200,145, 35,209,185,115,103,159,177, 99,199,209,182,221,135,198,195, 57, 76,243,103,202, 18, 33, +132, 7,224,227,233,179,190,245,125,235,189, 15,176,232,235, 47,152,193, 98, 48, 24,175, 15, 69,163, 1,104,209,171, 29,165, 20, + 20,224,213,232,191,234,247, 29, 55,184, 63,106,244, 95,245, 59, 5,120, 20,224, 57, 1,213, 26, 52,104, 96, 81, 42,149,244,218, +181,107,116,194,132, 9,218,101,203,150,157,254,227,143, 63,118, 90,205,230,181,126,190,190,139, 41,192, 43,179, 71, 61,192, 11, + 6,156,101, 50, 89,118,114,114, 50, 61,116,232, 16,157, 61,123, 54,221,178,101, 11, 61,124,248, 48, 61,113,226, 4, 61,124,248, + 48,253,253,247,223,233,157, 59,119,104,108,108, 44,149,203,229,217,193,128,115, 5,154,124, 10,240,107,247, 95, 57,117,215,117, +203,156,176,254,171, 38, 81,128,239, 10,132, 55,104,208,192,182,115,231, 78,186,121,243,102,186,113,227, 70,122,231,206, 29,154, +147,147, 67, 5, 18,121,118,241,126,229,165,147, 2, 60,127,127,255,108,165, 82, 73, 3, 3, 3,169, 88, 44,166,222,222,222,180, +118,237,218,180,121,243,230,180, 71,143, 30,244,205, 55,223,164, 95,125,245, 21, 85, 42,149,212,193,193, 33,179,120,191,242, 52, + 27, 2, 82,185, 92,158,124,243,230, 77, 90, 30,122,189,158,230,228,228,208,163, 71,143, 82,185, 92,158,220, 16,144, 86,164, 41, + 5, 26, 69, 69, 69,101,231,228,228, 80,179,217, 76,147,147,147,233,189,123,247,232,163, 71,143,104,114,114, 50,213,235,245, 37, +218,177,177,177, 52, 36, 36, 36, 91, 10, 52, 42, 87,243,223,252, 42, 46, 19, 47,188,130,188,189,123,248,248,248,232,119,237,218, + 69,159, 61,123, 70, 55,108,216, 64,121,192,188,255,218,182, 2, 77, 49,208,181,117,235,214,182,203,151, 47,211, 91,183,110,209, +105,211,166,209,110,221,186,209,238,221,187,211, 89,179,102,209,212,212, 84,154,154,154, 74,123,244,232, 97, 19, 3, 93, 43, 43, +159,101, 93,155,206, 64, 80,239,222,189,245,102,179,153,198,199,199,211,186,117,235,166,242,129, 17,114, 32,162, 29, 32,169,172, +124,250, 3,174,190,190,190,233,151, 47, 95,166,187,119,239,166,193,193,193,217,124, 96,180, 19, 80,195, 9,168,193, 7, 70,215, +168, 81, 35,251,242,229,203, 52, 55, 55,151, 6, 5, 5,165,251, 3,174, 47, 91,150, 80, 56, 7,223,186,233,179,190,165, 49,169, + 90, 58,125,214,183, 20, 64, 50, 45,252,242, 56, 43,147,236,197, 94,255,190,215,127,121,145,127,248, 75, 80,202,104, 17, 66, 8, + 69,225,220, 88,101,162,231,243,231, 47, 90,180, 72, 96, 48, 24,240,235,175,191,106,134, 15, 29,186,219,197,197,197, 42, 20, 10, + 65,120,149, 15, 72,204,150, 72, 38,126,183,104,145,139,201,100,194,141, 27, 55,208,184,113, 99, 72, 36, 18,136, 68, 34, 8,133, + 66, 8,133, 66,248,250,250, 34, 43, 43, 11,117,235,214,197,103,159,125,230,188,112,254,252,137, 48, 26,191,174, 72,151,227,168, + 0, 0,108, 28, 39, 22, 1, 99,235, 55,105,178,248,139, 47,190,224, 57, 57, 57,193, 96, 48,192,104, 52,226,209,163, 71,112,119, +119,135, 76, 42, 19,192,168,173, 52,173, 60, 30,143,167, 80, 40,112,234,212, 41,172, 94,189, 26, 9, 9, 9, 72, 79, 79,135,163, +163, 35,234,214,173,139, 58,117,234,160, 93,187,118,136,143,143, 7,177,163,211,200, 3,129,224,131, 9, 99,198,120, 53,108,216, +176,204,239, 13, 6, 3,148, 74, 37, 84, 42, 21, 2, 2, 2, 48,104,208, 32,175,223, 54,111,254, 0, 86,235,247,101,109,239, 14, +248, 4,132,134,238,191,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138, +142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14,186,103,101, 53,202, 5,210,216,227, 69,229, 36,101, +102, 30,235, 10,120,140,120,243,205,195,183,239,220,105, 51, 98,196, 8,100,102,102,126, 33,156, 54, 77,105, 1,150, 84,182,127, + 24,224,236,230,235,187,254,219,111,191,229,101,100,100, 96,202,148, 41, 57,105, 73, 73,211,156,129,243, 0,112,242,200,145, 54, + 91,182,108, 89,184,121,243,102,143, 77,155, 54,241, 26, 54,108,184, 62, 44, 57,185,110, 12,160,170, 74, 58, 53,192,199, 75,151, + 46,117, 48, 24, 12,232,210,165, 75,188, 67, 66, 66,125, 43,160,183,119,255,116,224,131, 31, 62,251,204, 71, 34,145, 96,202,148, + 41, 57,186,164,164, 72, 43,144, 93,106,147, 68,207,167, 79,143,188,245,214, 91,247,238,220,185,227,177,100,201, 18,159, 55, 6, + 12,248, 0,192,188, 42, 68,172, 74,119,104, 15, 29, 61,246, 99,239,134, 77, 91, 96,211,218, 21, 88, 48,231,243,245, 0, 86, 17, + 66, 62, 4,240, 29, 43,121, 12,198,191, 54,232, 83,169, 23,249,199, 53, 17, 22,101,168,125, 69, 27,187,186,187, 55,142,140,140, +196,185,115,231, 16, 21, 21,117,205,197,197,197, 42,146, 72, 32, 20, 10, 65, 57,174,210, 31,147,202,229,157, 58,119,238, 44,184, +114,229, 10, 66, 66, 66, 32,149, 74, 75,140, 85,241, 75, 36, 18,193,215,215, 23,106,181, 26,157, 58,117, 18, 46, 95,190,188, 83, +101, 6, 11, 0,146,226,238, 41,178,175,124,251,230,154, 13,235,107,180,109,219, 22, 42,149, 26, 28,199, 65, 38,147,193,100, 50, + 65, 32, 16, 20, 54,245, 88,168,218,158, 3, 99,179,217,108,124, 62, 31, 33, 33, 33,152, 63,127, 62, 12, 6, 3, 68, 34, 17, 0, + 64,173, 86, 67,169, 84,226,222,189,123, 72, 76, 76, 68,209, 83,119,133, 56, 58, 59,247, 28, 50,100,136,184,172,239,140, 70, 35, + 84, 42, 21, 84, 42, 21,148, 74, 37, 12, 6, 3, 90,180,104, 33,254,227,224,193,158,200,205, 45,211, 96, 25, 29, 28,222,216,180, +105,147,151, 88, 44,134, 94,175,135, 70,163, 65, 74, 74, 10,146,146,146, 12, 89, 89, 89, 86, 71, 71, 71, 94,112,112, 48, 79, 34, +145, 72,250,247,239, 79,212,106, 53, 8, 33,232,221,187,183,251,214,205,155,135, 0,248,129, 93,202,246,113, 12, 48, 54, 50,153, +250, 52,107,218,244,212,181,235,215, 27, 78,156, 56, 17,119,238,220,249, 86,182,109,219, 89, 29,112,187,162,125,227,129, 15, 22, +151, 50, 46, 52, 41, 41,202,252,130,113, 9, 46, 52, 46,119,139,141,203,224, 42, 26,151,162,242,213,196,215,215, 23,135, 15, 31, + 70,114, 66,194,231, 85, 49, 87, 0,192,227,243, 91,183,109,219, 22,251,246,237, 67,106, 82,210,231, 47,152,171,194, 7, 36, 32, + 91, 16, 31,255,249,250,245,235,215,189,243,206, 59,224, 11, 4,173, 97,181, 86,229,103,254,171, 67,251, 59,227, 38, 98,253,234, +229,235, 1,188, 71, 41,229, 0, 92, 99, 37,142,193,248,247, 98,143, 23,249,167,192, 43,237, 26, 1,156,169,104, 99, 47, 47, 47, +127,133, 66,129,180,180, 52,212, 9, 15,207,146, 72, 36, 16, 11,133,112, 16,139,237,250, 49,157, 78, 23,229,231,231, 7,149, 74, + 5, 15, 15, 15,136, 68,162,146,151, 88, 44, 46,121,239,232,232, 8, 30,143,135,160,160, 32,232,116,186,168, 74,117, 51,239,121, +109, 91,254,254,132,203,103, 15,215, 24, 48, 96, 32, 92, 93,221, 16, 24, 24, 0, 47, 47, 47, 72,165, 82, 4, 6, 6,162,102,205, +154,244,251,239,191,135,204,171,158, 93, 21,120,105,211, 36, 16, 8, 96,179,217,144,153,153,137,152,152, 24,220,185,115, 7,151, + 47, 95,198,173, 91,183,160,209,104, 96,135,191,130, 78,175,175, 47, 16, 8,202, 52, 87, 74,165,178, 36,122,165, 84, 42,145,157, +157,141,196,196, 68, 20,104,181, 13, 42, 48,187, 3, 35, 35, 35,249, 0, 32,149, 74,209,160, 65, 3,172, 90,181,202,122, 96,239, +222,161, 17,151, 47,187, 5, 30, 61,234,178,102,229,202,161,131, 6, 13,178, 93,185,114, 5,106,181, 26, 15, 31, 62,132,167,167, +167, 64,236,224, 48,132, 93,198, 85,227, 38,160,245,208,104,186,183,108,217,242,169, 74,165,194,119,223,125,199, 19, 58, 58,174, +158, 3,240, 43,220,145,207,111,213,182,109, 91,236,223,191, 31,105, 73, 73,211,146,202, 48, 46, 73, 64,118,114,124,252,180,245, +235,215,163,107,215,174, 32, 2, 65,149, 59, 34, 53,111,222, 60,146,227, 56,220,189,123, 23, 46,192,213,170,238, 95,179, 86,173, +134, 10,133, 2,143, 30, 61,130,188, 40,186, 86, 22,114,224,124,116,116, 52,164, 82, 41,234, 68, 68, 52,170,226,207,124, 79, 8, + 73,127,103,220, 68,236, 62,114, 17, 0,176,126,245,242,204, 82,230,138,193, 96,176, 8, 86,165, 94,228, 31,103,176,236,204, 56, + 0, 64, 40, 20, 66, 44,145, 64, 44, 22, 23, 26, 35,137,164, 42,238, 20, 14, 14, 14, 37,134,170,180,177, 42,253, 94, 38,147,217, +101, 92, 0, 32,255,241,145, 54,239,189,251,142, 88, 34,145,192,100, 50,130, 82, 10,137,196, 1, 46, 46, 46, 8, 9, 9,129, 90, +173, 70,203, 86,237,140, 41, 74,209, 65,247, 58,253,239,188,204,129,178, 90,173,208,106,181,200,207,207, 71, 94, 94, 30,212,106, + 53,244,122,189,221, 67,202, 57,142,227,167,164,164,224,183,223,126, 67,110,110, 46,128,194, 14,212,197,166,170,248,239,211,167, + 79,177,121,243,102, 36, 36, 36, 84,233,252,180,105,211, 6, 7, 15, 30,228,183,239,212,105,237,241,224,224,180,227,193,193,105, +237, 59,117, 90,187,127,255,126,190,191,191, 63, 18, 19, 19,113,227,198, 13,228,231,231, 23, 23, 96, 70, 21,121, 2,228,235,242, +242,222,249,226,139, 47,168, 66,161,192,119,139, 23,215,159, 7, 12,183,215,184, 56, 87, 96, 92,156,255,156,113, 1,165, 20, 28, +199,193,102,179,189, 84,222, 8, 33, 68, 40, 20, 86,117,138, 4, 82, 5,253,146, 14,237,159,125, 53, 31,135,246,237, 44,254, 42, +142,153, 43, 6,131,241, 58, 34, 40,229, 24, 43,189,241,102,102,102, 62,211,106,181, 53,130,131,131,145,154,154,234, 21, 20, 20, +148, 36, 22, 10, 33, 18,139,237,234,131, 37,147,201,238,166,165,165,181,242,247,247,135,213,106, 45, 49, 83, 47, 54, 17, 22, 71, +101,110,221,186, 5,153, 76,118, 23,134, 10,103, 64,128,205,148, 95,173, 81,163, 70, 37,145, 32, 23, 23, 23,184,184, 56, 67, 34, +113,192,140, 25, 51,184, 37,223,127,191, 34,168,227, 28,213,219,147,190,160, 95,204, 91,251, 74, 15,160,189, 55, 36,153, 76,118, + 55, 48, 48,176,133,179,179, 51,118,239,222,141,196,196, 68,228,231,231, 67,167,211,193,104, 52, 66,167,211,193,100, 50,193,193, +193, 1, 17, 17, 17,112,114,114,194,137, 19, 39,238,194,104, 44,219, 84,230,230,238,190,123,247,110,139,166, 77,155,150, 68, 80, + 58,116,232, 64, 58,116,232,224, 81, 18, 53,211,233,144,147,147,131,107,215,174,225,196,137, 19, 32,132, 32, 46, 46,206,102,212, +235,127,103, 69,255,229, 48, 0,151,248,235,215,175, 27, 63,126,252,187,173, 90,181,130, 13,232, 1, 96,243,223,101, 92,138,185, +124,249,242, 61,155,205,214,170,118,237,218, 80, 2,205, 0,236,171,146,121,124,252, 56,218,106,181,118,170, 95,191, 62,118,239, +216,209, 6, 64, 98, 89,219,105,129, 54, 13, 27, 54,132, 94,175,199,195, 7, 15,110, 86,193, 92,173,157, 62,235,219,209,111,189, +247, 1, 54,173, 93,129,245,171,151,167,172, 91,181, 44, 16,128,153,149, 42, 6,131, 81, 21, 47,242, 90, 70,176, 84,249,249, 55, +163,163,163,209,168, 81, 35, 60,121,242,164, 41,229, 56,129, 72, 44,134, 88, 36, 2,207,142, 27,136, 94,171, 61,121,242,228, 73, +107,131, 6, 13, 80, 80, 80, 0,129, 64,240, 92,244, 74, 44, 22, 67, 40, 20, 66, 32, 16, 64, 38,147, 97,207,158, 61,102,189, 86, +123,178,210,232,144,141,179,241,120,188,146,155,152, 82,169,132, 78,167,199,252,249,243,241,227,247,223,191,105, 3, 38, 9,229, +158,250,191,243, 64, 27,116,186, 83,135, 14, 29,178,212,168, 81, 3,163, 71,143,198,164, 73,147, 48,105,210, 36,140, 31, 63, 30, +163, 71,143,198,200,145, 35, 49, 96,192, 0, 52,107,214, 12,158,158,158,136,137,137,177, 24,116,186, 83,229,233, 73, 12,134, 93, +163, 70,141,202, 42, 54,102, 90,173, 22, 26,141, 6, 42,149, 10,217,217,217,184,120,241, 34, 54,109,218,132,239,191,255, 30,123, +246,236,129,209,104,132,217,108,198,173, 91,183,242,229, 22,203, 14,118, 41,191, 60, 66, 96,247,133, 11, 23,224,230,230, 6,191, +128,128,118,118, 24, 23,212,175, 95, 31, 42,160, 77,185,215,214, 75, 24,151,231,140,143, 70,115,253,233,211,167,104,223,190, 61, +124, 3, 2,190,141, 0,164, 85,217,223,102,181,158,191,112,225, 2,222,122,235, 45, 4,215,168,241,173, 39,224,249,226, 54,158, +128,103,245,154, 53,191, 29, 61,122, 52,142, 29, 59, 6,155,213,122,190, 2, 83,213,152, 16,178,159, 16,114, 22, 64,226,232,177, + 31,143,126,161, 67,251, 96, 66,200, 22, 0, 83, 89,137, 98, 48, 24,175, 35, 85, 50, 88, 82,155,109,250,212,169, 83, 45, 60, 30, + 15, 3, 7, 14,116,220,183,127,255,160, 91,183,111,135,100,101,101,185,216,108,182, 74,181, 60,141,198,101, 83,167, 78, 85,154, + 76, 38,132,133,133, 33, 47, 47, 15, 54,155, 13, 2,129, 0, 2,129, 0,132, 16,240,120, 60, 40, 20, 10, 68, 71, 71, 99,221,186, +117,106, 79,163,113, 89,165, 55, 7,155,237,238,230,205,155,193,231,243,169,131,131, 3, 8, 33, 16, 8, 4, 88,178,100, 73,214, +143,192,110, 0,224,243,120, 38, 0,224,241,136,189,189,114, 43,109,159, 20,139,197,224, 10, 59,247, 87,186,173,171,209,184,116, +209,162, 69,154,135, 15, 31, 66,171,213,150, 68,219, 10, 10, 10, 74, 58,205, 43,149, 74, 16, 66,160,213,106,177,127,255,126,141, +171,209,184,180, 60,189, 92, 32, 35, 53, 46,174,111,211,166, 77,115,159, 62,125, 10,149, 74,133,187,119,239,226,196,137, 19,216, +190,125, 59,142, 29, 59,134,199,143, 31,195,106,181,194,223,223, 31,148, 82,236,221,187, 87,101,213,104,122,228, 2, 25,172,232, +151, 79, 53, 31,159, 78,222, 94, 94,201,158, 30, 30,169,213,124,124, 58,189,248,189, 51, 16, 27, 27, 27, 11,171,213,138,144,144, + 16,183,138,250, 97, 81,171,245, 66,177,113, 9,172, 81, 99, 97,112, 25,198, 37, 24,240, 12,174, 89,115, 97,177,113,161, 86,235, +133,170,166,217, 17, 88,254,233,167,159,234, 69, 34, 17,182,109,219, 22, 98,169, 85,235,145, 0, 24,174, 0,194,219, 3,162,202, +246,247, 5, 86,124,245,213, 87, 25,132, 16,108,217,178,197,195,185,102,205,123, 2, 96,148, 51, 80,205, 25,168, 38, 0, 70, 57, +215,172,121,111,219,182,109, 30, 86,171, 21,147, 38, 77,202,240, 5, 86, 84, 32,249, 49,165,180, 15,165,180, 45,165, 52,112,221, +170,101, 56,180,111,103,177,185,122,143, 82,122,141, 82, 58,146, 82,122,143,149, 56, 6,131,241, 58, 66,202,234,231, 36,108, 54, + 47, 19,160, 94,237,154,215,195,245,219, 49, 42, 15, 87,167,163,197,223,229,221,223, 89,187, 99,148, 83,189,159,127,254, 25, 66, +161, 16, 41, 41, 41,120,240,224, 1,156,156,156,240,230,155,111, 26,245, 26, 77,223,226,181, 8, 9, 33,157, 41,165, 39,138, 52, + 11,215, 59, 83,197, 41,106, 10,238,212, 56,114,232, 32,223,217,217, 25, 5, 5, 5, 37,211, 10,200,100, 50, 72,165, 82,220,184, +113, 3,189,250,244,179,101,203,218,150, 76, 52, 90,188,222, 89,105, 77, 16,194, 7,128,102,128, 44, 26,152,226,229,231, 55,245, +203, 47,191,148,118,235,214, 13, 34,145, 8, 1,213, 66, 51, 66,186,127,183,156,199, 35,214,212, 92,245,140,154,213,252,156, 31, +196, 37, 2, 32,133,107, 22, 22,173, 69, 88, 86, 58,131, 76,103, 67,246,108,252,222,169, 65,131, 6, 37, 81,177,204,204, 76,100, +101,101, 65,169, 84, 66,171, 45,156,234,225,224,193,131, 56,116,238,145, 90, 31, 48, 40,190,188,116,254, 39,239, 49,142,126,230, +171,213,183,110,222,200,247,244,244, 68,102,102, 38,178,179,179,161, 84, 42,161,215,235, 97,179,217,144,151,151,135, 95,215,111, +180,229, 42,218, 38, 20, 79,228, 88,161,166, 54, 69,234, 86,112,209,191, 97, 68, 48,125,247,221,119, 29,157,156,156,192,113, 28, +242,243,243,145,156,156,140,167, 79,159,226,220,185,115,218, 44,165, 9, 90,143, 46,169,197, 19,141,150,121, 60, 95, 85,161,250, + 39,106, 22,149, 37, 0,240,243,245, 77, 75, 74, 74,242,178,217,108,240,247,247,183, 42,243,242, 22,138,129, 99,142, 64, 58, 0, +154, 3,124,185,116,249,242,119,250,245,235,135, 38, 77,154,164,100,100,102, 86, 47,171, 44,129, 16,126, 24,224,172, 11, 8,184, +127,237,218, 53,159,228,228,100,188,245,214, 91, 57, 73, 79,158,148, 76,211,160, 2,218, 4,215,172,185,112,219,182,109, 30, 53, +106,212, 64, 84, 84, 84,134, 67,241, 52, 13,101,151,207,114,175, 77,101,236, 31,213,223, 31, 16,217,100,194,132, 9,176, 90,173, + 56,119,238, 28,174, 94,189,138,164,164, 36, 92,188,120, 81,233, 36,151, 15, 45, 94,139,176,188,242,217, 35, 84, 27,178,101,203, +102, 34, 18,137,176,126,253,122, 68, 71, 71, 3, 0, 26, 54,108,136,209,163, 71,195,106,181, 98,196,136,145,244,143, 24,105,124, + 69,229,147, 16, 18, 9, 96, 49, 10,205, 93, 19, 74,169, 3, 33, 36, 13, 64, 96, 85,250, 92,177,242,201, 52,153,230,191, 71,243, +117,163,210,181, 8,191,249, 5,206,207, 47,199, 49, 38,109,231,170, 57,130,214,109,218,134,207,153, 61,139,215,180,105, 83, 4, + 6, 6,162, 97,195,134, 72, 78, 78,150,184,184,184, 84,182,222, 89, 65,219,238,195,159,214,171, 87,207,101,218,180,105,206, 93, +187,118, 21, 6, 6, 6,130, 82,138,232,232,104,236,222,189,219,188,118,237, 90,181,206,187,143,242,230,233,223, 10,236, 89,239, +236, 42,160, 3, 48, 55, 32, 45,109,245, 7,239,191, 63,171, 65,163, 70,239,206,158, 61,155,167,144, 73,133,243,103,188,231, 0, + 0,223,252,180,221,185,223,160, 55,177,180, 22,208,110,120,217,235,188,149, 78,103,114,234,152,164,158, 3, 58,213,154,242,225, + 59,182, 33, 67,134,200,157,156,156, 16, 24, 24, 8, 87, 87, 87,196,199,199, 35, 53, 53,149, 30, 56,112,160,224,242,173, 88,225, +222, 99,215,147, 28,156,125,237, 89, 55, 80,211,182,219,224,132,158, 61,123,186,142, 26, 53,202,177,113,227,198, 66,137, 68, 2, +137, 68,130,204,204, 76, 60,126,252,216,124,224,192,129, 2,157, 87,143,252,155,167,183,105,236, 92,139, 80,223,118,216,156,199, +231,143,207,158,116,255,238,221,145, 28, 80,223,108, 54,251,219,108, 54,194,227,241,210, 57,142,187,107,214,104,214, 25, 27,206, + 94,194,214, 34,180, 15,155,205, 38,178,217,108, 80, 42,149, 56,126,252,184,224,201,147, 39, 95,222,190,125,251,203,180,180, 52, + 88, 44, 22,188,241,198, 27,104,216,176, 33, 78,159, 62,141,236,204,204, 3, 21,105,197, 0, 42, 73,106,234,232, 49, 99,198, 28, +222,188,121, 51,239,246,237,219, 30,235,215,175,255,181, 44,227, 50,114,228, 72, 46, 51, 57,121,180,177,130, 57,176, 42,185, 54, +115,142,108,251,241,118,255,129,131, 34,102,207,252, 82,216,178,101, 75,120,120,120,160, 77,155, 54, 48,155,205, 46,117,234,212, +169,236,218,212,180,237, 62, 52,190,126,253,250,242, 37, 75,150,248,188,243,206, 59,248,240,195, 15, 1, 0,122,189, 30,199,142, + 29,195,164, 73,147, 50,146, 5,205,180,149,149,207,162,200, 84,177,241, 58, 11,160, 45,128,120,214,161,157,193, 96,252,171, 13, + 22,240,159,245,206,206, 95,189,135,210,203,113, 20,226,251,192, 26, 52,234,201,184,169, 11,163,248, 22,181,171,144, 24,156,226, + 98, 99, 73,101,107, 18,150,172,119,230, 28, 90,224,254,244,247,166,243,191,249,102,226,210,165, 75, 59, 21, 79,197, 32,147,201, +238,234,181,218,147,158, 70,227, 50,157,115,232,201,170,174,157,151, 10,100, 2,120,223,245,230,205,229,189,251,189,177,200,193, + 45, 68,248,197,188,181, 6, 62,143,103,122,156,150,141,165,181, 0,185, 29, 3, 30,117, 38,224,190,210,215,154,233, 62, 40,230, +171, 79, 63,157,242,205,220,185, 77, 21, 10, 69, 59,179,213, 26,202,113, 28,192,113,113, 58,173,246, 44, 53,155,175, 25, 27,206, +252,222,193,217,151,218,189,110,160, 75, 29,141, 91,194,206,166, 27,214,173,251,120,199,142, 29,255,149,119,119,163,113,185,206, +165,206, 9,123,242, 94,122, 27, 3,112, 9, 89, 89,151,202,125,218, 0, 91,139,208,238,139,130,227,198,186,186,186,110,234,212, +169,147, 67,231,206,157,209,171, 87, 47,180,108,217, 18, 28,199,129, 82, 10,141, 70,131,237,219,183, 99,209,162, 69,113,213,129, +185,149,233, 25,129,147,146, 67,135,122,212,175, 95,127,125, 69,198,165,200, 92, 85,218,231,176,226,107, 83, 18,103,117,238,155, + 56,236,131,249,181, 76,234,116, 23,119,153,213,231,254,189,187, 60,251,175,205, 48,141, 45,122,123,179, 55, 6, 12,248,128, 47, + 16,180, 41, 26,209, 72, 31, 62,120,112,179,120,177,103, 52, 28,125,188,138,101,169,120,238, 57,214,161,157,193, 96,252,187, 13, +150, 64, 32,200, 42,142,242, 8, 4,130,172,248,189,227,222,172, 72, 68, 8,116, 42,138, 92,161,210,181, 8,139,222, 39, 2, 26, + 24,141, 95, 63, 55,137,104,169,209,130,194, 23,182,175, 74,166,242,129, 24, 88,141,189,145,245, 0,216,255,126,161, 94,211,111, + 62, 47,157,167,114, 15,200,115,191, 43,202, 51, 0,231, 81, 80,112, 30, 5, 5,101,206, 46, 45, 20,136,242, 42, 75,231,139,121, + 79, 6,212,127, 54,239,130, 42, 30, 31,193,159, 56,158,255, 54,158,229,228,236, 5,160, 8, 56,120,208,251,200,193,131, 67,166, + 76,158,252,134,175,159, 95, 77, 15, 15, 15, 87, 71, 71, 71,222,149, 43, 87,158, 90, 13,134,229, 13,128, 13, 69,209,211, 74, 49, + 2, 39,195,146,147,235, 14, 30, 48,224, 3, 34, 16,180, 46,109, 92,168,213,122, 49, 4, 88, 97,180, 99,246,246,170, 94,155,129, + 18,223, 78, 69,145, 43,240,237,188, 54, 83, 11,211, 49, 15, 86,235, 60,220,185, 83, 70,153,175,114, 89,250,134, 16,162, 1,155, +161,157,193, 96,252,155,248,139,215, 21,234,204, 52,153,230,235,162, 89,232, 81,224,196,142, 39,211,100,154, 76,147,105,190,122, +205,215,237, 37, 96, 22,147,193,176,251, 97,196,134,255, 52,119, 49, 24, 12, 6,131, 81, 46, 4, 64,231,114,110, 38,118,143, 14, + 32,132,116,126,137,155,213, 9,166,201, 52,153, 38,211,100,154, 76,147,105,254,187, 52, 43,211,126,109, 70, 39,178, 38, 66,166, +201, 52,153, 38,211,100,154, 76,147,105,178, 38,194, 87,251,226,129,193, 96, 48, 24,152, 51,135,240, 0, 66,128, 57, 60, 96, 39, + 31, 24,204, 47,252,255,229, 25, 60,152,148, 57, 9,237,199, 31, 19, 71,118,196, 25,140,215, 27,214, 7,235,111,132, 16, 18,228, +227,227,179, 10, 0,201,200,200, 24, 75, 41, 77,102, 71,229,127, 15,119,119,247, 78, 86,171, 21, 42,149,234,228,235,152,191,186, +181,200, 0,202, 67,157,255,132,181,145,252, 32,142,110, 42,107,219,136, 80,242, 22,200,127,230,210, 34, 28, 30,222,127, 76,247, + 84,161,204,243,250,247,240, 92, 12, 0,123, 15,103, 79,253, 43,230,197, 34,132,212,246,244,244, 60, 42, 16, 8, 4, 54,155,237, +253,204,204,204,131,229, 27,160,193,124, 0,240,148,238,158,238,226,230, 49,237,171, 41, 68,104, 50,126,167, 52, 26, 12, 42,158, + 64,144, 32, 22,201, 46, 88,121,242,195,169,153, 61, 30,148,181,255,142, 29, 59,202, 93, 93, 59, 50,148,244, 8,143,136,232,211, + 40, 74, 26,191,120, 89,211,165,237, 66, 60,132, 79, 83,110, 41,126,217,148,188,202,211,213,191,207,196,247, 4, 7, 37,212, 54, +242,219, 95,105, 1,187,202,236,103, 1, 33,110,102, 32, 74, 40,145, 4,218,172, 86,111, 2, 80,190, 64,144,105, 49, 26, 83, 68, +192,157,105,148, 42, 95,119, 77,145, 68, 18, 96,179, 90,189, 1,224,127, 49,157,140, 74, 12,150,163,163,227, 13, 30,143, 23, 80, +122,145, 90, 94,209,130,206,197,159,149,254,142, 16, 2,155,205,150,154,151,151,215,184, 10, 21,161, 19,128, 33, 0,138,135,154, +111, 5,176,157, 82,170,126,201,138,213, 73, 36, 18, 77,149,203,229, 29,245,122,125, 93, 0,144, 74,165,247,181, 90,237, 41,179, +217,188,248,101,116, 9, 33, 2, 0,131, 21, 10, 69, 7, 30,143,215,129, 82, 74, 40,165,167, 11, 10, 10, 78, 1,216, 65, 41,181, +190,132,166,212,203,203,107, 94,120,120,248,240,233,211,167,231,186,187,187,135, 77,154, 52,233,186,167,167,231,111, 57, 57, 57, + 51, 40,165,250,255,133,194, 65, 8,169,233,227,227,179, 85, 40, 20,242, 83, 82, 82, 58, 0, 64, 96, 96,224,105,147,201,100,203, +202,202,122,147, 82,250,164,138,122,114, 0,205, 21, 10, 69, 99,133, 66,209,214,102,179,213,225, 56, 14, 28,199, 61, 44, 40, 40, + 56,103, 54,155,111, 0,184, 66, 41,213,254, 15,153, 96, 71, 47, 47,175,205,132, 16, 16, 66, 66, 41,165,154,215,173, 18,160, 60, +212,121,112,255, 81, 88,137,137,170, 27, 94,193, 1, 65, 80, 25,219,218,109,176,122,118,114,233,222,167, 79,125, 30, 0,152,205, +215,187, 3, 56,244,170,205,213,192,129, 3, 47,109,222,188,217,213,104, 52, 98,236,216,177, 91,157,157,157, 87,168, 84,170,233, + 21,237,231,232,232, 56,105,238,215, 63,201,138,234, 52, 47,142,227,188,210,211, 83, 66, 99, 30,221,237, 30, 19,115,111,190, 89, +187,231,138,153,242,199, 41,117,125, 31,217,147,142,136,154,164,119,191,193, 3,122,205,157, 59, 27,195,135, 14,175,118,255,190, + 65,234,239, 20, 47, 86,155,229,181, 60, 60, 2,250,126,254,197,183,228,202,229, 51,125,119,108, 95,123,234,243,119, 73, 71,102, +178,236, 58,183,228, 27,129,160,185,107,120,120,219,161,123,247, 66, 17, 24, 40, 16, 72, 36, 60, 0,176, 26,141,129, 5, 41, 41, +190,219,250,246,109, 54,135,144, 51,179, 40,189,202, 52,255,255, 53, 25,118, 26, 44, 30,143, 23,240,236,217, 51, 47,185, 92, 94, + 88, 9, 83, 10,155,205, 6,155,205,134,162,155, 34, 40,165, 37,127,173, 86, 43,194,195,195,237,122,130, 5,208, 17,192,219,237, +219,183, 31,180,120,241, 98, 97, 84, 84, 84,241,210, 30,109,190,248,226,139,159, 8, 33,187, 0,108, 0,112,210,222, 39, 92, 66, + 72, 55,185, 92,190,229,187,239,190,115,234,210,165,139,192,207,207, 15,132, 16,100,100,100, 52, 63,113,226, 68,227, 73,147, 38, +189, 79, 8, 25, 65, 41, 61, 90,133, 11, 58,210,209,209,113,231,128, 1, 3, 2,218,181,107,231, 16, 17, 17, 1,155,205,134, 91, +183,110,189,115,227,198,141, 97,187,118,237,154, 69, 8, 25,100,239,122,106,132, 16,162, 80, 40, 70,249,251,251,207,155, 57,115, +166,219,136, 17, 35,196,247,238,221,203, 15, 9, 9, 33, 23, 46, 92,240,220,190,125,251,251, 11, 23, 46, 28,236,232,232, 56,163, +160,160, 96, 35, 45,107, 29,163, 23,112,114,114,186,193,227,241, 2,236, 49,192, 0,236, 54,193,132,144, 6,213,171, 87,223,126, +254,252,249,234,137,137,137,182,254,253,251,111, 2,128, 83,167, 78, 69, 89, 44, 22,210,181,107,215,195,132,144, 33,148,210, 91, +118,230,189,158,155,155,219,190,225,195,135,187,213,172, 89, 83, 86,189,122,117, 34,151,203,193,231,243,161, 82,169,252,238,221, +187,215,249,234,213,171,250, 19, 39, 78,228, 17, 66,250, 82, 74,239, 84,225, 60,181,244,242,242, 26, 41, 20, 10, 35,173, 86,171, + 63, 0, 8, 4,130,103, 22,139,229, 94, 86, 86,214,102, 74,233,165,151,189, 64,188,189,189,127,156, 55,111,158, 71, 86, 86, 22, + 93,184,112,225,143, 0, 70,189,174,149,193,214,223,118,224,198,245,171, 0, 32, 34,132,144, 23,203, 31, 33,132,212, 9,133,232, +147, 79, 38,163,113,147,102,120,115,248,224, 74, 53,251,247,242,152, 43,230, 11,220,117, 38,227,213, 28, 21,111, 95,144,151,120, +192,136,193,141,227, 1,224,200,225,187, 3,154, 53,115,187,224,225,204,245,147,137, 37,205, 76, 54,107,238,222, 63,114,102, 86, +197, 76,249,251,251, 31,117,117,117,149,229,229,229,101,100,103,103,255, 50,112,224,192,111, 54,108,216,224,250,244,233, 83,164, +164,164, 96,226,196,137,138,212,212,212, 15, 36, 18,201,101,163,209, 88,110, 36, 75,163,209, 44,155,247,245,228,153,142, 78,174, +124,153, 84, 14,133,163, 19,170, 87, 15, 69,147,166,109,208,185, 75, 95,196,199,199, 52,223,254,251,218,104,126,250,206, 5, 54, +113,195,111,148,202,234,229,214, 75,117,195, 72,187, 98,115, 53,115,230,108,196, 62,122,164, 73, 76,224,125,244,199, 94,129,172, + 71,167,112,137,201, 92,144,120,229,242,153,234,205, 91,180, 7,128,198, 59,182,175, 61, 53,103, 4,233, 52,107,203,235,103,222, + 95,165,185,154, 43, 20,142,234,182,100,137, 87,195,247,223, 23, 21, 36, 36,152,227, 87,174,212,101,158, 59,103, 19, 72, 36, 52, +176,123,119,226,217,161,131,195,251, 15, 31,138, 46, 46, 92,216,118,190, 88, 28,242,133,201,180,133,105,254,255,105, 50,170, 96, +176, 8, 33,144,203,229,216,182,109, 27,132, 66, 33, 4, 2, 1,132, 66, 97,185,239,131,130,130,236,185, 72, 6,250,248,248,252, +180, 98,197, 10,239,110,221,186,193,193,193,161,228, 59, 62,159,143, 46, 93,186,160,115,231,206,194,180,180,180, 97,219,182,109, + 27, 54,127,254,252, 76, 66,200,135,148,210,221,149,232,118, 8, 11, 11,219,125,236,216, 49,169,193, 96,192,185,115,231,144,159, +159, 15,177, 88,140,128,128, 0,116,237,218, 85,240,232,209, 35,183, 46, 93,186,236, 38,132,244,166,148,158,182, 35,173,141,189, +188,188,206,238,216,177,195,161,126,253,250,228,241,227,199,104,216,176, 33, 0, 64,165, 82,161,127,255,254, 14, 35, 70,140,168, + 57,108,216,176, 43,132,144,118,148,210, 27,149,232, 53,242,241,241,217, 56, 96,192, 0,191,249,243,231, 59, 57, 58, 58, 34, 49, + 49, 49,221,199,199, 39,180,248,120, 15, 27, 54, 76,220,167, 79, 31,223, 69,139, 22, 45,219,185,115,231,167,132,144, 81,148,210, +155, 21,233, 22, 27, 97,153, 76,134,204,204, 76,108,221,186, 21, 31,124,240, 1,248,124, 62,178,178,178,176,125,251,118,124,244, +209, 71,197, 70,198, 46, 19, 44,151,203, 59,215,175, 95,255,215, 83,167, 78, 5,184,184,184,192,207,207,143,247,213, 87, 95, 69, +134,132,132, 72,171, 85,171,198, 79, 79, 79,199,238,221,187, 67, 70,142, 28,185,207,193,193,225, 29,131,193, 80,105,211,153,183, +183,247,186, 63,254,248, 35,232,254,253,251, 88,185,114, 37,242,242,242, 32, 22,139,225,226,226, 2, 31, 31, 31,132,134,134,146, +105,211,166,201,250,244,233, 35,251,240,195, 15,215, 1,104, 96,199, 57,170,239,229,229,181,106,216,176, 97, 33,115,230,204,113, +241,241,241, 65,241, 3,129, 74,165, 10, 72, 76, 76,108, 62,115,230,204, 65,222,222,222, 79,179,178,178,198, 81, 74,111, 87,177, + 82,111,208,169, 83,167,222,253,251,247,231,167,167,167, 99,243,230,205,189, 9, 33, 13,236, 53,149,255, 52,110, 92,191,138,177, + 19, 38, 22,248, 5, 6,138, 14,236,255,189, 95, 65,193,234, 11, 10,158,139, 0, 0, 10, 56,165,181, 85,115, 69,235, 62,125,135, +137,122,246,234, 95,176,250,231,101, 10,123, 12,150,152, 47,112,223,182,101,124,202,185,139,113,117,142,158, 72,236,220,191,111, +103,158, 64, 20, 86, 19, 0,166, 76, 30, 35,222,187,255,196,138,110,157,171,165,183,109, 21,154, 50,116,196,202,192,170,152,171, +218,181,107,159,137,142,142,246,150, 72, 36,200,203,203,115, 95,189,122,245, 15,173, 91,183,230,197,199,199,227,209,163, 71, 72, + 72, 72,128, 74,165, 66,151, 46, 93, 20, 55,111,222,252, 5, 64,185, 6, 43, 91, 63,112, 94,136, 87,206,114,127,119,215,234, 6, +179,202,203,102,205,141, 56,117,226,118,189, 93, 59,116, 13,189,124, 2, 66,135, 13, 27,139,207,167,127, 43,220,179,107,227,204, +179,231,142, 1,168, 94,254, 12,254, 20, 45,191,152, 49, 29,106,141, 17, 35,134,143,193,200,225, 99,220, 41, 76,190,212,102,144, +155,244,249, 46,206,162,251, 7, 55,254,190, 99, 0,128,128, 82, 38,235, 36, 51, 89,229, 51, 87, 32,104,214,251,167,159, 60, 35, +223,123, 79,114,123,206, 28,109,206,185,115,250, 90, 61,123,230, 55, 28, 63,222, 8, 0,154,132, 4, 81,236,172, 89, 50,207,182, +109,165, 45,166, 78,117,181,153, 76, 62, 95, 19,210,244, 43, 74,175, 85, 85, 51,104,200, 16,219,204,245,235,155,156,155, 60,185, + 61,177, 88,248,221, 91,180,184,181,112,243,230,103,127, 70,243, 85,166, 51,237,236, 89, 99, 94, 72, 8, 26,246,239,159, 27,228, +229,101,124,149,121,255, 51,233,100,148, 81, 79, 81, 74, 65, 8,105, 7,224, 12,128, 57,148,210,217, 0,224,226,226,146,169, 84, + 42,189,118,239,222, 93,169,185, 18, 10,133,240,245,245, 69,104,104,104, 86,102,102,166,119, 5,149, 98, 10,199,113, 1,148,210, +146,104, 75,121, 24,141, 70,196,197,197,161, 94,189,122,169,148,210,192,138,154,112,100, 50, 89,252,163, 71,143, 60, 30, 60,120, +128, 27, 55,110, 32, 36, 36, 4,174,174,174, 16, 10,133,176, 88, 44, 80,171,213, 8, 11, 11,131, 68, 34, 65,163, 70,141,114,180, + 90,109, 72, 69, 77, 61,132, 16,137, 92, 46,143, 59,123,246,108, 96,195,134, 13,113,237,218, 53, 4, 6, 6,194,199,199, 7, 0, +144,144,144,128, 11, 23, 46,160,103,207,158,136,142,142,198, 27,111,188,145,162,213,106, 67, 41,165,198,242, 52,221,221,221,211, + 79,157, 58,149, 26, 21, 21,101,208,106,181,188,204,204, 76,225,185,115,231,172, 26,141, 70,161, 82,169,132, 74,165, 82,168, 86, +171, 5, 90,173, 86,200,227,241, 68,122,189, 94,120,242,228, 73,190,201,100,114,170,232, 56, 21,159,167,253,251,247, 35, 42, 42, + 10,187,119,239,198,148, 41, 83,112,241,226, 69, 4, 6, 6, 98,199,142, 29,152, 58,117, 42, 98, 98, 98,224,225,225,129,136,136, +136, 10,207, 17, 0,212,170, 85,235,241,221,187,119,107,138, 68,162,226,117, 23,139,215,179, 67,118,118, 54,158, 60,121,130,103, +207,158,161, 86,173, 90, 24, 62,124,248,147,212,212,212, 90,149, 21,180,128,128,128,236,251,247,239,123,212,171, 87, 15,153,153, +153,112,113,113,129,179,179, 51, 92, 92, 92, 74,222,135,132,132, 96,242,228,201,240,241,241,201,210,235,245,222,149,153,159,168, +168,168,163, 39, 79,158,244,112,114,114, 66, 70, 70, 6,212,106, 53, 4, 2, 1,100, 50, 25, 60, 60, 60, 74, 12,124, 92, 92, 28, +122,245,234,149, 19, 31, 31,223,173, 10, 17, 55,158,183,183,247,163, 59,119,238,132, 82, 74,145,156,156,140,152,152, 24, 76,152, + 48, 33,206, 96, 48,132,191, 78,107,234,149,234, 87, 37, 26, 53,122,172,168,127,223,126,186, 91, 55,142,112, 82,156, 69,211, 6, + 82, 37, 0, 92,187,165,119,209,163, 29, 26, 52,238,206,219,187,127,159,108,227,134,213, 66,112,240, 6, 65,204,131, 88,250,117, +121,218,189,187,185,188, 53,117, 98,247, 58,109, 91,181, 21,168,213,212,231,215, 77,107,154, 38, 61,141,247, 6,128,224, 26, 33, +153,239,190, 53,230,154,147, 19,201, 56,119,241,156,117,241,178, 35, 15, 15, 30, 85,110,178,227,220,132,132,134,134, 94,222,191, +127,191,135,151,151, 23,156,157,157,161,213,106, 97, 54,155,241,224,193, 3,195,182,109,219, 44, 78, 78, 78,142, 25, 25, 25, 80, + 42,149, 32,132, 96,255,254,253,201,148,210,224, 23,181,138,251, 96, 1,192,132, 30,117,132, 17, 29, 67, 93, 69, 18,171, 84, 42, +140,245, 5,177, 73, 8, 85,120,159, 58,117,185,222,233,179,231,223,236,217,123,168,103,139, 22, 29,240,237,252,207, 45,201, 25, +153, 13,149,186,190,143,202,234,131, 85, 39,148,116,236,255,198,128,193,115,231,206,198,236,153,115,112,112,255, 94,149, 66,206, + 51, 58,185, 8,157,219, 54,111,101,152,252, 65,191, 20, 93, 65,106,224, 15, 43,214, 12,239,210,109,112, 64,243, 22,237,113,229, +242, 25,236,216,190,246,134,200,102, 97,205,133, 47, 48,135, 16, 87,151,144,144,113, 31,199,197,137,110,207,158, 93, 96, 77, 75, +203,111, 60,105, 82, 78, 89,219,166, 30, 63, 46, 23,251,249, 57,185,246,237,235,182, 44, 56,152, 90,178,178, 86,149,213,135,168, + 44,205, 19, 10,133,203,239,135, 15,119,162, 66, 97,187,207, 62,255, 92,218,187,119,111,168,213,106,236,218,181, 11,171, 86,174, + 52,250,250,250,222,245,187,119, 47, 58, 82,173,254,210, 94,205,198,147, 38,229,216,108, 54, 50,120,234,212, 46,247, 19, 18, 58, +102,100,101, 85, 3, 0, 95, 55,183,148,198, 33, 33, 55,214, 29, 60, 24,243, 99,245,234,156,189,233, 92,115,228,136,247,206,196, +196,247,220,220,220,164,153, 89, 89, 2,137, 88,156,219, 60, 34, 98,199,207, 51,102,156,177,222,185, 35,114, 8, 8,112,114,238, +221,187,202,121,111, 60,105, 82, 78,158, 70, 35,248,248,155,111, 90, 37,101,102, 86, 43, 48, 26,107, 41, 53, 26, 31,155,197,194, +115,146,201,114,107,132,133,101,233,207,157, 75,175,161,211, 77, 92, 67,105,214, 95, 24,169,252, 47, 47,242, 58, 68,176,206, 80, + 74,255,107,180, 12,165,212,174,232,149, 80, 40,124,174, 57,170, 2, 68,132, 16,220,188,121, 19,238,238,238,240,241,241,129, 68, +242,252,226,128,217,217,217,184,120,241, 34, 30, 62,124,136,250,245,235, 3,128,168, 34, 65,137, 68,242,201,162, 69,139, 92, 76, + 38, 19,110,220,184,129,198,141, 27, 67, 34,145, 64, 36, 18, 61,103,254,178,178,178, 80,183,110, 93,124,246,217,103,206,243,231, +207,255, 4, 21,172, 33, 39, 16, 8, 62, 28, 51,102,140, 87,113,196, 42, 37, 37, 5,141, 26, 53, 42,249,222,211,211, 19,183,110, +221, 66,227,198,141, 17, 16, 16,128, 65,131, 6,121,109,222,188,249, 67, 0,139,203,125,146, 23,139,121, 81, 81, 81, 77,138, 34, + 68,224,241,120,177, 78, 78, 78,158,222,222,222,114, 39, 39,167,255,202,227,250,245,235,149, 60, 30,207, 82,217, 1,229,241,120, +200,200,200, 64,100,100, 36, 84, 42, 21, 0, 64,171,213,162, 86,173, 90, 80,171,213, 37,102,213,207,207, 15,122,125,197, 93,187, +234,215,175, 63, 59, 60, 60,188,107,251,246,237, 37, 66,161, 16,183,111,223, 70,195,134, 13,177,109,219, 54, 4, 5, 5, 65, 38, +147, 33, 46, 46, 14, 81, 81, 81, 56,123,246, 44, 60, 61, 61, 81,183,110, 93, 73,163, 70,141,206,231,229,229,157, 78, 76, 76,156, + 93, 65, 58,121, 10,133, 2,103,207,158,197,186,117,235,144,144,144,128,180,180, 52, 56, 58, 58,162, 65,131, 6,136,136,136, 64, +203,150, 45, 17, 23, 23, 7, 82, 73, 97, 34,132,248,132,134,134, 30,188,118,237,154, 7,165, 20,155, 55,111, 70, 65, 65, 1, 76, + 38, 19,120, 60, 30, 28, 28, 28,224,234,234,138,142, 29, 59,194,211,211, 19,161,161,161,216,190,125,187, 71,143, 30, 61, 14, 21, + 69,160, 50, 42, 59,174,174,174,174, 19,103,205,154, 21,232,229,229,133,196,196, 68,168, 84, 42,120,123,123,163,125,251,246,254, + 39, 78,156,152, 8, 96,201,235,114, 3, 43,238,208, 78, 8, 33, 7,246,255,222, 47,200, 87, 92,167,105, 67, 77,240,221,155,130, +154,135, 78, 60,174, 87,120, 60,130,239, 52,109,164,121,114,237,198,145,164, 3,251,127,191,250, 48, 22,251,236,105,194,206, 81, +241,246, 29, 61,145,216,185, 94,221, 54,252,229, 43,102,245, 27,251,110, 55,137,155,107, 27,162,206,218,142,139, 87,239, 6,127, + 53,123,154,215,215,179, 23, 30, 56,122, 34,209,150,163,226,205,179, 39,189,117,235,248,254,120,102,175,151, 71,129,249,103,220, +186,234, 12, 8, 91,160, 70, 72,109,168,213,106, 56, 56, 56, 56, 12, 31, 62,220, 54,125,250,116,157,147,147,147,140, 16,130,211, +167, 79,103, 1,232, 86,153,174,193,203,149,218,204, 22, 43, 21,243, 57, 74, 28,245,196,150, 39,190,247,224, 41,218,181,235,145, +217,164,113,195,249, 11,191, 91,242, 69, 72, 72,152,231,240, 17,227,132,139, 23,127,185, 18, 64,155,178,116, 30,198,209, 83, 17, + 53,137, 20, 64,175,185, 95,207, 70,124,124,156,235,216,183,149,115, 4, 18,169, 95,120,112, 43,199,149,235, 78,119,175, 85,171, +122,181,177,163,223,249, 99,245,250,117,189, 74, 71,178,126,255,109,245, 62, 66, 72, 39,123,142,237,191,136,122, 35, 15, 30, 68, + 65,114,178, 37,239,252,121, 67,167,159,126,202, 9,236,214,109,137,201,108,246, 40,174, 42,120,132,128, 20,119,145,224, 56, 34, +248,236, 51, 30, 21, 8, 96,113,117,125,123, 26, 80,187, 50,205, 41,233,233, 3,223,124,239,189, 94,251,142, 28, 65,245,234,213, + 75,238,103, 46, 46, 46,152, 58,117, 42, 38, 77,154, 36,185,117,235, 86,211,157, 59,119, 54, 93,252,221,119,222,211,128,129,246, +164,243,216,149, 43,174,227,231,206,157, 81,191,113,227,160, 77, 91,183, 74,106,214,172, 9, 0,120,242,228, 73,232,183, 11, 23, + 6, 71, 70, 69,101,206,255,228,147, 13,247,167, 79,175, 11,224,124, 69,154, 25,231,206,153,118, 38, 38,190,119,234,244,105,151, +200,200, 72, 0, 64, 76, 76,140,215,178,101,203,198,212, 29, 52,104,196,220,247,223,255,178,183,193,160,116,202,206,150,244,254, +241, 71,193,239,131, 7, 87,170, 89,156, 78, 0,104,255,206, 59,159,180,233,208, 33, 98,224,123,239,185, 5, 5, 5, 17,133, 66, + 1,179,217,140,180,180, 52,215,251,247,239,215, 60,168,209,168,247, 92,185,178,121, 77,209, 34,238,127, 17,101,122,145,127,186, +193,106, 79, 8,161, 0,218, 83, 74,207, 22,223,184,109, 54,155, 93,230, 74, 32, 16,160,168, 19,176, 93, 63, 74, 41, 69, 78, 78, + 14,114,114,114, 74,154,136,178,178,178,112,234,212, 41,196,197,197, 65, 40, 20, 66, 36, 18,193,108,174,124,109, 88,185, 92,222, +185,115,231,206,130, 43, 87,174, 32, 36, 36, 4, 82,169,180, 36, 93,197, 47,145, 72, 4, 95, 95, 95,168,213,106,116,234,212, 73, +184,124,249,242,206, 21, 25, 44,103,103,231,158, 67,134, 12, 17, 23,255, 95, 80, 80, 0, 62,159, 95, 98, 86, 10, 10, 10,144,151, +151, 7,165, 82, 9,131,193,128, 22, 45, 90,136, 15, 30, 60,216,179, 34,131, 85, 26,157, 78, 87,144,149,149,229,210,166, 77, 27, +215, 13, 27, 54,196,180,104,209, 34,236,185, 18,118,230,140,193, 96, 48, 8,121, 60,158, 93,235,220,109,217,178,165,228,216, 63, +123,246, 12, 43, 87,174, 44,249, 46, 46, 46, 14,203,151, 47, 47,153,151,163,162,115, 20, 30, 30,222, 99,243,230,205,141, 55,109, +218,148,207,231,243, 17, 19, 19,131,173, 91,183,130, 82, 10, 79, 79, 79,232,116, 58,100,102,102,226,244,233,211,176, 90,173, 80, + 40, 20,240,247,247,119,248,240,195, 15, 91,207,153, 51, 71, 8,160, 92,131,101,179,217,108,124, 62, 31,193,193,193,152, 57,115, + 38, 12, 6, 3, 68,162, 66, 95,169, 86,171,161, 84, 42, 17, 29, 29,141,196,196, 68, 84,118,115,113,112,112, 24,180,105,211, 38, + 47,177, 88, 12,189, 94, 15,141, 70,131,148,148, 20, 36, 37, 37, 25,178,178,178,172,142,142,142,188,224,224, 96,158, 68, 34,145, +244,239,223,159, 20, 27,205,222,189,123,187,111,222,188,121,104,101,230,136, 16,226, 89,167, 78,157, 47,198,140, 25,227, 80,186, +204,102,100,100, 96,224,192,129,178, 75,151, 46, 77, 39,132,108,165,148,102,191, 78,119, 49, 74, 41, 45, 40, 88,125,225,220,190, +159,234,220,189, 41,168,105, 50,229,183,232,210,115,162, 0, 0, 46,157, 93,223,226,238,205,123,144, 18,107,210,225, 99,139, 47, + 40, 20, 99,105,101, 17,192,158,157, 92,186, 7,121,137, 7,244,239,219,153,247,235,166, 53, 77,199,190,219, 77,226, 85, 99, 13, + 1, 0, 87, 81, 0, 90,218,166,240, 12, 70,173,195,175,155,214, 52,237,223,183,231,213,132,167, 73, 75,122,117,118,221,115,232, +164,242, 72, 69, 17, 66, 95, 31,161,191,155, 83, 46,220, 28, 27, 34, 56,196, 17,209,183,238, 96,223,238,243, 8, 13,111, 13,163, +209, 8,171,213, 42,239,211,167,143,110,219,182,109,134,216,216, 88,141, 94,175,111, 71, 41,141,173, 44,255,169,169, 15,184, 48, +159,230,102,145, 84, 98,213,168, 68,186,105, 95,238, 28,220,168, 89,215,198,174,190,254, 66, 79, 57,119,160, 67,187, 54, 91,127, +219,178,106,210,148, 79,191, 70,131, 6, 45, 90, 60,124,124, 56, 2,192,221, 50, 77,235, 19,122, 48, 50,148, 88,227, 31, 63,238, +149,148,152,152, 90,219,219,199,244, 68, 73, 45, 19,167,173,233,210,166,221,160,122, 53,235,180, 21,223,127,112,150, 76,254, 96, +204,111, 63,172, 88, 51,188,216,100,157, 59,119,180,221,236,217,137, 98, 0, 70,230,171,138,158,202, 37,146, 0, 69,112,176, 32, + 97,195, 6,125, 72,159, 62,249, 0, 96, 50,155, 61, 18, 18, 19,157,101, 50, 25, 40,165,176, 88, 44,207,245, 17, 46,238, 23, 28, + 25, 22,230,109,143,102,194, 87, 95,213,251,236,179,207,144,145,145, 1,171,213, 10,161, 80,248, 98,157, 13,173, 86,139,183,223, +126, 27, 63,126,247, 93,115,123, 52,109, 54, 27, 25, 63,119,238,140,207,103,204,168, 57,110,220, 56, 94,233,186,215,205,205, 13, + 59,119,237, 18,175, 88,177, 34,224,139, 31,127,124,251, 77,137, 36,190, 50,205,156, 90,181,224,150,153, 41, 45, 54, 87, 0, 16, + 22, 22,134,149, 43, 87, 74,222,125,247, 93,113,159, 62,125,190,191, 85,191,254,178, 37,173, 91, 63,118,175, 93,219, 73, 44,145, + 4,216,123, 60, 1, 64, 99, 48, 68, 46, 89,182,204,245,234,213,171,200,204,204, 68, 70, 70, 70,241,181,140, 38, 77,154,144,145, + 35, 71, 58,215, 8, 12,108,250, 23,159,238,255,242, 34,255,120,131, 85,148, 17, 82,148, 49, 82,234,166,248,156, 81,169,204, 96, +189, 12, 74,165, 18, 74,165, 18,107,215,174,133, 72, 36, 42,185,233, 2,128,201,100,178,199,172, 68,249,249,249, 65,165, 82,161, +118,237,218,207, 69,174, 68, 34, 17, 4, 2, 1, 68, 34, 17, 36, 18, 9,140, 70, 35,130,130,130,160,211,233,162, 42,210,212,235, +245, 13,220,220,220, 74,110,172, 70,163,177,196, 92, 21,167,215,100, 50, 33, 63, 63, 31, 5, 5, 5,208,104, 52,208,106,181, 13, +237,201, 47,199,113,184,119,239,222,147,176,176,176, 6,124, 62, 31, 10,133, 66,174,213,106, 75,250, 14,229,229,229, 97,227,198, +141,218,183,222,122,203, 99,255,254,253,149, 26, 44, 66, 8, 62,250,232, 35, 72, 36, 18,232,116, 58,252,242,203, 47,248,248,227, +143, 33, 18,137,160,209,104,176,114,229, 74, 76,158, 60, 25, 2,129, 0, 38,147, 9,203,150, 45, 43, 63,146,241,224, 65,194,149, + 43, 87, 26, 54,106,212,200,117,207,158, 61,217, 93,186,116,241,236,214,173, 27,164, 82, 41,244,122, 61, 44, 22, 11,154, 55,111, +142,240,240,112,100,101,101,225,240,225,195, 57,161,161,161, 30, 87,175, 94,229, 50, 50, 50,146, 42,187,121,151,138, 16,194,102, +179, 33, 51, 51, 19, 74,165, 18,217,217,217, 72, 75, 75, 67,106,106, 42, 4, 2, 1, 42,123,120,119,119,119,127, 35, 50, 50,146, + 15, 0, 82,169, 20, 13, 26, 52,192,140, 25, 51,172,122,189,126, 8,128,195, 69,155,245, 88,179,102,205,158, 11, 23, 46, 8,252, +252,252,240,232,209, 35,120,122,122, 10, 28, 28, 28, 42, 53, 88, 62, 62, 62,235, 15, 28, 56,224, 86,108,170,139,143,179, 78, 87, +120, 58, 6, 14, 28,232,182,105,211,166,245, 0,122,190,110, 55, 51, 5,207, 69,208,180,129, 84,121,232,196,227,122, 93,122, 78, + 20,248,214,156, 5, 0,104, 9, 8,142, 31, 90, 86,175,103,231, 90, 59,138,251,101, 85, 68,255, 30,158,139,251,244,169,207, 27, + 49,184,113,188, 64, 20, 86,115,203,166,101,222,110,174,109,254, 83, 73,240,221, 32,151, 2,225, 53,109,188,203,191,199,123, 79, +158, 24,102,218,186,225,189,248, 45, 59,110,116, 22,137,110,119, 4, 48,185, 60,237, 59,247,141,251,243, 53,254,117, 92, 69,103, + 8, 28,250,162, 97,131, 80,120,122, 42,241,203,234, 77,240, 15,106, 5,163,209, 8, 39, 39, 39,153,205,102, 51,243,249,252, 45, +246,152, 43, 0, 56,121, 82,201,213,173,171, 52,241, 53,156,245,131,143, 23, 15,232,210,163,111, 68,199,142,157,185, 99,199,143, +153, 91, 53, 52,167,119,236,216, 34,243,244,153,115,113, 25, 25,207, 66,195,195,235, 33, 54,230, 86,119,128,220, 3,202, 46,176, +247,226,232,145,154, 53,201,233,109,219,198,114,122, 46, 90,250,205,188,187, 61,122,245, 26, 21,217,182, 77, 91,238,248,137, 83, + 38, 49,114, 30, 42, 90,183,124, 54,106,216,144, 61,219,118,239,233,122,250,212,193, 90, 42,117,230,193,239, 86, 80,102,174, 74, + 63,156, 89,173,222, 2,137,132,151,125,250,180, 53,234,221,119,141,197,215,163, 76, 38,195,190,125,251, 32, 22,139, 75, 94, 34, +145,168,228,189,183,183,119,241,160, 42,187, 52, 1, 32, 61, 61, 29, 25, 25, 25,112,118,118,134,167,167, 39, 50, 50, 50,112,233, +210, 37,196,198,198, 66, 40, 20,162,123,247,238,224,149,211,119,249, 69,205,193, 83,167,118,169, 19, 21, 21,244,162,185, 2, 0, +179,217,140,188,188, 60,244,235,215,143,119,248,240, 97,159, 35,201,201,125,191, 2,182, 84,164,217,176, 87,175,220,204,157, 59, +203,252,237, 70,141, 26,145,139, 23, 47, 74,186,119,235, 54,105,202,188,121, 43,126,220,180, 41,197,102,181,250, 84, 37,239, 60, + 30,143, 71, 8, 65, 96, 96, 32,242,242,242, 80, 80, 80,216, 82,173, 80, 40,224,234,234, 10,139,197, 2,142, 82,225, 95,252,144, + 87,166, 23,249, 71, 27,172,162,204, 0, 64,251,210, 55, 20,142,227,236, 50, 87, 66,161,176,210, 62, 85,246, 68,181, 94,196, 30, +131, 85,156, 86, 7, 7,135,146, 11,172,180,177, 42, 78, 39,143,199, 3,159,207,135, 61,145,119,142,227,248, 26,141, 6,187,118, +237, 66,187,118,237, 74,154,159, 84, 42, 21,148, 74, 37, 84, 42, 21, 12, 6, 3, 18, 18, 18,112,242,228, 73,212,170, 85, 11,128, +125,147,182,198,199,199,223,168, 94,189,122,227,226,155,119,135, 14, 29, 2, 54,108,216,144,214,179,103, 79, 63, 74, 41,190,252, +242,203,156,230,205,155,123,148,190,185, 87, 6,159,207,199,165, 75,151, 80,171, 86, 45, 80, 74, 33, 18,137, 16, 19, 19, 3, 47, + 47, 47,112, 28, 7,129, 64,128,236,236,108, 56, 58, 86, 60,183,225,189,123,247, 70,191,243,206, 59,105,206,206,206,245,114,115, +115,211, 37, 18, 73,155,115,231,206, 5,154,205,102, 56, 57, 57,193,201,201, 9,135, 14, 29,130,139,139, 11, 62,249,228,147,100, +189, 94,127, 73, 46,151,123,235,245,250, 59, 25, 25, 25, 95, 86,229,124, 91,173, 86,104,181, 90,228,231,231, 35, 47, 47, 15,106, +181, 26, 6,131,161,210, 52,150, 69,155, 54,109,112,240,224, 65,254,130, 5, 11,126,141,143, 47,124, 16, 12, 9, 9,193, 39,159, +124,194,247,247,247, 71, 66, 66, 2,110,220,184, 1,179,217,140,202,194,207, 66,161,176,195,148, 41, 83, 90, 7, 5, 5, 17,179, +217, 12,142,227, 96, 52, 26, 81,252, 62, 57, 57, 25,117,234,212,225, 5, 7, 7,183, 32,132,116,176,103,192, 4,163, 16,117,214, +118,184,138, 2, 0,190, 27, 56,245, 10,104, 95,114, 50,146,172,172,172,121,195,199,241,223, 61,180,181,192, 59,230,177, 35, 2, + 67, 70, 34,160, 70, 63,140,121,199,134,217,223, 28,132,127, 96, 4,146,146,146,208,161, 67, 7, 81, 90, 90,218, 59, 0,166,218, +171,125,252,248, 21,219,177, 67,135, 7, 13, 30, 58,170,113,231,206, 61,173, 71,143, 30,194,189, 59, 71,239,191, 51,244,141, 44, +202, 21, 16, 23, 23, 89,244,227,199, 15, 67, 35, 35, 27,193,108,177,180, 1,102, 47, 2, 80,110,165,242,228, 9, 53,205,153, 51, +135,247,199,222,245, 35,135,143,120,187,126,167, 78, 93, 45, 71,143, 31,192,141,203,199,111,127,191,104,204,217, 5,203,182,119, +232,210,253,141,186, 14, 78, 87, 14, 69,214,213,191, 23,232, 20,244,132,149,148,114,110, 86, 14, 14, 28,138,234, 69, 30, 33,160, +148, 62,103,174, 94, 52, 88, 60, 30,175,210, 7,255,210,154,165,239, 69,197, 15,210,171, 86,173,130, 68, 34,129, 88, 44,134, 80, + 40,172,180,155, 69,105,205,251, 9, 9, 29, 55,110,217, 34, 41,203, 92,229,230,230, 34, 55, 55, 23, 5, 5, 5, 24, 54,108,152, +104,206,245,235,141, 42,211, 12,242,245, 53,202,165,210,204, 7, 15, 30,248, 69, 68, 68, 60,151, 94,181, 90, 13,169, 84,138, 45, + 91,183,138,122,247,234, 53,161,211,161, 67,223, 3, 80, 86, 53,239,132, 16,120,121,121,193,213,213, 21,132, 16, 88,173, 86,100, +100,100,224,254,253,251,184,126,253, 58,248,132, 88,255,202,115, 92,150, 23,121, 29, 34, 88,164,188,104,139,189, 6,139,207,231, +191,116, 20,171, 60,236,105, 34,148,201,100,119,211,210,210, 90,249,251,251,195,106,181,150, 24,172, 23,155, 8,139,163, 29,183, +110,221,130, 76, 38,187, 91,153, 38,165,180, 69,211,166, 77,177,123,247,110,156, 62,125, 26, 79,159, 62,133, 78,167,131,209,104, +132, 94,175,199,253,251,247,193,113, 28, 34, 35, 35, 33,151,203, 43,213, 4, 0,173, 86,155, 46, 20, 10,195,164, 82,233,127,154, + 59,124,125,145,155,155,203, 89, 44, 22,108,220,184, 81,237,227,227, 35,151, 74,165,118, 27, 86, 66, 8,178,178,178, 16, 16, 16, + 80,210, 7, 75,163,209,192,203,203,171,216, 80,192,104, 52,194,209,209,177,210, 38, 66, 74,169, 1,192,148, 82,218, 77, 6, 15, + 30,252,219,182,109,219,106,156, 56,113, 2, 87,175, 94,133,167,167, 39,230,207,159,255, 52, 49, 49,113, 56,165,244,250, 95,112, +129, 85,186, 77,110,110,238,174,187,119,239,182,104,218,180,105, 73,237,208,161, 67, 7,210,161, 67, 7,143,210, 33,253,236,236, +108, 92,187,118, 13, 39, 78,156, 0, 33, 4,113,113,113, 54,189, 94,255, 91, 5,191, 45, 10, 14, 14,222, 48, 99,198, 12,133,213, +106, 45, 41,219, 82,169, 20, 14, 14, 14, 16,137, 68,224,243,249, 72, 76, 76, 68,191,126,253,156,127,250,233,167,245,132,144,154, +148, 82, 51, 94, 19, 10, 56,165,245,218, 45,189,139,171,107,240,157, 75,103,215,183,104, 89, 84, 71, 92, 58,187,222,234,234, 26, +124,231,218, 45,189, 75,219, 64,165, 85, 81,137,206,222,195,217, 83,205,230,235,221,143, 28,190, 59, 96,202,228, 49,226,224, 26, + 33,153, 23,175,222, 13,110,105,155,194,147, 75, 1,173, 30,200, 83, 2,143,158,240,185,224, 26, 33,153,215,111,198,136,191,255, + 97,109,136, 78,111,218,115,232,164,242, 72, 37, 15, 99, 6, 66, 72,255,143,190, 16,158, 29, 53,218, 75, 44,118, 8,132, 38,255, + 38,170, 5,187, 99,200, 27, 97, 88,177,250, 38,156,156,220,224,237,237, 13, 30,143, 39,183, 55,239, 57, 57, 57,100,215,239,231, +223,125,235,237, 49,205,187,117,237,101, 61,114,244, 15,193,233, 99,251, 47,173, 95,253,197, 30,202,215,202, 8,213, 72, 3,131, + 2,238, 36, 60,141, 29,222,182,109, 87, 72,197,178, 90, 64,120,153, 5,182,100,224, 0, 69, 50,143, 7,135,183,222, 30,219,178, + 91,183,190,214,163, 71,247,226,232,161, 77, 87,102,205,170,118,232,233,179,173,162,203,215, 83, 29,250, 15,122, 63,255,224,225, +135,166, 55,250, 84,143,245,147, 55,208,131,241,252, 3,164, 64,144,105, 53, 26, 3, 3,186,117,227,235,146,146,132, 10,111,111, + 43, 0, 88, 44,150, 74, 13, 22, 0,206, 30, 77,123,211,162,211,233,192, 1, 86,123, 52, 51,178,178,170, 21, 61,124,151, 96,177, + 88, 74,204, 85,110,110, 46,148, 74, 37,228,114, 57,178,141, 70,111,123, 52,187, 54,107,182,113,206,236,217, 83,119,238,218, 37, + 42,109,174,138, 95, 66,161, 16,223, 46, 90, 36,250,248,211, 79,223,159, 32, 16, 76,172,202,241, 44,126, 88,231,243,249, 16, 8, + 4, 72, 74, 74, 66,114,114, 50,146,146,146,144,148,148, 4,169, 84, 10, 90,206,241,124,133, 17, 44,242, 58,149,221, 10,167,105, +168, 74, 39,119,123, 13,129,205,102,123,165, 6, 75,171,213,158, 56,121,242,100,179,254,253,251, 11,174, 92,185, 2, 31, 31,159, + 18,131, 85,252,183,184,217, 73, 38,147, 97,207,158, 61,102,173, 86,123,162,146,139,232,228,161, 67,135, 26,207,156, 57, 83, 56, +122,244,104, 60,120,240, 0,227,198,141,131, 82,169,132, 90,173, 70,110,110, 46,116, 58, 29,154, 53,107, 6, 7, 7, 7,220,185, +115,199,162,211,233, 78, 86, 82,112,104, 86, 86, 86,129,167,167,167,239,139,223, 13, 26, 52,200,251,231,159,127,214, 61,122,244, +200,210,170, 85, 43, 39,123,141, 70, 49,191,255,254,123, 73,100, 46, 54, 54, 22, 63,255,252,115, 73,159,171,155, 55,111, 98,241, +226,197, 37,115,151, 85,177,176, 95,175, 91,183,174,213, 98,177,160, 86,173, 90,240,247,247,135,193, 96,192,210,165, 75,173,127, +133,185,178, 23,131,193,176,115,212,168, 81,159, 71, 71, 71,251, 10, 4,130,194,208,117, 81,254,204,102, 51, 30, 63,126,140,251, +247,239,227,209,163, 71,200,203,203, 43,121, 0,184,117,235, 86,190,197, 98,217, 94,158,174,167,167,231,151,235,214,173,243,145, +201,100,207,149,231,226,232,103,113, 84, 52, 59, 59, 27, 46, 46, 46,232,212,169,147,215,201,147, 39,191, 4, 48,243,117,168, 12, + 8, 33,164, 85,115, 69,235,143,222,127, 27, 77, 27,105,158,220,189,121, 15,199, 15, 45,171, 7, 20,118,114,143,106, 20,249,228, + 90,180, 35,122,116,157,218,250,226,149,113, 21,118,114, 47,234, 67,117,168, 89, 51,183, 11,123,247,159, 88, 49,109,242,152,107, + 95,205,158,230,101, 48,106, 29,194,107,218,120, 64,161,185,186, 28, 45, 55,124, 61,123,204,181,133, 63,108,228,146,179,204,147, +174, 94,205, 47,119,116,111,105,211, 82,183, 54, 28,124,130,123,165, 5,215,232, 80,253,206,205,181,240,112,206,135, 99,173, 86, +232,209,173, 25, 78,156,188,139,164,103, 6,164,167,167,195,104, 52, 86, 56,237,193,163, 59,123, 70, 82, 66,131, 8, 37,201,132, + 71, 29, 70,142,122,175, 77,175, 94,125,233,193,131,251,173,123,247,108,185,176,125,243,242,157, 60,145, 80,160, 55, 57,155, 8, + 49,168, 56,158,227, 3,173, 54,183,176,242, 20,137,202, 15,183, 22, 77,200, 26, 81, 55,220,103,228,168,113,206, 61,123,244,163, +135, 14,237,229,182,111,219,120,122,251,218,168, 45, 28, 79, 45, 74, 79,209, 73, 84,106,139,138, 18,177, 75,129,154,211,101,198, +215, 52,248,245, 26,100, 6,227,249,251,128,209,152, 90,144,146,226,235,214,174,157,228,241,236,217, 50,239,102,205, 12,164,168, +143,112, 69, 6,139,207,231, 3, 60, 30,103,143,166,189,105,209,235,245,224, 0,203,203,104, 90,173,214,231,204, 85,177,193, 42, +142,103,216,163,185,122,214,172, 43, 65,221,186,229,157, 57,115,198,187,125,251,246, 68,163,209, 64,163,209, 60,103,178,252,252, +252, 72, 68,100,164,236,247,211,167, 67,102,218,121, 60,237,201, 59,143,199,251,203, 13,214,107, 23,117,173,232,203,226, 8,150, + 61, 6,203,206, 8,150,197, 98,177,192,203,203, 11, 57, 57, 57,229,222,240,121, 60, 30,164, 82,105,113, 27,112,133, 35,233,140, + 70,227,210,169, 83,167,126,216,163, 71, 15,143,176,176, 48,100,103,103,195,219,219, 27, 14, 14, 14, 37,125,195,138,245,110,222, +188,137,117,235,214,169,141, 70,227,210, 74, 52,151, 44, 90,180,232,131,129, 3, 7,186,249,248,248,192,213,213, 21,119,238,220, +129,171,171, 43,212,106, 53, 98, 98, 98,224,232,232, 88,210, 47,103,255,254,253, 26,163,209,184,164, 18,211, 70,207,157, 59,103, +118,116,116,188,147,157,157,205,207,203,203, 19,228,231,231, 11,212,106,181, 80,165, 82, 9,143, 28, 57,226,225,236,236,172, 59, +117,234, 84,118, 80, 80, 16,255,233,211,167,124,139,197,194,179,227,166,136,137, 19, 39, 66, 36, 18,193,104, 52, 98,233,210,165, +152, 58,117,106, 73,159,171, 69,139, 22, 97,198,140, 25, 37,134,121,205,154, 53, 85, 53, 89, 48,155,205,176, 88, 44,176, 88, 44, +118,153,222, 63,131, 61, 70,157, 82,154, 65, 8,233,221,180,105,211, 99, 59,118,236,112, 47,154, 83, 12,153,153,153,200,204,204, + 68,118,118, 54, 10, 10, 10, 96,181, 90,225,239,239,143,204,204, 76,236,221,187, 87,165,209,104,186, 85, 52,130,144,207,231,143, +106,211,166,141,224,197, 52, 20, 63,213, 21,155,118,137, 68,130,180,180, 52,116,232,208, 65,124,230,204,153, 81,255,116,131, 85, +108, 92,234,132, 66,212,167,239, 48, 81,131,198,221,117,215,110, 28, 73,146, 18,107, 82,207,206,181,118, 0,133,211, 52, 92,139, +118, 68,131,198,221,121,125,210, 77,205,148,249,171, 27, 68,212, 38,230,138,150,213, 1, 0, 15,103,174, 95,183,206,213,210,157, +156,136,224,235,217, 11, 15,252,186,105, 77,211,203,191,255,103,154,134,175,103, 23, 78,211,208,173,115, 53,235,131, 71,177,253, + 0,108,178,215,180,244,238,221, 39,122,245,218,205, 72,141,223,239,183, 98,161,139, 24,134,124, 64, 24,134, 54,205,157,112,245, +199,100,220,190,125, 59,195,100, 50,117,168,176, 44, 17, 26,116,255,193,189,218, 81,117, 35,124, 70,142, 26,235,212,187,119, 63, + 28, 60,184, 15,155, 55,174, 61,247,198,176,129,191, 62,203, 87,243,189,132, 50,145,140,114, 98,190,200, 89,224, 32,147,101,153, +211,210, 10, 43, 79,129,208, 9, 24,204, 85,208, 66,136,241, 99, 71, 56,119,236,220, 15,127, 28,218,135,205, 27, 87,159,253,170, +238,160,181,213, 27,214, 33,205, 26,125,247,126,245, 26,213,131,181, 5,153,106, 30, 17,155, 13, 6,206,241,187,141,137, 63,196, +207, 24, 21, 31,125,111,240,247,108, 20,225,115,220,217,220,179,103,211,143,159, 60, 17,121,182,110, 45, 77, 59,125, 90, 86,180, +114, 72,133, 6, 75, 32, 16,128,150,223,164,245,156, 38,217,180,137, 7,160,194,193, 85, 34,145, 8, 58,157, 14, 22,192,108,143, +166,239,209,163, 41, 79,158, 60, 9,117,115,115,123,206, 92,229,229,229,149,188, 55, 24, 12,208,233,116,144, 74,165,247,237,209, +204, 60,119,206,176,112,226,196,153,195,135, 13, 91,126,226,228, 73, 7,119,119,119,168, 84,170,231, 12,150,201,100, 66,199, 78, +157, 68,139,162,163, 71, 2,152,101,207,241,244,238,208,161,210,254,190,124, 62, 31,220, 95,220, 68,248,186,193,171,172,169,198, +222, 81,132,101,221, 24, 9, 33,157, 95,248,104, 70,227,198,141, 13,177,177,177, 8, 10, 10, 42, 49, 41,165,127,211,201,201, 9, + 46, 46, 46,184,121,243, 38,230,205,155,167, 7, 48,163, 34, 77, 74,169, 70,167,211, 13,237,210,165,139, 94, 32, 16, 32, 60, 60, +188,100,254, 43,142,227, 32, 22,139, 33,151,203, 17, 29, 29,141, 62,125,250,232,116, 58,221,208, 23,231,192, 42, 67, 83,165,211, +233,222,236,218,181,171,238,193,131, 7,104,211,166, 13,110,223,190,141,130,130, 2, 20, 20, 20, 32, 33, 33, 1, 17, 17, 17,208, +233,116,248,249,231,159,245, 58,157,238, 77, 74,169,170, 34, 77,141, 70,211,103,234,212,169,252,223,126,251,173,186,191,191,127, +221, 38, 77,154,132,117,234,212,169,230,128, 1, 3,130,123,246,236,233, 27, 26, 26,106,232,214,173,155,103,143, 30, 61, 60,117, + 58,157,240,226,197,139,233, 22,139,165, 71, 37,199,179,196,148,196,198,198,150, 52, 9, 10, 4, 2,228,228,228,148,204,180, 95, + 92, 25,149,101,128,203,211, 44,109,178,139,141, 85,177,209,170,172,238, 47, 71,179,210, 27,134, 88, 44, 46,142,112,210,202, 52, + 41,165,183, 30, 62,124,216,165, 93,187,118,183,222,125,247, 93, 77, 70, 70, 6, 28, 29, 29, 17, 18, 18,130,218,181,107,195,195, +195, 3,102,179, 25,123,246,236,209,238,221,187,247,174, 74,165,234,240,226, 28, 88, 47,106,242,120,188,132,178, 42,215,226,232, + 85,177,193,114,112,112,128,191,191,127,241,177, 77,168,202,241,124,201,200,210, 95,171, 89,100, 92, 58,117,236, 86,163,103,175, +254,206,123,247,239,147,253,248,203,134,135,109,251,125,184,210, 35,120,202,110,143,224, 41,187,219,246,251,112,229,143,191,108, +120,184,119,255, 62, 89,207, 94,253,157, 59,117,236, 86,227,193,253, 71, 97,207,173, 75, 88, 70, 58,101, 98, 73,179,182,173, 66, +149,231, 46,158,179, 46,252, 97,163,173, 85,203,158, 87,151, 47, 95,185,125,249,242,149,219, 91,181,236,121,117,225, 15, 27,109, +231, 46,158,179,182,109, 21,170,148,137, 37,205,236,201,251,248,177, 35,156,123,245,236,135,131, 7,247, 88,119,254,254,243,162, + 53,155,211,218,117, 24,144,154,153, 16,127,157, 66,183, 1, 30,142,119,240,240,225, 67,149,201,100,234, 80, 86, 7,247,178, 52, +199,141, 25, 81,218, 92,157,119,247,105,179,230,225, 67,216,142, 31, 63, 96, 57,121, 50, 90,127,254, 86,150,234,198,131,156,188, + 92,181,225,169, 86,163, 54,113, 28, 7,202,217,248,115,230, 20,118,196, 45,239, 28,181,106,213, 30,167, 78,108,197,198, 13,171, + 84, 28, 7,195,160, 29, 59,108,131, 7,207,166,193,213,170, 5,111,249,125, 43,233,221,183,191, 51, 5,184, 62, 3,251,185,252, +182,237, 55, 82,163, 86,141,106, 33, 33,133, 83,211,252, 35,203,210, 95,160, 57,139,210,124,117, 82,210,217,155, 63,253,100,244, + 30, 58,212, 77,236,237,237, 4,155,141, 20,215,239,229,189, 4, 2,193,115, 17,151,138, 52,253, 61, 60,158,237,223,191, 31,181, +107,215,134,191,191, 63, 74,247,129, 45,158, 72,219,221,221, 29,187,118,237, 2, 5,110,216,163,217,176,122,245,155,223, 46, 92, +104,226, 56, 14,249,249,249,255, 21,189,202,207,207, 7,199,113, 56,244,199, 31, 38,117, 65,193, 70,123,243,222,129,207, 47, 24, +222,182,237,130, 94,189,122,153,159, 60,121, 2,142,227, 80, 58,146,149,149,149, 5,133, 66, 1,131,209, 24, 72, 8,145,217,163, +153,117,228,136, 28,149,212,235, 47, 70,176,254,138,243,254,175,138, 96, 89,173, 86, 4, 6, 6, 62,183,244, 10,143,199,123,238, + 85,149, 17,132,148,210, 77,132,144,163,221,186,117,155,217,188,121,243,241, 51,103,206,228,135,133,133, 65,165, 82,193,213,213, + 21, 94, 94, 94,136,137,137,193,254,253,251,109, 57, 57, 57, 43, 1,204,181,103, 40, 60,165,244, 52, 33,164,119,189,122,245,182, + 77,155, 54,205,185,107,215,174,194,192,192, 64, 80, 74, 17, 29, 29,141,221,187,119,155,215,174, 93,171, 46, 50, 87,167,237, 76, +235, 49, 66,200, 27, 61,122,244,216, 50,106,212, 40, 71,155,205, 38, 76, 72, 72,128,209,104,132,197, 98, 65,114,114,178,249,224, +193,131, 5, 58,157,110, 4,165,244,152, 29,122, 55, 9, 33, 17,199,143, 31, 31,117,241,226,197,121,239,190,251,174,123,167, 78, +157, 68, 86,171, 21, 23, 46, 92,200,110,216,176,161, 87, 86, 86,150,121,215,174, 93,185, 6,131, 97,134,205,102,179,107,169, 28, + 66, 8,212,106, 53, 60, 60, 60, 96, 52, 26,193,113, 28, 76, 38, 19, 20, 10, 69,201,242, 70,148, 82, 84,165,211,252, 11,101,128, +111, 54,155, 49,108,216, 48,112, 28,135,165, 75,151,194,106,181, 86, 89,204,217,217,249,198,173, 91,183,122, 55,104,208,160,196, +180, 20,151, 33,137, 68, 2, 15, 15, 15,184,187,187,227,224,193,131, 16, 10,133, 55,236, 60, 71,183, 1, 52, 36,132,180,188,123, +247,238, 91, 0, 26,152,205,102,127,155,205, 70,120, 60, 94, 58,165,244,142, 90,173,254,213,222,165,114,178,178,178,230,189,253, +246,219, 13,183,110,221,170, 16, 8,254,115,105, 8, 4, 2, 72, 36, 18, 20, 79,106, 73, 41,133,201,100,194,151, 95,126,169,214, +106,181,243, 94,151,202,160,113,147,102, 88,253,243, 50,197,201, 83, 71,179, 31,198, 97, 95,233,169, 24, 20, 0, 46, 94, 25,183, + 79,153,191,186, 65, 90, 74,138,162,113,147,102,118,105,154,108,214,220,161, 35, 86, 6, 22, 45,149, 51, 47,225,105,210,146,173, + 27,222,139, 7,128,239,127, 88, 27,146,156,101,158,244,224, 81,108,191, 95, 86,158,105,102,178, 89,115,237,209,252,143,105,217, +162, 2,133,129, 82,122,149, 16, 82, 61,172,165, 97, 70,100,184,168,111, 90,166,229, 89, 65,129,233, 35, 74,105,188,189,121,111, +221,170, 29, 78, 29,251, 13,155, 55,110, 81, 83,142,111,240,240,240,160, 0,240,240,161, 7,125,248, 80, 73,255,211, 95,216, 69, +235, 41,203,158, 59, 99,250,248,201, 26,141,102,201,138,239, 42,158,112,182, 94,253,230,168, 87,191, 57, 62,252,232, 11,231,136, +186,225, 65, 0,176, 99, 7,181, 69,134,146, 3, 51,191,154,221,119,238,220,217, 80,107,140,152, 59,183,112, 89,157,152,123, 15, +254,120,242,132,154,216,173,233,121,102, 90,173, 87, 49,121,114,168, 46, 47,207,179,245,231,159,123, 8, 62,253,148, 87, 81, 39, +247,210,215,175, 61,154,215,239,220,249, 99,220,123,239, 61,155, 53,115,102,183,149,171, 86, 73,163,162,162,144,145,145,129,240, +240,112,248,251,251,227,248,241,227,216,181,125,187, 86,169,209,204, 0,240,139, 61,154,155, 14, 29,138, 9,171, 91, 55,103,213, +170, 85,126,189,122,245, 34, 90,173, 22, 42,149, 10, 42,149, 10, 70,163, 17, 69, 19, 57,211,216,184,184,135, 22,139,101,165,189, +121,183,101,103, 59,204,109,214, 44, 85,196,113,223,190, 49,112,224,212,185, 95,127, 45,169, 81,163, 6, 49, 26,141, 37, 81, 44, +179,217, 12,133, 66, 97, 54,153, 76,238, 0,116,246,104, 74,214,174,181,102,103,103,195,211,211,179,100,218,165,210,243, 10,106, + 52, 26, 80,202, 38,193,173,210,131, 66,121,247,112, 55, 55,183, 27, 2,129, 32,160,116, 52,171,172,181,237, 74,127,102,177, 88, + 82,179,179,179, 27,151,118,184,148,210, 19,229, 24,131, 16, 0,243, 59,118,236,248,198,148, 41, 83,200,153, 51,103,176,119,239, + 94, 26, 31, 31,191, 19,192,140,242, 42,199, 74, 52, 29, 37, 18,201, 39,114,185,188,115,241, 84, 12, 50,153,236,174, 86,171, 61, + 97, 52, 26,151,150, 55,123,123, 37,154, 78, 18,137,100,162, 92, 46,239,162,209,104, 26, 0,128,163,163,227, 45,173, 86,123,220, +104, 52, 46, 43,111, 1,233, 74, 52,165,206,206,206,243, 60, 60, 60,222,252,244,211, 79,221,207,157, 59,151,126,234,212, 41,145, + 82,169,220,106, 50,153,202, 93,236,185, 44, 77,119,119,247, 27,124, 62, 63,224,175, 56, 71, 0, 80,191,126,253,131,125,250,244, +233, 53, 98,196, 8, 88, 44, 22,252,242,203, 47, 56,126,252,248, 31,113,113,113,189, 43,122,250,124, 81,147, 16,226, 17, 16, 16, +112,102,252,248,241,193,195,134, 13,147,185,186,186, 66, 32, 16, 64,171,213,226,241,227,199,136,142,142,166,251,246,237, 43,184, +121,243,102,170, 78,167,107, 79, 41,205,177,247,120,254,153,167,228, 23, 53,133, 66, 97,187,192,192,192,223,103,205,154,229,216, +165, 75, 23,169,187,187, 59,248,124, 62, 44, 22, 11,210,211,211,113,239,222, 61, 28, 61,122, 84,187,115,231, 78,109,110,110,238, +176, 23,231,106,249,255, 74,231,171,212,140,168, 77,190,122, 97, 1,231,114,103,103,175,104, 91,123,210,217,171,179,107,207, 55, +222,104,210, 25, 0,118,237,186,126,226,143, 19,249,135, 94, 54,157,149,165,213, 30,205, 58,161,252, 89,247, 31,220,123,110, 34, +202,186, 17,145,177,117,162, 6,126, 99,143, 86,241, 76,238, 47,230,189,212,236,248,165, 99,184,207, 53,167, 22, 47, 8,253,197, +140,233,152, 63,111, 1,246,237,216,243,199,131, 39,244,224, 63,185, 44,253,149,154,197,139, 19,203,124,125,219, 46,229,184,233, +183,239,221, 83,148,126, 80, 43,142, 52,151,126,152,244,243,243,203, 74, 75, 75,243,182, 71,179,247,143, 63,154,117,114,185,100, +250,183,223,182, 43, 48, 24,218,205,157, 59, 87,112,253,250,117,252,252,211, 79, 86, 67,106,234,150,108, 96, 98, 89,173, 31, 21, +105, 6, 79,156,232,240,217,207, 63,143, 14,169, 85,203,235,173,183,222, 18, 10,133, 66,104,181, 90,164,164,164,224,216,209,163, +166, 7, 15, 31, 62, 80,171,213,125, 41,165,105,246,106,246,254,241, 71,179, 75, 72, 8,100,158,158,244,228,233,211,206,227, 62, +249,100,124,181,234,213,157,187,117,239, 46,116,114,114, 66,126,126, 62, 18, 18, 18,176,103,207,158,172,130,130, 2, 63, 74,169, +205, 30,205, 45, 23, 47,214, 59,116,246,236,160,111,190,249, 70, 28, 25, 25, 9,103,103,103,104, 52, 26,220,187,119, 15,103,207, +158, 53,174, 92,185, 82,165, 82,169,198, 91,173,214,253,127,213,121,255,215, 24,172,255,175, 11,143, 16,210, 24,192, 87, 69,255, +126,109,199,154,126,175, 77,165, 67, 8, 9,114,115,115, 91,109, 48, 24,168, 94,175, 31, 71, 41, 77,254, 95, 75, 39, 33, 68,208, +184,113,227,159,179,178,178, 90, 82, 74,225,236,236,124,233,254,253,251, 19, 40,165,214,170,106, 18, 66,248, 0, 90, 42, 20,138, +102,142,142,142,237,140, 70, 99,157,162,102,182,135, 90,173,246,172,217,108,190, 10,224, 18,165,212,246,119,230,189, 40,157, 93, +252,252,252,222,227, 56,174, 22, 33,196,197,102,179,193, 98,177, 40, 57,142,123,172, 82,169,214, 2, 56,254,119,167,243, 85,105, +214,173, 69, 6, 80, 30,234,148,103, 4,158, 51, 52, 47, 24, 7,194,225,225,253,199,116, 79, 21,202, 60,175,127, 15,207,197, 64, +225, 72,195,202,150, 28,122,206, 96,217, 97, 90,170,108, 46,107, 9,222,166,132, 6, 61, 95, 41,146,228,240,122, 3, 54,255, 25, +131,101, 47,117,195, 72, 59, 80,180,228, 40,174, 62,140,163,167, 94,215,186,238, 85,106, 46, 32,196,237, 39, 87,215, 75, 60,129, +192, 7, 0,175, 40,218,194,113,132,216, 40, 33,214,210,205, 88,165, 31, 40, 43,211, 52, 3, 81, 66,137, 36,208,102,181,122,103, + 0,138, 67, 54, 91, 35, 3,165, 5, 1,192, 87,209,148,198,188, 76, 58,205, 64, 20, 95, 34, 9, 58, 68,105,191,108,185,188, 94, +150, 94,239, 9,128, 42,228,242,135,106,173,118,163,193, 96, 88, 81,198,162,234,149,106,138, 36,146, 0,155,213,234, 13, 0, 60, +129, 32,107,155,209, 24,152,234,228,244,150,193,104, 12, 86, 40, 20, 22,147,201,164, 54, 24, 12, 35, 44, 22,203,201,170,228,253, +177,213, 26,113,145,199,107, 99,150,203,221,205,132,200, 77, 86,171,217,100, 54,167, 24, 12,134,187, 0,126,160,148, 62,249, 43, +207,251,107, 71,241,104,179,191,226, 5,160, 51,211,100,154, 76,147,105, 50, 77,166,201, 52,255,122, 77, 0, 50, 0, 65, 0,248, +255,196,188,191,110, 47, 1,179,152, 12, 6,131,193, 96,188, 22, 1, 19, 29,202,232,115,197,248,155,154, 8, 1,116, 46,231, 68, +217, 29,250,123,153,209, 4,118, 52, 37, 48, 77,166,201, 52,153, 38,211,100,154, 76,243, 53,211,172, 76,251,181,105,122,100, 77, +132, 76,147,105, 50, 77,166,201, 52,153, 38,211,100, 77,132,175,246,197, 3,163, 60,103,237, 77, 8,241,126,213,219, 50, 94,239, +178, 80,198,190,254,132, 16,255, 42,110,239,203,142, 58,131,193, 96,252,179,249,127, 55, 88,246,222,172,254,228, 77,237, 79, 25, + 30, 66,200, 2, 66,144, 86,248, 34, 11, 94,213,182,118,252,174,159,167,167,231,199,117,235,214,221,226,227,227,243, 33, 33,196, +171,138,251,135,202,229,242,101, 10,133,226,140, 66,161, 56, 35,151,203,151, 17, 66, 66, 95,209,121, 35,132,144,113, 14, 14, 14, +167,253,252,252,158, 73, 36,146,211,132,144,241,228, 37, 23,160, 36,132,212, 36,132, 76, 38,132, 76, 33,132,132, 85,101, 95,239, +200,254,219,189, 34,251,223,241,138,236,127,207, 35,170,111,168, 87,100,255,123, 94,145,253,239,120, 71,246,223,254, 23,148,215, +151, 62,191, 69,251, 38, 23,190, 42,223,151, 16,242, 3, 1, 82, 8, 65,234,159, 45, 75, 12, 6,131,193,248,123,169, 82, 39,247, +128,128,128, 30, 28,199, 13, 7, 0, 30,143,247, 91,106,106,234,225,151,184,225,124, 86,244,126, 17,165,116,250,159,217,206,142, +125,151, 80, 74,167, 86,221,156,225, 51,142,163,188,194,124,146,207,189,189,189,101,124, 62,255,191, 58, 14,218,108, 54, 25, 33, +248,144,227, 10, 23,168,228,241,200,103,132,144,101,148,210,204,151, 49,133, 35, 71,142, 92,178,108,217, 50, 7,153, 76,134,164, +164,164,174,227,199,143,111, 69, 8,153, 76, 41, 77,175,108,127,169, 84, 58,188,105,179,150,147,191,253,238,123,133,183,151,151, +220,106,227,204, 9,137,137,242, 47,167, 79,109, 38,149, 74,151, 85,180,200,241,139, 70, 10,192, 88,129, 64, 48,196,193,193,161, +166,193, 96,120, 98,181, 90,119,242,249,252,110,243,230,205,139,236,217,179,167,131, 90,173, 22, 91,173,214, 90,155, 55,111,158, +188,110,221,186, 30,132,144,126, 21, 13,183, 47,142,224, 80, 74,159,149,250,184, 71,114,114,114,148, 80, 40, 68,205,154, 53, 9, +128,152, 74,182, 47,129, 2,161,247, 47,236,136, 2,128,186,173, 7,199,222,191,176, 3, 69,239,255,130,135,129,231,203,130, 84, + 42,253, 69,175,215,167, 20,127, 95,148,206, 76,123,246, 37,132, 44, 47, 90,230, 39, 18,192,192,162, 77,119, 83, 74,239, 17, 66, +124, 28, 36,146, 79,244, 6, 3, 1, 64,254, 76, 89, 98, 48, 24, 12,198, 63,204, 96, 81, 74,223,122,252,248,177,140,227, 56,132, +133,133,141, 4, 96,183,193, 42,235,134,211,169, 83,167,134, 82,169,244,185, 89,139,245,122,189,152, 16,116,122, 25,211, 82,252, + 27, 38,147,145, 39, 20,138,193,227,145,201,245,234,213,171,150,147,147,115,142,199,227,109, 73, 77, 77,205,127,137,155, 44,214, +172, 89, 83,219,215,215,247,191,102, 87, 78, 79, 79, 23,247,235,215,183, 74,122,163, 9,145, 24, 37,146,102, 34, 66,124,109, 86, +171, 11, 0, 8, 4,130,252, 48,103,231,198,243,191,249, 70, 70, 8,225,114,115,115,161,215,235, 49,105,210, 36,233,131, 7, 15, +250, 3, 88, 81, 73, 26,107, 55,111,209,106,210,209,163, 71,234,168,243,242, 13,107,150,172,142,214, 11,132,218, 26, 17,117,196, + 63,175,222,232, 50,118,244,136,143, 8, 33,183,202, 90, 54,228, 5, 29, 30,128, 61,159,124,242, 73,221,222,189,123,139, 53, 26, +141,131, 94,175,175,182,101,203,150, 47, 27, 55,110,172,104,208,160,129,248,247,223,127, 39, 42,149, 10,148, 82, 89,120,120, 56, + 29, 50,100,136, 97,219,182,109, 31, 2, 88,110,143,225,245,245,245,157, 89,100,208, 75,151, 61,161,159,159,159,180,232,152,206, + 37, 4,147, 42, 50,215, 4,136,171,219,122, 48, 64, 80,235,254,133, 29, 14,117,219, 12, 54,128,226, 49, 1,226, 0,192,223,223, +127, 46, 80,106, 94,167,231,121,248,236,217,179,151, 90, 59,176,119,239, 62,160,148,254,226,239,239,127, 48, 51, 51, 51,146, 16, +140,179,247, 33,128, 16, 2,119,119,247, 55, 0,252, 8, 96,232,163, 71,143,234, 2, 64,120,120,184, 16,192, 61, 23, 23,151, 70, +198, 66,115,197, 96, 48, 24,140,127,161,193, 18, 1,192,185,115,231, 64, 41, 21,191, 76, 80,160,244, 13,103,226,196,137,240,245, +245,125,209,180,224,204,153,211,127, 38, 79,207,253,198,215, 95,127,173, 80, 42,149,157,127,253,245,215,182,254,254,254,139,159, + 61,123,118,165,146, 60,102, 18, 66, 22, 21, 69, 28, 32,145, 56,196,142, 31, 63, 62,186,232,235,106, 7, 14, 28,144,245,233,211, + 71, 7, 32, 17, 0, 36, 18, 7,127, 62,159, 87,187,176, 83, 27, 22, 85,100, 4, 7, 19, 18, 34, 22,139, 59,142,251,241, 71,107, +163, 62,125, 4,114, 79, 79, 2, 0,137,143, 30,185, 47,250,238,187, 86,249,241,241, 98,189,187,123,110,174, 86,171,143,141,141, +133, 68, 34, 33,124, 62,191, 81,101, 25,150,203,229, 31,127, 51,127,145, 92,157,167,212, 27,213, 5, 38,190,205, 98,116,148, 74, +109, 25, 25,153, 57, 10,153, 76, 55,253,171, 57,162,247,199,188,245, 49,128, 9,149, 72,125, 56,121,242,228, 58, 77,155, 54,245, +223,190,125, 59, 81,169, 84, 16, 8, 4,138, 6, 13, 26,160,113,227,198,182, 83,167, 78,145,234,213,171, 35, 50, 50, 18, 23, 46, + 92,192,165, 75,151, 72,195,134, 13,101,187,119,239, 30, 89,150,193, 42,195, 84, 79,110,209,162, 69,160, 66,161, 48,168,213,106, +188,251,238,187, 0,128, 46, 93,186,212,150,203,229,191, 20, 20, 20, 56,236,223,191,239,141,202,204,117,230,189,189, 67, 0,192, + 43,178,255, 29, 0, 81,160,120,156,117,111,111,189, 82,155,212,137,137,137,105,158,159,159, 95,210,217,176,120, 97,241,182,109, +219, 86,165,188,103, 18, 66, 22,245,237,219,231,115,128,160,125,251,246,153, 19, 39, 78,164,247,238,221, 27, 48,120,240,160, 78, +113,113,143,203, 77,231,139,229,104,248,240, 55,159,186,185,185,117,241,243,243,139, 3, 32, 16, 10,133,197,155,242,253,253,253, +221, 34, 35, 35,135, 41, 20,138, 4, 62,143, 87,157,130,210,202,202, 18,131,193, 96, 48,254, 1, 6,139, 16, 66, 75,221, 24, 72, + 5, 79,225, 57,183,110,221,242, 53, 24, 12, 32,132,228,216,113,131, 58, 81,250,134,195,231,243,127,230,241,200, 4, 66, 8, 34, + 35,163,158, 46, 93,186,180,172, 53,183, 76,145,145, 81, 79,249,124, 94, 13, 74, 41, 8,225,253,194,113,182,204,178, 52,203,187, + 33,138,197,146,207, 0,192,199,199, 55,254,240,225,195,166, 65,131, 6,225,187,239,190, 19, 77,155, 54,109,106,112,112,240,135, + 73, 73, 73, 25,229,165,179,232,255,233,222,222,222,178, 53,107,214,212, 30, 63,126,124,116, 90, 90,218,116, 0,240,243,243, 91, + 0, 32, 2, 64, 98,169,207,176,114,229,182,103, 99,198,140,137,205,204,204,156, 94,158,230, 27,132,212, 12, 14, 15,239, 56,247, +220, 57,202, 51, 26, 73,206,249,243,234,236,204, 76,203,147,236,108,217,134, 27, 55,122,127,185, 96,129, 48, 48, 40, 8,103,246, +239,247,200,209,233,178, 85, 70,163, 33, 51, 51,147, 90,173,214, 75,118,228,189,174,151,167,167,108,213, 15,191, 92,119, 20,242, + 57,111,127,127, 34,112,115, 17,242,100,206, 98,158, 64, 96,168, 17, 92, 75, 4,160,110,101,231, 72, 36, 18,141,236,218,181,171, +108,219,182,109, 36, 50, 50, 18, 46, 46, 46, 56,127,254, 60,110,221,186, 5,139,197,194,203,207,207, 71,147, 38, 77,240,237,183, +223, 34, 40, 40, 8, 74,165, 18,201,201,201, 30, 98,177,216,179,130,227,249,156,225,157, 58,117, 42, 2, 3, 3, 97,181, 90,145, +151,151, 7,171,213, 10,185, 92, 14, 0, 72, 76, 76,196,129, 3,251, 43, 45, 75,118,154, 35,180,104,209, 66, 67, 8,121,248, 98, + 4,171, 42,154,190,190,190, 27,179,178,178, 27,118,232,208, 1, 42,149,202, 52,107,214, 44,212,171, 87, 15,181,107,135,217, 83, +230,167, 75, 36,146,181, 65, 65, 65, 95,125,250,233,167,110,110,110,110, 48, 26,141, 31,165,167,167, 99,252,248,241, 0,128, 94, +189,122,133, 11, 4,130, 13,239,190,251, 46,170, 85,171,246, 72,163,209,196,220,186,117,107, 90, 65, 65,193,131,151,205,187,157, +199,135,105, 50, 77,166,201, 52,255,167, 52,237,245, 34,255, 40,131, 69, 41, 37,132, 16, 90, 89,134, 40,165,249,254,254,254,190, + 82,169, 20,148,210, 42, 55,183,217,108,182, 15, 61, 60, 60,178,166, 79,159,222,186,118,237,218,166, 15, 63,252,240, 94, 66, 66, +194,140,210,219, 84,175, 94,125,222, 79, 63,253,132,216,216,216,196, 5, 11, 22, 92,200,201,201,249,186,138, 39,125, 26, 33,100, +105, 81, 52, 44,103,255,254,253,245,206,157, 59, 55, 97,201,146, 37,158, 31,124,240,129,232,227,143, 63, 30, 1,224,187,202,116, +248,124,190,174,172,102,193,114,110,194,166,178,250,104, 21,211,135, 16,169,147, 88,220, 97,238,185,115,212,148,152,168, 91,247, +253,247,142,171,174, 93,155,101,161,212,219,203,203, 11,109, 90,181, 42,112,224,243,115,178, 50, 50, 56,175,154, 53,249, 9,135, + 15,123,232,197,226,180,109,219,182,169,114,115,115,247,218, 81, 40,213, 54,142, 51, 59,250, 7, 90, 7, 13,232, 90,247,250,213, + 91,143, 28, 61, 61,120,141, 27, 70, 70, 61,136, 77,188, 73,109, 54, 11, 33, 68, 93,153,142,179,179,115,237,220,220, 92,168,213, +106,120,122,122, 98,233,210,165,240,241,241,129, 78,167,195,229,203,151,105, 64, 64, 0, 57,119,238, 28, 2, 2, 2,144,157,157, + 13,147,201, 4,141, 70,147,101, 52, 26,245,229, 25, 94,129, 64,176,150,199, 35,239, 1, 64,181,106,213, 31,254,242,203, 47, 6, + 0,168, 83,167, 14, 6, 12, 24,128, 93,187,118,225,193,131, 7,224, 56, 14,148, 82, 67, 64, 64,224, 67, 30,143,212, 41,242, 72, + 47, 29,197, 41, 94,130,231,217,179,103, 3, 95,242, 66, 39, 62, 62, 62, 3,194,195,195, 71, 12, 31, 62,220, 36, 20, 10,161,211, +233,160,211,233,240,240,225, 67, 83,215,174, 93, 51,251,246,237,227,125,240,224,193, 10,211,105, 52, 26,159,250,249,249, 77,157, + 60,121,242,210,149, 43, 87, 58,125,249,229,151,176,217,108,224, 56,174,228,111,241,251,189,123,247, 34, 62, 62,126, 89,105,115, +197, 96, 48, 24,255, 22,236,245, 34,255, 40,131,245,255, 9,159,207, 95,117,236,216,177, 6,109,219,182, 21,116,234,212, 41, 50, + 32, 32, 32, 50, 53, 53,245, 30, 0, 4, 4, 4, 68,118,239,222, 61,210,203,203, 11,203,150, 45,211,241,249,252, 85, 47,121,146, + 74,223,236,162,125,125,125, 23,239,222,189,123,209,184,113,227,224,227,227, 19,241,255,157,103, 39,137,164,225,187, 75,151, 90, +133, 22, 11,239,199,197,139,157,190, 63,125,122,209,246, 29, 59, 4, 45, 90,180, 32,148, 82,220,189,115, 71,250,237,242,229,178, + 97,253,251, 39,198,196,199, 91,247, 29, 61,106,201,124,246, 44,239, 89,118,246, 76, 74,105, 94,101,250, 22,139,229,114,220,227, + 56,255,214, 29, 90,250,157,191,118,255,214,192,254, 61, 59, 10, 5, 60,242, 56,241,217, 13, 95, 31, 15,231, 51,167,143, 27, 44, + 22,203,229,202,116,180, 90,109,130,213,106,117,163,148,122,158, 57,115, 6,158,158,158,200,207,207,135,197, 98,129,201,100, 50, +233,116, 58,135,220,220, 92, 24, 12, 6, 24,141, 70, 56, 57, 57,225,238,221,187,153, 86,171,245, 84,121,154, 86,171,117,172,131, +131,195,124, 74,169,208,104, 52,166,157, 56,113, 2, 34,145, 40,208,217,217,121,186,197, 98, 65, 90, 90, 26, 46, 94,188,184,192, +108, 54,167, 20,239, 35, 22, 75, 60,141, 70,163,181,188, 78,238,246, 70,176, 94,150,128,128, 0,191,234,213,171, 79,158, 54,237, +179, 90,245,234, 53, 64, 78, 78, 14, 56,142,131, 66,161,128, 78,167,131,147,147, 19, 90,182,108, 25, 61,111,222,188, 60, 74, 49, +173, 50, 19,152,150,150,150, 27, 20, 20, 52,115,252,248,241,147,107,213,170, 21, 4, 0,161,161,161,232,218,181, 43, 14, 31, 62, +140,216,216, 88, 20, 20, 20,216,174, 95,191,126, 32, 45, 45,141,173,237,197, 96, 48, 24,204, 96, 85,157,204,204,204,236,128,128, +128, 35, 55,111,222,236, 61,100,200, 16,156, 57,115,230,109, 0,147, 1, 64, 34,145,188, 61,100,200, 16,220,188,121, 19,143, 30, + 61, 58,146,153,153,153,253, 42,126, 83, 44, 22, 27, 76,166,194, 96,148,131,131,131, 67, 21,119,175, 86,212, 52, 8, 0,213, 42, +248,172, 92,120, 2,129,111, 84,247,238,130,252, 91,183,212,107,174, 94,253,122,203,150, 45,130,214,173, 91, 19,139,217, 12, 27, +199, 33, 36, 36,132,116,234,220, 89,190,126,203, 22, 55,155, 86,123,238,155,207, 63, 63,191,250,221,119, 11, 98, 41, 77,180, 39, +129, 70,163,113,249, 71, 19,198,118, 57,121,250,156, 95,120,120,136,251,145,227,167,163,221,221,156,101,181, 67, 67,229,121,249, +249,182, 25,211, 62, 19, 24,141,198, 31, 43,211,209,235,245,123, 78,156, 56,209, 63, 48, 48,208,243,222,189,123, 48,153, 76,176, +217,108,232,212,169, 19, 40,165, 18, 0,156, 64, 32,192,163, 71,143, 96, 54,155,179,226,226,226,210, 30, 63,126, 44, 1,176,176, + 34, 93,131,193,144, 84,250,255,160,160,160,214,189,122,245,130,213,106, 69,247,238,221,177,127,255,254,214,105,105,105,107, 74, +109,146,244, 10,158,132, 64, 41,173,227,239,239,191,187,232, 35,187, 58,183,251,250,250,134,133,134,134,206, 91,176, 96,129, 48, + 48, 48, 16, 28,199,193,205,205, 5, 90,173, 30,185,185,185,136,136,136, 64, 96, 96, 32,190,253,246, 91,160,112, 4,160, 93, 17, +182,228,228,228, 4, 0, 31, 70, 68, 68,136, 52, 26, 77,164, 94,175,159,213,169, 83, 39, 68, 71, 71,227,242,229,203, 31,105,181, +218, 60,185, 92,110,241,243,243, 27,206,227,241,228,102,179,121,127, 86, 86, 86, 22,171,162, 24, 12, 6,227, 53, 55, 88,222,222, +222, 50, 7, 7,135, 55,223,123,239, 61, 23,142,227, 32, 18,137,162, 60, 60, 60,230,231,228,228, 20, 84,245, 71,117, 58,221,246, + 45, 91,182,116,253,225,135, 31, 68, 61,123,246,172, 25, 16, 16,208, 20, 0, 6, 14, 28, 88,211,209,209, 17, 91,182,108, 49,235, +116,186, 87, 54,167,145,197, 98,105,219,164, 73, 19,228,229,229, 33, 49, 49,241, 94, 85,246, 61,112,224,128, 12,133,253,174, 42, +252,172, 34,172, 38,147,171,139,191, 63,239,217,233,211,230, 60,181,218,183,109,187,118,196, 98, 54,131,199,227, 33, 55, 55, 23, +201,201,201,112,118,113, 33,143,226,226, 20,107, 63,251,236, 64,181,250,245,197, 54,147,201,189, 10,102, 66, 75, 8,121,251,163, + 15, 63,216,179,117,235,111, 30, 74,165, 58,222, 65, 42, 53, 73,196, 66,239,143, 63,252,192,150,151,151, 55,138, 82,106,207,121, + 90,184,117,235,214,238,221,187,119,191, 19, 20, 20,228,149,157,157,237,163, 84, 42,109,121,121,121,124, 20,246,165, 34, 0,112, +250,244,105,168,213,106,171,205,102, 59, 7, 96, 46,165,212,100,111, 90,221,220,220, 28, 59,116,232,208,220,219,219, 27,106,181, + 26, 30, 30, 30,104,216,176, 97,115, 55, 55,183,237,121,121,121,154, 87, 89,184,143, 31, 63,238, 72, 41,109, 78, 41, 69,247,238, +221,237,218,135, 16, 50,168, 87,175, 94, 66, 30,143, 7,189, 94, 7,137,196, 1, 10,133, 19, 28, 29,157, 81,187,118,109,164,165, +165,161, 91,183,110,230,184,184,184,205,233,233,233,127, 84, 53, 77, 42,149,170, 75,139, 22, 45,222,155, 48, 97, 2,108, 54, 27, +250,245,235,135,148,148,148,175, 18, 18, 18, 14,120,120,120,244,127,231,157,119,220,220,221,221, 49,101,202, 20, 41,128,165,172, +138, 98, 48, 24,140,127,184,193,170,168,205, 51, 32, 32,160,137,135,135,199, 71,142,142,142, 46,167, 78,157,146, 3, 64,235,214, +173,193,113,220, 42, 63, 63,191,159,211,210,210, 46, 86,229, 71,243,243,243,213,190,190,190,251, 46, 95,190, 60,120,224,192,129, + 56,126,252,248,168, 34,131,133,203,151, 47,227,233,211,167,251,242,243,243,213,175, 34,131, 1, 1, 1, 61,218,183,111, 63,176, + 73,147, 38, 56,120,240, 32,108, 54,219,165,170,236, 95,122,196, 32,202, 24, 69, 88,252,153, 93, 98,124, 62, 8, 33,176, 90,173, + 0,128,156,236,108,196,198,196, 32, 47, 63, 31, 70,131, 1, 90,157,206, 86,187,122,117,189,202,100, 18, 18,160, 74,109, 92,148, +210, 36,133, 66,145,172,211,105,189,220, 60, 92,245,114, 7, 7, 40,213, 42,209,141,235, 87, 52,148,210, 39,118,106,152, 8, 33, +237, 14, 31, 62, 60,147,207,231, 15, 81, 40, 20,152, 48, 97, 2,191,125,251,246, 16,137, 68, 48, 26,141, 80, 42,149,216,178,101, + 75,182,213,106,173, 81,100, 72, 20,114,185,124, 35,159,207, 79, 85,171,213, 95, 86,246, 27, 18,137,164,125,223,190,125,249, 70, +163, 17,115,231,206,197,204,153, 51,209,189,123,119,254,181,107,215,218, 3,216,255,170, 10, 54,199,113,232,210,165, 75,233, 78, +238, 15,237,217, 79, 40, 20,214,174, 85,171, 22,178,179,179,145,157,157, 13, 79, 79, 79,248,249,249,193,219,219, 27, 75,150, 44, +161, 75,151, 46, 61,107,179,217, 54,103,100,100,228,188, 68, 89, 28,254,246,219,111, 15, 27, 60,120, 48,180, 90, 45, 78,157, 58, +133, 86,173, 90,225,219,111,191,245, 60,127,254,252,123, 77,154, 52,129, 80, 40,196,217,179,103, 97, 54,155,211, 88,245,196, 96, + 48,254,109,188, 46,253,175, 42,141, 96,185,186,186, 58, 57, 56, 56,140,235,221,187,119,235,254,253,251, 99,254,252,121, 37,223, +241,120, 60,108,218,180, 73,177,103,207,158,207, 3, 3, 3,219,113, 28,247,203,179,103,207,242,236,253, 97,142,227,246,108,221, +186,181,103,139, 22, 45,100, 29, 58,116, 8, 41,186,249,154,182,110,221,170,227, 56,110, 79, 85, 51,242,226,164,143,254,254,254, +245, 4, 2,193,192,222,189,123,215, 27, 61,122, 52,238,223,191,143, 45, 91,182, 60,174, 93,187,246,133, 42, 74, 39, 86, 50,138, +112, 65,101,209, 44,190, 88,156,171,204,200,112, 81, 4, 5, 9, 93, 29, 29,211, 15, 30, 60, 24,216,185,115,103,146,146,146,130, +252,252,124, 24, 12, 6, 92,191,126,157, 19, 0, 73, 2, 87, 87,146,116,249, 50,225,139,197,185, 85, 61, 6,129,190,174,161, 95, + 77, 27, 95,205, 96, 48,212, 85,169, 84, 86,161, 80, 40, 12,240,113, 73,169, 98,225, 54,202,229,242,198, 0, 4, 28,199,233,220, +220,220,100,199,142, 29,131, 88, 44, 6, 33, 4, 81, 81, 81,112,112,112, 16,201,229,242,100, 0,240,241,241, 17,175, 90,181,202, +121,196,136, 17,231, 43,211,110,223,190,189, 32, 56, 56,184,107,237,218,181,113,233,210, 37, 60,124,248,240,217,149, 43, 87,252, + 27, 55,110, 12,127,127,255,174,237,219,183, 63,116,230,204, 25,235, 43,186, 72, 95,170,147,187,205,102,163,132, 16,240,120, 60, +112, 28,135,236,236,108,212,168, 81, 3, 43, 86,172,192,146, 37, 75,126,124,217, 62, 82, 17, 17, 17,162, 6, 13, 26, 12, 28, 60, +120, 48,158, 60,121,130, 5, 11, 22,228,103,101,101, 93, 58,118,236, 88,143, 9, 19, 38,240, 91,181,106,133,220,220, 92,172, 91, +183,206, 26, 29, 29,189, 51, 51, 51,115, 15,171,106, 25, 12, 6,227, 53, 52, 88,254,254,254,189,220,220,220,222, 27, 58,116, 40, + 63, 44, 44, 12,153,153,153,208,104, 10, 12,245,234, 69,114, 0,143,138,197, 34,179, 92, 46,199,216,177, 99, 17, 21, 21,213,244, +243,207, 63,111,226,227,227,179, 41, 35, 35, 99,151, 61, 63,156,153,153,169,243,245,245,221, 57, 97,194,132,133,183,110, 69,215, + 0,128,107,215,174, 61, 77, 75, 75,155,150,153,153,169,171,162,185, 42,158,204,146, 72,165,210,171,161,161,161, 9, 61,122,244, +112,234,223,191, 63, 60, 61, 61,113,243,230, 77,124,251,237,183,113, 38,147,105,230,171,186,129, 87, 5,171,209,152,113, 99,239, + 94,199,246,111,190,233, 52,177, 87,175,197, 31, 76,152,240,195, 87, 95,125, 37, 8, 11, 11, 35, 58,157, 14, 87,175, 94,165,187, +118,237,178,172,255,250,235,165,144,203,133,151,119,237, 18,155, 76,166,164, 42, 70, 71,218,245,236,222, 46,108,241, 15,203, 97, +208, 23,224,234,165, 63,144,159,159,141, 85,171,119,135, 5, 4, 4,180, 75, 77, 77, 61, 91,133,227, 89,251,248,241,227, 94,148, + 82,136,197, 98,204,157, 59, 23,126,126,126,112,114,114,130, 70,163,193,228,201,147,157, 63,249,228, 19,103, 0,184,127,255, 62, + 20, 10,133, 93,186, 49, 49, 49,141,198,143, 31, 47,179,217,108, 56,114,228,136,153,207,231, 47, 62,126,252,248,162,250,245,235, +139,218,183,111, 47, 91,191,126,125, 99, 0, 87, 94,149,193,122, 25,108, 54, 91,226,177, 99,199,162,134, 12, 25, 66, 5, 2, 1, + 81, 42,149,112,118,118,198,138, 21, 43,116,233,233,233, 47, 61, 65, 91,110,110,174,176,110,221,186, 34,142,227,176,115,231, 78, + 60,123,246,236,211,204,204,204,108, 63, 63,191, 35, 83,167, 78, 29, 23, 22, 22, 22,240,232,209,163,103,122,189,126,101, 90, 90, + 90, 42,171,154, 24, 12, 6,227,245,141, 96,189,121,228,200, 17, 62,199,113, 88,189,122, 53,110,222,188, 73,115,114,114,102, 18, + 66, 54, 58, 57, 57,217,114,114,114,222, 28, 51,102, 76,255,153, 51,103,146, 54,109,218,224,242,229,203,164, 70,141, 26, 3, 1, +236, 42,117,163,238, 92,209, 92, 25, 42,149,234,122,102,102, 70,141, 82, 19, 75,214,144, 72, 28,174, 87,114,243,127, 78,243,197, +201, 44,249,124, 94,179,185,115,231,106,125,125,125, 77,247,238,221,195,202,149, 43,185, 27, 55,110,156, 22,139,197,171,210,210, +210,140,246,104,190, 10, 74,107,138,173,214,155,155,167, 78,173,211,168, 95, 63,238,189, 41, 83, 10, 68, 82,233,199,139,151, 47, +255, 76,169,209,248,129, 16,234,238,236,156,180,122,238,220, 5,221,251,246, 45,184,127,246,172,195,173,227,199,133,158, 22,203, +237,170,164, 51, 53, 53,245,108,104,205, 32,108, 88,243, 3,204,102, 35,210,159, 21,250,179,156, 92, 21, 42, 50, 87,101,105, 90, +173, 86,213, 27,111,188, 33, 2, 32, 29, 57,114,164, 56, 43, 43, 11, 53,107,214, 4, 0,168,213,106,252,241,199, 31, 8, 15, 15, + 7, 0,220,189,123,183,228,125,101,233,116,116,116,236,220,182,109, 91, 36, 37, 37,225,193,131, 7,151,158, 61,123,166,244,247, +247,191,148,156,156,220,190, 73,147, 38,216,181,107, 87,167,242, 12, 86, 85,207,145, 61, 6,171,156,188, 47,220,179,103,207,224, +203,151, 47,247,158, 50,101,138,160, 99,199,142, 0, 0,173, 86,107,160,148,218, 94, 70,179, 52, 22,139,165,120,210, 83, 29, 0, + 20,153,169, 47,255,140,230,159, 45,159, 76,147,105, 50, 77,166,249,191,160,249,111, 50, 88, 86,142,227,112,230,204, 25,236,222, +189,219,102, 50,153,166,167,167,167,199,148,250,126,125, 96, 96,224,249,129, 3, 7,126, 31, 27, 27,203,127,240,224, 1,236,185, + 1,149,198, 96, 48, 88, 94, 92, 42,216, 96, 48, 88,254,108,166, 54,108,216,128,140,140, 12,115, 74, 74,202, 9,171,213,186,231, + 79,142, 70,252,211,163, 8,215, 83,106,124,147,144, 19,179, 90,183,238, 50,243,248,113,201,123, 95,124, 97,124,123,244,232, 79, +109, 38,147,133, 47, 18,113, 98,185,156,103,147, 72,132,247,207,158,117, 88,246,254,251,110,122,163,241,200,230, 42,116, 28, 47, + 21,193,194,219,239, 77,130,190, 84, 4,235,242,245, 88, 84, 53,130,101, 48, 24,234, 2,128, 84, 42, 77, 6,224,243,214, 91,111, +129,227, 56,232,245,122,104, 52, 26,164,165,165,169, 70,143, 30,109, 3, 0,185, 92, 46, 24, 56,112,160,147, 93, 7,178, 90, 53, + 31, 62,159,143, 67,135, 14, 65, 34,145,156, 2, 0,137, 68,114,234,248,241,227,237,135, 15, 31,142,192,192,192,160,226, 73, 80, + 42,210,241,142,236,191,157, 2,161, 32,168, 85,120,165,163,150, 87,100,255, 59, 4,136, 43,154,229,253, 97,195,134, 13, 1, 59, +251, 93,149, 38, 59, 59, 91, 11, 96,157,183,183,247, 31,159,126,250,233, 91,205,155, 55,111, 51,115,230, 76, 66, 41,253,211, 11, +163, 83, 74, 97,179,217, 88,173,195, 96, 48, 24,255,102,131, 69, 8,249,189, 67,135, 14,195, 40,165,124, 30,143,183,229, 5,115, + 5, 0, 72, 73, 73,121, 26, 16, 16,176,186,122,245,234, 37, 11, 64, 87,241,134,147, 73, 8,249,150,199, 35,159, 21,254, 95,245, +137, 37, 75, 45, 73,242, 25, 0,194,227,241, 55, 70, 71, 71,127,145,156,156,156, 93, 85,195, 87, 22,175, 98, 20, 33, 0,108,165, + 52, 97, 24, 33, 71,167, 68, 70,118,238,254,254,251,168,215,189,187,147, 95,112,176, 77,111, 54,115,119, 47, 92, 32,151,118,238, + 20,221, 58,126, 92,168, 55, 26,143,236,166, 52,185,170,233, 76, 77, 77, 61, 91, 51, 36,224,216,160,129, 61,187,134, 84,247, 3, + 0,196, 39,164, 33, 39, 79,117,172, 42,230,234, 5,163,213,111,197,138, 21,251, 69, 34,145,160,244,146, 51,102,179, 57,175,216, +132, 17, 66,252, 86,175, 94,253, 59,143,199, 75,170, 76, 47, 38, 38,230,216,172, 89,179,186, 63,125,250,244, 92, 74, 74, 74, 42, + 0,196,199,199,167,250,249,249,237, 78, 75, 75,235,145,156,156,124,152,218, 17,122,122, 97,177,103,220,191,176,195, 1, 64, 84, +241, 98,207, 47,187,214, 96,105,138, 76,249,226,128,128,128,125, 61,122,244, 24, 70, 8,201,248, 51,122, 10,133,194,170,215,235, +173, 28,199, 9,204,102, 51, 85, 40, 20, 86, 86,253, 48, 24, 12, 70,149,104, 2,160,120,229,144,226,192,137,231, 11,239, 77, 0, + 74, 47,229, 87,252,127, 54,128,235,165, 52, 74,127, 94,217,190, 0,144, 3,224, 78,209,103,127,206, 96,165,166,166, 30,134, 29, +139, 57,219,187, 93, 5, 6,105, 58, 33,100, 89,177, 89,250,179, 26, 86,171,245,149,172,223,198,227,241, 18,250,244,233, 83,165, +237, 43,219,230,119, 74,147, 62, 38,100,211,193, 31,127,108,112,100,229, 74,127,155,213,234, 78, 0,202, 23,139,115, 77, 38, 83, +162,167,197,114,187,170,145,171,210, 60,137, 79,237, 6, 0,181,107,215,166,113,113,113,127,122, 52, 6,165,244, 54,128,192, 74, +182, 73, 3,208,198, 30,189,148,148,148,253, 40, 99,164, 96, 90, 90,218, 1, 0, 7,236, 77, 87,201, 98,207, 0,143, 35,220,160, +186,173, 7,239, 4,192, 21, 47,246,252, 42, 73, 77, 77,141, 7,240,245,159,213,121,242,228,137,169,122,245,234,123, 23, 46, 92, +216,255,206,157, 59, 7, 83, 82, 82, 76, 96, 48, 24, 12, 70,149,204, 21, 33,228, 96,209,189,167,119,209, 67,254,193, 23,223, 23, +111, 83,188, 93,233,109,138, 53, 94,252,188,162,125, 1, 96,218,180,105, 95, 44, 88,176, 64, 6,192,238,190,184,130,255,133,163, +246, 42, 22,181,125,213, 11,227,166,166,166,174,249, 43,242,186,188,208, 64, 93,249, 43,143,103,108,108, 44,121,157,175,178,226, +197,158, 75, 17,249, 79, 72,119, 66, 66,194,166,246,237,219,255,150,146,146,194,162, 87, 12, 6,131, 81, 53, 60,203, 50, 68,229, +248,129,222, 21,125,255,220, 3,123, 25,219,149,245, 63, 33,228,224,130, 5, 11,122, 87, 37,193, 60,118,206, 24,140,255, 63,254, +142, 81,172, 12, 6,131,193, 40,155, 23,163, 86,197,166,235,197,255,167, 77,155,246, 5,170,208, 60, 8, 20,206,204,221,185,156, + 31,181,123,116, 0, 33,164,243, 75,100,234, 4,211,100,154, 76,147,105, 50, 77,166,201, 52,255, 93,154,149,105,151,179,127,175, +242,154,244, 42,106, 46,124,241,125,101,251,218,177,237, 31, 85, 57, 16,127,217, 11, 64,103,166,201, 52,153, 38,211,100,154, 76, +147,105, 50,205, 63,249,106, 66, 41,237,133,194, 85, 78, 40,165,180, 23,165,180,251,180,105,211,166, 23,127, 54,109,218,180,233, +148,210, 78,197,219, 21,109, 83,178, 79,241,103, 47,254,125,241,179, 74,182,181, 59,205,255, 19,125,176, 24, 12, 6,131,193, 96, + 48, 42,224, 58,128, 38,165,162, 75,217, 0,238, 46, 88,176, 32,191, 84,223,168,108, 0,183, 1,212, 47,218, 46,187, 40,144, 84, +186,239,148,169,232,127, 83, 25,219,152,236,217,214, 94,152,193, 42,135, 6,190,252,175,131, 2,188, 26,151, 68,249, 10, 39,135, + 4, 87, 52,139, 64,201,116, 2, 28, 7, 74, 41,210,178,148, 55,239,100,210,175, 94,246,247,194,252,137,155,151,131,195, 82,142, +210,214, 69, 31,157, 85,229, 26, 39,221, 83, 81,165,189, 26,117,124, 72, 29, 7, 30, 62,229, 40,234, 1, 0,143,224,142,129,195, +119, 15, 51,232,195, 63,123, 60, 8, 33,164,174, 39,198,138,165,178,161,206, 46,174,181,242,243,115,226,204, 6,227,142, 7,217, + 88, 69, 95, 98,218,244,154,110,164, 57, 71,241, 5, 0,158,144,135,239, 99,115,233,105, 86,234, 24, 12,198,255, 19,252, 63,185, +127, 89, 83, 0,253,217,193, 69,148,157, 22,187, 76,214,139, 92,179,115,187,255,119,170,100,176,234,122,145,247, 65, 48, 27, 0, + 5,197,156,251, 89,244,151, 42,237,239, 71, 58, 59,240,249,107, 1,240, 13,102,219, 20,202,225, 92,153, 55,115, 30,218, 58,136, +248,223, 3,224, 12, 54,219,187,247,211,236,239, 15, 22, 25, 64,186, 11, 56,222,102,142, 82,161,141,163, 27, 65,113, 80, 33,194, +197,203,169,212, 80,149,180, 6, 5,120, 53,222,123, 45,189,235,233, 95, 38,162, 89,189,154,160, 54, 43,192, 89, 32,107,243, 41, + 78, 46,121, 11,205,234, 4,129,114, 22,128,179, 66,209, 99, 49,122, 68, 58,191,244,197, 17,230, 79,220,130, 61,188,238,173, 89, +179,214,199, 47, 36,130,112, 86, 51, 98,174, 29, 27,241,201,103, 51, 59, 70, 58,147, 72,123, 76, 86,125, 63,242, 94,205, 26, 97, +159, 78,154,253, 3,223,239,255,216,187,202,240, 42,142, 54,122,230,238,213,220,184,123, 66,144, 36, 36, 4,119, 2, 4,247, 2, +193,165,133,210, 22, 74, 41, 90,188, 64, 75,177, 22,167, 72,145,175, 5,138, 83,164, 80, 36,184,107,128, 16,146, 16, 8, 18,119, +151,171,187, 59,223,143, 72, 3, 68,110, 2,245, 61,207,179,207,189,107,103,103,103,102,103,206,188, 51,243,142,147,171, 49,199, +106,216,164,231,225,141,215,125, 55,255,151,134, 78,100,229,131, 4,186,205, 80, 33,229,107,139,177, 98,185,108,144,145,194,184, + 78, 65, 65,238, 83, 78,167, 63,224,231, 36,238,190,124,197,154, 70, 1, 93,122,154,112,185, 73, 34, 61, 15,223,253,251,246,186, +127,191, 97, 99, 79, 66,200,123,148, 82,190, 42,239,204, 83,204,136,220,249, 73, 79,137,152, 33, 62, 31,110,101, 80,133,169,175, +165,225,107, 79,134, 17, 90,185,155, 8, 74,112, 37, 44,153,238,169,206, 51,124,236,201,255, 8,133, 23, 8, 14, 18,138,189,143, + 82,104,138, 80,206, 9, 16,240,239,130, 72, 36,186,192,243,124,135,119,201, 73, 8,105, 73, 41,189, 41,196,238,127, 19, 85,179, + 96, 17, 44,122, 20, 21,107, 9, 78,135,122, 94,181,190, 1, 80, 37,129,165, 96,152, 29,119,158, 36, 59,128,213, 97,235,226,241, +251,180,122,128,213,235,192,177,122,112,172, 30, 44,171, 3,167,215,131,234, 53,152,255,227, 5, 64,155,139,166,126,158, 59, 0, + 56, 26,250, 12, 9, 21,253, 28,124, 53,200,138,104,179,177,103,211,210,207, 99, 83,243, 62, 63, 27,146,144, 86,207,158,204, 14, + 75,193, 79, 85, 17, 2, 23,126,152,132, 93,135,127,139, 91,251,191,252, 8,158, 82, 88,153, 25,121,143,232,253,200,117,231,209, + 11,177,107,118,168, 35, 0,192,220, 88,230,253, 65,200, 19,183,183, 73, 4, 59,133, 98,205,230,141,223, 59, 56, 90, 27, 17,246, +250, 50,176, 28, 7, 87,247, 94,204,236, 9, 35, 28, 23,173,222,182, 26,192,168,138,238,175,107, 79,124,189,106,251, 76,219,241, +219,117,183,130,220, 20,109,208,174, 57, 81, 84, 3,189,131,179,143,228,155,165,171,152,185, 51, 39, 77,173,107, 79,110, 69, 36, +211,176, 74, 10, 3,145,143, 29,142, 46, 93,182,162, 65,199, 30,189, 77,248,188, 84, 70,157,159,231,181,245,199,109, 95,213,109, +208, 92,217,214,207, 69,154,114, 96, 28, 81,229,102, 64, 39, 82,200, 59,214,235,108,166, 26, 57, 84,191,117,251,174, 9, 0,214, + 85,169,249, 87,170,123,154,231,171,223,154, 36, 20,109,239,223,188, 48,150, 75,184, 3,202,233, 1, 78, 87,242, 11, 78, 15,202, + 23,254,182, 24,247, 35, 0, 84, 75, 96,137, 40,186,158,189,122,199, 49, 57, 41,177,217,234, 21, 75,102,251,218,145,147,224,240, +115,120, 6, 46, 85, 85, 88, 10, 16, 32,224,239, 11, 66, 8, 75, 41, 21,191, 99,206,158,148,210, 19,111,201, 49, 29,192, 71, 69, +187,219, 40,165,203,223, 65,184, 92, 0, 56, 20,237, 38, 81, 74,133, 53, 80,255, 82,129, 5, 40, 64,121,224, 96, 63, 0, 48,170, +234,195, 40,160, 0, 97, 0,125, 62,250,246,232, 2, 27, 59, 7, 64, 95, 0,232, 10, 0,189, 10,208,231, 3,122, 21,210, 18,163, + 1, 93, 62,240,236, 36, 88, 74,229, 85,126, 43, 77, 54, 16,121, 0,157, 26,187,193,214, 92,129, 73,125,125,109,182,156,138,220, +182, 45,232,113,103, 0, 67, 12, 10, 43,165,104, 81,191, 14,214,110,203,143,248, 53, 56,165, 27, 0,244,106,100,115,170,133,175, +187,235,154, 29,234,136,223, 66, 50,186, 3, 64, 15, 63,243,147,205,189, 29,221,248,183,176,238,242,148,182,117,170, 81,135,112, +247, 55,131,207,137, 67, 78,142, 10,113, 47,118,194,210,185,137,136,227,209,190,178,251,141, 24,204,154,248,229,183,146,130,156, +100, 45,167, 75,229,108, 68,153, 98,177,156, 39, 72,184,164,201,231,179,184,201, 31,143,228,190,152,191,100, 22,128, 17, 21, 90, +131,236, 48, 97,229,202, 53,245,219, 52,173,107,151,244,203, 36,146,151,153, 12,150, 81,202,251,182,106, 3, 11, 79, 95, 62,249, +226, 74, 34,171,213, 25, 22,214,181, 16,127,125, 55, 94,222, 60, 68,252, 27, 7,202,127,218, 35, 29, 89,158,192,242,180, 37,254, +221,218, 53,223, 87,203,205,201,145, 82, 30, 60, 79, 65,121, 14, 31, 14,236,138,217,251,159,129,227, 56, 12,232,230,223,233,219, +177, 29, 41,207,243,160,148, 71,108, 82,122,193,249, 91, 17,157,162, 50,232, 45, 67, 44, 83, 13, 91,118,240, 15, 9,190, 89, 87, + 31,121, 12, 77, 71, 44,141, 32,192,213, 82,121,206,255,222,233,159,234, 2, 63, 86,183, 16, 34, 62,118,224, 94,158, 90, 6,183, +118,159, 48,155,247,156,178,205, 78,141,255,224,151,157, 27, 7,110,218,188,121, 23,128,113, 66, 49, 34, 64,192,191, 3,148,210, +119, 46,178,162,162,162, 18,223, 70,100,185,184,184,180, 3,240, 93,241, 72, 12, 66,200,119, 30, 30, 30,243,127,111,160,190,210, +198,203,230, 56,110, 68, 92, 92,220,229,138, 56,123,247,238,237, 4,192,163, 20,167, 7, 33,196,163,172,107, 45, 44, 44,184,214, +173, 91,191, 60,126,252,120,130,144, 67,254, 88,129, 21, 17,115, 96, 82, 99, 77, 98, 30, 0, 68, 24,144, 89, 95,233,218, 83,235, +185,101,219,191,122,127, 89,189, 26, 86,200,205,215, 34,232,238, 75,112,156, 30, 28,203, 22, 89,178, 88,112,172, 30,221, 26,218, +160,181,122, 28,214, 29,127, 12,150,227,151, 86,196,249, 58,116,148, 31,214,168,243,224,253, 60, 79,101,114,137, 40,219,203,213, +218,110,218,128,134,162, 73,125,235, 65,165, 99, 7,251,218,147,243, 97,201,116,171, 65,156,252,155, 46,139,104, 89,199, 56,182, +210,119,175,192,250,212, 98,104,239, 46,102, 84,147, 13,125,218, 51,228, 22,232,241, 44, 93,143, 36,117, 22,228, 36,209, 32, 78, +158,162,129,179,163,163,241,181,125, 51, 95, 88,139,115,196,118, 98, 86, 34,163,172,132,227, 41,131,172, 48,141,117,221, 46,226, +226,113, 89, 21,133,211, 72,105,250,126,187,174,189,204, 99,118,127, 66,140,188,186,193,174,177, 43, 94, 92,222,142,148,187,199, +145,151,151, 67,228,217, 89,176,183,174,141, 30, 35,134, 96,249,144,102,200,205,201, 5,147, 24,101, 46,147,200, 45,202,227,164, + 28, 70,172,252,118,177,163,152, 17, 21,198,103,241,198,233,161,210,104, 0,142,133, 66,204,131,208,226,115,122,112,122,157,178, + 65,224,204,241, 0,110, 85,246,238, 97,201,116, 79, 61, 59,210, 22,188,190, 46,213,171, 64,128,171,143, 82,104,137,232,241,181, + 39,195,154,116, 27,221,150, 18, 92,169, 78, 26,249, 89,163,119, 83, 15, 19, 99,227,156, 8,196, 29,252, 28, 81, 80, 80,251, 54, + 31, 97,216,135, 19,148, 91,182,108,233, 67, 8,249,180,244, 24,180, 63, 98,241, 83,129, 83,224,252,167,114,154,155,155,215,172, + 81,163,198,124,189, 94,223, 78, 42,149,218,235,116, 58,240, 60,159, 36,147,201,174,188,124,249,114, 97,118,118,246,243,191,219, +187,135,132,132, 24, 44,178, 12,225,148, 72, 36,120,252,248,241, 83, 67, 69,214,235,156, 18,137,228,231,171, 87,175, 98,255,254, +253, 0,128,200,200, 72,120,122,122, 26,151,117,239,139, 23, 47,140, 3, 2, 2,126,198,107, 43,112,188,206,249,240,225,195,154, +199,142, 29,195,193,131, 7, 1, 0,143, 31, 63,134,151,151, 87,153,225,185,122,245, 42, 51,124,248,240,154, 0, 18,254,232, 52, +250, 87, 10,172,162,245,117,201,235,255,203,192, 51, 55, 75, 89, 99,168, 57, 0,120, 86,213,135,133, 37,209,111, 27, 58, 74,186, +159, 59,184,161,157, 66, 42,194,130,173,211, 98, 83, 51,114, 91,138, 9,120, 0, 96, 41, 68,150, 38,178, 27, 75, 63,104,232,150, +153,167,198,175,183,227, 47, 63, 74,174,154, 41,244, 81, 2, 61, 3,192,226,247, 10,146,120,125,176,252,204,222,189,179,186, 55, +152,210,183, 1,142, 94,127, 57, 5, 64,165, 94,218, 41,207,131,242,108,201,160,246,162,166, 2,192,179, 40, 61,166,155, 7, 45, + 60,198, 87,205,130, 21, 64,136, 56,211, 14, 61,172,148,178,245, 99,199,126,108,166, 79,125,130, 12,173, 20,177,153,106, 36,169, + 36,200, 19,219, 33, 62,226, 33, 39, 34, 56, 83,185,149, 5, 57,224,212, 22, 86, 50, 19,145, 95,151,241,206, 57,167,231,100,202, + 40,203,152,245, 91,100,145,118,110,213, 75, 86,149,154, 79, 8, 42, 93, 68,219,220,220,194, 83,157,254,146,201,206, 76,131,133, + 67, 61,116, 31,220, 27, 95,247,242, 69,110, 78, 62, 82,175,255, 70,235, 56,154,145,232, 43,187, 48,183,135, 15,210,147, 19,161, +209, 3, 36, 95,147,161,214,170,243,202,141, 71, 17, 54, 79,254, 98,198, 48,119, 71, 91,227,226,201, 2,148,231,208,208,167, 22, +186,180,107,129, 51, 87,175,225,206,195, 72,240, 69,147, 5, 40,207, 35, 46, 37, 51, 89,173,227,182, 87, 41, 66, 57, 22, 84,175, + 46, 83,128,161, 26, 93,131,245,237,137,146, 3,230,181,172, 99, 58,102, 86,111,119, 83, 99, 57,129, 90,207, 65,173,213, 35,247, +218,122, 88,215,168, 15,165, 66, 65, 26, 67, 37, 6,160, 23,138, 18, 1, 2,126,199,160, 65,131, 20,201,201,201, 23,123,245,234, +229,219,165, 75, 23,101,219,182,109,145,159,159,143,160,160, 32,228,231,231,187,187,186,186,186, 7, 5, 5, 5,182,108,217, 50, +204,197,197, 37,224,192,129, 3, 85, 25, 35, 43,198,239,131,212,121, 0, 44, 33, 4, 69,199, 8, 0,254,109,214,161,149,201,100, +136,142,142,126,103,150, 44,169, 84, 10,181, 90,141,248,248,248,167,213,177,100,229,229,229, 73,157,157,157, 97,107,107, 11,142, +227,144,159,159,143, 35, 71,142, 32, 59, 59, 27, 60,207,195,200,200, 8,139, 86,110, 69,196,189,139,184,117,235, 22,178,179,179, +165,149,113,198,197,197,145,134, 13, 27, 66,163,209,128,101, 89,168,213,106,156, 61,123,182,100, 95, 44, 22, 99,198, 55,171, 17, +121,247, 34,238,223,191,143,184,184,184, 63,101,117,144, 42,104,145,127,165, 5,235,173,193,113,236,236, 45, 59,246,222,152, 61, +110, 8, 38, 12,237,236,186,112,195,161,206, 97,169,116, 7, 0,248,218,146, 15, 70,118,168,227,102,161,148,224,235,221,119, 1, + 74,103,191,237,243, 66,211,105,100, 61, 7, 50,229,240,173,232,139,115,134, 52, 70, 45, 71, 51,207,218,181,137, 44, 42,202,128, + 53,255,120, 22,150, 38,114,239, 94,141,108, 78,129,231, 97, 97, 42,175, 11,142,133,133,137,220,187,135,159,249, 73, 0,176, 80, + 74,235,150,101,233, 42, 15,205,220,164,159, 40,229,226, 79,140,155, 56,186,141,234,211,197,168,103,159, 64, 35, 19, 9,139,244, + 91, 65,200,145,184, 64,111,229, 14,141, 62, 3,113,207,163,184,115, 55,195,227,211,114, 53,211, 42, 13, 38,197,229,248,231,143, +109,107, 54,232, 98,153,118,124,110, 74,205,209,187, 61, 68,224, 69,185,187,250, 39, 27,219, 53, 55,186,253,244,121, 30, 79,223, +180,224,188,142,156,236,236,151,122, 14,142, 42, 78,108, 26,117,225, 39,204,234, 81, 31,153, 25, 41, 80,235, 88,100,171, 88,157, +131,133, 66,174,121, 30, 10,141,142,133, 86,207, 67, 98,225,140,160, 27, 15,211,120,189,190,220,181, 40,163,210,232,125, 0, 38, +165,143,213,182, 37, 13,103,154, 25,221,135, 94,133,232,184, 4,236,248,237, 70,227,162,235,170,223, 58,229,217,194,110,230, 82, +150, 43, 66,209,182, 58,131,219,125,236, 73,115, 35,133,244,251,239,166, 12,247,109,229,101, 37,231,227,110,128,240, 58, 24,115, + 98,168,100, 28,204, 93,107,129,215,230,210, 2,181, 58,235, 17, 32,120,102, 23, 32,160, 20,234,214,173,235, 96,110,110,254,232, +139, 47,190,176,234,223,191, 63, 14, 31, 62,140,156,156, 28,108,223,190, 29,107,214,172,193, 87, 95,125, 5,189, 94,143, 45, 91, +182, 40,127,249,229,151,230, 27, 55,110,140,115,119,119,175, 23, 29, 29, 93,217,130,234, 4,128, 28,128,164,168,238, 34, 0,248, + 19, 39, 78,160,103,207,158, 56,113,226, 4, 95,116,140, 35,132,232, 41,165,154,234, 10, 44,153, 76,134,236,236,236,119, 38,178, + 76, 76, 76, 32,147,201,144,155,155, 91,101,145,197,178, 44, 19, 23, 23,135,236,236,108,116,233,211, 7,171,151, 46, 69,135, 14, + 29,208,165, 75, 23, 80, 74,113,246,236, 89,116,110,227,135, 33,239, 5, 32, 60, 60, 28, 44,203, 26, 20,222,164,164, 36, 36, 39, + 39,163,123,159, 62,216,186,113, 35, 90,180,104, 1,111,111,111,176, 44,139,139, 23, 47, 98, 96,183, 54, 80,244,235,140,200,200, + 72, 33, 83,255, 83, 4, 86,104, 10,189,233,107, 75,142, 15,237,214,188,119, 31,127, 95,108,221,119,110,177,175, 47,217, 11, 0, +214,166,242, 69,239,119,168,133,176,152, 76,156,187,159,112, 60, 44,245,221,204,190,224, 57,216, 88,155, 41, 1, 70, 6,149,142, +103,205,158,161,210,129,201, 60,165, 80,182,155,137,145,125,194, 92, 91,248,186,186, 22,207, 34, 52,233,185, 10, 31, 60,124,234, +214,204,219,193, 13,156, 30,224,244, 48, 27,178, 27,248,198,184,210,112,248,215,148,159,153, 57,109, 74,235, 30,253, 6, 27,201, +148,230,224,114, 98,161, 79,122,136,244, 39,151,145,175,244, 68, 82,244, 51,236, 63,125, 43,251, 73, 92,122,142, 72,132,160,228, +108,205,244,168, 12,154, 87, 25,175, 90,143,165,243,231, 78,235,181,127,239, 62, 83,121, 45,127, 18,181,190,103,182, 76,204,202, +109,107, 54, 17, 21, 40,108,232,146,237,251,204,242,181, 88, 86, 25, 79, 65,126,206,161,179, 65,167,134,212,169,233,111,250,226, +206,111, 80,169, 53,208,232,129,122,205, 3,192,113, 84, 70, 68,132, 55, 99, 24,146,146,158, 9,162,231,146,175, 60,120,145,120, +245,193, 51, 70, 99, 90, 57,247, 43,153,142, 48, 19,251, 4, 52, 2,244, 42,188,215,174, 62, 86,239, 58,247, 57,128,209,111,151, +200,133, 22, 44, 10,248,215,179, 35, 63, 0,240,191,123,100, 77,221,166,253, 38,163, 42, 22, 44, 63, 91,210,195,175,182,211, 79, +171, 23,205,180,178,118,241,100, 8,175, 7,117,104, 0,228,196, 81, 18,119, 3,230,206, 45,192, 57,181,193,150,117, 43,242,120, +158,238,173,142,139, 10, 1, 2,254,205, 80,171,213,135,190,253,246, 91,171,222,189,123, 23, 91, 96,112,227,198, 13,108,219,182, + 13,198,198,175,150,147, 61,123,246, 4,165,212,106,193,130, 5,135, 0,180, 42,143,179,101,203,150,125, 54,108,216,144,208,168, + 81,163,103, 69, 34, 75, 10, 64, 20, 26, 26, 42,138,141,141, 37,150,150,150,212,201,201, 73,159,144,144,192, 3,224, 62,252,240, + 67,198,196,196,164, 78, 94, 94,222,165,234, 10, 44,153, 76,246, 78,198,100, 73, 36,146, 18, 94,169, 84, 10, 74,105,149, 68, 22, +199,113,226, 19, 39, 78,224,238,221,187,248,170, 81, 35, 76,113,118,134,149,149, 21, 46, 94,188, 8, 74, 41,140,141,141,145,145, +145,129,189,123,247,162, 99,199,142, 96, 89, 86,106, 8,239,193,131, 7, 17, 28, 28,140,111,154, 54,197, 20,115,115,152,152,152, +224,236,217,194, 94, 63,185, 92,142,232,232,104,156, 61,123, 22, 1, 1, 1, 66,166,254,163, 5, 86, 0, 33, 98, 98, 15, 7,157, + 86, 5,202, 82,128,192,201,215,151, 72,195,194,168,174,170, 15, 21,137, 48,119,221,142,227,189, 86, 77,238, 67, 62,233,219,216, +105,225, 79, 23, 62, 5,128, 49, 3,188,156,149,114, 49,214, 30, 13,163, 34, 17,230,190,139, 23,244,245, 37, 82,145, 8,159,118, +105,225,141,132, 44, 45,162, 18,178,206,135, 81,106, 80,151,206,185, 85, 35,177,243,215,139,177,107,118,170, 35, 40,165,176, 48, +145,123,127, 16, 18,229,246,211,137,224,152,149,251,213, 17,148,167,176, 80, 74,234,142, 14,111, 83,233, 44,194,102,110,210, 79, +102,207,156,222,166,239,232, 47, 20,108,196, 1,104,163, 78,131,215,169,144,163,147, 34,139,113, 64, 92, 76, 12,150,108, 57, 30, +155,147,175, 29, 18,154, 82, 53, 97, 25,153, 70,243,124,109, 73,255, 37, 95,207, 57,179,116,209, 2,147,130,103, 23,243, 24,194, +170, 24,247,246,226, 69, 95,173, 34,185, 26,237,224,168, 12,154, 91, 25,143,198, 20,203,190, 93,185,174,215,199, 35, 2, 35,188, + 60,219, 91,115, 9,207,173,213, 57, 57, 41,187, 79, 5, 59, 20,181, 12, 9, 0, 68,197,165, 35, 53, 59,159,229, 88,253, 37, 83, + 9, 22, 62, 50,196, 26, 88,132, 90,246,196,182,127,219, 6,195,109, 77,165, 80,229,101,193,206, 84,130,110, 45,106, 15,175,101, + 79,102, 62, 75,166,169,213, 78,104, 94, 15,170, 87,225,230,178,142,117, 41,167,175, 11, 78, 15, 93,200,207, 85,183,132, 17, 76, +153,208,206,196,204, 82,251, 66,132,124, 99,192,200, 6,196,204, 29, 48,247, 32, 18,159,193, 72,120,246,136,253,124,248,136,244, +231, 47,227,254,103, 99,132,229, 66, 17, 34, 64,192,171,136,142,142,126,127,246,236,217, 87, 91,180,104, 97,111, 99, 99,131,250, +245,235,227,215, 95,127,197, 23, 95,124, 81,114, 77,163, 70,141, 64, 41, 69, 70, 70, 6,190,253,246,219,164,132,132,132,247, 43, +226,140,136,136,120,188,115,231,206,182,190,190,190, 58,169, 84,154, 5, 64,158,149,149,165,200,200,200, 32,106,181, 26, 60,207, +243,230,230,230, 92, 66, 66,130,126,200,144, 33,154,235,215,175,215,206,207,207,143,121, 27, 11,150,171,171,107,104,122,122,122, + 54, 33,228,173, 92, 56, 72, 36, 18,136, 68, 34, 72,165, 82,216,216,216,216,230,229,229,241, 0, 50,171,227,194,129,101, 89, 52, +109,218, 20,167, 47,223,195,137,115,215,145,147,240, 24,159,126,252, 62,234,215,175,143,211,167, 79, 87, 59,205, 26, 54,108,136, + 83,103,175,226,234,221, 7,136,142, 12,193,231,159,126,140,122,245,234,225,212,169, 83, 66,134,126, 7, 2, 43,128, 16, 82,220, + 18,127, 67,174,250,216,146,134, 78,117,100, 63, 47,232, 81,219, 71,210,101, 1,136,196, 8, 7, 60, 79,181,153,187,100,125, 68, +125,123, 50,226, 97,114,229,179,189, 94,177, 98, 37,211, 71,245,236,200,158, 7,225,117,135,191,215,194, 21, 91,127, 85,206, 3, +128,193,109,107,226,246,147, 84,220,138, 76,217,243, 40,133, 62,122,219,151,171,111, 79,148,160,216,243,237,196,190, 1,238, 46, + 14,216,118,248, 42, 8,193, 33,131, 42, 90, 74,105, 11, 95,119,172,217,249,250,140, 65, 7,183,149,251,213, 17,167, 67,115,122, + 0, 64, 87, 31,227,147,205,106, 91,186, 85,102,201, 48,146,137,199,246, 8, 28,169, 96, 35,127, 5, 94,158, 5, 97, 53, 80,233, +120, 36,166,229,162,192,220, 21, 23,111, 60, 80,101,171,181,147, 31,165, 84,207,106, 23,150, 74,159, 53,114, 36, 49,249,249, 42, + 71,165,109,109,181,152,240, 52, 79,205,227,118,216,203,236, 71,137,244,177, 33, 28, 81, 81, 84,219,202,133,180,253, 97,199,254, +249, 18,169,108, 48, 67, 64,236, 44,140,109,127, 88,245, 13, 76, 77, 77,192,107,243,128,252, 84,244,255,108, 73,234,195,120, 93, + 77, 0,240,178, 33, 38,237,106, 73,119,136, 69, 36,238,252, 83,237,151,149, 61,131,232, 49,110, 68,183, 70, 18, 94,155,143,137, +223,238,195,230,153,125, 49,178,147,143,228,183,107,145,227, 0, 44,172,110, 90, 83,142, 5,213,171,208,106,206,229, 8, 2, 92, +165,128,255,221,253,139,234, 2,247, 12,230,104, 66,136, 68,236, 72,124, 26,184, 25, 75,249,184,107,224,227,174, 81,198,181, 13, +136, 91, 59, 66, 28,154,210,239,191,251, 42,127,235,214,109, 65,188, 8, 95, 87,230,242, 66,128,128,255, 42, 40,165,207, 44, 44, + 44,186,247,236,217,243,220,233,211,167,173,252,252,252, 0, 0,119,239,222, 5, 0, 52,109,218, 20, 94, 94, 94, 72, 78, 78,198, +208,161, 67,211, 18, 19, 19,187, 83, 74, 43, 28,211,155,155,155,251,236,224,193,131,118,121,121,121,141,231,205,155,151,236,238, +238,158,163, 86,171, 73, 86, 86, 22,207,178, 44, 44, 45, 45,101,141, 26, 53, 66,235,214,173,243,174, 95,191,238, 17, 27, 27,155, + 3,224, 69,117,194,223,183,111, 95, 92,190, 92, 56, 9,239, 93,248,197,146, 72, 36,240,243,243,115,126,246,236, 89,124, 81,252, +220,172, 70,156,150,252,127,240,224, 1, 46,221,139,131, 88,171,130, 44, 53, 1, 55, 15, 31, 68,159,177,227,193,178,213, 31,173, +240,224,193, 3, 28, 57,123, 19,198,114, 49, 30, 63,126,132,131, 7, 15,226,211, 79, 63,125, 43,206,106,162, 66, 45,242,143, 20, + 88,148,210, 75, 40,195, 11,109,237,218, 68, 38,207,195,130,110, 77,157,103, 12,246,175,205,232,115, 18,192,115, 60, 24, 9, 96, +103, 99,134,159,127,222, 83,115,207,190,125, 55, 26, 58, 75,214,241, 44, 59,247, 97, 50, 45,168,194,179, 23,172,218,119,117,240, +207,211, 2,196,159,246,168,107, 5, 0, 82,177, 8,107,127,125,196, 2, 88,240, 54, 47,213,202,133, 40,242,244,248,196,193,218, +124,222,236,143,122, 89, 5, 52,245,194,165, 91,161, 88,119,240,198,101, 89, 10,118, 26,156,169,121, 61, 94,215, 77,101,205, 34, + 4, 95,249,120, 74,142,163, 14, 82, 99, 75,232, 94, 94, 0,116,106,168, 53, 58,196,166,115,136,205, 80, 67,172,148,226,110,100, +156,202, 58, 9,199,171,251,206,132, 16,226, 95, 75,225, 52,111,241, 74, 23,181, 42,143,205,201, 76, 99,165,178,155, 18,165,145, + 60,177, 42, 60, 55,226,168,186,125, 77,105, 19,128,103,100, 10, 90, 48,103,234, 40,227,248,176,211,168, 35, 74, 0,161, 20, 70, + 62,189, 96,106,196, 72,219,122, 72, 99, 0,192,195,193, 92,246,237,215, 95,152, 79,158,249,117,165, 99,188,124, 9,145,214,111, +230, 48,217,207,221, 18,151,131, 35,112,249, 97,244,163,203,119, 31,215,235, 80,223, 9, 94, 46, 22,147,124, 9, 89, 22, 70,171, +110, 17, 45, 76, 24, 22,208,171, 75,102, 17,250,218,147, 97,205, 6,127, 89,230,236,193,242,224, 1,240,145, 28, 5, 97, 24,128, +136, 10,103, 52,198, 94,131,216,162, 22,221,179,255, 72,193,182,109, 59,191, 9, 75,165,130,213, 74,128,128, 74,144,149,149, 21, +162, 84, 42,187, 53,104,208, 96,251,196,137, 19, 77, 71,140, 24,225,244,241,199, 31,139, 0, 32, 57, 57,153, 95,179,102, 77,194, +247,223,127,159,157,150,150, 54, 90,167,211, 61, 52,164,193, 75, 8,185,254,227,143, 63,166, 94,186,116,169, 94,203,150, 45, 21, + 77,155, 54,229, 44, 45, 45,197,114,185,156,211,106,181,234,200,200, 72,254,217,179,103, 78, 89, 89, 89, 79, 0, 68, 85,167,251, +190,200, 90,181,144, 97,152,249,148, 82,191,119, 49, 6, 75,169, 84, 58, 2,120, 74, 8,169, 83,213,238,193, 55, 42,108,177, 24, +153,153,153, 40, 72,122, 4, 69,220, 19, 52, 48, 22,193,215,210, 4,102,102,102,111, 37,134,178,179,179,129,252,120, 92,189,250, + 0, 96, 89,152,155,155,195,220,220,252, 79, 23, 88,229,105,145,127,186, 5,235, 13,212,179, 35,159, 90,202,176,102,108,175,218, + 82, 15, 55, 23,104,226,238,226, 65,108, 30,230,182,108, 30,198,200, 77,213, 99,223,239,219, 52,112, 96, 13, 4,180,110, 70, 60, + 28,205, 39, 45, 91,181,233,179,122,246,228,139, 71,201,116,173, 33, 15,126,148, 66,159,251,216,145,109, 23, 66,226,198,185, 40, + 85,224,121,138, 11, 15, 19,241,240,101,230,182,240, 20,250,188, 42, 47, 81,207,137,116, 22, 67,180,143, 82,170, 48, 55, 54,206, +109,212,176,174, 77,231, 86, 13, 69,221,219, 55,133,148, 1,174,222,126,128, 41,171, 14,221,228,121,218, 43,216,192,238,193,194, + 25,131,175, 10,167,194, 25,131,250, 87,102, 12, 82, 74,105,225, 44,194,138,135,117, 49, 12, 73, 42,136,190,227, 32,177,246,132, + 42,234, 2, 94,102,242,136, 78,201, 69,142,216, 1,154,248,120,128,242, 49, 23, 41,173,118,110,182,177,177,177,171,233,235, 85, +123,253,142,131,208, 21,100,227,249,197,237,200,203, 76,196,162, 31,126,173,237,226,226,210, 62, 46, 46,238, 82, 21, 10, 25,175, +115,199,247,216,129, 2,140, 68,142,223, 54,238, 71,154,181, 17,108,148, 82,240,170, 84,140,157, 60,194,188, 71,151, 17,230, 0, + 16,253,248, 62,220,149, 42,131,120,117,214, 8, 28,220,193,219, 2,122, 21,118,156,186,175, 22, 1,221,119, 6, 61,138,234, 80, +215, 66, 49,216,223,221,114, 97, 66,214, 0, 84,211, 25,104,177, 5,171,196,162, 87,141,217,131, 7, 40,229,124,108, 73,212,190, +235, 41,198, 3,187, 52, 81, 74,197,132,208,188,120, 80, 35, 27,108,218,113, 32, 79,166,199, 22,161,234, 20, 32,192, 48, 20, 20, + 20, 4, 19, 66,234, 79,159, 62,125,216,156, 57,115,218, 25, 27, 27,215, 4,128,252,252,252,231,122,189,254, 50,128, 61, 85,153, +237, 87, 36,152,158, 18, 66,158,191,120,241,194, 97,247,238,221,230,248,221, 31,163, 10, 64, 54, 10, 29,102, 86,123, 6, 97,177, +152, 34,132,204,127,135,162,225, 68, 17,103,157,234,220, 47, 18,137, 56, 66, 8, 8, 33,144,203,229,184,114,229, 10, 6,245,234, +130,240,223,178,224,103, 97,130,230,163,199, 98,223,153, 51, 96, 24, 6,132, 16, 48, 12, 83,165,122, 68, 44, 22,227,234,213,171, + 24, 57,116, 32,228, 98,192,220,220, 28,211,167, 79,199,209,163, 71, 33, 22, 11,171,233,253, 33, 2, 11, 4, 11,207,108, 95, 34, + 5,167,199,177,237, 43,112, 60, 52, 79,251, 56, 21,115,189, 83,177,230, 32,114,249,212, 85, 59,199,157,185, 26,186,252,195, 33, +189,149, 29, 59,116, 65,199,128, 14,226,122,205,218,207, 3,176,182, 84, 69,221,185, 34, 95, 25, 28,143,111,182,156,138, 24,187, +239, 98, 36,129, 46, 23, 67,186, 54,163, 28,143,111, 42,169,252,223,224, 52, 55, 50,217,119,245,198, 13, 75,232,242,240,242,254, +121, 69,141,154,181, 1, 78,135,167, 79,159,224,251, 29,135,249,139,183, 31,255,172,101, 49, 49, 42,131,230, 27,202, 89,168,168, + 88,152, 27,203,188,123,248,153,159,228, 65, 97,161,148,214,165, 60, 7, 11,165,164,110, 87, 31,227,147,148, 82,106,106, 36,169, + 75, 57,125,165,156, 42, 45,187,121,199,143,219, 86,142, 25, 51,198, 56, 45, 46, 9, 9, 57,161,200,147, 57, 67,175,116, 69,212, +253,203,170, 2, 13, 91,105,229, 93, 81,124,166,165,165,165, 4,223,202,192,190, 31,150, 66,175,213, 32, 37,174, 80,163, 38,164, +229,192,204,198,249, 70, 85, 56,117, 44,159, 29, 56,226, 19,169,145, 41,140, 70, 6,246,150, 69,165,107,208,216,201,180,176,176, +200, 75, 69,248,217,171, 8,200, 47,212,107,207, 98, 69,112,111,232,100, 80, 56, 77, 21,210,137, 61,154, 56,227,121, 76, 34,174, + 60,138,223,241, 44,157, 38,212,178, 38, 59,162, 18,178,198,245,109,233,134,213, 71,195, 62, 47, 79, 20,149,199,233,107, 79,134, + 1,240, 47, 28,228,174, 2, 5,252,125,237,201, 48, 67,102, 14,150,197, 41,150, 98,248,202,147,209, 95, 30,184,147,214,119,198, +240,182,102,173, 91,247,148,129,213, 34, 87,165,209,135,101,210,156,183, 73,163,183,176, 78, 10,156, 2,231, 63,146,179, 72,236, +252, 92,180,189, 75,206,248,162,237,157,189,123,233,238, 64, 74,169,184,200,122, 85,225, 32,247,202, 56, 75,119, 7, 82, 74, 79, + 20, 89,175, 42,180, 98,189,206,201,243,124, 66,211,166, 77,173,250,244,233, 3,142,227,240,228,201, 19, 68,199,198,162,243,184, +207, 97, 97, 97,129,203, 33, 33,120,252,248, 49,230,207,159, 15,189, 94,143, 35, 71,142,196, 85,198, 41, 22,139,117,181,107,215, +150,246,235,215, 15, 44,203,226,217,179,103,136,143,143,199,148, 41, 83, 96,110,110,142,224,224,224, 18,206,180,180, 52,136,197, + 98,221,159,145,151,254, 59, 2, 11,224,192,233,145,125,102, 1,214, 94,129, 78,167, 71,221, 71, 41,180,116,159,246,166, 6,214, +228, 88, 72,104,196,243,224,107, 29,101, 72,121, 88,120, 79, 21, 16,153, 70, 19,155,185,138,115,161,203, 53,195,179,147,120,145, +156,155, 23,153, 70, 19,171,250, 18,148,231, 8,116, 5, 64,226, 93, 92,191,124, 9, 23,111, 62,192,157,135, 17,220,245,224,200, +125, 34, 30,223,132,165,209, 39,213,104,117,192,164,215,106,140,122,248,212,173,153,151,189, 27, 56, 22,148,215,195,124,200, 30, +140, 14,107,237,214,172,150,133, 91,161,229, 74, 15,203,143,206, 3, 43, 21, 21,242,221,137,209,109,241,175, 41, 31,144,155,149, +222,178, 83,251, 86,198,230, 62, 61,144,246, 52, 18, 79, 30, 92, 85, 5,135, 70, 93,191, 19,163,123, 43,235,136,179,179,115,187, + 78,237,189, 49,100,236,108,232, 10,178,241,236,226,143,200,203, 72,194,149, 27, 38,136,200,201,105, 5,192, 96, 11,214,245,104, +125, 61, 0,240,247,144,198,152, 66,227,240,126,239, 62,144, 19, 53,120, 77, 14, 72, 65, 26,162,226,181,217, 3,126,136,229, 0, + 64, 41, 39, 98, 99,154,109,102, 8,175,175,187,181,167,146,209, 99,231,153, 71,224,249,194,101,150,120, 30,155,118,158,143, 26, +247,205,200,198,240,117,179,108, 72,138,156,159, 24, 92,104, 82,180,189,179,239,235,186,234,115,243, 0, 94,135,171,147,172,234, +182, 93,155,209,182,186,150,176,135,241, 52, 30,192, 56, 31, 39,178,121,210,218, 83,243,154,158, 9,243,159,246, 81, 95, 51, 80, + 97, 97,116, 1, 2, 4,252,249,200,203,203, 27, 59,122,244,232,205, 18,137,196, 22, 0,225,121, 30, 60,207,139,151, 47, 95, 46, +225, 56, 78, 36, 18,137, 56,134, 97,216, 19, 39, 78,232, 57,142, 75, 85,171,213, 99, 43,227,100, 89, 54,106,252,248,241,181, 43, +155,113,184,119,239, 94,136,197, 98, 29,203,178, 81, 66, 74,188, 75,129, 69,241,117,155,145, 11, 22, 0, 32,160,248,234, 53,113, + 5, 0, 8, 73,167, 9,245,236,200,148,122,205,218, 47, 40,190,167,170, 1, 80,115,220,192,102,245,189,246, 2,128,134,114, 35, +171,243, 18, 57, 26,213,224, 70,205, 90,237,227, 41, 21,179,148,110, 19,241,248, 69,205, 34,220,144,153,115,229, 33, 33, 37, 43, +184,120, 1,103, 30,244,247,110,193, 34,119, 12,148, 82, 90,210, 45,184, 66,129,180,108, 77,165,126,156,174, 62,215,116,105,230, + 38,253, 36,232,218,253,177, 28, 71, 29, 24,134, 36,169,180,236,230,183, 21, 87, 0, 16, 23, 23,119,201,215,142, 4,133, 52,180, +239,106,163, 44,178,106, 21, 0,105, 5, 8,138, 75,201,189, 84, 29,206,204,124,125,223, 57,107,142,254, 42,147, 48, 98, 80, 90, +232, 8,148, 82,168,117, 92, 70,177, 8,107, 96, 77,156,166, 31, 97,247, 50, 12,137,174,140,239,214,227,196,213, 67,150,157,253, +226,209,203,204,109, 47, 50,105, 40, 0,188,200,164,161,117,172,201,188,168,164,220, 47, 66,163, 51, 87, 84,117,220, 4, 37,184, +210,108,200,130, 55,142,189,109,124,134, 39,208, 7, 0,250,215,179, 35, 93,134, 76,251,126, 26, 33, 16,150,137, 16, 32,224, 63, +132, 98, 43,150, 72, 36, 90,248, 14, 57, 79, 16, 66,122, 2,120, 90,133,123,110, 1,168,255,142,223, 45, 29, 64,186,144,202,127, +145,192,122,148, 66, 55,193,128,197,156, 13,189,174,220,251, 19,232, 89, 0,214,111,243, 18, 69, 28, 86,239, 50, 98, 66,146,233, +188, 63, 34,194,139,196,212, 31, 50,150, 39, 44,133,118, 3, 0, 47, 47, 47,250,228,201, 19,188,173, 23,220,240, 84,250, 0,175, + 45,185, 80,150,200, 6,208,214, 16,190,200, 52,250, 13,240,102, 23,240,211,116,186, 8,192,162,106,189,115, 53, 61,181, 27,156, +183, 82,232, 25,160,114,111,250, 2, 4, 8,248,119,138,172, 63,128,243,132, 16,179,255,113,129, 37,224,159,139,200,200, 72, 34, +196,130, 0, 1, 2, 4,148, 11,238, 15,224, 20,156, 14, 11,120, 5, 34, 33, 10, 4, 8, 16, 32, 64,128, 0, 1, 2,222, 45, 8, +128,206,101, 74,241, 42,204, 14, 32,132,116,174,178,212,175,132, 95,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,127, 31,103, +101,220,255,154,217,137,180,212,224,229,119,189, 1,232, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249, 95,219,132, + 46, 66, 1, 2, 4, 8, 16, 32, 64,128,128,119, 12, 65, 96, 9, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, + 8, 16, 32, 64, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 80,125,144, 42,174, + 76, 34, 64,128, 0, 1, 2, 4, 8, 16, 32,192, 16,129, 85,180,190,110,241, 58,187,130, 23,112, 1, 2, 4, 8, 16, 32, 64,192, +159, 43, 72,254,101, 90, 68, 16, 88, 2, 4, 8, 16, 32, 64,128, 0, 65, 96, 9, 2, 75,128, 0, 1, 2, 4, 8, 16, 32, 8,172, +191, 55,138, 7,185, 7, 16, 66, 40,128, 0, 33,137, 5, 8, 16, 32, 64,128, 0, 1,127, 1,254, 85, 90,164,100,144,187, 96,189, + 18, 32, 64,128, 0, 1, 2, 4,252,165,162,228, 95,164, 69,132, 89,132, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64, +128, 0, 1, 2, 4, 8,248,123,227, 15,117, 52, 74, 8,233, 44,112, 10,156, 2,167,192, 41,112, 10,156, 2,167,192, 41, 8, 44, + 1, 2, 4, 8, 16, 32, 64,128, 0, 1,130,192, 18, 32, 64,128, 0, 1, 2, 4, 8, 16, 4,150, 0, 1, 2, 4, 8, 16, 32, 64, +128, 32,176, 4, 8, 16, 32, 64,128, 0, 1, 2, 4, 8, 2, 75,128, 0, 1, 2, 4, 8, 16, 32,224, 47, 2, 1, 80,230, 76, 0, + 74,233, 89,131, 73,170, 49,155,160, 50,126,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,125,156,149,113, 87, 69,127,252, +173, 65, 41,253,195, 54, 0,157, 5, 78,129, 83,224, 20, 56, 5, 78,129, 83,224, 20, 56,255,107,155,208, 69, 40,192, 80, 43,165, + 61, 33,196, 94,136, 9, 1, 2, 4, 8, 16, 32,160,114,136,223, 37,153, 15, 33, 29,199, 55,176, 63,240,217,131, 36,171,202,174, +181,179,179,219,172, 84, 42, 71, 20, 20, 20,228, 19, 66,248,210, 22, 53, 0,165,221,203, 63, 75, 73, 73,105, 91, 25,159, 92, 46, + 95, 99,111,111,255, 81, 94, 94, 94, 1, 33,132, 18, 66, 64, 8, 41, 22, 7,175,252,114, 28, 23,151,150,150,214,244, 31, 45,120, + 0,198,198,222,254,182,132, 97,156,171,122, 47,199,243, 47,146,147,146, 90, 85, 65, 92, 45, 37, 4, 51,138,254,127, 71, 41,157, +253, 47, 84,144,140, 33,151,249, 1,166,145,192, 16, 78, 36,250, 92, 2,108,208,240,252, 15, 69, 25,151,171,238,163,181,183, 73, +109, 66,209,144, 16,152, 83,138,108, 74,240, 64,214,156, 70,253, 69, 66,186,165, 68, 34, 25,108,105,105,105,154,146,146,114, 14, +192,175, 0,222,179,179,179,235,148,153,153,153,171,215,235,247, 83, 74,111, 86,135,187, 93, 35, 50, 83, 38,149,124,168,214,233, +191,189,122,159,254, 24,208,132, 88,179, 60,150, 41,164,226,182, 26, 45,251,221,149, 7,116, 91, 21,195, 74, 94,179,198, 87,121, + 89,138,131, 6,166, 59, 0, 28,177,180,244,146,219,154,157,147,200,152, 23, 89,201,121, 35, 6,166,164,196, 14,124,139,116,255, + 59,194,214,214,118,148, 72, 36, 90, 76, 41, 5,199,113,115,211,211,211,183,191,163,124, 53, 12,128,113,209,110, 62,165,116, 79, + 21,238,141, 6,224, 86,180, 27, 67, 41,117,175,232,184,128, 42,167,205,166,195,135, 15,143,235,208,161, 3, 86,175, 94,141, 77, +155, 54,189, 76, 77, 77, 93, 6, 96, 7,165, 84,251,103,243, 8, 2,171, 12,248, 18, 82,127, 76,247, 86,191,141, 29,212, 93,102, +192, 71,252,191,238,221,187,143,220,177, 99,135, 36, 50, 50,210,200,195,195, 3, 34,145,168, 68, 0,149, 46, 39,107,212,168,193, + 87,198,199, 48,204,218,254,253,251,143, 62,120,240,160, 50, 56, 56, 88,233,227,227, 83,194,199,243, 60, 94, 47,119, 61, 60, 60, + 42,228, 51, 55, 55,191,203, 48,140, 75, 89,226,172,188,255, 28,199,197,165,167,167, 55, 53, 32, 19,118, 3, 48,203,128, 40, 93, + 70, 41, 61, 93,209, 5, 18,134,113, 78, 72, 72,176,171,106, 90,185,186,186,234,170,240,209,216, 19,130, 25, 60, 79, 69, 0, 32, + 18,145,153, 70, 70, 70,155, 84, 42, 85,108,241,249,162, 52, 75,174, 74, 24, 92, 92, 92,122,240, 60, 63,172,144, 83,180, 39, 46, + 46,238,100, 85,238, 55, 51, 51,187, 43,147,201, 92,196, 98, 49, 41, 43, 93, 94,223,231, 56,142,234,116,186,184,140,140,140, 42, + 11,235, 75, 0,233, 14,180, 99, 25,102,178,181,141, 77,219,224,160, 32, 99, 63, 63, 63, 17,195, 48,179, 1,252,240, 54,223,141, +246, 54,169,205,233, 49, 72,165,151,247,150,187,127,229,165,137,254, 42,210, 72,162, 57,174,189, 77, 14,252,217, 34,139, 16,210, +253,131, 15, 62, 88,242,237,183,223,218,200,100, 50,209,254,253,251, 91, 77,153, 50,229,195,213,171, 87, 59, 15, 30, 60,216, 84, +171,213,242, 51,103,206,108, 71, 8,249,154, 82,122,180, 42,220,173, 27,145,150,222, 30,142,243, 39,140,232,136, 47,150,238,157, +224, 95,159,164, 25, 25, 75, 55, 13,104, 91,219,162, 94, 77, 75,124,189,249,250, 68, 0,219,170, 16, 86, 34,145, 72, 26, 57, 56, + 56,120,104, 52, 26,174,168,209, 70, 75,149, 9, 0, 0,141, 70,163,203,204,204, 60,241,182,113,243,133, 66,209,162,133,133,201, +153, 5,195, 62, 48,202,201,204,176, 95,251,219,175, 33, 7, 97,215, 96, 32,240,242,223, 84, 33,136, 68,162,197,241,241,241,142, +148, 82, 56, 58, 58, 46, 6,176,253, 29, 81, 27, 23,151,195,132, 16,227, 42,222,235, 86,234, 94, 55, 3,142, 87, 39,239, 43,196, + 34,209,120,153, 68,210,149,227,184,250, 69,121,232,161, 86,175, 63,195,242,252, 6, 74,169,250, 95,172, 3,102,140, 27, 55,174, +203,156, 57,115, 60,102,204,152,129, 25, 51,102,212,216,186,117,235,230, 37, 75,150,204, 36,132, 52,160,148,230,253,201, 60,130, +192,122, 77, 92,185,118,107,228,117,241,243, 15, 6, 73,249,131,107, 8, 70,125, 89,161,184,106,213,180,233,135, 59,118,236, 0, + 0,140,232,219, 23, 93,155, 55,135,169,137, 49,100,178,194,224, 16, 74, 32,149, 72,209,111,202, 84, 67, 62,140,239, 2, 3, 3, +135, 31, 60,120,208, 4, 0, 54,109,218,132,192,192, 64, 88, 89, 89, 65,169, 84, 66, 42,149, 66, 34,145,188,242,107,128, 96,115, +137,143,143,183, 83, 40, 20, 37,130,143,231,249, 87,182, 82,253,208, 96, 89, 22,158,158,158,134, 70,215,172,236,236,236,118,249, +249,249, 21,246,221,214,172, 89, 19, 0, 78, 27, 66,184,120,209, 55,224,217,124,136,197, 0,203, 2, 26,157, 8,124, 25,109,121, + 39, 39, 39,140, 31, 63, 30,111,179,254,100,239,222,125, 64, 41,221,228,236,236,124, 60, 57, 57,217,143, 16,140,173,142,101,139, + 82,250,254,211,167, 79,149, 60,207,195,219,219,123, 36,128, 42, 9, 44,177, 88,236, 18, 18, 18, 98, 39,151,203,203,181, 84,150, + 18,191,208,233,116,104,220,184, 49, 91,149,103,216, 3,110, 25, 34,209,199,141,154, 52,249,100,126,223,190, 70,119,239,222,149, +139, 68, 34,176, 44,139,229,203,151,179,148, 82, 11, 95,192, 44, 12,200,169, 32,127,206, 1, 48,170,200, 42,187,141, 82,186,252, +149,243, 20, 13, 85,122,121,239,103,121,253,154,183,168, 49, 19, 97,143, 30, 54,175,101,114, 4,166, 98, 77, 20,128, 63, 85, 96, +153,155,155, 15, 92,189,122,181,237,182,109,219,114, 30, 63,126,172,251,225,135, 31,108,199,142, 29, 91, 87,167,211, 97,220,184, +113,169,222,222,222,210,213,171, 87,219, 30, 62,124,184, 27,128, 42, 9, 44, 49,193, 55, 67,251,118,133, 90, 47,130, 94,207,218, + 58,218,154,254, 60,233,131, 0, 9,165, 90,236, 60, 26, 12, 61,203,255, 88, 69,203, 85,163, 1, 3, 6,184,239,217,179, 71, 28, + 30, 30, 46,246,241,241, 1,199,113, 37, 27,207,243,224, 56, 14, 94, 94, 94,111, 29, 47, 31, 2, 94, 54,246, 86,103, 90,245,236, + 97,228,168,144,195, 42, 51, 21, 99,164, 98,211,237, 74,205, 46, 0,173,255, 77, 21, 2,165, 20, 98,177, 24,177,177,177,176,179, +179, 51,178,178,178, 74, 4,240, 85, 70, 70,198,150, 63, 72,212, 87,219,178,245, 14,195,208, 92, 38, 22,255,178,243,199,181, 14, + 45, 90,183,102,236, 29,237, 16,249, 36, 6, 98,194,117, 14,185, 19, 28,240,225,167,211, 38, 17, 66, 6, 80, 74,111,255,219, 4, +128, 99,155,207,250, 59,250,127,190,137, 80, 30, 95,175,255, 53,119,233,119,107,148,227, 62,254,128,153, 50,101, 10, 92, 93, 93, + 61,250,247,239,255, 29,128, 79, 43,229,105,249, 89,127,135,214, 19, 54,129, 82, 44,248,254,215,220, 37,223,173, 81,126, 90, 13, + 30, 65, 96,189, 6, 63, 66, 44, 26,184,219, 95, 90, 52, 99,172, 9, 61,249,147,168, 32, 61, 5,229, 73, 24, 59, 59,187,205, 61, +122,244, 24,177,125,251,239,141,162, 86,126,126,232,223,209, 31,118,214,230, 80, 26,203, 10,171, 33,158,224,193,227, 23, 6, 9, + 1, 87, 87,215,113,191,252,242,139, 73,105, 17, 33,149, 74, 75,182,210,226,170,120,123,221,210, 81, 22, 20, 10, 5,206,158, 61, + 11,177, 88, 12,134, 97, 32, 22,139, 75,182,210,251, 12,195,192,222,190, 74, 67,147,150,153,155,155, 55,200,205,205, 53,203,202, +202,130,155,155, 91, 14,128,144, 82,231, 27,164,166,166,154, 85,133,144,103,243, 49,101,140, 15, 36,218,155,208, 74,154, 67, 37, +110,131,235,119,194,113,252,244, 37,196, 39, 36,193,191,101, 35,188, 63,108, 32,206,156, 57, 3,142,227,170, 90,224, 38, 19, 66, +190,123,239,189, 62, 51, 1,130,128,128,128,228, 73,147, 38,209,208,208,208,254,131, 6, 13,236,244,228,201, 83, 82,100,217,154, + 65, 8, 89,107,168, 37,139, 82, 42, 5,128,203,151, 47,131, 82, 42,171, 78,222,147,203,229,184,113,227, 6,138,187,131, 69, 34, + 17, 68, 34, 17, 24,134,193,177,167, 54,200,215,138, 80,144, 28,138,207,123,187,161,102,205,154, 16,137, 42, 31,114, 24, 0, 40, +174, 3,253,137, 68, 50,197,209,201,201,163,125,173, 90,202,179,103,207, 50, 0,224,238,238, 78, 19, 19, 19,179,142, 28, 57,146, + 43, 6, 54,185, 83,186,163, 34,113,229,230,230,214, 70, 36, 18, 45, 46,142,115, 66,200,119, 30, 30, 30,243, 75,210,141,231, 49, +172,139,149,100,210,164,201,210, 22, 1,133,141,146, 22,125,246, 32,231,217, 82, 31,146, 49,199,252,207, 46, 12,178,179,179,127, +246,242,242, 98, 82, 83, 83,207, 3,120,174,215,235,215,255,252,243,207,118, 99,198,140, 73,217,181,107,215, 4, 0,174,203,151, + 47,239,150,151,151,183,175, 42,188,109, 27,146,158, 77, 27,249,181,116,115,117,197,165,235,183, 33,149, 73, 44,198,143,234, 13, + 19, 19, 49, 86,108,251,141,143,142,203,152,112,229, 1,221, 81, 5,113,213, 96,224,192,129,174,123,246,236,145, 2, 64,104,104, + 40, 82, 82, 82, 96,109,109, 13,133, 66, 81,242,205, 23, 91,177,222, 86, 92,153,187, 90,223, 58,114,228,168,145,149,149, 5,214, + 79,157,132,247, 19,226, 96,198,136,160,215,195,227,223, 84, 25, 16, 66,188, 6, 12, 24,160,224, 56, 14,249,249,249,184,120,241, +162,185,145,145,145,185,139,139,203, 2, 0, 6, 11, 44, 35, 35,163,100,181, 90,109, 87, 84,142,166,168, 84, 42,123, 0, 5, 10, +133,194,168,232, 18, 85, 21, 45, 91, 49,165, 44, 84, 49, 6, 28,175,202, 59, 55,107,222,172,193,217, 67, 7,119,155,100,231, 38, +193,194, 50, 5, 34,100, 99,203,150, 13, 48, 50, 50,195,130, 5,115,196, 47, 58,119,116,238,214,115,192, 89, 66, 72,231,127,157, +200,162,100, 75,231, 62, 35,172,140,148,166, 69,117,137, 30,219,183, 78,130, 72, 36,194,252,249,243, 81,175, 94,189, 79, 8, 33, + 95, 82, 74, 51, 42,166,193,150,250,237, 6, 91,201, 20,133, 85, 49,207,233,241,195,222, 47, 10,121,102,143,197,208, 62, 53, 63, +121,176,139,156,170, 87, 11,185,133,229, 63, 84, 18, 17, 98,208,156,166,148, 74,139,246,148,210, 75,229,237,255, 35, 5, 22, 33, +132, 82, 74, 75,119,179,188,178, 95, 17,106, 16, 34,247,180, 52, 57,189,241,171, 73, 78,204,141,223,196,170,152,167, 72, 80,115, +176,248,189, 18,125,101,170,165, 82,169, 28,177,125,251,246, 87,244,151,155,189, 29,164, 82, 9, 36, 82, 2,139,182,189, 1, 0, + 89, 87,142,131, 16, 90, 94,197,252, 10,103,126,126,190,250,254,253,251, 38,219,182,109,131,157,157, 29, 60, 60, 60,160, 84, 42, + 75, 10,218,210, 91,177,208,122, 93, 96,189,206, 89,124, 94, 44, 22, 67, 36, 18,225,204,153, 51, 96, 89, 22, 3, 7, 14,124, 67, + 92,137,197,226, 50, 5, 91,121,211, 76, 41,165,167, 9, 33, 33,148,210,118, 69, 21,111, 8,165,180,125,169,103,119,179,181,181, +157, 5, 96,153,161,156, 12, 67,193,168,175,131,119, 89, 3,113,236, 36,104, 37, 13,113,225,106, 48,182,111, 94, 13, 0,240,168, +219, 12,131,250,247, 46,177,190, 25,194,249, 74,235,196,209,113, 71, 74, 74,106,227, 14, 29, 58, 32, 59, 59, 91,187, 96,193, 2, + 52,104,208, 0, 94, 94,222, 6,165, 81, 57, 5, 91,218,131, 7, 15, 28,213,106, 53, 8, 33,105, 6, 8,178,179,101,112,224,231, +159,127,134, 90,253,166,245,222,178,253, 18,124, 17,232,142,209,159,239,192,119,143,247, 99,227,198,141, 21,190,187, 18,104,160, + 54,175,179, 86,198,176, 13,190,157, 59, 65, 62,114,228, 72,102,244,232,209,136,137,137,193,152, 49, 99,212,103,206,156,209, 38, + 37, 38, 30,149,241,252,122,221,171,130,184, 92, 78,185, 92,190,243,244,233,211,216,191,127, 63, 0, 32, 50, 50, 18,158,158,158, +175, 84, 34,124,198, 1,228, 70,175,199,173, 99, 17,104,209,103, 15,110, 29, 27, 6, 46,235, 55, 73, 83, 79,100, 87, 37, 62,171, + 97,169, 56, 91,198,177,139, 0, 46,150,138,223, 47,119,237,218, 53, 8,192, 33, 74,233,117, 0,215, 1,236,173, 10,103, 33, 17, + 70, 15, 14,236, 7,177,212, 20, 17, 79,227,208,190, 85, 99,216,219,217, 33, 36, 60, 10,209,241, 25,201,132, 96, 84,247, 54,242, +101, 42,149,246,203,203,247,233,255, 42,227,116,117,117,173,121,224,192, 1, 73, 41,139, 51, 24,134,121,165, 65, 85,124,172,186, +249,179, 88, 92,153,186,152,220,250,102, 67, 27,227, 91, 15,119,193,211,189, 39,204,186,245,196,170,189,123, 16,151,150,173,102, + 11,216, 78,127,118, 26,253, 81,156,132, 16,175,192,192,192,235,187,119,239,182,136,141,141,197,229,203,151,225,225,225,129,130, +130,130, 74, 27,186,175,115,170,213,106,187, 82,162,169,120, 8,195, 94,141, 70, 83, 92, 80,210,170,132,179,188,177, 85, 85, 29, +115, 85, 70, 57, 47, 83, 72,165, 7,142, 28,218,107, 18, 22,113, 25,141, 26,182,132,137,185, 47,120, 46, 9,233, 25,121,200,124, +154,128, 69,139,190,195,130,175,230,226,215,195, 7, 77,188,125, 26,254, 66, 8,169, 83,186,187,240,159,158,238, 32,244,147,179, +199,118,109, 34,148,135, 42, 57, 66, 46,201,127,174, 28, 49,108, 0, 51,100,200, 16,252,250,235,175,120,244,232,209,166,242,196, + 85,105, 78, 66,241, 73,232,229,253,155, 64, 41, 84, 41, 17,114,169,234,185,242,131,225,131,152,247,135,118,197,205,243,107,209, +181,209,243, 80, 39, 59,244,207, 44,234, 36, 20, 51, 72,151, 43,112,205,232, 54,185, 89, 74,100, 93, 44,106, 67, 21, 11,171,139, + 40,116, 37,245,207,183, 96, 85, 69, 88, 21, 93,207, 52,145,137, 15,253,184,224, 51, 63,197,203, 80,169, 38,244, 6, 18, 52, 60, +221, 22,195,102,174, 41,231,158,130,130,130,252,168,168, 40,163, 81,253,251,163,181,159, 31, 28,173,173, 81,199,197, 5, 70,114, + 25,100, 82, 73,169,242,184, 74, 45, 16,234,237,237,141, 62,125,250, 64, 34,145, 64,169, 84,194,196,196, 4, 50,153,172, 76,235, +149, 68, 34, 49,216, 84,206, 48, 12, 66, 67, 67, 17, 29, 29, 13, 11, 11, 11, 92,187,118, 13,157, 58,117,122,195,138, 85, 90,148, + 85,197, 20,255,122,133, 95, 44,192, 96, 96,215, 96, 49, 56,142, 32,143, 54,132,226,229, 4, 20,144,198,208,104, 88,104, 52, 26, +252,239,170, 14,183,163,242,161,211,105,161,209,104,202,125,102, 69,214, 2, 7, 7,135,254,117,235,214, 29, 49,108,216, 48,173, + 68, 34, 65, 65, 65, 1, 10, 10, 10, 16, 30, 30,174,237,218,181,107,242,123,239,245,177, 63,126,252, 56,165, 20,223, 85,101, 28, + 22,165, 52,211,201,201,201, 81,161, 80,128, 82,154, 89,205,214,103,137,120,121, 29,163, 86,133, 65,204, 20,166,201,166, 77,155, +192,113, 28, 42,202,223,106, 66,206,125,181,100,165,249,183,107,126,132,185,149, 61, 46, 93,186,196,157, 58,117, 42,151, 0,145, + 79, 30, 61, 90,245, 30,112,226, 0,160,171, 74,248, 50, 51, 51,141, 60, 60, 60,224,226,226, 2,158,231,161,215,235, 17, 18, 18, +130,164,164, 36,164,167,167, 67,165, 82,193,202, 56, 11,181,173, 93,192,230, 94, 68, 98,232,215,112, 52,137,192,142,211, 90,125, + 19, 47, 60,248,203, 27,183,148,158, 0,112,226,237,137,224,108,231,224, 10, 17,213, 35, 33, 37, 29,253,122,117, 5, 35, 53,193, +139,216, 52, 52,244,173,229, 56,252,189, 54,142, 12, 97, 49, 99,217,158,241, 0,254, 87, 25, 93, 65, 65, 1, 23, 30, 30, 46,121, +240,224, 1, 24,134,129,153,153, 89,201,112,128,210,226,202,144,225, 0,149,137,171, 37,155, 58, 25,139, 36,249,200,225,206,226, +135,159,110,194,211,173, 19,182, 71, 60, 81,139,179,242, 58,175, 80,171, 35,255,209,221, 67,142,142, 99,121,158, 95, 64, 41,205, + 10, 12, 12,180,223,179,103,143,101,124,124, 60,130,131,131, 49,127,254,252, 84,142,227, 88, 74, 41,161,148,126,253, 14,242, 18, + 95,218,178,101,100,100, 84,108,217,202, 47,101,185,202,175, 70, 25, 32, 81, 42,240,185,141, 25,233, 43, 22,153,121,176, 57,121, + 47,210,180,244,104, 1,203,127, 79, 41,213, 87,116,175, 72, 36,250,232,224,190, 77, 78, 54,182, 60, 2,108, 59, 34, 49, 89,135, + 37, 83, 63, 64,122,122, 46,254,183,117, 41, 0, 25,116, 44,131,118, 1, 3, 96,103,231,140, 79, 62,254,196, 97,211,230, 31, 62, + 3,176,226,223, 98,192, 74,188,182,225, 48, 33,228,172,173,173,237,163,207, 62,249,196,214,195, 99, 36, 20, 10, 5,246,238,221, +139, 61,235,215,115,107,128, 65,155, 9,185, 48,150,210,195, 21,242,220,252,157,103,210,184,113,182, 62, 62,227, 32,151,203,113, +254,212, 79, 80, 39,253,156,219,171, 53,116, 5,106,244,170,209,135, 90,189, 60, 70, 50, 36, 18, 60, 5, 0,137, 2,137, 18, 32, +229, 53,186,127,188,176,122, 67, 96, 85, 21,181,164,202,235, 91,167, 14,110,108,203,171,196,218,171,199, 16,175,225,217,229, 79, +117,186,187, 89,116, 68, 5, 25,154,119,115,115, 67,199,166, 77,209,191,109, 91,136,197, 98, 40,100, 82,152, 42,140, 64,185, 66, +203, 85,113, 23,161,161, 90,175, 88,216, 88, 91, 91, 67, 42,149,150, 8, 43, 67,173, 87,229,113,242, 60, 15,177, 88,140,144,144, + 16,248,251,251,195,213,213, 21,251,247,239, 71,183,110,221,222,232, 50,172,170,184, 42, 22, 88,165,187,235, 74, 13,126,175,116, +112,251, 27,226, 64, 75,144,166,109, 8, 66,252,192,178, 0, 71, 1,141, 90, 13, 74, 1, 74, 1,189, 78, 11,181, 90, 93,242, 76, + 67,186, 94, 93, 92, 92,156, 60, 60, 60,166,206,154, 53,163, 78,131, 6,141,144,150,150, 6,158,231, 97, 98, 98,130,130,130, 2, +152,153,153,161,117,235,214,247, 22, 47, 94,156, 65, 41,102, 85,117,144,251, 59,232,206, 0, 0, 4, 5, 5,189,210, 61, 88,188, +229, 39,198, 97,244,196, 93,144,137,129,144,144, 16,212,173, 91,183, 50,113, 41,234,208,174, 13,174,223,139,100,199, 76, 95,163, +145,164, 7, 47,115,224,249,237,113, 64,242, 91, 84, 42, 72, 75, 75, 67,114,114, 50,250,246,235,135, 61,187,119,227,229,203,151, +240,245,245, 69,135, 14, 29, 96,103,103,135,151, 47, 95,226,246, 21, 13, 52,153, 25,200,208, 6, 67,105,218, 2, 71, 46, 69,105, +230,109,212, 70,253, 85,133, 2, 33,164, 25,128, 49,230,230,230, 53, 10, 10, 10,146,244,122,253,254, 34,209,223, 77, 34,145, 12, + 86, 42,149, 14,217,217,217, 47, 1,252,143, 82,122,167,210, 46, 35,133,194, 90,174, 48, 3,207,106, 32, 22,139,225,234,234, 1, +202,105,145,153,163,194,168, 33,125,112, 47, 36, 28,167, 46,220,100,245,122,126,157,161, 97,244,242,242, 66,122,122, 58, 24,134, +129, 82,169,132,177,177, 49,188,189,189, 17, 27, 27, 91, 34,174,170,219, 69,248, 33,224,101,230,102,114,115,241,134, 66,113,149, +148,144,136,248,151, 20,114,153, 12,155,183,108,202, 47, 72,202,108,241, 35, 16,249, 79, 47,252,121,158,255, 58, 62, 62,222, 78, + 44, 22, 59,176, 44,139,216,216, 88,220,189,123, 23, 19, 38, 76, 72, 78, 79, 79, 15,160,148, 86,235, 29, 21, 10, 69, 74,177,229, + 74,161, 80,164, 84,100,217,122,155, 49, 87,132,144, 90, 30, 46,166,103,182,174,158,226,214,172, 69,107,145, 82,108,150,153,247, + 52,201,255,234,229, 75,173, 39,172,254,223,103,132,144,174,148,210,103,229,221, 47,151, 72,122,180,108,211, 70, 12,154, 12,177, +204, 31,223,125, 59, 4,169,105, 57,200,204,200,133, 84,106, 12,173,158, 1,199, 19,180,246,111,139,159,118,236, 67,189,143,199, + 48, 50,137,164,203,191, 73, 96, 21, 97,233,247,223,127,239,230,237,237,141,237,219,183,227,194,206,157,120, 63, 59, 27,151, 68, + 34, 70, 47,145,216,156,208,235,183, 0, 56,108, 40, 79,189,122,245,240,227,143, 63,226,231,159,127,142, 25,209, 41,229,151, 41, + 35, 96,167,211,161,123,240, 99, 88,213,232, 3, 4, 63,134, 85, 19,111,212, 97,197,120, 74, 8,140, 94, 75,211,246,165,127,255, + 13, 2, 43,128, 20,246,199,149,252, 86,118,147,177,189,247,176,221, 35,187, 52,245,173,233, 34,210,239, 95,139,248, 2, 86, 61, +255,177,142,127,156, 75, 7,132, 85, 32, 14, 68, 34, 17,101, 24, 6,166, 70, 70,176,181,176, 40,108,105,138, 68, 0, 15,240,122, +128,112,133, 31, 31,229, 9,170, 50,249,153,231,121,200,100,178, 50, 7,180, 87,117,236, 85,105,206,220,220, 92,188,120,241, 2, +159,124,242, 9,148, 74, 37, 0, 32, 41, 41, 9,238,238,238, 16,139,197,136,143,143,199,249,243,231, 81,179,102, 77,200,229,242, + 42,169,172, 82,214,164, 6,132,144, 75, 0, 26, 36, 38, 38,154, 57, 58, 58,162,202, 22, 44,158,162, 64, 67,160,213,114,120,242, +228, 9, 18, 18, 18,240,226,249, 83, 52,203,207, 1, 5, 3, 74,105,149, 44, 88,142,142,142,222,158,158,158,139,151, 46, 93, 42, +113,117,117, 5,207,243,176,178,178, 64,126,190, 10,233,233,233,240,245,245,133,171,171, 43,190,251,238, 59,160,176,251, 40,249, +175,202,192,197,179, 69, 75,255,138, 68, 34, 76,124,207, 13, 25, 25, 38, 96,152,223,103,147, 86, 50, 6, 75, 10, 0, 1, 93, 3, +197,103, 78,157, 48,102,129,133, 73, 12,179, 80, 92,121, 58,234, 57,158, 87,150,119, 62, 54, 54, 22, 18,137, 4, 7, 15, 28, 64, + 70,114, 50, 26, 54,108,136,230,205,155,227,233,211,167,184,119,239, 30,172,173,173, 97,235,210, 10,151,158,235, 16,150,160,130, +185,185, 57,162,226, 68,127,217,212,127, 66, 72,239,206,157, 59,175, 95,181,106,149,131,131,131,131, 36, 53, 53,149,221,176, 97, + 67,183, 13, 27, 54,132,125,246,217,103,190,159,125,246,153,165,173,173,173, 56, 41, 41, 73, 63,117,234,212,110,132,144, 89,148, +210,189, 21,150, 23,198,166, 86,140,212, 24,132,136, 97, 97,110, 9,177,204, 24, 60, 43, 6,199, 3,102,230,182,184,126,239, 32, +174, 61,204, 29,155,146,142, 3, 6,124, 55,212,218,218,154, 50, 12, 3,107,107,235, 87,186, 6, 1,192,222,222, 30, 57, 57, 57, + 96, 24, 6, 18,137,164,202, 34,171, 88, 92, 45,217,208,201,132,148, 18, 87,121,105,214,184,112, 58, 60,171, 32, 41,211,255,223, + 32,174,138,203, 56, 74, 41,158, 63,127,142,130,130, 2, 92,185,114, 5, 95,127,253,117,234,235,226,202,222,222,254, 99, 51, 51, +179,175,242,242,242,190, 75, 76, 76, 92, 91, 25,111,145,101,234, 93,230,201,104,188,230,142,129, 16, 34,113,117, 84,156,190,119, +101,151,187, 57,125, 64, 16,253, 9,240, 36,231,145,233, 45,187,118, 61,155,245, 18, 53,222,248, 77,141,230, 99,103,159, 38,132, +120,151,103,201,226, 57,174,177,177,137, 41,128, 20, 4,223,189, 88, 34,174,210, 51,178,161,209, 49,208,104, 9,212, 58, 17, 58, +118,238,142,245, 63,252,140,248,148, 12, 20,207, 48,252,183,128, 16, 98,229,231,231, 55,110,208,160, 65, 88,184,112, 33,206,174, + 90,165,253,148,144, 28, 49, 64,127,227, 56,240,148, 18,145, 1,131,211, 95,231, 89,177, 98,197, 97, 0, 67,151, 77, 64,171,204, + 60,140,114,234, 67,173,106,244, 41,188,118,224, 76, 10, 0, 86,169,103,223, 24,170, 67,138,123,210,170,218,163,246,183, 21, 88, +148,210, 75,132, 16,148,254,173,232, 6, 11, 7,239,246, 95,206,156,180,166, 77,223,206,162,164, 79,253,145,149,163,209,206, 12, +215,139,226, 10,104,255, 48, 3, 45, 47,211, 55,108,192,189,200,194,239,215,197,206, 14, 51,134, 15, 7,101,129,107,143,194,176, +239,236, 89, 12,233,220, 25,198, 69, 51,248, 12,181, 54,149,101,181, 42,109,189,170,170,149, 41, 43, 43, 11, 7, 14, 28, 64,243, +230,205,161, 84, 42, 33, 22,139,209,160, 65, 3,132,135,135,163, 86,173, 90, 32,132,224,200,145, 35,232,223,191, 63,158, 61,123, +134, 86,173, 90,153, 84, 71, 96,133,133,133,153, 81, 74,219, 21, 91, 59,170, 11,141, 70,131,136,136, 8,244,233,211, 7,150,150, +150,112,118,222,131,179,167,119, 65,233,247, 62, 8, 65,149, 4, 22, 33,100, 96,175, 94,189, 36, 34,145, 8, 42, 85, 1,228,114, + 5, 76, 76,204, 96,106,106, 14, 47, 47, 47, 36, 36, 36,160, 91,183,110,186, 39, 79,158,252,156,152,152,248, 91, 85,195,106,111, +111,175,204,205,205,157,228,225,225,161, 40,106,229,118,180,177,177, 89,146,150,150,150, 87,197,194,161, 68, 88, 17, 66,192, 48, + 76,137,192, 18,139, 68,112,116,176, 43,217, 47, 26,127, 70, 42,224,202,137, 79,215,200, 1,192,205,205, 13,235, 55,255, 42,234, +213,171, 23, 38, 77,154, 4,189, 94,143,141, 27, 55, 2, 0,134, 13, 27, 6,157, 78,135, 95,126,249,165,240, 3, 18,139, 43,236, +115,190,123,247, 46,130,131,131,161,215,235,145,157,157,141,147, 39, 79,226,210,229,203,216,123,228, 28, 94, 62,127,138, 6,222, +238, 24, 51,230, 67, 72, 36, 18,236,216,177, 3,254,254,254,127,105,129, 32,149, 74, 63,216,186,117,171,243,246,237,219,179,142, + 30, 61,154,221,162, 69, 11,227, 53,107,214,216,173, 95,191,190,131, 86,171,197,228,201,147, 83,110,221,186,149,223,183,111, 95, +243, 45, 91,182, 56,215,169, 83,231, 61,148, 49, 46,171,168,219,103, 8,128,145, 1,205,205,197, 89,185, 42,240,172, 22,207, 95, +190, 64,118,158, 22, 60,167, 67, 76, 92, 2,242,212, 28,210, 51,114,209,160,113,215,239, 47, 94,188, 56,151, 16, 50,135, 82,122, +188,210, 70, 5,199,225,230,205,155,184,118,237, 26, 46, 95,190,140,232,232,232,146,115,102,102,102, 56,115,230, 12, 58,116,232, +240, 78,196, 85,110,106,161,184,202,138,201,248,215,136,171,162, 50,104,129,163,163,227, 2, 71, 71, 71, 69, 80, 80,144,121,141, + 26, 53,192,178,172,246,117,203, 85, 64, 64,192,151, 91,183,110,117,172, 85,171,214, 4, 0,107,171,251,188,242, 44, 91, 6,224, + 13,119, 12, 34, 17, 62,254,110,211, 56, 27, 83, 89, 76, 2,158,172, 44,242, 5,200, 0, 5, 57,192,197,221, 16,183,153,247, 98, + 66,191,153,150,179,182, 47,252, 24,192,198,242,136,163,158,197, 98,211,166,245,152, 50,121, 20,126,250,223,119,224,121, 49, 52, +122, 6,110, 30, 45,161,209,241, 32, 34, 49, 26, 54,110,138, 11, 23,175, 64, 34, 2, 14,108,223,244,175, 50, 93, 81, 74, 51, 8, + 33, 27,143, 28, 57,242,249,164, 73,147,192,243,188,236,171, 77,155, 84,169,169,169, 75, 81, 5,255, 85,101,240,244,223,180,105, + 83,228,172,245,169,135,167,140, 0,243,242, 24,201, 8,126, 12,171,129, 51, 41, 14,126, 75,208,196, 27, 25,202,178,171,248,203, +175,253,254,227, 45, 88, 37, 99, 83, 42, 82,140, 77,188,106,125, 99,110,101,249, 97,235,102, 62,214, 83, 39,124, 44,121,150,164, +198,233,166, 83,179,127, 93, 61,207, 36,134, 55,158, 28, 77,115,170,100,117,217,119,254,124,201,255,229,123,246,148,121, 46,113, +224, 64,131, 91, 98,229, 89,173,170,106,185, 2, 0,165, 82,105,209,165, 75, 23,116,234,212, 9, 3, 6, 12, 40, 25,115,213,168, + 81, 35,236,221,187, 23,129,129,129,184,127,255, 62, 28, 29, 29, 81,183,110, 93,212,173, 91, 23, 39, 78,156,168,106,198, 6,199, +113,240,243,243, 43,158, 69,216, 32, 46, 46,206,172,186, 9,169,209,104,144,158,158, 14, 43, 43, 43,200,100, 50,180,104,209, 28, +159, 79,108, 1, 27,199, 31,225,231,227,141,252,252,252,146,169,235,149, 65, 34,145,120,213,169, 83, 7,169,169,169, 72, 77, 77, +133,173,173, 45,156,156,156, 96,111,111,143,213,171, 87,211, 53,107,214, 92,226, 56,238,231,164,164,164, 42, 43, 66, 23, 23,151, +102, 54, 54, 54,159,167,164,164, 40, 74, 21,154,138,134, 13, 27,110,118,114,114,218,152,144,144,112,173, 42, 2, 75,167,211,129, + 16,130,223,158, 59, 33, 95, 75,144, 19, 23,140, 73,239,185,191, 34,184, 36, 18,137, 33, 3,117,243,135, 14, 29,106,231,234,234, +130,216,168, 71, 56,120,144, 98,213,170, 85,184,124,185,240, 59,143, 44,106, 16, 20,239,119,232,208, 1, 30, 30, 30, 85,114,110, +201,243, 60, 66, 66, 66,176,231,232, 37, 56,186,251, 32,230, 73, 4,238,157, 56,134, 26,182, 86,168,215,184, 41,244,122,253, 91, +185,208,120, 23,208,233,116, 91, 60, 61, 61,161,213,106,207, 1,216, 26, 18, 18,210, 63, 49, 49,113,245,175,191,254,234, 52,104, +208,160,132, 99,199,142, 77, 1,112, 56, 36, 36,100,244,226,197,139, 59,233, 11,187, 15,222, 0,195, 48, 63, 77,157, 58, 53, 96, +208,160, 65, 68, 42,210,107,131, 78,239, 16,179,172,158, 76,159,179,141,187,120,245,146,136,101,245,100,192,208,169,252,137,243, + 15, 69, 99, 39, 46,231, 26,181,236,133,208,208, 80,135,222,189,123, 47, 2, 80,161,192, 98, 24, 6, 28,199, 65, 34,145,148, 8, +232,178,174,169,138,245,106, 12, 80,203,204,221,228,230,146, 13,157, 77,136, 56,239, 95, 47,174, 0, 32, 45, 45,109, 51,128,205, + 86, 86, 86,201,198,198,198,200,205,205,125, 35,255, 17, 66, 20,222,222,222, 10,153, 76,134,174, 93,187, 90, 57, 58, 58, 70,138, + 68,162,181,241,241,241, 85, 86, 26,101, 89,182,170,235,166,193,210, 22,189, 91,180,109,108,250,216,124,161,169, 66,172,190, 95, + 35, 82, 97, 70, 0,100,107,236,159, 95,143, 30,146, 67, 82,228,141,154,118,104, 2, 51,177,113,239,242, 4,150,136, 97,238,101, +103,102,245,200,201,213,226,234,181, 80, 12, 29, 82, 7, 26, 29, 1,207,139,144,151,175, 1, 24, 9, 68, 0,134, 13,255, 0,148, +136,145,145,156, 0,134, 97, 30,226,223,135,217,227,198,141,235, 49,103,206,156,154, 69,254,171,220,139,252, 87,205, 32,132,212, +167,148, 22, 84,147,167,198,177,189,243,166, 29,189,242, 67,118,175,214,170, 39, 77, 10,231, 68, 89, 53,241, 70,134, 68,130,167, + 98, 6,233,148,190, 50,163, 20,197, 19,190, 74, 79,252,250,199, 11,172,202,224, 89,203,165,123,251,102, 77, 39,206,157, 51,215, +244,201,237,203,152,187,232,123,190, 78,211,110,217, 43, 15,159,202,205, 54,171,209,177, 32, 33,226,190,161,186, 2, 0,186,117, + 8, 68, 3,223,230,111,156,244,239, 80,232, 3,242,234,133,187, 72, 78,141, 55,184,146, 45, 18, 5,101,142,185, 50,100,106,126, + 25, 5, 65, 86,104,104,168, 93, 92, 92,220, 43, 3,218, 61, 60, 60, 64, 8,193,173, 91,183,112,243,230, 77, 12, 29, 58, 20, 98, +177, 24, 18,137, 4,151, 46, 93,202,173,142, 5, 11, 69,179, 8, 9, 33,221, 92, 92, 92,202,156, 61,104, 8,151, 74,165, 66,118, +118, 54, 78,159, 62,141, 58,117,234, 96,201,146, 37,112,114,180,199,220,185,211,192,243, 60,114,114,114, 74,252, 3, 25, 96, 29, +160,197,214, 33,158,231,145,154,154,138,154, 53,107, 98,195,134, 13, 88,189,122,245,247, 9, 9, 9, 85,158,229, 98,105,105,105, +166, 80, 40,198,246,238,221,219,191, 95,191,126,232,214,173,219, 43,231,119,237,218,101,114,248,240,225,153,174,174,174,237,121, +158,223, 20, 31, 31,159, 97, 8,239,143, 63, 22,186, 79, 82,182, 92,128, 89,131,106, 96,228,248, 29, 88,185,242, 16,228,114,249, + 43,149,237,194,133, 11, 43, 20, 47, 60,165,158,210,180,235, 9,211,102,174,176, 91,186,244, 44,206,158, 77,129, 72, 36,130,163, +163, 35, 68, 34, 17, 94,188,120, 1,145, 72, 4,119,119,119,136, 68, 34,196,199,199, 23,143,249,203,132,218, 48, 31,132, 34,145, + 8,106,181, 26,177, 49, 47, 17, 23, 21, 9,147,156, 36,216,154, 41,145,249, 40, 4, 13,198,124, 12,189, 94,255,119,104,209,158, + 1,112,166,212,161,131,132, 16, 61, 33,100, 56,128,125,148,210, 67, 69,199,183,161, 2,199,160, 45, 91,182,108, 52,103,206, 28, + 73,177,219, 12, 39,183,197,172, 78,167,227, 1,192,187, 65,187, 87, 84,254,211,167, 79,177,114,229, 74,228,231,231, 67, 90,133, +145,233,157, 59,119, 46, 25, 19, 41,149, 74, 97, 99, 99, 3,157, 78, 7,150,101,171,220, 53,104,237,238,242,253,173,224, 75,220, +131,168, 31, 84, 15, 31,159, 52,138,123,193, 35, 47,205,230, 95, 43,174, 94,183,100,185,184,184, 44,224,121,158, 82, 74,231,149, + 42, 91,229,110,110,110, 87,130,130,130,172, 89,150,197,186,117,235, 44,146,146,146, 44,218,181,107, 55, 11, 64,185, 2,171, 28, + 55, 13,229,161, 90,110, 26, 56, 14, 94,102,166, 22,200, 68, 28, 52, 54,250, 70, 89,214,108,198,153,196,143,239, 59, 69, 55,246, + 53,230,244, 53, 69, 57, 90, 56, 43, 45,192, 83, 90,174, 35, 52,141, 94,127,242,126,240,189,174,110,174,117,152, 95,143, 95, 70, +223,254,131,160,209,136,160,214, 19, 16, 70, 2,194, 72, 81,191, 65, 99,212,173,215, 0, 20,192,221,219,215, 89,173, 94,127,230, +223,148,246, 78,254, 19,135, 58,249,127,190, 22,148,167,101,248,193,170,217,191,127,255,165, 0, 38, 86,218, 43,209,106,226, 80, +135,214,133, 60,165,253, 96, 77,253,124, 28, 30,221,150,152, 95, 14,254, 86,218,173, 37,126, 75, 61, 75,160, 84,252, 62,139, 80, + 34,170,158,123,141,127,141,192,114,115,115,179,176, 51, 81,254,248,217,152, 15, 77,163, 31,220, 64, 92,200, 13, 92,187, 26,153, +185,251,151,163,241, 57,217,169, 99,170, 32,174, 74,186,243,108, 28,107,160,102, 25, 2,203,200,212, 22, 0, 80,211,183, 57,196, + 49,230, 85,122,145,178,172, 87,213, 17, 87,165, 43,229,178,124, 96,141, 29, 59, 22, 91,183,110, 69,155, 54,109,224,233,233, 89, +210, 82,174,170,149,236,117,107, 82,117,102, 15,150, 70,110,110, 46,220,221,221,177,101,203, 22, 60,124,248, 16,166,166,166, 24, + 58,116, 40,114,115,115, 75,132,149,161,131,220, 57,142,123, 25, 20, 20, 84,127,240,224,193, 84, 44, 22,147,172,172, 44,152,155, +155, 99,195,134, 13, 5,137,137,137, 23,170, 26, 54,103,103,231, 94, 86, 86, 86, 31, 13, 25, 50,132,241,246,246, 70,114,114, 50, +204,204, 76,181,132, 16, 25, 0,152,155,155,107,141,141,141,241,201, 39,159,160,126,253,250,205,103,206,156,217,204,193,193, 97, +103, 82, 82,210, 47, 21,229, 37, 66, 8,246,238, 45,236,157, 26,179, 54, 2, 90,109,161, 64,217,184,113, 35,138,198,178,253,222, + 21, 16, 21, 5, 24, 48, 51,197,196,196, 4,158,158,158,101,166,125,219,182,109,113,247,238,221,194, 46, 72,177, 24,118,118,118, +184,118,237,154, 65,211, 50,139, 29, 56,134,134,134,194,199,195, 6, 15,207, 6,193, 70, 41, 65, 67, 39, 7,184,180,109,143,200, +200,200,191,212,122, 69, 8,233, 11,160, 55,128, 19,148,210,195,132,144,129, 0,186, 21,239,163,138,142, 69, 89,150,165, 34,145, +136,196,198,198,234,148, 74, 37,177,178,178, 18,203,229,114,104, 52,154, 18,161,245,244,233, 83, 28, 63,126, 28,113,113,113,176, +178,178, 18,153,155,155, 67,167,211, 25, 52,163,148,227,184, 55,220, 51, 20, 61,183,202,226,106, 20,224,183,117,241,178, 26,114, + 17, 99,238, 99,211, 29,207, 30, 61, 85,229,165,101, 25,253, 23,196, 21, 0,100,102,102,110, 6,176,185,120,223,214,214,118, 52, +195, 48,115,205,205,205,205, 47, 93,186,100, 97,107,107, 75,118,236,216,161,159, 55,111, 94, 22,195, 48,153,132,144,213, 21,241, +149,227,166,225,109, 4,160,251,155,199, 16,150,150, 29,229, 46,177,116,226, 31,168,233,245,201,177,179,234,102, 74,234,216,146, +122,126,232,159, 18,126,117, 52, 27,213, 58, 57, 49, 73, 68,193,135, 85, 80, 6,111,155, 53,103,225,244,200,136,123,110, 10, 51, + 5,198,142,155,131,223, 78, 93, 0, 17, 73,112,229,250, 45,104,117, 28,210, 50,178, 49,100,216, 8,184, 56,218, 32,236,230,233, + 84,150,231, 55,252,187,196, 53,191,190,107,223,209,150,114, 35,101, 81,156,112,248,249,127,211, 32, 18,173,197,252,249,243,225, +231,231, 55,190,104,229,134,140,138,203, 15,126,125,253,246,195, 44,165,242, 66, 30,202,115,216,114, 96, 86,145, 31,172, 41,216, +176,249,151,250,245, 60,158,127, 85,145, 31,172,255,148,192,170, 81,163,134,220, 88,130, 79,172,140,164, 51, 62, 27,222,207, 54, + 37,234, 17,226,194,239, 21, 42,127,141, 74,159, 24,121,169,161, 1,133,118,231,215,252,111,208,138,186,168,212,234,202, 91,240, +175,115, 22, 87,180,175, 91,175,170, 34,174,202,226, 44, 45,178, 74,251,189,114,117,117,197,210,165, 75, 43,245,131, 85,198,187, + 23, 31,239, 6,160, 65,177,200, 66,225, 32,247,110,134,204, 28, 44,143,211,214,214, 22,233,233,233, 0,128,128,128, 0, 4, 4, +252, 62, 79, 65,167,211,149, 88,173, 76, 77, 77,223,176, 96,149,197,201,178,236,178,195,135, 15, 15,186,113,227, 70,239,105,211, +166,137, 59,118,236, 88,104,191,207,207, 87, 83, 3,214, 94, 43,131,115,248,169, 83,167, 24,158,231,177,101,203, 22, 4, 7, 7, + 83, 99, 99,147,201, 38, 38,166, 59,204,204,204,184,172,172,172,225, 31,127,252,113,191,175,190,250,138,180,109,219, 22, 55,110, +220, 32, 53,107,214, 12, 4,240, 75,101,239,126,235,214, 45,136, 68, 34,176, 25, 49, 24, 63,107, 31,140,141,196,136,136,136, 64, + 70, 70,198, 27,206, 71, 13,137, 79,158,231, 75, 42,238,226,173,109,219,182, 37,221,141, 45, 90,180, 0,195, 48,184,127,255,126, +153,221,173,175,113, 82,107,107,235,146,252, 33,149, 74,113,225,194, 5,124,243,205, 55,112,179,178, 64,102,248, 67, 56, 4,116, + 68,151, 15, 63,198,208,161, 67,193, 48, 12,172,172,172, 74, 44,189,149,189,251, 91, 10,170, 18, 78, 66, 72, 31, 31, 31,159,217, + 97, 97, 97, 46,245,235,215,247, 37,132, 4,248,249,249, 53,123,248,240, 97,241,190,132, 82,186,191, 42,156,119,238,220, 57,184, +126,253,250,113,163, 70,141,146,242, 60,207, 69, 71, 71,235, 1, 16, 7, 7, 7,230,206,157, 59,252,175,191,254, 10,149, 74, 5, + 23, 23, 23,145,179,179, 51, 57,115,230, 12, 31, 30, 30,126,139, 82, 58,199,208,119, 47,158, 41, 88, 60,152, 93,165, 82, 25, 36, +174, 94,231,172, 81,215,107, 73,167,118,222,174,105, 9,247,145, 24, 31, 5,117,134,165,254,194,233,107, 85, 18, 87,127,116, 26, +253,201,156, 11,159, 60,121,226,172,209,104, 32,147,201,176,113,227, 70,221,210,165, 75,195,210,210,210,252, 41,165,170,234,134, +179, 42, 14, 72, 43,227,204, 78,199,111, 71,142,222,105,102,210,127, 27,198, 39,164,150, 12, 92,164,132, 88, 29,178,247,245, 87, + 54,175, 31, 47, 58,177, 64,148,203, 21,252, 86, 30, 39,165, 84, 75, 8, 25,212, 63,112,216,185,189,123,247,152,204, 91,176, 0, +215,110, 61, 68,122, 86, 30,120,202,128, 39, 4,115,231,206,131,131,141, 21,114, 18,158, 20,104,116,186,254,175, 47,153,243, 79, + 79,119, 66, 68, 19,206,252,186, 99,173,136,128,207, 79,126, 44,103,114,163,148, 35,135,246, 23, 15, 26, 52, 8,135, 14, 29, 66, +104,104,232, 15,229,137,171,210,156,148,138, 38, 60,188,180,111, 45, 1,120, 85,234, 99,185, 56,239,185,242,131,225,253,197, 67, +135, 14,197,225,227,215,177,247,216,243, 77,123,126,165,199,240, 31, 67,185, 2,203, 84,140, 80,127,223, 90,206,109, 27,215, 83, +136, 57, 21,226,194,163,144,145,175,198,153, 71,209, 89, 34, 42,250,169,186, 15, 44, 28, 59, 33, 69, 76,204,147, 55,206,101,101, + 41,138,172, 49, 85, 91,246, 73, 36, 18,189, 98,189,122, 27,203, 85,233,112,218,219,219,191,178,236, 74,233, 10,187,120,140, 79, + 53, 92, 52,204,138,137,137, 49,139,137,137, 1,165, 20,183,110,221, 50,107,209,162,197,172,183,177, 94, 77,155, 54,237,149,229, + 65, 74,255,150,117,172, 50,164,166,166,230, 3,248,209,222,222,254,183,233,211,167,191,223,178,101,203,182,243,231,207, 39,148, +210,234, 70, 44,203,243, 60, 46, 94,188,136, 67,135, 14,113, 90,173,118,118, 98, 98,226,227, 82,231,127,114,117,117,189,210,175, + 95,191,149,145,145,145, 76, 88, 88, 24, 12, 17,114, 42,149, 10,158,158,158, 96, 89, 22,223,142,119, 69,110,110,125,176, 44, 11, +142,227, 96,108,108,252,202, 58,148,134,164,147, 72, 36,122,197, 50, 82,188,221,186,117, 11, 12,195,192,223,223, 31,247,238,221, + 43,177, 96, 85,102,113,210,233,116, 49,246,246,246,246, 11, 23, 46, 44, 9, 87,106,106, 42,130,130,130,208,178, 85,107,248,126, + 50, 22, 9, 9, 9, 88,189,122, 53,156,156,156,176,100,201, 18,100,100,100,128,101,217, 63,219,108,222, 61, 44, 44,204,101,248, +240,225, 41, 15, 31, 62,116, 57,126,252,184, 69,239,222,189,141,135, 13, 27,150,242,240,225, 67, 23, 66, 72, 59, 0,251,171,248, +253,204, 38,132,156, 90,178,100,201,172,137, 19, 39,182, 24, 53,106,148, 68, 34,145,240,241,241,241,236,158, 61,123,136,167,167, +167, 72, 42,149,146,211,167, 79,243,183,111,223,190,201,178,236,183,148,210, 43, 85,181, 50, 23,139,171,170,142,185, 42,198,100, + 59,249, 7,166,162, 84,255,245, 27,151,138,188, 61, 92,116, 59,247, 4,197, 94,185,241,228, 25,163, 97, 39,255, 8, 60,195,127, + 16, 12,195,236,247,241,241, 25, 61, 97,194, 4,163,110,221,186,201,191,250,234,171,236,220,220,220, 50,197, 85, 89,168,138,155, + 6, 84,209, 1,105, 41,252,111,246, 23,199, 39, 79,173, 63,186,214, 71, 14, 53,112, 54, 63, 5,153, 98, 70,100,102, 33, 66, 99, +119, 6,185,105, 79,109,143,157,219,254, 2,149,248, 85,163,148,222, 33,132,116,174, 87,191,209, 47,223, 46,249,214,238,203,153, + 51, 36,191, 28, 63, 9,202,234,112,235,210, 37,152, 72, 57, 26, 30,124, 54, 89,163,211,246,251, 55, 46,149,147,112,117,221, 94, + 66,200, 81, 43, 43,171, 7, 31,142, 26,229,233,227, 51, 12, 74,165, 18, 7, 15, 30,196,207,235,214,113,107,128,193,155, 9,185, + 55,150,210, 10,235,252,228, 27, 37, 60,247, 63,254,240, 67,175,198,141, 63,130, 82,169,196,129, 3, 7,176, 99,205, 26,131,121, +254, 51, 2, 11, 34,146,123,243, 73,116,222,173, 39,209,121,224, 41,229, 41,213,136, 68,136,205,215,233,150, 68, 62,139,171,150, + 24, 40,238, 34, 92,180,120,194,187, 84,230, 37,162,167, 58,211,178,203,169, 28,226,234,212,169,131,215, 45, 90, 21,253,215,235, +245,113, 6,210, 47,115,115,123, 99, 93,210,101,213, 13,107,113,183,159,161,226,202, 80, 63, 88, 0,144,156,156,156, 10, 96,133, +139,139,203,209, 30, 61,122, 12, 37,132, 36, 85, 51,141,246,118,232,208, 97, 40,165,148, 17,137, 68,187, 94, 19, 87, 0,128,216, +216,216,231, 46, 46, 46, 91, 60, 60, 60, 74, 22,128,174,136,147,231,249,231,245,235,215,215,149,149, 22,229,237,243, 60, 95,105, + 26,101,101,101,161,121,243,230,111,172, 57, 73, 41, 69,116,116,116,177,133,169, 36,238, 43, 18,110,121,121,121, 99, 63,255,252, +243,205, 18,137,196, 13, 0, 41, 22,183, 28,199, 49,223,127,255,189,130,227, 56, 6, 0, 17,137, 68,172, 68, 34, 81, 31, 58,116, +136,101, 89, 54, 70,163,209,140,253,147,203,129,125,132, 16, 9,128,204,176,176,176,118, 69,150,171,184,208,208,208,179,123,247, +238,181, 7, 42,119,159, 80, 78,222,188, 2,224, 10, 33,164,237,198,141, 27,103,143, 29, 59,182,249,208,161, 67,197, 1, 1, 1, +248,237,183,223,184,139, 23, 47,222, 82,169, 84,203,170, 42,172, 8, 33,121,238,238,238,133, 5,152,184,226, 81, 14, 44,203, 86, +216, 90,179,118,151,175, 31,241,169,147, 98,203,178,160,188,180, 4,237,117,125,158,118,206,118, 32, 20,255, 97, 36, 37, 37,125, + 65, 8,153,183,122,245,234,132,134, 13, 27,202,165, 82,169,214, 80,113, 85,212,240,177,175, 66, 30,225,171,153,183, 88, 66, 72, +207, 85, 93, 6, 30,109, 63,247,115,143, 46, 29,252,149,174, 53,236,156,195,163,146,241,244,198,111,249, 15,142, 45,126, 73, 53, +153,125, 41,165,172, 1, 92,183, 9, 33,117,166,205,152, 86,188,216,115,131, 78,103,142,208,255,208, 98,207,139,150, 47, 95,238, +233,227,227,131,131, 7, 15,226,204,174, 93, 24,146,150,134, 11, 12,195,136,164, 82,235, 99, 58,221, 10, 0,134, 8,163, 69, 43, + 87,174,244,242,243,243,195,254,253,251,113,122,199, 14, 12,174, 30, 79,121,104, 6,192,182,232,127, 26,128,199, 0,154, 0, 48, + 2,160, 1,144, 7,192,166,212,245,233, 69,231,138,207, 95, 6,240,167, 14,116, 45,183,116,122,248,228, 69,147,119,253, 48,149, + 74,149,225,233,233, 41,169,202, 61,122,189, 62,165,146, 2, 52,174, 86,173, 90, 6, 91, 41, 12, 17, 67,233,233,233, 77,255,168, + 8,127,219,177, 86,175, 8, 65,158,127,233,232,232,200, 23, 87,246,101,137,175,178,142, 81,224, 69, 85,158, 19, 23, 23,247, 12, +192, 55,213, 13,103, 92, 92,220, 73, 24,176,152,179,161,215, 1, 64, 70, 70,198, 59, 95,100,151, 80, 26,255,213, 87, 95, 85, 73, + 88,131,210,248, 10,210,250, 33,128, 22,127,247,210,149, 82,122,185,168,240, 1, 33,164, 63, 33,164, 39,128,211,148,210,131,239, +136,191, 68,104,109,217,178,101, 50,165, 20, 57, 57, 57,107,170, 42,172, 74, 9,255,243,239,234,221, 51,146,181,231,247,252, 16, +215, 81,149,165,155,188, 53, 79,187, 3, 2,138,211, 76,109,103,103,247,211,200,145, 35, 91, 2,216,254, 46, 56,223,194, 77, 67, +121, 97,124, 65, 8,105,120, 97,218, 55, 31, 94,176, 48,237, 5, 78,236, 13,173,232, 24,180,233,191, 1,248,209, 16, 43,120,233, +247, 5,176,178,104,251,207,160,200,127,213,228,209,163, 71, 99,222,188,121, 56,189, 98,133,238, 83, 66,178, 37, 0, 61, 85,216, +192, 20, 17, 96,166,161, 60, 31,124,240, 1,230,205,155,135, 19,223,126, 91, 45,158, 74, 96, 75, 8, 57, 14, 0,179,102,205,154, +179,116,233, 82,203,217,179,103, 55, 88,182,108,217,146,162,253, 71,197,231,139,210,180,247,236,217,179,235,149, 58,159, 11,224, +206,159,253, 33,253, 97, 27,128,206, 2,167,192, 41,112, 10,156, 2,167,192, 41,112, 10,156,111,185,245, 42,148, 44,229,255,150, +247,191,212,177, 63, 51,188, 16, 9,109, 53, 1, 2, 4, 8, 16, 32, 64,192, 63,212, 10,119,252,109,206,255,161, 97, 3,208,185, + 28,203,214,217, 42,188, 96,231,106, 88,206,206, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,223,226,172,140,187,156,251, +123, 17, 66,142, 83, 74,123,151,247, 91, 44,168, 94,255, 95,234, 88,149, 87, 30,121, 43, 8, 93,132, 2,167,192, 41,112, 10,156, + 2,167,192, 41,112,254, 19,186, 8, 1,208, 89,179,102,205,254, 39,116, 17, 86, 48, 5,231, 32, 19, 31, 15, 51,153, 76, 41, 5, + 0,173,182, 64,231,236,140, 28, 96,224, 95,182, 16,173,128,127,172, 9,215,190, 72,204, 39,191,203,107, 5, 8, 16, 32, 64,192, +127, 6,169,197,150, 41, 0,169, 0, 72,209,190,182,232, 55,181,168,238,120,253,255, 43,231,255, 76,136,203, 19, 87,105,105, 74, + 27,177, 56,211,139,227,212,117, 1, 64, 44, 22, 69,164,165, 89, 70,218,216, 28, 76,171,142,200,178,181,183, 15,150, 48,140,179, + 33,215,234, 57, 46, 62, 45, 57,249, 21, 87,239, 20,248,199, 11, 59, 67,197,195,219,136,140, 63, 67,160,216,218,218,218,219,219, +219,191,103,102,102,214, 42, 43, 43,235,118,106,106,234,225,212,212,212,228,114,194,179,148, 16,204, 40,250,255, 29,165,116,118, + 5, 97, 55,248,218, 50,238,245, 84, 42,149,227, 9, 33,126, 69,239, 31, 90, 80, 80,176,145, 82,250,228, 63, 40,104,141, 0,244, + 19,139,197, 31,216,216,216, 52, 79, 74, 74,250,138, 82,186,186,154, 92, 98, 0,211, 44, 44, 44,134, 90, 88, 88,212,204,200,200, +120,150,147,147,179, 31,192, 74, 74,105,165, 83,158,191,158,228,212, 42,160, 91,192,151, 23, 79, 95, 92,180, 96,109,194,141, 55, +206,127,225,100,221,181, 75,155,121, 23,143, 93, 95, 56,123,189, 97,203, 35,149, 10,155, 8, 40, 25, 71,202, 23,181, 82,233,223, + 56, 93, 90, 2,152, 83, 20,230,149,148,210, 11,127,243,124,100,108,111,111,255, 45,128, 62, 98,177, 56, 44, 62, 62,254, 19, 74, +105,220, 59,226,150, 0,176, 2,144, 97, 72, 62,122, 45, 63, 54, 3,224,135, 66,119, 26,119, 12,113,197, 96, 96,185, 54, 74, 36, + 18, 45, 46,114,125, 51, 55, 61, 61,125,251,223, 53,109,228,114,249, 26, 7, 7,135,143, 84, 42, 85, 1, 33,132,150,246,215,200, +178,108, 92,106,106,106,211,127, 97,209,118,231,159, 22,224, 50, 5, 86,124, 60,204,196,226, 76,175,148,164,135, 67, 18, 18, 67, + 6, 3,128,147, 99,131,253,118, 14,245,247,197,199,203,116,205,186, 4,154, 72,148,226,141, 12, 35,105,164,214,106,108, 36, 98, + 73,154,142,213,223, 23,105,233,248,196,136, 67,101, 58, 73,148, 48,140,243,203,200, 11,118,172, 46, 3, 18,133, 19, 36, 70,110, +229, 6,202,201,201,169, 90, 47, 99,101, 85,219, 84, 39, 87, 76,150, 72,152, 46, 60,101,253, 40, 15,136,136, 36,148,229,244,231, +164, 26,205,170,140,140,168,220,234, 70, 84, 93, 27,226, 64,129,161, 32,232, 2,138, 51, 4,216, 27,145, 70,147,170, 80, 48, 24, + 36, 30,222, 82,100,148,190,119, 53,165,244,139,119,157, 97, 92, 92, 92, 44, 7, 12, 24,176,230,155,111,190, 49, 50, 49, 49, 33, + 49, 49, 49,221,102,206,156,217,206,197,197,101,106, 92, 92, 92,194,235, 98,143, 16,204,224,249, 66, 7,165, 34, 17,153,105,111, +111,175,100, 24,230,141,197, 67, 57,142, 83, 18,130, 9, 60, 95,184,224,184, 72, 68,102, 16, 66,214, 26, 34, 20,141,140,140,134, + 53,111,209,122,234,183,203, 87,154,216,219,217, 25,179, 28,175,123,241,242,165,241,151,179,191,104, 97,100,100,180, 86,165, 82, +237,169,234,123, 18, 66, 8,195, 48, 67,228,114,121,111, 0, 62, 69,135,195, 53, 26,205,113,142,227,246, 25, 90,145, 59, 56, 56, + 92,102, 24,166, 70, 85,158,205,113, 92, 76, 82, 82,146,127, 53, 43,174, 65,110,110,110, 63,182,111,223, 94,217,188,121,115,200, +100, 50,204,155, 55,111, 26,128,213,134, 8, 41,165, 82, 57,196,216,216,184, 86, 94, 94, 94,148, 74,165,250, 69, 38,147,117, 94, +187,118,173,107,155, 54,109, 76,147,147,147, 9,195, 48,246,199,143, 31,127,127,221,186,117,221, 8, 33,157, 42,171,220,178,163, +232,151,242, 62, 62,109,179,163, 46,124, 9,160,199,235,231, 89,181,226, 3,202,184,246, 86,209,123,177,168,194, 20,121, 66,136, + 72, 34,145,172,117,112,112, 24,173, 86,171,213, 0, 40, 33,132,218,219,219,151, 84, 52, 0,160,213,106, 51, 51, 51, 51,189, 43, +252,182,235,214,189,203, 48,140, 75, 5,233, 17, 23, 17, 17,241, 46, 42,172, 25, 73, 73, 73, 61, 37, 18, 9,113,117,117,101, 0, + 92,168,194,251,122, 1,152, 91, 84,201,108,164,148,114,132,144, 14, 64,225,247, 14,224,187, 98,193,198, 48,204, 70,111,111,239, +247,194,195,195, 55, 81, 74, 23, 85, 55,176, 14, 14, 14,155, 55,108,216, 48,184,111,223,190, 76,106,106,170,115,195,134, 13,119, + 3,104,251,150,194, 74, 6, 96,182,131,131,195,103,254,254,254,214,247,238,221,203, 32,132,108, 0,176,172, 34, 95, 83,132, 16, + 23, 0,157, 45, 44, 44, 58,205,157, 59,215,164,119,239,222,216,178,101, 75,207,173, 91,183,230, 17, 66,206, 1, 56,251,182,226, + 79, 36, 18, 45,142,143,143,119,164,148,194,209,209,113, 49,222,145,123,138,119, 13,134, 97,214, 14, 25, 50,100,244,238,221,187, +149, 47, 95,190, 84, 58, 59, 59,151, 56,189, 38,132, 84,187,254, 20,240, 39, 9, 44,153, 76, 41,229, 56,117,221,132,196,144,193, +237,218,127,111, 14, 0,151, 47,125, 62,216,206,161, 94,168, 76,166,140,148,155, 41, 14, 5,246,233,220,104, 96,239,246,196,197, +209, 14,113,137, 41,246,255,219,123,186,251,241,211, 23, 14,161,208,241, 87,153, 96,117, 25, 48,210,157,197,227,171,235, 96, 19, +144,128,245, 39,226,112,227,193, 11, 20,100,167,161,134,131, 17,150, 79,238, 10, 7, 75,101,181, 94,196,196,222,171,131, 72,161, +220, 55,124,216, 72,243,247,250,249, 72,220, 29, 28, 64,169, 28,145, 81,121,173, 79, 6, 93,104,246,203,129, 61,227, 77,236,189, +134,228, 37, 71, 26, 92,168, 53,113, 34, 70,249, 58,244, 19, 51,228,253,182, 45,234,117, 26,214,179,173,200,215,167, 14,194, 30, +133,119, 61,122,254,214,114, 95,123,209, 57,150,163, 59,141,165, 56, 18,156, 80,190, 35,190,178,132, 70,167, 78,157, 26, 27, 25, + 25,105, 75, 95,167, 82,169,100,132,160, 83,117, 68, 70,241, 51,180, 90,141, 72, 34,145, 65, 36, 34, 83, 27, 52,104, 80, 35, 45, + 45,237,178, 72, 36,218, 21, 23, 23,151, 89,149,248,156, 72,136, 44, 83, 44,110, 34,146,203, 29, 57,173,214, 26, 0,136, 76,150, +233, 98,105, 89,127,238,156, 57, 38, 12,195,240,233,233,233, 40, 40, 40, 32, 31,127,252,177, 34, 42, 42, 42, 16,192,186, 74,194, +136,173, 91,183,122, 57, 58, 58,106, 95, 63,151,152,152, 40,235,219,247,189,234, 20,216, 94, 45, 91,181,153,114,250,244, 41,159, +156,140, 76,245,214,213, 91,238,233, 21, 70,106,143,186, 94,210,141, 91,118,152,125, 50,122,196,231,132,144,251,148,210,200, 42, +112,186, 25, 25, 25, 29, 90,177, 98,133, 95,135, 14, 29, 36,118,118,118, 72, 78, 78, 70,120,120,184,223,249,243,231,251,237,216, +177, 99, 26, 33, 36,144, 82,106,136,199,117,207,115, 59,127,180, 51,182,178, 6,167,215,195,169, 65,227, 18,255,100, 79,207, 7, +129,213,233,192,235,245,240,233,221,175,208, 12,195,243,240,245,245,173,150,183, 92, 66,136, 83,189,122,245,126, 94,178,100,137, + 84,163,209,224,214,173, 91,184,112,225, 2,159,152,152,184,172, 50,113, 69, 8, 9, 90,176, 96,129,139,191,191,191,105, 90, 90, + 26, 56,142,179, 57,114,228,200,248,198,141, 27,155,185,186,186,202,118,238,220,137,188,188, 60,176, 44,107, 85,171, 86, 45,171, + 97,195,134,105,119,238,220, 57, 13,192,183,229, 89,174,114,162,232,151, 73,164, 86,119,239, 38, 31, 32,137,156,234, 62,181,135, +227, 73,179,218,164,196,146,213,163,118,109,211, 90,117,141,103,154,152,213,183,202,137, 63, 59,179, 71,237,218, 91, 79, 70, 85, +222, 8, 34,132,136, 68, 34,209,218,192,192,192,225,123,247,238, 85,134,135,135, 43,125,124,124,192,243,124,137,199,252, 98, 71, +177,158,158,158,134, 84, 88, 46,231,206,157,179, 51, 50, 50,122,195, 41,111,126,126, 62,250,246,237,251, 71,148,183, 85, 77,227, +175,159, 63,127, 62,232,208,161, 67, 35,102,204,152,225, 9, 96, 2,128,121,233,233,233,237, 1,192,218,218, 90, 6,224, 2, 33, +228,195,233,211,167,127, 58,107,214, 44,244,236,217,115, 30, 33,100,113,117,172,122,132, 16,198,198,198,166,103,223,190,125, 25, +189, 94, 15, 99, 99, 99,232,245,250,218,111, 41,174,228, 82,169,244,215, 21, 43, 86,116, 25, 54,108, 24,196, 98, 49,120,158,183, + 10, 10, 10,154, 63,122,244,232,182,132,144, 30,101,137, 44, 66,200, 7,159,126,250,233,128,145, 35, 71,162,105,211,166, 37,206, +101, 87,172, 88,129,133, 11, 23,154, 4, 5, 5,245,219,185,115,103, 63, 66,200, 47,148,210,106,251, 50, 43, 94, 47, 52, 54, 54, + 22,118,118,118, 70, 86, 86, 86,137, 0,190,202,200,200,216,242, 55,178, 42,126, 55,100,200,144,225,187,119,239, 54, 1,128,229, +203,151, 99,202,148, 41,176,183,183,135,137,137,137,160,104,254, 9, 2,171, 50, 20, 20, 20, 52,158, 61,241,125,136, 68,133,173, +196, 58, 53,221,176,116,206, 39,228,232,241,211,141, 43,186, 79,162,112,194,227,171,235, 32,119,157, 12,141,158,197,205, 7,207, +113,102,121, 55, 0,128, 87,143,185,208,232, 58, 21,103,116, 43,153,145,209,119, 90,142,187, 6, 7,135, 91,136,142, 78,173, 76, + 92,217, 58,216, 31,255,225,135,111,141,252,106,123, 67,199,234, 17,159, 18, 15, 66,228,112,113, 54,197,135, 31,244,144,180,111, +239,100,243,245,215,155,127, 51,182,245,234,159,159, 26, 89,169,163, 79,111, 91,178,189,109, 99,207,193,195,122,249,203,235,251, +213,131, 84,110,244,187,240,106,218, 20, 77,154, 54, 21,205,202,203,237,114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, + 84, 58,170,162,111,163,180,208,152, 52,105,210, 27, 11, 18, 39, 38, 38,226,226,197,183,234, 53,120,229, 25,223,124,243,141, 73, + 86, 86, 86,231,255,253,239,127,237,156,157,157, 87,196,199,199,223, 52,132,228,125, 66,106, 64, 46,239, 52,122,229, 74,190,209, +123,239, 49, 22, 14, 14, 34,158,227, 72,194,179,103,214,171,215,173, 11,200,120,250,212, 40,223,202, 42, 35, 83,165, 42,136,140, +140,132, 66,161, 32, 98,177,184, 89, 25, 5, 86, 50, 33,228, 59,145,136,204, 36,132, 64, 46, 87, 68,142, 27, 55,238, 94,209,233, + 26,199,142, 29, 83,246,233,211,167, 0,192,203, 66,179,183,194,153, 97, 68, 94,133, 3, 4,241,157, 33,194,210,216,216,120,226, +162, 37,223, 25,231,100,100,169,116,249,249,122, 59, 51, 19, 2, 19, 19, 38, 55, 39, 47, 39, 33, 41, 85, 61,247,171,133,226,177, + 31,142,156, 8, 96,188,161,226,170, 97,195,134,183, 15, 29, 58,100,103,109,109,141,172,172, 44,164,167,167,227,246,237,219,224, +121, 30,129,129,129,242,214, 45,154, 55,158, 51,247,203, 27,132,144, 86,134,136, 44, 99, 43, 27, 44,247,111, 4, 0,152,255, 50, +189, 36,125,182, 12,234, 93,114,205,194,184,108, 0,128, 66,161,120,155,165,158, 90,117,234,212, 73, 10, 0, 99,198,140,201,201, +205,205, 93, 10, 96, 55,173,192, 25,106, 17,166,125,249,229,151,206, 53,107,214,116,223,189,123, 55,242,242,242, 0,192,174,102, +205,154,240,246,246,230, 46, 94,188, 8, 47, 47, 47,152,154,154,226,242,229,203,184,121,243, 38,154, 52,105, 98, 42,149, 74, 7, +151, 39,176, 2,186, 5,124, 41,239,227,211,214,187,201, 7, 48, 49,115,196,214, 61,251,240, 56,120, 71, 91,141, 46,252,203,165, + 19,156, 71,170,168,124,148,139,167,233,172, 26, 77,219, 91,215,169,247, 30,220,155,220,179, 81,115, 87,158,207,251,172,214, 50, +177, 66,189, 99,193,138,132,244,242,196, 21,128,229,129,129,129,131,246,238,221,107, 1, 0, 15, 31, 62, 68,114,114, 50,108,109, +109,161, 80, 40, 32,145, 72, 74,214, 15, 53, 20, 70, 70, 70, 72, 76, 76,132, 78,167, 43,182, 90, 33, 55, 55, 23, 14, 14, 14,133, +234,230,107, 34, 90,176,192, 48,175,227,132, 16,255, 22, 45, 90,236,114,119,119,119, 45,125,188, 87,175, 94, 24, 58,116, 40, 0, +160,125,251,246,157, 6, 14, 28, 72,139,133, 96, 98, 98, 98,222,157, 59,119,186, 80, 74,111,149, 99, 93, 81,197,199,199, 99,250, +244,233,120,241,226,197,103,132,144,104, 0, 10,153, 76, 86,210, 46, 38,132,120,213,171, 87,111,237,148, 41, 83, 16, 21, 21,133, +176,176,176,219,213,237, 50,165,148,114, 30, 30, 30, 79,245,122,125, 83,150,101,161, 82,169,208,191,127,127,133,149,149, 85, 50, +195, 48, 17,105,105,105, 35, 40,165,137, 85,176, 90,185,139,197,226,245,211,167, 79,239,212,185,115,103,132,132,132,224,208,161, + 67, 24, 54,108, 24,186,119,239,142, 21, 43, 86,180,159, 48, 97,194, 44, 0, 11,202,160,232,180,113,227, 70,112, 28,247,198,183, +161, 80, 40,224,239,239, 15, 95, 95, 95, 28, 61,122,180, 19,128,106, 9, 44, 66,136,215,128, 1, 3, 20,197,162,250,226,197,139, +230, 70, 70, 70,230, 46, 46, 46, 11, 0,252,109, 4,150,187,187,251,184,189,123,247,154,148,238,237,145,203,229, 40,149, 15, 4, +252,221, 5,150, 86, 91,160, 19,139, 69, 17, 78,142, 13,246, 95,190,244,121, 73, 23, 33, 32,138,208,106, 11,116, 0,192,241, 20, + 57, 5, 44,140,228, 34,188, 76,202,197,163,103,105,101,125,164,175, 76,181,148, 24,185, 65,222,252, 37, 40,165,208,234, 56,104, +178,147,176,244,183, 2,132,199,169,161,205,207,132, 86, 87, 56,204,202,198,198, 70,124,250,244,201, 41,103,207,158,255,244,167, +159,126, 98,226,204,205,195,144,157,221,184, 44, 78, 43,171,218,166, 98, 99,163,253,155,126,152,103, 68,153,103,136,140,201, 71, + 29,151,230,176,177,112, 69, 82, 90, 62,174,133,157, 64,196,147,227,168,233,232,142,201, 19,187, 43, 22, 45,217,189,207,210,178, +166, 91,102,230,243,156,242,194, 89,132, 15, 54,159,138, 4,155,241, 12, 92,122, 20,184,220,132, 55,133,157,173, 27,154,116,112, +134,173,107,109,249,168,201, 11, 63, 0, 48,170, 44, 78, 74,105, 50,195, 48, 27, 69, 34, 50,158, 16, 2, 63,191,250,207,215,172, + 89,163, 45, 43,234,253,252,234, 63,103, 24, 81,205,194,101, 88, 68,155,120,158, 75,174, 36,156,175,136, 25,153, 76, 62,163,208, +188,239,248,236,228,201,147,218,129, 3, 7, 98,249,242,229,210, 89,179,102,125,225,238,238, 62, 33, 58, 58, 58,169,162, 52, 10, + 36,196,205,185,118,237,174,139,175, 93,163, 18,189,158,100,220,190,157,147,149,152,200, 38,229,230,202, 14, 68, 68,244,252,232, +139, 47,100,174,174,174,184,122,252,184,117,106,126, 62,205,210,104, 84, 89, 89, 89,148,101,217,219,229,188,251,108,123,123,123, +229,214,173, 91,189,198,141, 27,119, 47, 33, 33, 97,118, 81,193,176, 20,128, 47,128,151,165,142,225,135, 31,246,197,127,252,241, +199,145,201,201,201,179, 43, 10,103, 41,212,179,179,181, 85,238,217,188, 51,196,202,212, 72,100,227,226, 40,146,152,155, 75, 88, +185, 82, 74, 41,212, 53,107,214, 86, 2,168, 87, 78,156,157,125,173,144, 37, 70, 70, 70,135,126,253,245, 87, 59,137, 68, 2,142, +227, 96,107,107,139, 23, 47, 94, 32, 43, 43, 11,185,185,185,120, 30, 17, 14, 15, 87, 87,124, 61,107,166,227,132,153,179, 14, 17, + 66,154,150,174,196,202, 10, 39,167,215,189, 97,201, 43,103,129,240, 87,126, 13, 73,247,215,240, 34, 38, 38, 6, 38, 38, 38,240, +243,243, 51,185,118,237,218,149,242,196, 85,105, 78,133, 66, 49,184, 77,155, 54,166,123,246,236, 65,147, 38, 77, 96,110,110,142, +139, 23, 47,226,225,195,135,208,233,116,162,188,188, 60,152,154,154, 98,217,178,101,112,119,119, 71, 78, 78, 14, 98, 98, 98,172, + 37, 18,137, 77,121,156, 23, 79, 95, 92,148, 29,117,225,203, 36,114,170,251,214, 61,251,240,241,176, 33,112,160,207,174,152,215, + 38,139,186,246,105, 51,159, 50,174,189,141, 77, 27, 88,122,250,245,129, 84,102,130, 9, 51, 22, 34, 50,244,152,101, 65,110,200, +103,132,139,117, 5, 48,233,117, 78, 82, 24, 49, 34, 87, 87,215,143, 14, 28, 56, 96, 90,202, 2, 85,178, 14,105,233,197,217,203, + 91,136,189,204, 52,226, 56,232,116, 58,232,116, 58,112, 28,135,180,180, 52,228,230,230,194,194,194,162,240,130, 5, 0, 1, 33, + 20,101, 11,150,215, 56, 71,156, 61,123,214,213,216,216,248, 13, 11, 73, 90, 90, 26, 88,150,133, 82,169, 44,121,166, 94,175,135, + 90,173, 54,241,245,245, 29, 15,224, 86, 89,156, 60,207, 79, 29, 60,120,112,155, 91,183,110,213, 90,183,110, 29,180, 90,237,242, +164,164, 36, 12, 24, 48, 0, 60,207,163, 83,167, 78, 45, 41,165,143,231,206,157, 11, 0,152, 50,101,138, 62, 63, 63,127,156, 33, +239, 94,142,224,240, 29, 56,112, 96,173,115,231,206,161,109,219,182,208,104, 52, 88,177, 98,133,217, 15, 63,252, 96,182,115,231, + 78,219, 25, 51,102,252, 8,160, 91, 69,156, 69,194,106, 78,247,238,221,167,246,237,219,215, 56, 62, 62, 30, 22, 22, 22,216,183, +111, 31,150, 45, 91,118, 89,171,213,206,217,185,115,231,210, 67,135, 14,181, 29, 54,108, 24, 86,172, 88,241, 25, 33,100, 17,165, + 84, 95, 22,231,243,231,207, 97,107,107, 11, 51, 51, 51, 0,133, 11,217,223,191,127, 31,103,206,156, 65,221,186,117, 13, 17,141, +229,133,211, 43, 48, 48,240,250,238,221,187, 45, 98, 99, 99,113,249,242,101,120,120,120,160,160,160,160,210,101,197,222,245,162, +204,149,113,170, 84, 42,117, 76, 76,140,201,183,223,126, 11, 71, 71, 71,184,187,187, 67,161, 80,128, 16, 2,189, 94, 95,110,120, + 13, 9,103, 64, 0, 17,167,197, 91,246, 53,183,176,252,140, 82, 42,206,206,206,220,172, 67,214,193,168, 40,170,253,179,222,253, + 95, 41,176, 8, 33,148, 82, 74,138,127,157,157,145,147,150,102, 25,105,231, 80,127,159,157, 67,189,162,117,185, 68, 17, 12, 99, + 25,105,111, 95,144, 3, 0, 58,150,226,122, 68, 22, 66,158, 38,225,225,211, 36, 24,203, 13, 91,166, 70,163, 99, 11,231, 89, 82, + 10,117,222,239,141, 84, 93, 65, 38, 52,186,194,225, 28, 90, 77, 1,178, 83,195,200,160,254, 93, 20,159,126, 58, 22,142,142,206, +182,229,241,233,228,138,201, 19,166,244,180,176,178,144,224,248,181, 83,104, 89,183, 63, 20,114, 9,210,179,213, 0, 1,158, 60, + 59, 3,240,166, 8,141,140, 65,139,122, 74,116,235,234, 99,114,248,224,227, 47, 0,204, 51, 36,188,108,220,109, 72, 61,123, 64, +194,233,161, 79,123, 12, 62, 43, 26, 48,118,128,138,152, 32, 61, 49, 26, 17, 87,126, 49,104,137, 82,142,227, 38,216,216,216,164, +204,158, 61,219,223,203,203, 75, 59, 97,194,132,208, 23, 47, 94,204, 45,125,141,135,135,199,226,245,235,215, 35, 50, 50,242,229, +210,165, 75,175,166,165,165,125, 83,197, 15,115, 22, 33,100, 77,145, 53, 44,237,215, 95,127,109,112,249,242,229,241,171, 87,175, +182,253,236,179,207,164, 19, 39, 78, 28, 1, 96,121, 69,221,130,198,114,121,231,197,151, 47, 83, 54, 46, 78,243,243,247,223,203, + 54, 92,191, 62, 87,199,243, 78, 54,118,118,164,117,139, 22,249, 74,145, 40, 45, 61, 57,153,181,173, 85,139,121,113,230,140, 53, + 53, 50, 74, 56,121,242,100, 78, 94, 94,222, 47, 21,116,193, 20,148,213, 45, 88, 22, 28, 29, 29,181,101,141,209,170,160, 34,200, +225, 41,213, 89,214,244, 64,215, 78,173,235, 60,125,252,236,153,220,220,130,241,244,172,225, 29, 22,241,242, 22,207,178, 26, 66, + 72,142, 33, 92, 12,195, 12, 89,179,102, 77,125, 51, 51, 51,240, 60, 15,115,115,115,164,166,166, 66,171,213, 34, 39, 39, 7,218, +220,108,104,179,179,241, 48,250, 5,218, 4, 4, 96, 80,247,174, 62, 59,143,252, 58, 4,192,222,138,120,157, 26, 52, 46,177, 92, + 45,172, 97,253,123,159, 79,108, 86,137,216,250,182,177, 39,164, 38, 38,232, 50,117,214,219, 20,204,247,100, 50,217,137,192,192, +192,158, 95,124,241,133, 40, 49, 49,241, 20, 33,164, 13,165, 52,172, 66, 11,176,137, 73,237, 98, 65, 97,110,110,142, 53,107,214, +192,222,222, 30, 5, 5, 5,184,115,231, 14,117,113,113, 33, 23, 46, 92,128,139,139, 11,210,210,210,160,211,233,144,159,159,159, +164,213,106,203,237, 22, 47,234, 6,236, 49,181,135,227,201,199,193, 59,218, 58,147,231,119, 6, 79,107,255,244,241,195,136,152, +160, 51,215,190, 97,213,138,216,172,184,179, 51,107, 54,187,103,243,217,244,175,177,126,249, 2, 60,190,117, 57,195,222, 45,103, +131, 17,209,108,111,209,165,252,240,230,231,231,171,195,195,195, 77, 67, 66, 66, 64, 8,129,185,185, 57,148, 74,101,153, 34,203, + 80,112, 28, 87,242,155,150,150,134,212,212, 84, 68, 70, 70, 98,199,142, 29, 72, 72, 72,176, 89,109,110,150,100, 35,147,134, 72, +179,200, 28,157,142,222,171,132,110,115,151, 46, 93,134,184,185,185,153,150, 62,216,172, 89, 51,140, 29, 59, 22,155, 54,109,194, +245,235,215, 95, 89,239, 50, 41, 41, 41, 81,175,215,111,175, 32,109,179, 8, 33,221,251,247,239, 31,124,229,202, 21,179,109,219, +182,129,101,217, 50,183,173, 91,183,226,230,205,155,243, 40,165, 17,213,180,230,212, 29, 48, 96,192,229, 93,187,118, 89,164,166, +166, 34, 45, 45, 13,121,121,121,200,207,207, 7,199,113,240,246,246, 38, 44,203,122, 87,214, 29,104,107,107,123,226,210,165, 75, + 29,188,189, 11, 47,213,235,245,184,118,237, 26,222,123,239,189, 28,173, 86, 59,128, 82,154, 78, 8,153,125,240,224,193,235, 45, + 90,180, 64,179,102,205,172,162,163,163,173, 0,148,105,185,206,203,203, 67, 94, 94, 30, 36, 18, 9, 28, 28, 28,176,104,209, 34, +104,181,133,197,138,151,151, 87,105, 11,231,234,186,117,235,246,143,136,136, 88, 70, 41,221, 80, 78, 57, 51,150,231,249, 5,148, +210,172,192,192, 64,251, 61,123,246, 88,198,199,199, 35, 56, 56, 24,243,231,207, 79,229, 56,142,165,148, 18,157, 78, 23, 36, 22, +139,163,125,125,125,157,194,194,194, 18, 56,142,155, 71, 41,253,249, 47,236, 34, 36, 18,137, 4, 99,198,140,129, 88, 44,134,145, +145, 17,212,106, 53,244,122,125,137,136, 71, 21,187,159, 61, 61, 77,173,197,144,126,236,229,213,110,242,160, 73,189,109, 29,157, +156, 97, 97, 38, 71,120,120, 88,155,243,231,206,124,239,235,109,251, 3,175,213,255, 16,241, 34, 43,230, 79,120,191, 87,180,200, +191,180,139,112, 32,103, 99,115, 48, 45, 62, 94,166,147,201,148,145,197, 86,173, 66,113, 53,144, 3,246,128,213,233,139, 10, 8, + 90,180, 25, 40,176,244, 28,158, 62, 14,197,149,160, 95, 97, 83, 16,143,180,231,141, 0,105,125,104, 85,217, 80,107,117, 69,173, + 53, 14, 15,130,207, 33, 39, 59, 3,126, 77,123, 3, 34, 81,185, 93, 91,230,214,164,119,235, 38, 13,152,167, 49,161,104,230, 53, + 16,181, 92,218, 34, 58, 49, 7, 89,121, 26,100,230,168,209,200,111, 22, 82, 51, 85,200, 41, 80, 35,236,233, 78, 56, 59,213, 18, + 17,241,179, 78,134, 10, 44, 77,216, 33,104, 34,142, 66,234,222, 6, 50,239,247,192,184,251, 35, 38,228, 2, 30,156, 92,141,184, + 71, 87, 65,121, 14,142, 94,205, 97, 96, 5,190, 57, 40, 40,168, 81,187,118,237,196,157, 58,117,242,115,113,113,241,139,139,139, + 11, 5, 0, 23, 23, 23,191,238,221,187,251,217,217,217, 97,237,218,181, 5, 12,195,108,174,102, 37, 91,186,112,186,231,232,232, +184,226,208,161, 67,223,141, 29, 59, 22, 14, 14, 14,190, 21,221,155, 42,145, 52, 28,181,100, 9,149, 48, 12,221,187,126,189,244, +235, 83,167, 86,254,180,125,187,180, 99,135, 14,132, 82,138,251,247,239, 43,191, 93,191, 94, 57,188,111,223,151,209, 41, 41,236, +165,235,215,117,137,113,113,185, 41,249,249, 95, 39, 36, 36, 36,253, 21, 25, 88,175,215,223,120,241,252,153, 75,227,230,141,108, +239,133, 61, 15,235,214,169,117, 43,145, 72, 36,138,120, 22,125,195,214,214, 76,121, 46,232,172, 78,175,215,223, 48,132, 75, 46, +151,247,238,216,177,163, 56, 51, 51, 19, 78, 78, 78, 72, 77, 77, 69,124,124,124,161,133, 33, 59, 19,186,236,108,232,115,178,192, +229,231,225,249,157,219,104, 84,171,166,252, 64,225, 32,248,189,149,164, 73,153,150,169,210,150, 44,153,169, 41,100, 38, 38, 32, + 85,236, 30, 36,132,244,181,176,176,152,153,149,149,117,130, 82,186, 72,167,211, 77,152, 57,115,102,179,117,235,214,217, 44, 94, +188,216,236,147, 79, 62, 57, 64, 8,105, 68, 41,213,148,199,145,151,151, 23,197,178,172, 13, 0,187,115,231,206,193,206,206, 14, +217,217,217,197,150, 21,109, 65, 65,129, 34, 61, 61, 29, 26,141, 6, 90,173, 22,102,102,102,184,123,247,110, 38,203,178,191, 86, + 22, 62,179,218,100,145, 70, 23,254,165,181,143,113,130,142,181,108,159,146,193,103, 46, 88,145,176, 16,192,202, 30,181,107,111, +213,241,151,159, 63, 9, 61,102,249,226,206,197,140,132, 39,249,181,182,254,246, 44,183,130,120,164,132, 16,158, 16, 66,189,189, +189,145,150,150, 6,134, 97,160, 84, 42, 97, 98, 98,130,186,117,235, 34, 54, 54,182,218, 2,139,101,217, 18,113,117,252,248,113, + 36, 38, 38, 98,207,158, 61,112,117,117, 21, 1,176,141,141,141,237, 50,104,208,160, 22,214,214,150, 75,211,211, 51,151, 85, 16, +206,251, 0,204, 94, 75,167, 14, 54, 54, 54,231, 53, 26, 13,158, 61,123,134, 35, 71,142, 4, 80, 74, 47, 85,241,219,126, 70, 8, +233,238,239,239,191,163, 73,147, 38,181, 41,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,206,206,230,207, +156, 57,243, 19,128, 21, 85,173,184,139,226,215,123,192,128, 1, 87,119,239,222,109,153,158,158, 14,149, 74,133,252,252,124, 28, + 56,112, 0,109,218,180,129,141,141, 13,118,237,218,197, 82, 74,143, 85,192,165,176,176,176, 56,113,245,234,213,128, 58,117,234, + 32, 44, 44, 12,231,206,157, 67,141, 26, 53, 32,147,201, 48, 98,196, 8,179, 77,155, 54,125, 78, 8, 89, 38,145, 72, 22, 13, 24, + 48, 0, 28,199,225,218,181,107,233, 0, 50, 12,248,230,145,149,149,133,172,172, 44, 24, 25, 25,149,254,198, 8,128,109,171, 87, +175, 30, 61,121,242,100,212,174, 93,123, 17, 33,100, 83, 89, 11, 74,243, 60,255,117,124,124,188,157, 88, 44,118, 96, 89, 22,177, +177,177,184,123,247, 46, 38, 76,152,144,156,158,158, 30, 64, 41,141, 36,132,108, 12, 12, 12,252,116,213,170, 85,112,117,117, 69, +108,108,172,219,212,169, 83,119, 18, 66,240,103,139, 44,111,111,203,122, 50, 70, 62, 73, 42,149, 88,103,102,102,150,148, 29, 90, +173, 22, 26,141,230, 21,203,149, 84, 42,177,110,222,216,253, 55, 85, 65,238,156, 71,145,153,229, 46, 92,238, 91,199,162,129,210, +216,124,114,175,238,131, 70,116,237,222,143, 97,245,122,156, 62,125, 12,255,251,223, 70,116,240,247, 66,173, 58,245,241,249,196, + 73,230, 26, 45, 59,235,204,153, 83, 51, 91, 55,175,121, 42, 55, 39,107,118, 69,156, 2,202, 16, 88,101, 43,198,129,156,179, 51, + 50,139, 62, 24, 27, 75, 75,203,245, 28,199,117, 0, 62,134,196,196, 1, 97,119,111, 33, 35, 83, 2,141,138, 3, 79, 11, 69,150, + 65,130, 69,163,197,229,211, 71,177,102,245, 74,164,167,167,195,191, 93, 0,242,196,174,112,115,117,131, 90, 85, 80,244,177, 0, + 58,173, 30,182,246,238,184,119,239,129, 62, 39, 63,191,220,130, 72,170,208,249,184,217,123, 65,163,107, 5,133, 76,134,236, 92, + 45, 50,139,196,213,174,131,131,161, 41, 80,129,213,234,192,106,245,176,117, 27,128,186,246, 29,193,115,199,234, 85, 41,150,120, + 14,186, 23,151,161,123,113, 25, 70,173, 38,226,215,165,195, 94, 43,248, 12, 91, 16, 62, 57, 57, 57,213,197,197,229, 84,112,112, +112,239,193,131, 7,227,226,197,139,163, 0, 76, 45,170,220, 71, 13, 30, 60, 24,193,193,193,136,136,136, 56,149,156,156,252, 78, +124,118,200,100, 50,117,113, 43, 79,161, 80, 40, 42,185,214,185, 89, 96,160, 40,251,222,189,156,213,215,174, 45,216,186,109,155, +180,115,167, 78, 68,207,178,224, 57, 14,117, 60, 61, 73,215,174, 93,141,119,238,223,111,205,232,245, 55,167, 79,152,112,110,211, +200,145,185,183,242,242, 12, 29, 64, 94,163,168,107, 16, 0,106, 84,112,204, 96,104, 52,154,117,227,198,126,212,229,194,197, 75, +174, 53,220,157, 77,131,206, 93,126, 32,147, 75, 69,181, 60,106, 49, 89, 89, 89,226,175, 22,204, 54,210,104, 52,223, 27, 72,231, + 99, 99, 99,131,164,164, 36, 60,125,250, 20, 26,141, 6,122,189, 30,124, 65, 62,180,153, 89,208,102,103,128,168, 85,144,115, 28, +212,105,201,168, 81,171, 38,240,251, 12,195,202, 42,176, 50, 5, 86,241,175,194,204, 12, 82, 99, 19,136, 36, 18,131, 23, 45, 39, +132, 52,105,222,188,249,254, 95,126,249, 69,250,225,135, 31,182, 32,132,172,167,148, 70, 19, 66, 58,205,155, 55,239,246,250,245, +235,229, 99,199,142,245, 94,177, 98,197, 7, 0,202, 21,236,106,181,122,255,111,191,253, 54,220,221,221,221,238,225,195,135, 80, +171,213,224,121, 30, 61,122,244, 0,128,146, 60,243,248,241, 99,149, 90,173, 78, 9, 13, 13,205,137,142,142,214,194,128, 89,127, + 11,214, 38,220,152, 58,200, 37,208,222,193,249,166,194,168,134, 7,205,187,215,127,234, 32,151,229,171, 14,196,169, 79, 70, 69, +229,206,251,172,214,178,252,220,144,207, 44, 92,242, 54,156, 60,246,204,144, 89,190,180,120, 90,186,181,181, 53,196, 98, 49, 36, + 18, 9,164, 82, 41, 0,192,222,222, 30,217,217,217, 21,118, 17,150, 39,176,114,114,114,144,157,157,141,136,136, 8, 36, 38, 38, +226,198,141, 27,224, 56, 14,133,147, 20, 1, 23, 23, 23,220,190,125,219,180, 89,179,102,115,136,148, 92,160, 58,106,240,180,113, +134, 97, 38,143, 28, 57, 18, 90,173, 22, 67,135, 14,197,214,173, 91, 39, 3,184, 84,213,252, 78, 41,189, 73, 8,241,124,240,224, +129, 25,128,247,134, 12, 25,178,125,192,128, 1,184,116,233, 18,142, 29, 59, 22, 0, 32, 18,128, 10,192,210,162,133,149,151, 86, + 52,193,163,200, 21,195, 70, 91, 91,219,247,234,213,171,247, 96,192,128, 1,126,187,119,239,182, 72, 73, 73, 41,158,212,128, 23, + 47, 94,224,199, 31,127, 76,220,182,109, 91, 14,199,113,214, 34,145,232,183,172,172,172,242,102, 65, 43,140,141,141, 79, 94,189, +122,181,125,157, 58,117,112,246,236, 89,204,153, 51, 7,237,219,183,199,158, 61,123, 80,183,110, 93,212,175, 95, 31,118,118,118, +159,101,100,100,180,222,178,101, 75, 64,203,150, 45,177,107,215, 46, 36, 38, 38,110, 44,207,101, 67,101, 93,117,122,189,158, 0, +104,177,122,245,234,154,147, 39, 79,198, 47,191,252,130,198,141, 27,155, 63,123,246,108, 69,113, 25,251,154,192, 2,165, 20,207, +159, 63, 71, 65, 65, 1,174, 92,185,130,175,191,254, 58,181, 88, 92, 1, 64,239,222,189, 63, 93,181,106, 21, 6, 13, 26, 4,157, + 78,135,169, 83,167, 98,213,170, 85, 56,122,244,232, 55, 0,254, 52,129, 85,215,211,122, 89,243,102,237,103, 58, 58,215,193,174, +221,123,144,145,145, 81, 18, 39,197,241, 66, 41, 69,110,110, 46,146,146,146, 96,110,102,138,229, 43, 22,245, 28,255,201,104, 87, + 20,186,179,120,179,160,171,109,181, 98,224,208,143,166, 13, 29, 62, 26, 15, 31, 4, 99,231,246,205, 8,125,120,191,132,143,213, +235, 16, 25,126, 23,145,225,119, 97,239,224,142,174,157, 3,200,176, 97,195,122,140, 28, 62,196, 22,192, 31,230, 2,226,223,100, +189, 42,183,139,240,181, 15,198,198,210,210,242,209,190,125,251,172,253,253,253, 25,150,101,113,234,244,105,124,246,233,251,248, + 96,228, 44,232, 96, 9, 86, 43, 5, 47, 85, 24,244, 64,149,170, 0, 20, 20,249,249,249,184,126,253, 58, 40,207, 98,231,150,149, +160,148, 47, 17, 88, 0,133, 86,167,131,179,155, 55, 54,110, 93,204, 66, 34, 41,183, 32,203, 73,103, 56, 61, 75, 17,159, 18,131, +152,196, 80,152,155,186, 65, 44,113, 67,122, 86, 1,196, 34, 7,232,213,143,193, 21,153, 79, 11,242,227,160,210,189, 93,186,113, +217,111, 90, 73, 41,207, 27,124,127, 65, 65,193,254, 93,187,118,117, 93,181,106,149,180,103,207,158,181, 93, 92, 92,154, 3, 64, + 96, 96, 96,109, 83, 83, 83,236,218,181, 75, 87, 80, 80,176,255, 29, 90,120,218, 53,107,214, 12, 25, 25, 25,120,249,242,101,133, + 45, 15, 78,171,181, 54,177,179, 99, 82, 46, 92,208,167,102,102,186,118,236,216,145,232, 89, 22, 34, 66,144,145,157,141,232,151, + 47, 97, 97, 97, 65, 30, 61,126,108,242,253,231,159, 31,246,242,243, 19, 23,207, 48, 52, 4,199,142, 29, 83,162,112,220, 85,133, +199,170,248, 65,230, 19, 66, 70,125,254,249,231,135,127,254,121,151,121, 82,114,242, 19,185, 76,206,154,152, 24, 57,142, 28, 49, + 68,156,149,149, 53,156, 82,154,103, 40, 95,102,102, 38,158, 63,127, 14, 35, 35, 35, 72, 37, 18,240,170, 2,112,249,121, 80,103, +164,130,209,105, 33,227, 56, 88, 41,229,112,181,183,135,155,173,141, 65,156, 79,207, 7,149, 12,104, 47,221, 45,184,188,185, 15, +100,198, 38,144,153,154, 96,252,241,139, 69,173, 79, 41, 48,175,242,158, 97, 66,136,141,179,179,243,175,187,119,239,150,166,166, +166,226,254,253,251, 15, 40,165,217,132, 16, 83, 0,124,120,120,248,217,208,208,208,222, 69,179,232, 42,155,253,181,242,208,161, + 67, 93,252,253,253, 89, 15, 15, 15,227,228,228,100,183,244,244,116,146,152,248,234, 24,230, 19, 39, 78, 40, 84, 42, 85, 62,207, +243,135, 81,232,199,169, 82,255, 67, 83, 7,185, 40,174,223,195,196,246,221,106,212, 55,179,105,128, 12,246, 94,253,155, 15, 18, + 39, 78, 29,228,178,110,213,129, 56,181, 17,209,108, 39, 92,172,171, 88,161,222, 97, 96,122, 83, 27, 27, 27, 80, 74,113,251,246, +109, 92,189,122, 21,151, 47, 95, 70,116,116,244,239, 86,109,115,115,156, 57,115, 6, 29, 58,116,168,202,119, 9, 71, 71, 71, 88, + 90, 90, 98,231,206,157,216,179,103, 79,201, 64,247, 98,164,165,165, 65,169, 84, 98,213,170, 85, 38, 3, 7, 14,252, 6, 64, 87, + 3,133,112,205, 46, 93,186,244,114,116,116, 68,122,122, 58, 28, 28, 28,224,239,239,223,135, 16,226, 65, 41,125, 81,205,172, 63, +190, 91,183,110,139,190,254,250,107,232,245,122,140, 25, 51, 6, 79,158, 60,217,255,228,201,147, 53,110,110,110, 19,103,204,152, + 97,111,111,111,143,193,131, 7, 27, 3, 8, 44,143,196,202,202,106,233,230,205,155,135,247,234,213, 75,164,211,233,218,157, 63, +127, 30, 47, 95,190,132, 86,171, 5,203,178,136,138,138,194,132, 9, 19, 18,211,211,211,219, 83, 74,163, 12, 8,215,172,160,160, +160,246, 62, 62, 62, 56,126,252, 56, 2, 3, 3, 47, 88, 88, 88,120, 53,104,208,192,209,201,201, 9, 7, 14, 28,128,153,153, 25, +220,220,220,172, 22, 47, 94,220,177, 95,191,126, 56,126,252, 56,166, 76,153,114, 17,192,178,234, 68, 4,207,243,100,245,234,213, +126,171, 87,175,118, 41, 22, 87, 34,145, 8,251,246,237,195,131, 7, 15,250,150, 37,176, 40,165, 11, 28, 29, 29, 23, 56, 58, 58, + 42,130,130,130,204,107,212,168, 1,150,101,181,148,210, 72, 23, 23,151,120, 39, 39, 39, 11,185, 92,142, 57,115,230, 32, 39, 39, +231,131,199,143, 31,239,108,216,176, 33, 29, 49, 98, 4,124,124,124,156,255,204, 74,154, 17,145, 81, 75, 22, 78,199,157,123,143, +113,232,144, 20,119,238,220,129,189,189, 61,228,114, 57, 40,165,208,104, 52, 72, 77, 77,133, 94,167, 65,253,122, 53,177, 99,219, + 50,164,164,164, 2, 34, 82,238,208, 26, 34, 34, 35, 70,191,223, 31, 87,174,158,198,166, 77,155,145,151,151, 95, 78,163, 91,129, + 58, 94, 62,112,118,178, 67,108, 92, 44,136, 8, 54,127,228,187,254, 71,186, 8,127,135,133,133,197,154,189,123,247, 90,119,232, +208,129,201,207,207, 7,207,243,104,235,239,143,137,147, 39,227,216,238,221,240,108, 49, 20, 68,107, 2, 86,105,216, 44, 6,181, +170, 0,190,141, 91, 99,208,224, 33,136,137,142, 70,183,222, 3,160, 86, 23,148,180, 40,138, 45, 88, 90,173, 14, 54,118,174, 8, + 10, 10, 98, 48,102,204,163,114, 69,129, 78, 22, 18, 25,165,110,147,165,186,135,235,119,118, 66,167,209,161,126,253,121,208,241, +214,176,115,249, 4,122,253, 17,228,164,158, 47,236,174,176,238,128,184,152, 24,136, 24,233,163,234, 70, 24,159,159, 90,229,214, +213,107, 21,120,142,163,163,227,209, 27, 55,110, 12, 10, 12, 12,196,153, 51,103, 62, 40, 18, 88,184,113,227, 6,158, 63,127,126, + 52, 51, 51, 51,231, 93, 36,174,139,139, 75,143,128,128,128,192,102,205,154,225,248,241,227,224, 56,238,186, 65, 31,180, 68, 66, + 69, 34, 17,120,158, 7, 1,144,158,149,133, 39, 79,158, 32, 61, 45, 13,122,189, 30,249,121,121,188,143,151, 87, 30,229,121,211, +170,132,167,244,140, 65,148, 49,139,176,248, 88, 53, 68, 86,180,137,137, 73, 76,110, 94,158,173,153,165, 85,174, 66, 38,227,178, +179,178,179,195, 30, 61,212, 26, 88, 41, 20, 35, 60, 52, 52,212, 47, 33, 33, 1, 49, 49, 49, 96,243,115,193,104,180, 16,105, 10, +208,169,117, 43, 24,129, 66, 1, 30, 18, 94, 15, 9, 35, 65,110,225,108,187,240, 74, 69,185, 94,255,134, 37,139, 16, 82,216, 45, +104,108, 12,153,137,233, 43, 22, 45, 67,242,147, 92, 46,223,125,224,192, 1, 71,103,103,103, 44, 92,184, 16, 46, 46, 46,117,235, +215,175, 95,208,182,109, 91, 35,123,123,123,248,250,250,162,117,235,214, 56,121,242, 36, 0, 68, 85, 18,127, 44, 33,164,235,149, + 43, 87,166, 93,187,118,109, 16, 33,132,204,154, 53, 11,221,187,119,135, 66,161, 64, 65, 65, 1, 50, 51, 51,177,101,203, 22, 66, + 41,109, 92, 20, 86,119,133, 66,177,135, 16, 18,167, 82,169, 6,191,206,185,115,117, 3,167,148, 12,126,140,189,131,115,255,246, +221,106,212,239,216,173, 51,106,122,118, 68,199,110, 49, 0,176,204, 74,252,114,232,242, 47,253, 14,219,184, 90,253, 24,116,234, +204, 2,255,246, 29,231,206, 26,107,185,104,217,230,202,243, 62, 33, 4, 28,199, 65, 44, 22, 67, 36, 18,149,105,165, 18,139,197, + 96, 24,195,134,162,112, 28, 23,215,175, 95,191,146,253,132,132, 4, 27, 87, 87, 87, 81,177,229, 10, 0,178,179,179, 17, 27, 27, + 11,189, 94, 15,107,107,107,232,116,186, 6, 85,200, 87, 19, 63,252,240, 67,162, 82,169,240,209, 71, 31, 97,235,214,173, 24, 58, +116, 40,185,116,233,210, 68, 0,147,171,154,223, 69, 34,209,242, 25, 51,102, 76,155, 48, 97, 2, 50, 50, 50,112,226,196, 9,244, +232,209, 3,251,246,237,179, 61,113,226,196,146, 14, 29, 58,128, 97, 24, 28, 63,126, 28, 44,203, 62,174,136, 75, 42,149,190,215, +171, 87, 47, 81,108,108, 44,164, 82, 41,154, 54,109,138,184,184, 56, 20, 20, 20, 32, 62, 62, 30,147, 38, 77, 74, 42,178,234, 68, + 25,144, 46,146, 58,117,234, 76,168, 91,183, 46,206,156, 57,131,129, 3, 7, 94,210,235,245,189, 82, 83, 83, 39,100,102,102,126, + 55, 98,196, 8,248,249,249, 33, 50, 50, 18, 93,186,116, 65,155, 54,109,112,226,196, 9,124,244,209, 71, 23,245,122,125,175, 10, +252, 96,229,166,164,164,152,215,174, 93, 27,201,201,201,200,203,203,195,141, 27, 55,204, 46, 94,188,232,225,228,228,100,241,236, +217, 51,250,229,151, 95, 42, 39, 79,158,140, 53,107,214,224,254,253,251,216,185,115, 39, 58,118,236,168,127,250,244,105,153, 86, +214,180,180,180,205, 0, 54, 91, 89, 89, 37, 27, 27, 27, 35, 55, 55, 23, 38, 38, 38,159,184,184,184,196, 95,191,126,221,201,213, +213, 21,233,233,233,248,244,211, 79,161, 82,169,224,230,230, 86,103,241,226,197,136,141,141, 69,102,102,230,159, 90, 73,243, 28, + 15,128,135,135,171, 9, 78, 31,219,134,224, 7,207, 16,252, 32, 20, 50,121,225,224,118,149,170, 0,141,235,215, 65,139,166,205, +145,144, 24,143,159,119,110,131,149,141,115,133,229, 8,165, 20, 82, 49, 7, 31, 47, 7,236,222,185, 25,199, 79,156,195,206,159, +247,148,140,105, 19,139, 37,104,212,184, 5,154, 54,245,199,179,231, 81,216,182,109, 19,108,237, 92,133, 62,191,234,118, 17,150, +254,125,173,117,208,209,223,223,159,201,203,203,131, 90,173, 70, 82, 82, 18, 94,190,124, 9, 11, 75, 11, 60, 75,120,129, 0,165, + 14, 73,124, 14,194, 31, 60,226, 8, 35,185, 95,217, 3,123,181,111, 4,180,111,132,207, 62, 28, 90,126,226,131,194,216,204, 6, + 26,141, 6, 58,189,254, 41,214,173, 43,183,165,204,114,250,179,167,207,156,111,254,225, 7,239, 73,130,206,111,133, 94,203, 67, +165, 55, 71,190, 90,139,124,157, 4, 34,243, 30, 64,218, 37, 48, 98, 57, 90, 54,172,131,195,135, 78,234, 40,171, 63,103,112, 4, +217,251,129, 77, 14, 45, 37,176, 82, 94, 57,175, 48,181, 50,184,139,176, 84,156, 30,222,189,123,119,207, 86,173, 90, 41, 59,116, +232, 80,171,168,194,212,238,222,189,187,160,200, 58, 80, 85,213,255,138,247,118,103,103,231, 6, 98,177, 56,176,119,239,222, 13, + 70,143, 30,141, 71,143, 30, 97,215,174, 93, 79,189,188,188,174, 86, 40,172,100,178,244,188,148, 20, 11, 19, 15, 15,177,165,169, +105,194,201, 19, 39,220, 59,119,233, 66, 98, 98, 98,144,158,158, 14,181, 90,141,251, 15, 30, 80, 9,195,196, 17, 51, 51,209,227, +123,247, 68,140, 76,150, 94,133,160,190,172,100, 22,225,210,234, 90,179, 92, 29, 45,107, 47,152, 61,174,166, 90,173,246,203,201, +201, 97,197, 18,137,196,197,193, 34,186,138,221,141,199,207,158, 61,219,175,115,231,206,242,200,144,251, 96,179,179,161,205,206, +132,148,231, 96,213,184, 33, 24,157, 6,208,234,225,236, 67,161,206, 82,226,210,173,199,122,141, 70, 83,233, 74,237,197, 2, 75, + 84,202, 25, 32, 0,200, 76, 76, 32, 55, 53,131,220,196,228,245, 46, 68, 82, 73,122, 43,223,123,239,189, 78, 45, 91,182, 4,165, + 20, 91,182,108,129, 78,167,147,233,116, 58,104,181, 90,232,116, 58,228,228,228, 96,231,206,157,216,184,113,227, 53, 0, 63, 25, + 32, 82, 89,137, 68, 50,129,101, 89, 59,185, 92,174,179,181,181,149,238,223,191,191,196,109, 68,163, 70,141, 96,108,108,172, 33, +132,232, 0,192,193,193, 65,191,125,251,118,113,223,190,125,165,101,241,121,215,175, 59,189, 38,107,217, 94, 97, 84,195,195,204, +166, 1,106,122,118, 4, 0,116,233,253, 33,106,214,113, 67, 78, 90,136,135, 90,245,178,191, 84,156,105,249,104, 93,124,152, 81, + 47,191,209,249, 41, 23,159, 0,216,102,224, 55,132,206,157, 59,163, 91,183,110, 37,221,129,118,118,118,208,106,181,101, 78,231, +175, 8,197, 78, 68,191,254,154,136,176, 0, 88,109,110,150, 4,192,182,180,184,138,137,137, 65, 76, 76, 76,177, 85,184,210, 52, + 42,149, 86, 70,158,158,158,163, 26, 55,110,140, 19, 39, 78,224,206,157, 59,241,167, 79,159,118,246,247,247,135,135,135,199,104, + 66,200, 28, 74,203,247,161, 87, 86,151, 94,187,118,237, 62,159, 48, 97, 2, 66, 67, 67, 49,110,220,184,244,216,216,216,195,251, +247,239,255,104,193,130, 5,162,110,221,186, 33, 49, 49, 17,203,151, 47,231,174, 94,189,186, 2,192,194, 74,210, 61, 34, 54, 54, +214, 69,173, 86, 35, 35, 35, 3, 44,203,162,160,160, 0, 39, 79,158,196,206,157, 59,139,199, 35, 61, 53, 48,120, 86,254,254,254, +150, 79,158, 60,193,182,109,219,160,213,106,231, 82, 74,213,132,144,159,102,206,156, 57,199,222,222,222,188, 75,151, 46,104,220, +184,208, 23,220,190,125,251, 48,105,210,164,139, 90,173,182, 87, 37,113,176,202,193,193,225,147,113,227,198,213,157, 58,117, 42, +162,163,163,205, 78,156, 56,209,230,250,245,235,164, 88, 8, 89, 91, 91, 99,205,154, 53,152, 50,101,202, 79, 0,146,111,221,186, + 53, 42, 42, 42,234, 27, 74,233,166, 74,222,127,129,139,139,203, 2,158,231,149, 93,186,116, 57,185,114,229, 74, 50,104,208, 32, +104,181,218, 18,215, 7,150,150,150, 59,100, 50, 25,218,182,109,139,105,211,166,129, 97,152, 17,127,118, 69, 77, 41,135,130,204, + 80,112, 26, 75, 52,170,239,141, 70,126, 53,112,250,124, 48, 0,160,211, 0,127, 20,228,231, 98,251,246, 45,120,250,244, 9,196, + 18, 9, 44,172, 28, 12,250,134,180, 57, 17,200,210, 37,162,115,135,166,232,209, 45, 0, 63,237,216, 7, 86,175,195, 71, 31, 14, + 71,102, 86, 22,118,236,216,134,103,207,163, 32,150, 72, 96,109,227,244, 39,188,103,249, 90,228, 95,105,193, 42, 46, 80,120,158, + 71,124,124, 60,238,222,189,139, 23, 47, 94, 64,169, 84, 66,197,114,252,166,179, 87,121, 66,164,113, 60,165,215, 40, 91,226, 85, +248, 77, 14,142,139, 47,229, 97,214,220,210,210, 82,166,209,168,192,178,250, 82, 37, 21, 1, 8, 32, 21, 3,142, 78, 53, 17, 27, + 19, 75, 85,106,245,197, 10, 91, 96, 26,245,154,163,135, 15, 76,104,221,198,223,166, 71,167,175,113,248,200, 60,100,230,228, 64, +173,147, 32, 95,173, 67,129, 26,176,176,242, 66,179,250, 13,144,144,144,142,144, 59,151,242,196,154, 2, 67, 6,128, 62,249,126, +238,135,158, 31,126, 54, 29, 70,238,109,160, 9, 63, 12, 62, 47,185,196,130,165, 48,177,132,149,155, 15,178,242, 53, 56,112, 46, + 24, 0, 12, 94,146, 37, 57, 57,185,192,209,209,241,224,248,241,227,151,221,191,127,175, 38, 0,220,190,125,251,121, 66, 66,194, +172,228,228,228,130,170, 36, 96, 41,239,237,196,200,200,232,150,167,167,231,139, 30, 61,122,152,245,235,215, 15,182,182,182, 8, + 14, 14,198,183,223,126,251, 68,171,213,206,191,120,241, 98,133, 93, 58, 90,173, 54, 62,248,200, 17,179,128,247,223,183,152,222, +167,207,242, 9, 19, 38,172, 89,184,112,161,196,211,211,147,232,117, 58, 60,124,248,144,238,222,181, 75,191,113,246,236,213, 50, + 99, 99,241,237,163, 71, 37,172, 70, 19,255, 87,103, 98, 23, 23,151,246, 61,187,183,247, 89,177,106, 29,212,170, 60,220,186,254, + 27, 50, 51, 83,177,121,203, 33, 31, 23, 23,151,246,113,113,113,151, 12,180,100,236,251,241,199, 31,167,181,104,220,184,113, 45, + 87, 87, 60,140,126, 1, 25,207, 65,202,178, 96,116, 26,136, 88, 53, 92,253, 40,136,200, 20,137, 73, 57, 88,188,247, 96, 40,199, +113,251, 42,227,173,219,243, 61, 44,140,203, 6, 33, 4, 43, 91,249, 65,102,106, 2,169,177, 9,198,255,122,190, 68, 84, 29, 95, + 56, 27, 50, 19, 19,212,110,225,111, 72, 33, 84, 96,106,106,122,247,225,195,135,205,252,252,252, 48,109,218, 52,188,124,249, 18, + 60,207, 35, 57, 57, 89,157,152,152, 24,159,154,154,250, 18,192, 97, 0, 91,169,129, 45, 0,150,101,237,130,131,131, 1, 64, 10, + 0,231,206,157,131,147,147, 19,204,205,205,145,147,147,131,233,211,167,203,231,207,159, 15, 0,184,123,247,174,164,120,128,113, + 89,120, 24, 28,190, 34, 43,151,102,210,188,123,253, 51,216,123,245, 59,118,139, 69,151,222,163,113,230,248, 79, 56,127,250, 44, +172,196, 47, 95,192, 56,247,100,218,139,180,156,184,124,207, 31,124,154,124,196, 36,230,159,254, 97, 98, 95, 75,198,209,145, 63, + 48,107, 99,118, 86, 37,113, 0,134, 97, 74,198, 96, 21, 15,104,175,170,184, 42,141, 5, 11, 40, 79, 64,136,141, 76, 26, 18, 27, + 27,219,197,197,197, 5,201,201,201,136,141,141, 69, 76, 76, 12, 98, 99, 99, 81,167, 78, 29, 60,123,246, 12, 82,169,244,190,129, +180,195, 7, 15, 30,108,170,213,106,177,103,207, 30, 22, 64,239, 3, 7, 14,220,109,214,172,153,184,123,247,238,166, 27, 54,108, + 24, 14, 96,107, 21,130,105,108,102,102, 38,213,233,116,216,176, 97, 3, 98, 99, 99,219, 83, 74,195, 9, 33, 63, 12, 30, 60,120, +163,159,159, 95,157,208,208,208, 39,121,121,121,227, 41,165, 33, 6,148, 69, 31, 54,109,218,244, 0,207,243,238,157, 59,119, 54, + 94,181,106,149,217,227,199,143,225,226,226, 2,158,231, 31, 86,113,169,169,140,179,103,207,102,182,110,221,218,178,104, 64,251, + 98, 66,200, 55, 12,195, 44, 11, 12, 12, 52,223,189,123, 55, 78,156, 56, 1,173, 86,139,136,136,136,212,208,208,208,239, 1,172, +168,104, 2, 70, 81, 90, 63, 7, 48,147, 16,210,224,135, 31,126, 24,234,236,236, 60,252,250,245,235,228,202,149, 43, 88,185,114, + 37, 59,111,222, 60,113,145,248,121, 14,224,163,162,252, 62,199,192, 30,133,205, 0, 54,187,184,184,196,175, 92,185,210,244,202, +149, 43, 72, 74, 74,242, 4,208,162, 89,179,102, 59, 54,109,218, 4,107,107,107,196,198,198,162,117,235,214, 28, 33,100,132,165, +165,229,190, 6, 13, 26, 32, 36, 36,228,207, 42,226,244, 58,157, 22,102, 86, 53,145,151, 21,131,212,216,235, 80,154, 58,160, 91, +199,134, 40, 80,105,113,236,232, 47, 8,121,248, 0, 34,145, 8,246, 14,174,176,176,180, 65,100,228, 19, 0, 8,171,152, 83, 7, + 83,203, 26,200,203,142,133, 54, 37, 24, 70, 38,118, 24,253,126,127, 20,168,116, 56,116,248, 23,132,134,134,128, 97, 24, 56, 56, +186,194,220,162,144,147,208, 10, 57, 5, 84, 85, 96, 49, 12,115,225,212,169, 83, 3, 91,180,104, 33,126,250,244, 41,158, 62,125, + 90,156, 49, 89, 2,238, 96,114,200,145, 97, 21, 84,254,157,139,125,101,148, 94, 91,208,196,212, 52,254,113, 68,184,125,102, 70, + 50, 30,220,187,138,167,145, 15,241,226, 89, 56,116, 58, 53, 24,145, 8, 34, 70,132, 26, 53,235,225,234,181,235, 90, 45,199,221, + 40,143, 19, 0, 50, 50,162,114, 77,236,189,134, 44, 90, 56,231,248,148,233, 95, 25, 13, 26,184, 9, 33,143,195,144,199, 58,128, + 82,192,193,218, 24,141,106,205, 64,124, 66, 42,246,254,180,161,128,215,233, 70,148,246,129, 85, 22, 39, 0,216,167,193,119,227, +150,159,198,108,221,185,251,171,233,159,143,181,239, 27, 56, 2,178,140, 48,232, 19,130, 81,179, 89, 15, 16,185, 5, 78, 4,157, +199,165,187, 97,201, 60, 71,191,178, 79,199,255, 42,227, 44,141,236,236,236, 59,201,201, 73, 53, 75,121,109,175, 41,151, 43,238, + 84, 34,166, 58,191,230, 23,232, 21, 15,241, 12, 35,106,177,112,225,194,124, 71, 71, 71,109,104,104, 40,126,248,225, 7,254,238, +221,187, 23,100, 50,217,230,132,132, 4, 77,101,156,182,122,253,131,221,179,102,249, 54, 15, 12,164,195, 62,255,188, 0,114,249, +196,229, 43, 87,206, 74,205,204,116,162, 60, 15, 91, 43,171,184,229,179,103, 47, 29, 56,120,112,230,163,171, 87,141,174, 31, 57, + 98, 36, 99,217,224,202,194,249, 46, 80, 17,103, 92, 92,220, 37,207,218,110,216,190,117, 21,116, 58, 13, 18,227, 11, 13, 87,105, +233,217,168, 72, 92,189,206, 89,212,249, 31,248,229,252,249, 55,191,156, 50,217,161, 93,167,206,136,121,112, 31,186,140, 84, 16, + 61, 11, 9, 17, 35, 63, 69,137,148,228, 60,204,252,121,127, 74, 94, 65, 65,224,235,142, 28,203, 11,103,177,133, 74,110,102, 10, +169,177, 9,100, 38,166,175, 88,173, 20,102,102,144, 25,155, 64, 44,147,149, 53, 24,254, 13,206,188,188,188, 1, 3, 7, 14, 12, +185,125,251,182,229, 71, 31,125,132,214,173, 91,223, 83,169, 84, 29, 40,165,185,213,141, 79,177, 88,156,210,164, 73, 19, 59,137, + 68,194,142, 25, 51, 70,156,150,150, 86,226, 9, 61, 47, 47, 15, 39, 79,158, 68,241,148,251, 71,143, 30,161, 94,189,122,229,114, +126, 52,227, 97, 60,128,133, 83, 7,185, 44,191,249, 32,113, 34,128,101, 53,235,184,226,252,233,179,184,114,254,250,172,150,126, +252,186,158, 35,154,125,163,236, 48,120,186, 79,147,143, 24, 19, 51, 71,236, 56,244, 11, 19, 30,188,109,113, 65,193,195,218, 0, +190, 40, 47,156, 69,179,184,222,112,201,160, 82,169, 12, 18, 87, 21,229, 37, 10, 74,165, 89,100,206,160, 65,131, 90,220,186,117, +203,212,196,196, 4, 58,157, 14,148, 82,212,174, 93, 27, 98,177, 24,223,127,255,125,126, 90, 90,218, 60, 67, 56,141,141,141, 39, +116,235,214, 13, 17, 17, 17,184,115,231,206, 47,148,210, 16, 66,200, 47, 79,159, 62, 29,210,182,109, 91,252,244,211, 79, 19,202, + 19, 88,229,113,242, 60, 95,218,231, 81, 70, 81,222,125, 0,160,101, 85,223,189,200, 89,104, 27, 0,176,182,182,142,181,183,183, + 55,123,240,224, 1,220,220,220,160,211,233, 90, 84, 37, 47, 81, 74,245,132,144,245, 23, 47, 94,156,223,166, 77, 27, 76,152, 48, +161,253,197,139, 23,219,183,105,211, 6, 62, 62, 62, 56,127,254, 60,118,237,218,117,144,227,184,241, 0,178, 40,165, 92, 85,210, +168, 72, 48,134,212,175, 95,127,184,171,171, 43, 86,174, 92,169, 11, 9, 9,153,180,104,209,162,213,247,239,223,151,215,171, 87, + 79, 20, 18, 18,194, 87, 39,221, 45, 45, 45, 81,204,105, 97, 97,241, 84,171,213,182,144,201,100, 24, 48, 96, 0, 52, 26, 13, 18, + 18, 18, 56, 43, 43, 43,241, 95, 81,214, 81, 66,230,126,244,241,196, 31, 62,254,104,184,162,105,147, 70, 40,200,137,131, 42, 47, + 25, 5,185, 73,248,126,107, 16, 8, 17,193,214,214, 17,118, 14, 46,136,142,142,193,181,223, 78,104,243, 11, 84,107,100,122,126, + 89,197,156,159, 23,114, 54, 46,228, 44,200, 79,129, 42, 47,165,132,211,206,206,169,136, 51, 26, 87,175,159, 80,171,242,243, 87, +105, 41,249,238,143,124,247,255,156,192,202,204,204,156, 52,118,236,216, 14, 51,103,206,180,102, 89,150,177,178,178, 66,116,116, + 52,123,240,224,193,140,188,188,188, 73,213,122,168, 68, 18,226,233,229,221,161,111,223,190,236,123,239,245,145,142,252,176,187, +216,214,206, 14,217, 89,233,136,140,184,143,199, 97,193,240,244,110,136, 5, 11, 87, 3, 22, 22,149,206,212,201, 75,142,188, 96, + 98,239,213,251,235, 47,191,216,215,166,125, 87, 51,239,122, 13,165,141,106,155, 67,167,103, 17, 23, 23,135,163, 71, 30,232, 66, +239, 94,201,225, 89,237,144,252, 84,195,150,202,185, 88, 56,128,119,115,125,123,178,107,201,242,239,167,109,216,188,125,250,204, +137, 31, 25,183,245,239,130,135,103,127,194, 47,199,247,229,171, 53,218,229, 82, 6, 43, 31,166,209,130,170,198,129, 90,173,214, +191, 62,116, 68,173, 86,235,223, 54, 65,183,111,223,142,164,164, 36, 93,108,108,236, 89,150,101, 15, 87,101, 54,226, 58, 74,181, +129,132,156,253,210,223,191,251,151,167, 79, 43, 70,205,152,161, 29, 49,114,228, 23,208,104,116,144,201,168,216,216, 88, 4,185, + 92,242,232,234, 85,163,181,159,126,106, 69,180,218, 51, 63, 85,210,250,124, 13,239,124, 22, 97, 41, 11, 22, 70,125, 52, 5,170, + 82, 22,172, 27,119, 34, 81, 21, 11, 86, 81, 33, 30, 67, 8,105, 57,113,238,151,135,134,116,235,228,227,231, 94, 67,110,235, 81, + 3, 38, 14, 14, 72, 79, 77,197,213, 59,143,245, 11,247, 29, 10, 45, 18, 87, 6,249,133,225,121,190,100,150, 91,167, 73, 51, 65, + 24, 6, 40, 18, 2,197, 51,129, 60,154,181, 6, 17,139,193, 81, 30, 26,141,134, 26, 16,206, 56, 66,200,128, 17, 35, 70,156, 59, +126,252,184,168, 91,183,110,141, 14, 31, 62,204,191, 77,222,209,235,245, 46, 69, 66, 43, 71,169, 84,138, 71,143, 30, 13,189, 94, +143,130,130, 2,100,103,103, 35, 60, 60, 92, 51,104,208, 32,121,145,112,208, 15, 25, 50,164,210,242, 99,213,129, 56,245,212, 65, + 46,235,172,196, 47,135,230,164,133,120, 88,137, 95,190,104,233,199,175, 91,117, 32, 78,253,245, 20,139, 69,105, 47, 47, 69, 38, +230,159,254, 97,199,161, 95,152, 15,250, 15,224, 92, 76,158,204, 82,216,209,131, 29,251, 84, 90, 9,189,225, 84,244, 45, 60,224, +191, 2,157,142,222,179,182,182, 92,218,188,121,243, 57,171, 86,173, 50,177,181,181, 5,203,178,120,254,252, 57,214,175, 95,159, +159,153,153,185,152, 82,122,215, 16, 46, 47, 47, 47, 15,177, 88,140,189,123,247, 2,192,250,162,195,235, 15, 31, 62, 60,228,163, +143, 62, 66,141, 26, 53,124, 9, 33,114, 90,133,239,136, 82, 90,210,171,240,142, 43,246,103,107,215,174,117,118,112,112, 32, 39, + 79,158,100, 25,134, 57, 86, 13,154,165,187,118,237,106,197,243,124,167,182,109,219,162, 78,157, 58,197, 22, 79, 28, 57,114,100, + 31,199,113, 35, 42, 18, 86,134, 32, 60, 60,252, 74,108,108,236,208,105,211,166, 73, 87,173, 90,181,122,234,212,169,242,216,216, + 88,132,133,133,221,122, 11,206,107,177,177,177,131,139, 56,213,102,102,102,242, 37, 75,150, 96,202,148, 41, 52, 34, 34, 98,148, +149,149,213,206,191,170,146,142,120,146,190,179,126, 45,251,211, 11, 23,173,154, 95,187,150,199,184, 49,163, 7, 51, 94,158,245, +144,159, 29, 7,107, 27,123,184,184,214, 68,106, 74, 26, 78,157, 58,201,165,165,101,253,200,137,200,215, 79,158,164, 39,188, 13, +167,179, 75, 77,164,164,164,224,196,137, 19, 92, 86,102,206, 22,232, 69, 11,195, 94,102, 38, 67, 64,149,251, 60, 43,221, 0,216, + 88, 90, 90,238, 49, 51, 51, 75, 54, 51, 51, 75,182,180,180,220, 3,192,198,128,251, 58,151,252,167,148,121,101, 27, 56, 80, 1, +133,162, 37,196,226,169, 22,150,150, 39,205,205,205,211, 3, 2, 2,180, 63,252,240,131, 58, 60,252, 17, 31, 31, 31, 75,205,205, +205,115,138,175, 47,139,243,245,205,210,178,150,169,177, 99,189,249,230, 46,141,174,154, 56,250,230,154, 56,250,230,154,187, 52, +188,102,236,232,251,149,165,101, 45, 83, 67,194, 89,222, 86,211, 14,182,158, 54,216,224,109, 75, 84,158, 54,216, 80,211, 14,182, +134,190,123, 5,215, 44, 37, 4, 28, 33,224, 80, 56,157, 26, 85,229, 44,197,193, 51, 12,243,147,155,155,155, 3, 0,198,144,116, + 45,143,115, 36, 80, 99,164, 92,254,241,129, 89,179, 70,189,184,120,113, 68,206,243,231,195,178,159, 61, 27,124,127,223,190, 33, +235,135, 12, 25, 57, 76, 46,255,100, 32, 80,203, 80, 78, 71, 71,199,165,193,193,193,199, 13,221, 28, 29, 29,151, 86, 53, 62,107, +213,116, 62,221,173,115, 11, 58, 97,108, 32,157, 48, 54,144,118,235,220,130,214,170,233,124,186,186,105, 4,128, 48, 12, 51, 84, +169, 84,238, 49, 86, 42, 31, 26, 43,149, 15,149, 74,229, 30,134, 97,134, 2, 32,134,114, 90, 91, 91,223,181,183,183, 79,174,202, +102, 99, 99,115,175, 10,225, 28,230,225,225, 17, 43, 18,137, 86, 27,154,230, 6,112,182,102, 24, 38, 27,128,174,244, 38, 22,139, +227, 74, 93,227, 46,151,203,111, 40, 20,138,253,134,112,126, 55,183,222,252,107, 65,159,133,124, 55,183,222,252,215,207,125,222, +207,242,195,155,231,190, 78,255,188,159,229,135,134,132,211,206,206,238,162,157,157, 93,162,157,157, 93,162,189,189,125,133,155, +141,141,205,221,234,124,155,148, 82, 64,130,102, 54, 54, 54, 65,102,102,102,169,102,102,102, 41, 54, 54, 54,167, 1, 52,173, 74, +124,138, 68,162,101,190,190,190,106,134, 97,254,247,218,245, 43,106,215,174,173, 22,139,197,203,171,248,189,155,181,109,219,150, +123,240,224, 1,109,223,190, 61, 5, 96,249, 14,211,221,193,210,210,242,164,153,153, 89,140,169,169,233,247, 0,140,171,195, 89, +212,197, 60,171, 86,173, 90, 73, 1, 1, 1,180, 86,173, 90, 49, 0, 62, 3, 32,122, 71,225,108, 18, 24, 24,168,139,137,137,161, +148, 82, 26, 19, 19, 67, 3, 3, 3,117, 0,154,188, 5,103,179,114, 56, 71,190,109, 57, 95,213,173, 34, 78,159,154, 54,181,234, +214,177,220, 63,124,128, 63, 31,116,116, 53, 93, 48,103, 28,237,210,190, 30,245,174,109,121,200,211,211,218,243, 93,112,206,159, + 51,150,118,110,231,203,251,212,178,220,231, 83,211,166,214,159,249,238,255,182,141, 84,115,169,170, 42,155, 58,137, 33,222,101, +157,156,156,144,158,222, 66, 33, 22,251,203,229,242, 14, 34,145,232,114, 70, 90,218,231,133,166,123,112,127, 69,247,211,235,168, + 93,155,200,202, 91, 58,160, 58,156,175, 15, 80,175, 14,103, 85, 56, 12,229, 44,111,177,103, 94,163, 73,176,102,217,187,235,104, +249,113,240, 58,167,139,139,203,199, 60,207,123, 24, 26, 38,145, 72,244, 34, 46, 46,110,107,117,226,211,203,203,139, 62,121,242, +196,160, 65,146,127,117, 94,250, 47,113,238, 92,221,192,201,187,126,221,233, 15,131,195, 87, 20,117, 31,150,224,235,137, 86,166, +254, 29, 3,230, 93, 61,127,241,155, 5,235, 50,114,255,109,239, 78, 8, 17,149, 53, 14,174,120, 46,122, 85, 57,165, 82,233, 15, +205,155, 55,255,248,230,205,155,255, 99, 89,246,147,191,235,187, 23, 45,109, 36,163, 85,179,114, 27, 20, 78, 66, 72, 19,134, 97, +166,250,250,250,182, 8, 11, 11,187,197,113,220, 42, 74,105,240,223,141,243,143,202,159,190,158,214, 77, 41, 45,113,150,189, 56, +252,105,250,237,119,198, 73,121,142,167,204,162,199,207,210,238,253,217,239,254,159,235, 34,124,103,150,178, 34,129, 84, 33, 18, + 18, 98, 1,196, 2, 56,240,119,141, 48, 67,196, 85, 21, 45,136,201,127, 7,142,178,186, 11, 1, 92,127, 23, 92,175,139,165, 63, + 18,145,145,145, 68,248,172,255,126,120,127, 74, 72, 2,128,201, 77,203,112, 77, 85, 36,170,166,119,120,239, 95,219, 75,192,151, +115,188, 90,173, 91,157, 78, 55,142, 16, 50,181, 42,179, 15,255,162,247,166, 0, 52,127, 16,119, 48,128, 97,127,119,206, 63, 10, + 97, 79,210,239, 2,232,243,119,231,252,175, 67, 36, 68,129, 0, 1, 2, 4,252,227, 68,155, 74,136, 5, 1, 2,254,222, 32, 0, + 58,151,243, 1, 27,108,250, 35,132,116,174, 70, 1,113, 86,224, 20, 56, 5, 78,129, 83,224, 20, 56, 5,206,255, 22,231,127,169, + 37,244,135,109,248,147, 7, 0, 10,156, 2,167,192, 41,112, 10,156, 2,167,192,249,207,228,252,183,109, 66, 23,161,128, 63, 28, +223, 7, 18,231,239, 3,137,243, 31,117,189, 0, 1, 2, 4, 8, 16,240,119,131,248,175, 14, 0, 33,196, 9,133, 14,242,106, 3, +120, 12,224, 10,165, 52,243, 45,248,108, 0, 12, 38,132, 12, 42,178,208, 29, 0,176,159, 82,154,102,200,253, 70, 70, 70,201,106, +181,218, 14, 0, 20, 10, 69,138, 90,173, 46,189,230, 0, 41,181, 1, 0, 45,222, 42, 26,176, 90,179,102,205,100,141, 70, 99,103, +192,227,179, 41,165, 33, 34,145,232,161,137,137,201,249,199,143, 31, 31,175,202,187,119,236,216,113, 20,195, 48,139, 1,128,227, +184,185,231,207,159,223,254, 7,166, 91, 11, 87, 39,135,159,116,122, 29,155,156,154, 49,143, 82,122,180,172,235, 54,246, 33, 75, +197, 4,211,139,254, 47, 31,127,140,206,174,136,183,170,215, 87, 16,190,166, 18,137,100,130,189,189,125,143,184,184,184,187, 0, +102, 80, 74, 43,245, 66,236,230,230,246,190, 88, 44, 30,193,113, 92, 45,134, 97,158,177, 44,187, 43, 38, 38,102,167, 80, 84, 8, + 16, 32, 64,128,128, 63, 76, 96,213,181, 33, 14, 20, 24, 10,130, 46,160, 56, 67,128,189, 17,105, 52,201,208,251,123,213, 37,122, + 61, 91,248, 76,169, 8,220,201, 40,209,150, 94,189,122,185,124,254,249,231,104,221,186, 53,110,222,188,217,234,199, 31,127,252, +144, 97,152, 16,158,231, 47, 0,184, 73,169, 65, 46, 17,140, 1,244, 5, 48,188, 71,143, 30,157, 23, 47, 94,204,212,171, 87, 15, + 42,149, 10, 23, 47, 94,244, 95,190,124,249, 26, 66,200, 89, 0,187, 1, 28,165,148,230,151,199,165, 86,171,237,138,181, 18, 33, +196,110,192,128, 1,119, 74,175, 17, 71, 8,129, 72, 36, 2,165,244, 6,128, 27, 60,207,223, 56,112,224, 64,108, 93, 66, 90,140, +245,144, 30,156,244, 92,235,242, 58,167, 70,163,177, 59,242,221, 18,136,229,114,104,114,115,208,106,244,239, 51,171,207,204,159, + 14,194,179, 96, 64, 51, 59, 44, 90, 19, 2,224, 97, 66, 66, 66, 72,251,246,237, 95, 84, 53, 49, 25,134, 89,124,234,212, 41, 71, + 74, 41,186,117,235,182, 24,192, 31, 34,176, 8, 33,242,150, 77, 27, 94, 56,246,203, 30, 69, 94, 70, 50,186,247, 29,178,139, 16, + 50,138, 82,250,203, 43, 98,169, 39,177, 39, 98, 76,255,116,201,110, 6, 0, 54,206, 25, 62, 99, 77, 55,178,110,242,105,154, 68, + 8,233, 0,148, 44,173,244, 29,165,244,194,198,158,196, 30, 12,102,126,186,100, 55, 1,128, 77,115,134, 79,223,216,147,172, 29, +127,162,106,179, 36, 9, 33,227, 71,141, 26,181,110,241,226,197,140,163,163, 35,226,227,227,187,251,250,250,122, 17, 66,124, 43, + 26, 28,236,225,225,177,175, 67,215,126,181, 2, 7, 13, 53,178,177,182, 68,124, 98,170,249,254, 61, 63,142,245,240,240,232,241, +226,197,139, 33, 66,113, 33, 64,128, 0, 1, 2,222,153,192,106,226, 68,140,242,117,232, 39,102,200,251,109, 91,212,235, 52,172, +103, 91,145,175, 79, 29,132, 61, 10,239,122,244,252,173,229,190,246,162,115, 44, 71,119, 26, 75,113, 36, 56,161,226,153, 45,122, + 22,226,160, 35,187, 1, 0,227, 63, 28,206,220,190,125,187, 78,147, 38, 77, 74, 86, 80,239,212,169, 19, 58,117,234, 68, 54,110, +220,216, 48, 40, 40,168,225,182,109,219,116,132,144,159, 40,165,191, 85, 80,153, 78,168, 93,187,246,242,117,235,214,201,219,183, +111, 15,185, 92, 94,114,206,196,196, 4,125,250,244, 65,159, 62,125,152,132,132,132,110,199,142, 29,235,246,221,119,223,105, 9, + 33, 95, 80, 74,215, 27, 18, 65,243,231,207,111, 82,198,225, 83,132,144, 40,150,101,239, 53,104,208, 32,214,155,144, 58,227,122, +182, 62, 51,190,141,167,113,185, 17, 45,147, 97,199,168,194, 58,186,180,192,122,113,254, 36, 76,204, 76,211,149,166,166, 33, 0, + 30, 2, 8,161,148, 62,140,138,138, 10,247, 33,164, 97, 75, 75,209, 79,219, 50,184, 6, 85, 16, 89,136,141,141,133,185,185,185, + 81, 64, 64, 64, 34, 33,228,171, 11, 23, 46,108,121,199,249,166,197, 87,211,199, 75, 51, 95,134, 32, 41,226, 6,166, 14,242, 87, + 78,254,254,215,111, 0,252, 82,177,240, 17,137,190,187,206,207,154, 12, 76, 2, 48, 47, 61, 61,189, 61, 0, 88, 91, 91,203, 0, + 92, 88,125, 11, 61,167,180, 33,213,118,179, 64, 8,145, 50, 12,179, 97,199,142, 29, 31,189,255,254,251,133, 75, 60, 92,189, 10, + 19, 19, 19, 44, 92,184,176,198,180,105,211,150,162,240,217,101, 90,174, 2,186,244,171,185,102,249, 55, 62,185, 25,217,154,205, + 27,246,223,113,246,243,102,198, 77,152,102,186, 94,175,117,112,115,115,123, 95,176,100, 9, 16, 32, 64,128,128,119, 34,176,188, +109,201,246,182,141, 61, 7, 15,235,229, 47,175,239, 87, 15, 82,249,239,139,187, 54,105,218, 20, 77,154, 54, 21,205,202,203,237, +114,251, 78,112,151,131, 65, 55, 53,222,182,100,255,227, 84, 58,202,208,135, 23, 47, 22,187,184,175,125,199,252,172, 20, 5, 0, + 24, 91,216,169,231, 28, 73, 58,223,166, 77, 27,184,184,184, 72,207,157, 59, 55, 6,192,111, 21,208,204,121,252,248,177,156, 97, + 42,246, 99,234,228,228,132,129, 3, 7,194,219,219, 91, 22, 16, 16, 48, 7,191, 47, 91,241, 10, 20, 10, 69, 10, 33,196, 14, 0, +172,172,172,184,175,190,250,234, 1, 45, 2, 0,240, 60,127,131, 97,152, 27, 60,207,223, 58,122,244,104, 92, 61, 66,236,122, 55, +241,190, 50,126,228, 64, 37, 61,184,166, 92,113,160,206,201, 41,243,184,210,196, 56,213,200,216, 56, 68,174, 84, 60, 4, 16, 2, +224,161,179,179,115,120, 61, 66, 92, 90,122,123, 4,109,156, 50,220,212,144,184,108,210,164,137, 87,135, 14, 29, 20, 28,199, 33, + 63, 63, 31,155, 54,109, 50, 55, 50, 50, 50,239,209,163,199, 2, 0, 37, 2,203,151,144,250, 3,156,152, 79,190,138,103, 63,171, +134,128,177,104,219,170,233,203,239,151, 45, 48,107,218,178, 45,158, 92,248, 25, 25, 25,185,200,206,202, 3,207,243,111,172,252, + 59,254, 4, 77,222,216,135, 44,223, 56,123,248, 76, 34, 18,145,134,253,103,224, 61,135,236,137,132,144, 71, 0, 36,197,171,213, + 3, 16, 19, 66,156,252,252,252,150,215,233,218, 22,155,230,142, 4,229,121, 10, 96,185,161,214, 43, 66,136,157,169,169,233,209, +160,160,160, 22,205,154, 53,195,205,155, 55,241,252,249,115,140, 31, 63, 94,251,217,103,159, 73, 63,248,224, 3, 50,117,234,212, +207, 9, 33, 7, 41,165,215,222,248, 16,196,226, 17,125, 3,135,200,242,178,114,212, 58,173, 78,107,109,109, 78,213,249,234,220, +244,204, 28,213,224,161, 31,233, 30, 6,223, 28, 1,224, 13,129,245, 54,241, 41, 64,128, 0, 1, 2, 12, 70, 51, 0,182, 0, 82, + 1,220,121,109, 31, 69,255, 81,198,126, 26, 10,135,245, 88,151,226, 74, 67,225,240, 30, 91, 20,250,232,188, 13, 32,243, 93, 7, +152, 80, 74, 81,228, 80,184,216,177, 48, 41, 37,176,232,227, 84, 10, 54,227, 25,184,244, 40,112,185,111, 46,111, 68, 20, 22,200, + 86,113,136,125, 22,142, 81,147, 23,226,113,106,249, 30,180,123,213, 37,122,115, 25,196,166, 82, 64,170,180,208, 12, 91,118,250, +122,211,166, 77,213,115,218,139,122, 45,221, 88,104,217,154,250,201,112,180,154,114,240,244,179,103,207, 88, 39, 39, 39,188,255, +254,251,160,148,246,174,160, 98, 77,206,189,115,221, 46,162,119,107, 52, 79, 46,123, 24, 84,100,100, 36, 46, 95,190,140,152,152, + 24,212,170, 85, 11, 99,198,140, 73,161,148,218,151,199,217,189,123,247, 75,223,125,247, 93,187,149, 43, 87,134,236,216,177,163, + 13,165,101,175, 53,232, 75,136,113,195, 26, 14,119,182, 45,157, 89,139,156,252, 73, 82, 16,243, 20, 22,151, 84,164, 12,113, 71, + 19, 18,126,143,187,111,189, 28, 97,108,110, 10, 99, 51,147,228, 15,130,238,150, 88,174,138,126, 31, 55, 33,196,204,197,209,250, +238,222,213,243,156, 69,231,247, 41,164,155,111,144,202,196, 85, 64, 64,192,245,197,139, 23, 91, 38, 36, 36,224,236,217,179,168, + 81,163, 6, 10, 10, 10,176,106,213,170,196, 43, 87,174, 56, 21,133,215,190,185,183,123,200,166,105,163,205,165, 99,230,203,171, +154, 89,164, 98,241,250,235,167,246,125,102, 46,167,200, 74,120,142,168,240, 71,184, 29,246, 66,191,243, 76, 8,151,163,210,244, +162,148,158, 47,235,190, 9,254,164,206,133, 4,219, 99,167, 46,222,241,116,116,116,196,216,177, 99,145,148,148, 4, 74, 41,120, +158, 47,153,113, 49,103,206, 28,120,121,121, 97,212,208,247, 10,228, 25,193, 1,199,194, 12, 91,239,141, 16,226,231,238,238, 30, +116,225,194, 5,123,103,103,103, 92,185,114, 5, 73, 73, 73,112,112,112,192,185,115,231,176,108,217,178, 29,159,126,250,233,160, +197,139, 23, 43,134, 13, 27, 22,127,250,244,105,215,215,199,204,213,168, 81, 35,252,216,233, 43, 38,231, 14,159,126,102,105,106, + 12, 19,123, 43, 48,166,150, 42, 80,168,236,109,205,165, 67,250,117,174,253,242,229, 75,159,215,210,255,173,226, 83,128, 0, 1, + 2, 4,188, 82,150,151,169, 69,138, 37, 4, 33,228,120,145, 30,208, 2,144,149,218, 7, 33,228, 56, 0,188,190, 63,107,214,172, + 57, 75,151, 46,125, 84,188, 95,124,205,236,217,179,235, 45, 91,182,108, 73,171, 86,173,246, 94,191,126,253, 43, 0, 79,255, 84, + 11, 86, 49,216,184,219,144,122,246,128,132,211, 67,159,246, 24,124, 86, 52, 96,236, 0, 21, 49, 65,122, 98, 52, 34,174,252, 82, +168, 5, 43,193,111, 17, 84, 66, 8, 57, 23, 30, 30,142,136,136, 8,196,198,198, 66,169, 84,190,113,221,213,171, 87, 97,100,100, + 4, 71, 71, 71,131, 94,130,106, 95,117, 22, 28,210,196, 29, 38,173,218, 35,109,216, 56,156, 59,119, 14, 41, 41, 41,144, 74,165, +144,201,100, 96, 89,182, 82, 62,145, 72, 68,138, 18,129, 2, 40,211, 11,115, 0, 33, 98, 23, 43,147, 99, 27, 23, 76,242, 16,221, + 56, 46, 81,197, 60, 69,130,154,131,133, 33,150, 59, 19, 99, 40,141,149,137, 70, 70,202,215,197,213,147, 38,132, 72,140, 77, 20, +199,126, 90, 52,213,129,185,119, 78,161,122, 26, 2,105, 25, 28, 93,186,116, 25, 11, 96, 1,165, 52, 43, 32, 32,192,126,241,226, +197,150,241,241,241, 8, 11, 11,195,254,253,251, 83,217,194, 23, 37,148,210,175, 1,160, 21, 33, 10, 55, 91,139,211,235,231, 79, + 50,197,133,125, 50,140,153, 95,229,204, 98,238,211,231,183, 1, 31,124,250,217,186, 73,125,144,159,171,194,238, 51,247,112, 42, + 56,234, 61, 0, 87, 43, 26,215,182,254, 42,125, 74, 8,233, 20, 24, 24,120,255,242,229,203, 54,219,182,109, 3,203,178,101,110, +219,182,109,195,217, 43,193, 19, 13, 93, 76,151, 16,226,228,225,225,113,246,214,173, 91,182, 74,165, 18,103,206,156, 65, 86, 86, + 86,137,229,106,212,168, 81, 36, 43, 43,107,232,166, 77,155, 6,188,124,249,114,197,149, 43, 87,210, 81,184,108,211, 43, 25,129, + 97,152, 40,150,213,213,117,242,241,100, 6,245,105,219, 54, 47, 61, 4, 38,214, 13,112,243,126,212,241,236,172, 12, 21,195, 48, + 81,165,175,127, 23,241, 41, 64,128, 0, 1, 2,170, 44,194,142, 83, 74,123,151, 22, 76,175, 11,173,226,255,197,215, 45, 93,186, +180,119,105,241, 5, 0,203,150, 45, 91, 82,106,191,224,143, 8,171,248,119,189, 64, 40,128,128,178, 46,210,132, 29,130, 38,226, + 40,164,238,109, 32,243,126, 15,140,187, 63, 98, 66, 46,224,193,201,213,136,123,116, 21,148,231,224,232,213,220,208,103,170,235, +214,173, 11,181,186,112,232,149, 70,163,129,212,216, 82, 61,245,147,225, 10, 0,224,197, 10, 77, 41,149,105, 16,161,105,155, 14, +104,158, 76,113,219,190, 80,240, 22, 91,178, 22,141, 30, 13,169, 84, 10,169, 84,138,226,129,234,134, 8,172,162, 53,180,138, 87, +171,167,101,157,111, 42,151,236,222,187, 96, 66,115,249,203,135, 50, 77,232, 13, 36,104,120,122, 44,153,251,205,215,128,240, 42, +141,149,241, 70, 74,229, 67, 35, 19,227,210, 2, 43, 10, 0,168, 68,178,243,231,175, 39, 52, 48, 78,126,102,172,190,115, 14,137, +106, 94,103, 86, 54,205,215, 39, 79,158,180, 19,139,197, 14, 28,199, 33, 38, 38, 6,143, 30, 61,194,218,181,107,147,115,115,115, + 3,130,131,131, 35, 75,133, 87,212,204, 72,182,127,231,194, 73, 53,197, 33,151, 20,154,168,208, 50, 69, 91, 69,176,173,223,191, +219,123, 1, 13,127, 27, 59,114, 46,250,245,236,138, 15, 2,124,233,139,132, 12, 53,128, 51,148,210, 74,151, 65,162,148,198, 19, + 66,186,180,107,215,110, 87,163, 70,141,124, 40,165,168, 95,191, 62,134, 14, 29,138,157, 59,119,226,193,131, 7,200,201,201,209, + 5, 5, 5,173,161,148,254,104,224,135,166,180,180,180, 60,117,254,252,121, 91,165, 82,137,160,160, 32,168, 84, 42, 56, 58, 58, +226,179,207, 62,147, 45, 91,182,108, 71, 78, 78,206,160,165, 75,151, 42, 94,188,248, 63,123, 95, 29, 94,197,241,127,125,102,247, +122,238,141,187,160, 9, 9, 49, 8, 78,112,135,226, 46,197,161, 72,177, 34, 45,238, 69, 10, 20, 43,180,184, 22,119,119,119,135, + 16, 2,129,144, 16,119, 79,174,239,206,251, 71,164, 33, 68,110,128,190,191,126,219,123,158,103,159,123,215,206,206,206,204,206, +156,249,204,204,103, 66,215,157, 63,127,190, 34,114, 22,156,253, 36, 19,104, 52,154, 77,123,118,237, 88, 59,102,236, 56,231, 43, +247, 2, 47,171,179, 50,204,203,149,143,200,176,177, 82, 40, 86, 45,155, 95, 78,163,209,140, 44, 58, 62,175,125, 86,124, 26, 97, +132, 17, 70, 24, 81,148,237,162,120, 45, 82, 80, 52, 21, 22, 89,101, 17,103, 0,148,211,166, 77,155, 65, 8, 57,149,107,225, 82, + 2,136,254, 91, 4, 22,165,244, 58, 33, 4,148,210,235,197, 94,201,115,208,134,222,128, 54,244, 6,100,254,227,113, 98, 73,191, + 66, 47,205,127,118, 32, 58, 45,184,120, 69,173, 86, 11,118,236,216,145, 63, 46, 11, 0, 56,142,251,234,169,103,136,192, 66,238, + 18, 66,185, 2,235,147, 64, 84,146, 40,174,111,154,216,171,190, 53,151, 45,212,220, 58,137, 40, 53,175, 95,241, 86,155,253, 48, +149, 46,155, 81, 12,225,177, 31, 70, 34,226,230, 37,152, 40, 20, 17,195,111,188, 40,104,181,122, 14,224, 61, 0, 84,146,154, 93, + 62, 48,169, 95, 35, 7, 17, 68,154,211, 7, 17,173,230,213, 27,194,116,219,214, 20,157,201, 64, 41,197,251,247,239,145,157,157, +141, 59,119,238,224,240,225,195, 9,133,197, 85,110,120,175,109,253,169,127, 61,179,140, 88,145,230,225, 37, 68,171,121,181,135, + 33,162,170,122,183,134, 34,134, 92, 32, 12, 43,107,223,216, 27, 63,124,215, 13,171,182,158,208,107,236, 26,119, 92,123,252, 76, +239, 76,181,118,134, 33,226,170, 64,152,159, 3,240, 38,132, 72, 0, 52,239,219,183,239,153, 30, 61,122,224,250,245,235, 56,121, +242,164, 59,128,152,220,143, 96, 1, 0,123,228,204, 46, 12, 41,230, 67, 97, 68, 34,209,190, 75,151, 46,249, 56, 57, 57,225,210, +165, 75, 80, 42,149, 24, 61,122,180,102,236,216,177,162,193,131, 7,147,180,180,180,124,203,213,157, 59,119,146,138, 19, 87, 0, + 16, 25, 25,121,182, 98,197,138, 13,155, 52,105,210,181,178,123, 85,179,144,140,244,120,133,137, 84,118,243,250, 85,209,227,135, +119,215, 69, 70, 70, 62, 40, 58, 62, 47, 27, 28,159, 70, 24, 97,132, 17, 70,148, 88, 71,148,174, 69, 10, 89,162,202,200,159,119, +159,112,201,146, 37, 47,151, 44, 89,242,145,133,235,239,178, 96,149, 9, 92, 90,248,167, 1,231,249,178,188,228, 39,199, 44, 45, + 45,245, 50,153,236, 35,129,197, 27,200,153,124,116, 47, 66,190,255, 54,223,114,149,103,201, 66,187,193,159, 37,176,242, 44, 88, +185,131,161, 63, 10,132,220,190,106,191,125, 3, 90, 55,244,174,236,204,232, 14,172, 65,100,182, 94, 53,247,181, 86, 21,148, 65, + 59, 7, 22, 49,120, 58,159, 83,175,131, 84, 46,251, 32, 83,200, 11,139,171, 48, 0, 80, 56,120,244,216,217,175,121, 51,191,170, +110,140,126,255, 74, 68,101,235, 50,167,189,210,106, 67,178,232,145, 98,226,112,110,155, 54,109,230, 90, 91, 91, 75,215,174, 93, +107, 94,161, 66, 5,232,245,122, 77, 97,113, 37,183,175,218,111,255,224,118, 13, 61, 28, 44, 25,221,161,223, 16,161,228,178,215, +132,232,118,110, 48, 64, 92,217,152, 43,206,111, 88,252,189,204, 68, 34,132, 74,165,194,210,223, 15,225,194,237,128,142, 9, 47, +142,158, 7,112,254, 11,242,221,240,142, 29, 59,174, 90,176, 96, 1,116, 58, 29,134, 13, 27,134,119,239,222, 93,120,253,250,245, +154,242,229,203, 79,249,233,167,159,156, 28, 28, 28,208,187,119,111, 17,128,193,197,112,252,178,103,207,158,142,126,126,126,184, +126,253, 58, 82, 83, 83,225,232,232,136,177, 99,199,138,151, 44, 89,178, 51, 61, 61,189,215,226,197,139,165,239,223,191, 47,209, +114, 85, 40,111, 44,220,184,234,251,201,117,234, 55, 98,222,190,125,163, 15,175,219,148,185,122,233,228, 13, 75, 75,203,157, 31, +197,231,144,111,202, 28,159, 70, 24, 97,132, 17, 70,124, 53,156, 6,208,161,176, 85,171,176,248,202,179, 80, 21,220, 47,124,125, +238,249,191,101, 81,114, 65,129, 0, 26, 60, 61,158,207, 74, 48, 72, 52, 21, 70, 7, 79,162, 27, 89, 7,130, 25, 77, 25,136,228, +150,170, 78, 11, 46, 94, 41,238, 90,185, 92,110,176, 5,139, 87,171, 74, 19, 76,101, 18, 88, 44,203, 18, 0,231,120,158,191, 91, + 80, 96, 89, 56, 84,109, 58,107,234,132,213,141,122,180, 99,226,190,243, 71,106,166, 90,253, 83,160,158,143,204, 46, 89, 92,229, +168, 82, 93,168,137, 92,241, 66, 42,255,104,220, 85, 56, 0,200,236,171,212,157, 54,113,220,239, 45,250,117, 34, 9,163, 27, 33, + 37, 85,169,158,242, 82, 79,162,148,180, 87, 32,165, 87,139,162,187,124,249,242, 70, 0, 27,155, 53,107, 22, 39,151,203,145,153, +153,249, 73, 26,228,133,183, 97,143,118, 76,220,240,122, 72,206,210,170,127,122,169, 71,180,146,223, 87,154,184,178,181, 48, 61, +191, 97,209,247, 38,209,145, 97, 16,137, 68, 80, 40, 20,184,120,235, 5, 18, 2,142,125,137,176, 2,203,178,243,102,204,152, 49, +119,204,152, 49, 72, 74, 74,194,201,147, 39,209,190,125,123,236,221,187,183,194,153, 51,103, 86, 53,111,222, 28, 44,203,226,212, +169, 83,208,233,116,193,197,164,103,183, 17, 35, 70, 76,233,209,163, 7, 30, 60,120,128,152,152,152,143, 44, 87,169,169,169,125, +127,255,253,247, 30,161,161,161,165, 90,174, 10,161,110, 37,183,154,162,233,179,127,133, 58, 59, 94,144, 16,117,239,250,229,139, +204,221,228,228,100, 19, 0,105,159, 27,159, 70, 24, 97,132, 17, 70, 24,108,128, 41, 78,139, 36,228,138,167,132,162,246, 11, 8, +171,162,246, 73, 33,171,151,166,208,249,103,255,103, 22, 44,129,189, 47,244,113, 1, 5, 4, 86,252, 71,231,165,166, 86, 6,117, + 17,234,244, 16,108,216,150,239, 7, 75,154,148,148, 36,181,177,177, 81, 21, 20, 6, 38, 38, 38,112,114,114, 66, 74, 74, 10, 54, +109,218, 4, 0,165, 13,118,214,155,245, 24,128,186,253,134,225,161,139, 24, 84,167,205,183,100,109, 24, 50,228, 35,145, 37, 18, +137,242,198,126,149, 86,217,222, 39,132,132,241, 60,127,151, 82, 74,107,121,184, 46,148,202,229, 67,106, 87,119,179,249,225,251, +225,194,208,120, 53,174, 52,154,158,122,232,151,169,138, 8,170, 24,243,129,166,222, 46,133, 47,164,203, 31,187, 11, 91,174, 34, +107,122,184,206,148,154, 72,191,171,239,235,225, 48,109,210,247,194,208, 56, 53,185, 82,247,167,244,195,203,126, 50,121, 15,211, + 41, 17, 52,229,170, 1,201, 51,183,125,251,246,115, 41,165,148,231,249,217, 0, 80, 48,188,147,198,126, 39, 12,137, 85,225,114, +163,153, 41,135,127,153,106, 26,129,146,195,107, 91,189, 91, 67,123, 75,179,243, 27, 22,143, 49,137,137,250, 0,137, 68, 2, 83, + 83, 83, 68,196,165, 65, 40, 96,149, 95,146,217, 8, 33,146,166, 77,155, 78,253,254,251,239,241,226,197, 11,140, 30, 61, 58, 38, + 60, 60,252,200,254,253,251, 71,207,153, 51, 71,208,182,109, 91,196,196,196, 96,249,242,229,186, 91,183,110, 45, 6,176,188,200, +252, 40, 16, 12, 95,184,112, 33,141,142,142, 38,239,223,191,135,163,163, 35,198,141, 27, 39, 94,188,120,113,254,152,171,178, 88, +174,242, 16, 25, 25,121,221,221,173, 60, 58,159, 93, 13,189, 78,125, 61, 53, 41,252, 70, 80, 72,202,117, 43,177,120,114,163, 90, +213, 63, 43, 62,141, 48,194, 8, 35,140,248, 42,120, 88,202,254, 63, 14,165, 9,172,224,223,102, 14,117, 31, 58,230, 71,200, 42, + 52,132,250,213, 81,240,153,113,249, 22, 44,169,194, 18, 86,229,189,144,154,165,198,193,203,143, 1, 32,184, 44, 15,207,200,200, + 64,173, 90,181,176,126,176, 71, 11, 85, 70,146, 84, 6, 64, 45, 49, 83, 29, 19, 55,190,114,230,204,153,108,158,231,247, 1, 56, + 83, 10,205, 60, 31, 31,159,117,191,254,250,171,216,171,223, 80,100,222,187,249,209, 73,134, 97, 32,147,201, 32,145, 72,240,252, +249,115, 92,185,114, 69, 3, 96, 94, 41, 66,224,190, 94,175,127,118,240,224,193, 8,119, 87,151,118,205,234,212, 29, 63, 99,250, + 52,211,192,155, 23, 48,123,241, 58,190, 74,237,182,105, 75,247, 30,203, 72, 83,148,111,153, 29, 29,244,212,128, 87,125, 86, 72, + 92, 69,123, 85, 46,223,194,191,102,141, 31,103,207,158,105,246,242,230, 69,204, 89,182,129,186,251,181, 74, 91,118,248,120,122, +162, 73,197, 54,202,184, 87, 15, 12,137,195,107,215,174,109, 4,176, 49,111,191,112,120,167, 45, 88,195,123,212,105,151,178,116, +239,225,172,116,211,242,173, 74, 10,175,157,119,247, 6,229, 28,173,206,255,246,243, 40,147,216,168,112, 72, 36, 18, 40, 20, 10, +132,199,164, 98,238,234, 3, 89, 90,158,111,247,133,249, 77, 98,106,106, 42,209,106,181, 88,191,126, 61,194,195,195,253, 41,165, +225,132,144, 13,125,250,244, 89, 91,173, 90, 53,207,151, 47, 95, 6,103,102,102,142,161,148, 6, 21, 71, 98, 97, 97,225,111,107, +107, 75,238,222,189,139, 81,163, 70,105,198,141, 27, 39, 26, 52,104, 16, 73, 73, 73,249, 92,203, 21, 0,192,197,197,165,105,151, + 14, 13,208,176,245,232,235, 26, 85,234,141,208,160,157,215, 25,122, 91, 90,171, 70,245,207,138, 79, 35,140, 48,194, 8, 35,254, +219,230,184, 98,183,166,128,192,195, 26, 35,125,156, 69,177,187,126, 25, 71, 51, 66,238, 80,229,131,141, 52,253,232,119,244,244, +242, 65,244,204,111, 63,208,209, 29,124,168,167, 29,137,245,176,198,200,166,128,160,164,213,182,219, 87,133,174,181, 27,104,107, + 55,208, 14, 30,208, 1,152, 81,179,102,205, 99, 99,235,130,210,192, 61,148, 6,238,161, 99,235,130, 2, 24, 5, 64, 97,232, 10, +222, 0, 28, 1,108,170, 85,171,150,254,234,213,171,244,117,175, 86,244,137,167, 13, 29, 51,102, 12,157, 51,103, 14,253,246,219, +111,169,173,173,173, 30, 57, 14, 55, 29, 75,227,236,220,185,179, 11,165, 20,229,202,149,179,168,237, 85, 37,246,249,229,147,244, +198,174,181,116,235,216,238,180, 94, 53,175, 68, 7,207, 38,207,100,142, 85,107, 24,186,210,184,131,131,195,116, 74,105, 59, 74, +169, 35,165, 20,238,238,214,138,154,158, 85,162,159, 93, 58, 73,111,238, 94, 71,183,142,237, 78,235, 87,247, 78,114,241,106, 30, + 36,181,243,172,251,185,171,151, 23, 25, 94, 95,207, 68,251, 42, 13,158, 22, 23,222,130,156,149,235,246, 62, 30, 25, 29, 71,239, +223,191, 79,207,156, 57, 67,111,222,188, 73,119,237, 63, 78,203,215,233,149,105, 83,173,107,195, 47, 93,101, 29,128,121,135, 14, + 29,104,112,112, 48,253,230,155,111, 40, 0,243,207,225, 4,112, 44, 52, 52,148, 6, 4, 4,208, 25, 51,102, 80, 0, 59,190,255, +254,123,101, 90, 90, 26,109,213,170, 85, 56,114, 38, 41, 8, 62, 39,156,174,149,156,151,118,235,212,120,222,216, 81, 61,154,126, +105,124,254,147, 87,173, 55,114, 26, 57,141,156, 70,206,127, 26,231,191,109, 43,209,130,117, 45,167,245,191,177,154, 61,249,115, +241,242,223, 38,175,223,184,227,199,169,227,135,203, 27, 55,106,141, 23,151,182,227,240,169,253, 89, 42,181,102,185,136,197,175, + 47, 18,105,169,126, 36, 78, 7, 81, 97, 17,214, 34, 19, 43, 55,228,251, 80,122,155, 2, 80, 74, 55,148, 81, 36,198, 0, 24, 65, + 8,249,181,121,243,230,139,190,107, 88,183,251,216, 6, 45,160,211,233,176,107,215, 46,124,248,240,225, 8,128,153,148, 82,131, + 44,108, 47, 94,188, 72,244,169, 82,113,130,149, 76,244,227,152,111,187,217, 38,188, 11, 68,228,171, 39, 0, 0,181, 90,169,139, +121,115,221,175, 44,225,147,201,100,247,109,109,109, 95,219,218,218,166,112,234,204, 17, 82,129,217,236,209,125,187,216, 37,133, + 6, 33,226,101, 78, 15,168, 90,149,173,141,120,115,197,243,115, 68,114,197,138, 21, 37,114, 33, 70, 22, 25, 94,141, 74, 23, 27, +252,170,134, 33, 60,217,106,205,226,249,171,118,181,249,249,199, 33, 18, 51, 51, 51, 60, 14,120,139,217, 43,247,102, 41, 53,186, +118, 9,207,143,222,254, 90,130, 94,167,211, 25, 60,129,161, 24, 76,245,243,243,171,186,104,209, 34,247,193,131, 7,227, 75, 45, + 87, 5,241,238,125,228,180,102,205,154,121,191,125,253,184,185,149, 76,244,231,151,196,167, 17, 70, 24, 97,132, 17,255, 93, 24, + 52, 6,235, 69, 28,205, 6,176,192,213,158,108,152,190,104,213, 92,134,172, 30,194, 83,186, 93,207, 96,126, 72, 34, 77,248,194, + 10, 55,187,131, 39,209,183,233,250,173, 0, 0,132, 2,232,191,128, 43, 24, 64, 15, 66, 72,157,205,183, 31,204,202, 61,252, 51, +165,180, 76,125,181,166, 2, 4, 52,242,118,117,110, 92,211, 71,202,114, 74, 68,190,122,135,228, 44, 21, 46,190,252,144,202, 80, +102,123, 89,195, 21, 18, 18,114, 13, 0,124,171, 84,124,213,216,219,173,124,147, 90, 62, 38, 66,162, 65,100,224, 99,164, 41, 53, +184,240,242, 67, 26, 8,249,236,129,210, 95, 43,188,177,207,143, 61,180,173,222,173, 21, 33,228,210,140,177,253, 36,115, 87,238, +251,170,226, 10, 64,118, 84, 84, 84, 82,118,118,182,117,116,116,180, 6,159,233,220,141, 82,250,150, 16, 82,237,135, 31,126, 88, + 48,101,202,148, 31,127,249,229, 23,209,231,140,185, 42, 14, 41, 81, 31,142, 54,241,249,122,233,111,132, 17, 70, 24, 97,132, 81, + 96,149, 44, 20,226,104, 2,128, 49,110,110,100,210,187,119, 84,243,181, 2, 81,148,101,235, 11, 69,219, 67, 0,157, 62,155,128, + 33, 25,247,130, 63,100,222, 15,254,144, 9,158, 82,158, 82, 53,195, 32, 34, 75,171, 93,252, 38, 36,242,243,103,209, 17,194, 61, +124, 27,174,124,244, 46, 66, 69,121,158,242,148,106, 8, 65,172, 78,199, 47, 14, 8, 9, 59,254, 79, 8,111,194,243,163,183, 29, +188,187, 55,190,125, 63, 96, 82, 86,150,118, 93, 66,224,209, 59, 95, 49, 93,116,132,144,254,254,254,254, 67, 57,142,219, 64, 41, +213,125, 1,151, 6,192, 84, 66,200,145, 23, 47, 94, 28,184,115,231, 78,204,215, 16, 87,127,107,250, 27, 97,132, 17, 70, 24, 97, + 20, 88, 37,225,107,138,171,127, 34, 94, 4,135,214,250, 59,120, 3,130, 67,125,255, 23,194, 27, 27,120,228, 17,128,190,127, 71, + 88, 41,165, 23, 0, 92,248,154, 98,154, 16, 82, 9, 0,251, 85,196,213,223,152,254, 70, 24, 97,132, 17, 70, 24, 5,150, 17, 70, +252,207, 32,119,205, 72,189, 49, 38,140, 48,194, 8, 35,140,248,167,128, 0,104, 85, 76,165,117,201, 96, 18, 66, 90,125, 70,165, +120,201,200,105,228, 52,114, 26, 57,141,156, 70, 78, 35,231,127,139,243,191,212,250,255,219, 54, 24,167,176, 26, 57,141,156, 70, + 78, 35,167,145,211,200,105,228,252, 15,110,140, 81, 98, 26, 97,132, 17, 70, 24,241,183,117,147, 16, 34,201, 93,224,253,179,206, + 27, 97,196,255, 42, 4,159,241,177, 84,201,181,124,189,253, 27, 63,200,177,142,142,142, 35,170, 87,175,238, 37, 18,137,152,140, +140,140,249, 87,174, 92,153, 87,248,186, 38, 62,194, 71, 44, 3,151, 2,119, 2,132, 5, 24, 6, 28, 69,228,141,103,217,181,141, + 73,252,143, 46,120, 43,200,204,108, 79, 16,134, 21,115,122, 45, 56,157, 22,192, 95,203, 38,241,188,254,131, 94,163,106, 91,220, +253,142, 53,186,151,215,115,116, 41,192,255, 78,192,140,166,224,255, 32,148, 25, 77, 25,252, 78,120,140,130, 64,183, 28,122,225, + 20,129, 72, 48, 51,250,241,193,136,127, 67,156, 29, 58,116,136,253,146,251,123,246,236, 89,228, 2,159,206,206,206,167, 76, 76, + 76,220,138,187, 47, 43, 43, 43, 38, 58, 58,186,249,191, 60, 63, 54, 1,240, 27, 0,159, 66,167,130, 0, 76,160,148, 94,254,210, +103, 52, 35, 68, 96, 15,140, 20, 1, 63, 1,128, 22, 88, 22, 7,108,188,246,149, 38,104,124, 13,216,217,217,221, 16, 8, 4,238, + 89, 89, 89, 89,233,233,233,174,102,102,102, 33,114,185, 92,174,215,235,131,227,227,227,155,148, 49, 78,191, 71,238,146, 87,132, +144, 31, 41,165,191,151,229,188, 17, 70,252,171, 5, 22, 33,196, 3, 64,211,220,173, 73,157, 58,117,236,179,178,178, 64, 8,137, + 3,112, 3,192,117, 0,215, 41,165,111,190, 70,128, 88,150, 93,177,102,205,154,201,227,198,141,203, 95,164,249,249,243,231, 69, + 95,203,192,229,234,169,203,118, 15,159,191, 70,157, 86, 61,115, 5, 22, 3,100,199,162,121,171, 58,159, 91,200,154, 90, 90, 90, +206, 39,132,244, 98, 24,166,212,202,140,231,121,142, 82,122, 48, 37, 37,101, 46,165, 52,163, 44,207, 82,200,165, 58, 61,199, 21, +249, 12, 1,203,114,153, 89,170, 98,221, 87, 88, 91, 91,223, 97, 24,166,114,193,133,172,115,195, 95,228,255,130,251,122,189, 62, + 50, 33, 33,161,182, 1,113, 33,101, 4,162, 9,132,136, 90,131,225, 61, 0, 2, 2,230, 13,207,105, 46,242,122,237, 26, 74,169, +234, 75,196,149, 99, 57,215,155, 19,103, 46,117, 9,120, 21,132, 25, 99,191,197, 47,191,237,192,244, 9, 67,177,102,211, 94, 76, + 24,209, 15,222,222, 62, 37,114,112,148,204,159, 61,161,127,243, 69,107,246,212,153, 57,225, 91,249,162, 53,123,234,204,252,225, + 91,197,162,181,123,106,207,252,161,191,226,231,181,127,214,158,245, 67,127,179, 69,107,247,104, 1, 12,251,156,112,246,247,112, +206,130, 94, 95,116,235, 90, 32, 80,255,249, 38, 74,254,127,241,225, 14, 30, 60,184,186, 82,169,124,252,109,235,154, 75,107,120, + 56, 71, 21,117, 77, 82,108,148,115,200,235, 39,211,132, 34, 89,173, 46,211,118, 60, 47,137, 79, 34,145, 84, 14, 10, 10,114,231, +121, 30, 28,199, 65,175,215,231,255,106, 52, 26, 52,105,210,228,171, 76,136, 33,132,116, 2, 48, 63,231, 99,197, 18, 74,233,129, + 47,224, 82, 8, 4,130,137, 98,177,184,169, 94,175,247, 2, 0,161, 80,248, 74,173, 86, 95,215,235,245,171, 40,165,153,101,164, + 92, 29, 21, 21,229,173, 80, 40,160,213,106,243, 23,134,103, 89,214,179,124,249,242,235, 1,184,127,233,251,219, 3, 35, 27, 52, +106,180,102,208,228,201,172,242,198, 13,172,217,182,109, 53,210,211, 1, 96,125,105,247, 74, 36,146,243, 12,195, 84, 40,203,243, +120,158,255,160, 86,171,219,150,169, 82, 16, 8,220,163,163,163,237,156,156,156, 0, 0,114,185, 92, 94,112,191, 44,150, 43, 0, +203, 41,165, 50, 0, 96, 24,102, 77,131, 6, 13,252, 9, 33,122, 0,148,231,121,134, 16,210,143,231,121, 65,238,245,203, 9, 33, +219, 40,165,106, 99,213,108,196,191, 90, 96, 17, 66,206, 0,104, 90,167, 78, 29, 89,223,190,125,209,180,105, 83,184,187,187, 67, + 42,149,230, 20,222, 73, 73,246, 79,159, 62,237,125,227,198,141,222, 39, 79,158, 4, 33, 68, 9,224, 22,165,180,200,143,185, 85, +167,198,227,164, 10,201, 90, 0, 72,136, 76,138,137,124, 31,191, 54, 38, 38,102, 57, 45,176, 74, 52, 33,196,117,208,160, 65,147, +198,143, 31,143, 83,167, 78, 97,239,222,189, 80,171,213,200,200,200,192,149, 43, 87,138,105, 90,199, 35,229,202, 82, 64, 30, 6, +132, 95, 3, 76,236, 0,185,253,103, 71,136,165,165,229,252, 9, 19, 38,252,224,237,237,157,239,117, 92,167,211, 65,175,215, 67, +167,211, 33, 37, 37, 5,147, 38, 77, 66,174, 21, 15, 60,207,227,236,217,179,227, 70,140, 24, 1, 0, 19,139,226,244,175, 93,254, + 17, 67, 24,151, 60,219, 12,229,184,200,187, 79, 34,106,235, 57,142, 85,169,180, 69,174, 28, 46,149,138, 74, 20,119, 66,161,208, + 37,240,196, 9, 59, 70, 44, 6,229, 56,128,231, 65,121, 30, 64,129,141,230, 28,163, 28, 15,170,227,192,235,121,232,149,106,212, +253,254,123, 67, 10,199, 6, 66,177,108,111,255,239, 38, 59,212,171, 95, 95, 88,177,156, 19,244, 28,143,119,161,145, 14,143, 31, +221,107,120,112,231,250,209,132,144,126,148,210,207,242,147, 37, 54, 49,187,176,238,143,205, 46, 15,159, 6,224,242,213, 27,184, +116,229, 58, 0,224,252,213, 28, 58,134, 97, 74, 11,159,165,181,123,243,234,227,134,118,149,255,252,235, 22,201,184,161, 93, 5, +127,253,110,150,140, 27,218, 69,176,104,213,102,201,184,161, 93,132, 11,151,173,171, 65, 8,177,164,148,166, 20,199, 87, 92, 26, + 65,175,151,252, 25, 18,199, 2, 64,194,134, 13,208,197,199,195,105,238,220, 28,241,229,106,111,112,183,134,173,173,237, 35,161, + 80,232, 82,218,117, 58,157,174, 84,241, 59,120,240, 96, 63,165, 82,249, 72,175,215, 83,129, 64, 48,237,219,110,109,142,181,107, +236,151, 84,240,154,231,207,159, 89, 47, 94,124,162,235,129,199, 25,180,119, 45,211,199,167, 86, 12,174,221,113,202,142,103, 37, + 84,196,140, 90,173, 70,112,112, 48, 10, 46,190, 94, 80,207,126,166, 8, 98, 0,172,177,182,182,174,151,148,148,212, 31,192,140, +244,244,244,234, 44,203,194,202,202,106, 6, 33,228,157,185,185,249,150,180,180,180, 59,185, 86, 34,222, 64,222, 38,102,102,102, +187,142, 30, 61,106, 89,179,102, 77, 38, 33, 33, 1,149, 43, 87, 70,114,114,114,221, 27, 55,110,212, 26, 54,108,216, 48, 66,200, + 64, 74,233,141, 50, 4,183,170,137,137, 9, 29, 52,104, 16,225,184,191, 94,119,235,214,173,104,235,171,119, 27,213, 78,158,173, +210,208,180,203,193,230,163, 68, 34,209,173,176,176,176,180,178,198,135, 8,248,105,208,228,201,172, 34, 44, 12,138,103,207,208, + 63, 61, 93,240, 75,142, 53,171, 84,129,197, 48, 76,133, 93,251,182,187,139,197,226,252,114,169,184,141,227, 56,104, 53, 90, 44, +253,121,249,103,151,133, 38, 38, 38, 38, 78, 78, 78,113, 38, 38, 38, 38, 95,163,178,145, 72, 36,130,157, 59,119,246, 19,139,197, + 0, 0,141, 70, 3, 95, 95, 95, 98,172,134,141,248, 47, 90,176,190, 73, 79, 79, 7,199,113, 48, 53, 53, 5,203,178,133, 45, 40, +104,221,186, 53,154, 52,105,130,190,125,251, 34, 48, 48, 80,214,183,111,223,214,197,145,125, 59,185, 35,202,185,219,231, 86, 34, +188,227,237,211, 79,151,110, 93,120,200, 22,192,228, 2,151, 13, 27, 57,114, 36, 73, 74, 74, 66,175, 94,189,110,168,213,234,206, +148,210,244, 98, 45, 24, 60, 34,155,247,253, 22, 60, 37,178, 85,247, 55, 17,141, 74, 73, 25,134, 81,230,117, 17,126,102,133,208, +203,201,201, 9,251,246,237,131, 70,243,169,187, 47, 51, 51, 51,188,124,249,178,160,197, 13,245,235,215,103, 9, 33,189,138, 19, + 88,132, 48, 46,183, 31,134,217,229,237,119,108,237, 35,242,175, 93, 33,206,214,218,148, 2, 32, 51,103,206,204, 23,108, 0, 48, +127,254,124, 67,194, 9, 70, 40, 68,194,245,235,127, 21,192, 2, 6,140,136,128, 8, 1, 70,144,211, 91, 10, 10, 80, 14,224,245, + 0,175, 3,164,142,229, 12,225,174,235, 92,222,253,212,226,149,191, 91,168,117, 20,251,142, 95, 70,104,232,123,176, 12, 3, 87, + 55,119,180,105,214, 88, 88,171,142,127,185,101,243, 38,159, 36,132,124, 67, 41,125, 80,230,136,230,169,212,173,188, 13,182,108, +125, 12, 91, 75, 5,122,117,109, 15,153, 84,130, 95,126,219,142,159,167,143,133,187,107, 5,108, 92,189,168,216,219,205,205,205, + 23,212,172,230,233,186,253,192, 57, 52,109,210, 64,176,227,192,121, 52,107,210, 80,176,253,192, 57, 52,107,218, 88,176,227,192, + 57, 52,107,210, 72,184,227,192, 57,212,175, 93,205,237, 78,210,243, 5, 0,198, 22,255,206,133,210,168, 77, 78, 26,185, 11, 68, +249, 21, 64,216,232,209, 0,144, 47,176,202, 2,161, 80,232, 18, 29, 29,109, 87,218,117,165, 89, 9,114, 45, 87,143,244,122, 61, +226,227,227, 73,106,106, 42,181,176,176,232,122,110,227,140,163,109, 27,249, 37, 3,192,179,103,207,172,150, 44, 89,220,117,255, +163,116, 40,239,173, 35,127,158,184,206,247,239,220,244,209,241,165,131,107,245,236,217,243, 73, 81,188,106,181, 58,180, 70,141, + 26, 52,247,191,179, 68, 34, 17, 21,202, 19, 78,238,238,238,159, 88,169, 13,232, 58, 92,115,247,238,221,177,222,222,222,240,244, +244,188, 83,175, 94, 61, 51,185, 92,142,115,231,206,193,203,203,203,199,204,204,236,254,193,131, 7,133, 83,167, 78,245,219,182, +109, 27, 0,140, 51, 32,127,182,106,222,188,249,190, 83,167, 78, 73, 69, 34, 17,148, 74, 37, 94,190,124, 9, 11, 11, 11,136,197, + 98,116,233,210,133,109,216,176,161,117,179,102,205, 14,231, 54, 2, 12,158,209,164, 82,169,232,140, 25, 51, 96, 98, 98, 2, 19, + 19, 19,200,229,114,200,229,114, 40,164, 32, 27, 38,148,151,141,223,148, 42,155, 56,119,195,210, 93,191,207,187, 90,190,124,249, + 57,225,225,225,169,101,205, 11,202, 27, 55,160,120,246, 12, 40,240,237, 26, 10,115, 19, 43, 76,155, 54,173, 52, 11, 20, 68, 34, + 17, 26, 52,104, 80, 42,159,181,181,245, 17,129, 64,240, 81,139,148, 82, 42,157, 54,109, 26,247,230,205, 27, 57,195, 48,114,158, +231, 49,109,218, 52, 78,175,215, 75,237,237,237,239,240, 60, 31,151,144,144,208,189, 52,110, 74,169,154, 16,242, 35,195, 48,107, + 36, 18,137,160, 98,197,138, 31,102,207,158,125, 55,215,122, 9, 74, 41, 83,177, 98,197,186, 50,153,172,130, 90,173,214, 3,248, +209,104,189, 50,162, 4,212,202, 49, 2,231, 67, 3, 64,156,103,176,207,169,237, 96, 83,232, 56, 0, 36,230, 54, 16,237,139,217, + 79, 2, 16, 8,160, 42, 0,187,220,115, 15, 1, 36,127, 21,129, 69, 8,161, 5, 62,138,252, 10,197,212,212, 20, 15, 31, 62, 4, + 33, 4,166,166,166, 48, 51, 51,131,185,185, 57,210,211,211, 17, 24, 24,136,160,160, 32,132,133,133,129, 16, 2, 87, 87, 87,228, +125, 56, 5,184,242, 11,182, 61,191,158,130, 84, 33, 1, 33, 64,205, 22,213, 81,189,137, 47,234, 60, 8,153,224,228,228,180, 41, + 58, 58, 58,152, 16, 34,240,245,245, 29, 86,191,126,125,172, 92,185, 18,106,181,122,101, 81,226,170, 32,231,141,151,186,218,185, +149,210,148,221,231,222,153, 12,104,231,150, 29, 29, 29,189,162,172,145, 80,184, 0, 78, 76, 76, 52,120,173, 60,158,231,145,146, +146, 82, 34,103, 97,139,192,170, 53,235, 44, 50,210,226,176,240,151,221,208,233,116,152, 60,121, 50,120,158,207,223, 82, 83, 83, + 13, 10, 39,229, 10, 25, 21,152,156,141, 48, 0, 17, 0,229,251,228,232,137,240,125,235, 64, 40, 64, 56, 0,133,222,171, 48, 39, + 33, 68,202,138,100,251,231,253,178,214,226, 73, 80, 36,142, 95,126, 2,109,122, 20, 98,158, 29, 5, 0,184, 54,232,135, 3,106, + 22,245,170,187,225,135,153,203, 44,103,253, 48,112, 63, 33,196,179, 96,119,161, 33, 21, 26,165, 28, 22, 46, 88,128, 77,107, 87, + 98,217,202,181, 72, 79, 75,133, 80,104, 3, 0,208,235, 57,112,133,222,237,147,119,167,180,221,172, 41, 35,201,154,205,135,225, + 91,197, 1, 39, 47,222, 65,109,159, 10, 56,123,229, 1,234, 87,171,132,243,215, 31,163,126,245,202,184,126,239, 37, 38,143, 25, + 68,110,159,221,209,174, 44,105,180,122,245, 58,139,140,244, 56,156, 90,180, 19,241,235,215,227,195,216,177,168,155,123,205, 3, + 66, 32,114,113, 1, 68,165,167, 81, 97,188,122,245, 10,106,181,186,168,214, 61,188,188,188, 74, 77,119,165, 82,249, 88,175,215, +211,184,184, 56, 18, 23, 23, 7,185, 92, 78, 94,190, 12,224,124,124,124,187,209,160, 67,155, 1, 96,201,146,197,221, 14, 60, 78, + 71,246,157,181, 80,222,253, 13,162, 74,207,153, 77,243, 71,106, 71,204,221,248,184, 64,229,246, 81, 56, 99, 98, 98,190,201,251, +239,234,234, 26,244,230,205,155,170,121, 93,202,185, 93,133, 34,189, 94,239,158,215,109,168,215,235,161, 86,171,209,170, 85, 43, +182,164,119,183,180,180,172,239,229,229,133, 39, 79,158, 96,237,218,181, 86,205,155, 55,199,219,183,111, 65, 8,193,226,197,139, +137,183,183,183, 48, 49, 49, 17,109,219,182,197,145, 35, 71, 26,148, 22,159,132, 16, 83,185, 92,190,237,228,201,147, 82,134, 97, +144,145,145, 1,158,231,209,168, 81, 35, 48, 12,131,128,128, 0,204,156, 57, 19, 71,142, 28,193,177, 99,199,100,181,106,213,218, + 70, 8,241, 42,216,125, 95, 66, 26, 81,149, 74, 69, 37, 18, 9, 36, 18, 9,164, 82, 41,164, 82, 41,196, 98, 49, 50, 85,192,136, + 85, 31,212,172,212,134,247,169,209,200,109,200,248,197,204,138,217, 67,175, 0, 56,110,104,158, 7,114,198, 92,173,217,190,125, +109,255,180, 52, 6, 0,182, 16,194,107, 41, 93,102,200,247, 14, 0, 25,170, 84, 84,112,115,193,225,125,199,208,163,111,215, 34, +197,149, 80, 40,130, 72, 40,132,169,149, 73,169,156, 34,145,200, 62, 40, 40,200, 90, 40, 20,230, 91,228,117, 58, 93,220,236,217, +179,109, 59,116,232, 96,122,246,236, 89,166, 67,135, 14,188,141,141, 77,214,147, 39, 79,226,181, 90,173,117,195,134, 13, 13,206, +243,148,210,223,107,212,168, 81,243,232,209,163, 67,167, 77,155,246,104,202,148, 41, 11, 11,158, 95,190,124,249,130, 51,103,206, + 84,232,214,173,219,174,167, 79,159,254, 94,150, 50,228, 75,203,121, 35,231, 63,143,179, 56, 45,146, 11,123, 66,200,169, 2,231, + 59,230,237, 79,155, 54,109,198,146, 37, 75, 94, 18, 66, 78, 21, 60,158,119, 93, 46,247,169,162,246,115,239,181,154, 62,125,186, +239,210,165, 75, 23,251,251,251,239,187,115,231,206,251,175, 38,176,242, 94,164,224,203, 21,138, 72,164,167,167, 35, 61, 61, 29, + 17, 17, 17,216,176, 97, 67,238,135, 44,132, 64, 32,128, 64, 32,200, 31,175, 80, 28, 46,157,188,249, 27,128,223,106,213,170, 37, +124,113,247,224,217,159, 54,141,111, 89,187, 85, 77,246,241,229, 23, 61, 1,252, 12,224,155, 65,131, 6,217, 0,192,206,157, 59, + 19, 1,156,253,191,144,200,148,210,131,193,193,193, 63, 56, 58, 58,230,143, 65, 41,216, 77,168,215,235, 33,149, 74,145, 55, 86, + 69,165, 82, 97,195,134, 13,122, 74,233,193, 18, 56,241,230,229, 21, 4,191,188,154,115, 31,207,131,231,254,186,127,222,188,121, + 5,167,190, 98,116,174,165,164, 84,113, 87, 84,156,211, 66,191,133,142,127, 34,202, 62,233,134, 16,141,239, 57,112,172, 35, 79, + 4, 56,113,229, 41,132, 66, 33,248, 2,214, 75, 33,155,211, 58,126,249, 54, 26, 78,246, 62,232,220,111,164,195,209, 93,235,198, + 3,248,165,172,113,237,233,231,143, 9, 63,252,128,205,155, 54, 97,230,220, 5,249,234, 92,207,113,208,151, 26, 78,134,105, 88, +219, 27,153, 73,145, 96, 89, 22, 13,106,184,129,101, 89, 52,174,237, 1,150,101,209,168, 78, 85, 8, 4, 2, 52,171,239,141, 42, + 85,170, 64, 32, 16, 48,165,164, 59,222,188,188,140,224,151,215, 10,136,221,156, 52,209,198,196,124,114,189, 46, 38, 6,180,188, +117, 89,243, 22,134, 13, 27,150, 26, 17, 17,161, 45,124,174, 92,185,114,162, 27, 55,110, 88, 20,211, 61,151, 15,153, 76, 86, 75, + 32, 16, 60, 78, 78, 78,230, 77, 76, 76, 24,158,231,120, 31, 31, 95,246,220,198, 25, 71,243,174,153, 62,125,198,209,222,181,204, +186,237, 62,120,138,138, 42, 54, 34, 68, 40,209,127, 55,119,163, 72, 40,146, 25,228,161, 62,175,187,240,245,235,215, 40, 45, 60, + 69, 20,130, 31, 33, 37, 37,101,144,151,151,215,141,223,126,251,205,138, 16,130,155, 55,111,130,101,217,252, 45, 36, 36, 4, 12, +195,224,167,159,126,210,166,167,167, 15, 47,181,192, 18, 8,126, 56,124,248,176,185, 88, 44, 70, 70, 70, 70,254,119,195,178, 44, +130,130,130,176, 98,197, 10, 12, 26, 52, 8,225,225,225,112,114,114,194,228,201,147, 21, 75,151, 46,253, 1,192, 2, 3, 94,253, +185, 70,163,169,109, 98, 98, 2,169, 84,138, 60,161, 5, 0, 23, 94, 10, 3,178,179,179,171,217,216,216, 56,216, 94, 63,117,162, + 65,243,206,126,214,182,142,254,121, 2,203, 80,188, 3, 54,189,215,235,103,125,115,244,168,221,237,163, 71,249,187, 39, 78, 68, + 74, 51, 51, 55, 26, 76,160, 99,241,225, 93, 36,106,213,170,133,199,143, 31,163, 86,173, 90, 5,197, 18,196, 98, 49, 68, 34, 17, + 68, 34, 17,108, 44, 12, 26, 42, 65, 25,134,193,237,219, 31, 47, 55,218,184,113,227,228,171, 87,175, 42, 0,224,195,135, 15,180, + 99,199,142,169,129,129,129,112,119, 47,121, 24,154,131,131,195, 13,150,101, 43, 22,250, 86, 45,187,119,239,142,148,148,148,246, +221,187,119,111,148,123, 44,234,208,161, 67, 3, 0, 64, 44, 22,131, 97, 24, 14, 70,252,231, 81,154, 22, 41, 40,144, 10, 11,173, + 37, 75,150,116, 44,124,172,160,152, 42,234,127,193,123,151, 46, 93,186,184, 0,183,242,107,188,143,160,160,114, 44,173,176, 44, + 9,165, 9,172, 60, 60,126,252, 88,231,236,236,188, 57,248,105, 88, 75,183,234,174,144,201, 37,109, 8, 33,191, 73, 36,146, 73, + 3, 7, 14,196,189,123,247, 16, 16, 16,176,245, 75,151, 61,169, 86,173,218,121,137, 68, 82,161,152,238,144, 15, 47, 94,188,104, + 91, 76,133, 48, 55,119, 76, 89,177,131,220, 11,142, 7, 43, 56,200,189,216, 12,193, 83,232,180, 58,100,101, 43,255,170,188,115, + 5, 86, 86, 86, 22,250,244,233,243,145, 5, 43, 62, 62,222, 16,165,143, 21,199,143,227,226,193,131,104,239,231,135, 35, 15, 30, + 96,233,192,111,225, 89,193, 25,148, 35,160, 4, 8,223,187, 14, 73,233,153,216,115,249, 54,146, 51,178,209,191,113, 99,184,155, +217,148,204, 43, 20,181,174, 91,223, 95,116,233, 78, 32,132, 66, 1, 24,240,160,186,108, 56,121, 53, 3,203, 48, 48,183,175, 4, +145, 80, 8,161, 80,128,144,136, 68,120,249,214, 17,159, 18, 75, 91,127,142,192, 42, 95,161, 50,120,142,195,160, 65,131,176,111, +223, 62, 88, 59, 84,128,121, 57, 95,252,188,114, 19,218,183,106, 92,234,251,231,181,216, 5, 2, 1, 88,150,253,228, 55,239,191, + 33,214, 72,202, 83,104, 11,167, 17, 79, 65, 1,184, 44, 90, 4,151, 69,139,240, 32,247,153,222, 89, 89, 80, 42,149, 64, 61,159, + 50,137, 43,141, 70,131,136,136, 8,109, 76, 76,140,125, 17, 21, 83,156, 70,163, 41, 85,208,236,216,177,227,249,224,193,131,107, + 91, 89, 89, 61,122,254,236,153,174,186,159,159,240,236,134, 25,199,242,186, 7, 1,192,207,207, 47,121,198,140, 25,199, 6,244, +234,216,245,247,105,125,185,239, 23,236, 18, 72,100,178,218, 29,167,148, 60,208,189,192,247, 17, 90,189,122,117,106,200,181,217, +217,217,177, 37,164, 81, 39, 0,243,107,214,172,105,214,188,121,115,220,184,113, 3, 61,122,244, 80,107,181,218, 96, 0,232,208, +161,131,199,158, 61,123,196,129,129,129,176,181,181, 21,126,248,240, 97, 27, 33,164,196,129,239, 98,177,184, 89,157, 58,117, 24, +181, 90,253,137,184, 90,186,116, 41,250,245,235, 7, 15, 15, 15,240, 60,143,204,204, 76, 52,111,222, 92,184,118,237,218,102, 6, + 10,172, 9,158,158,158, 43,144, 51,139,176, 96, 89,248, 10,192,143,185,214,237,216,142, 61, 6,189,108,220,170,123,237,138, 85, +124, 29, 75, 35,180,183,183,159,206, 48, 76,111,158,231,217,244,244,244, 8, 13, 33, 85,188, 43, 86,180,111,216,181, 43,210,132, + 66,118,205,229,203, 76, 92,102,166, 2,128, 65, 93,141, 74, 93, 38, 42,184,229, 12,229,235,209,183, 43, 30, 63,126,140,158,253, +186, 65, 36, 18, 65, 32, 16,230,124,155,162, 28, 11,150,133,141,169, 97,154, 77,167,251, 36,175, 82, 74, 97,102,102,150,223,147, +145,119, 76,167,211,149, 88,249, 1,112, 63,176, 96,182,157,204,204, 28,156, 78, 7,159,174, 61,243,243,244,253, 45,191,203,192, +243,178,212, 15,161, 24,119,240,164, 16, 70, 24, 81,140, 21,171, 36, 45, 82, 80, 32,125,133,103,157,154, 54,109,218, 12, 0,116, +218,180,105, 51,242,246,151, 44, 89,162, 4, 16,245, 85, 4,214,151,138,171,188,110,132,146,208,162, 69,139,113,166,166,166,107, + 1,160,118,237,218,136,184, 23,133,136,123, 81,240,170,234,211,176,166, 95,237,180,126,253,250,193,218,218, 26, 83,166, 76,161, + 0,182,150,245,249, 33,111, 94, 42, 0, 80, 39, 39,167, 41, 0,224,228,228,228,247,224,193, 3,219,135, 15, 31,162, 78,157,191, +102, 20,106,181, 90, 52,106,212,168,164,138, 48, 3, 57, 99,169, 38,126, 61, 85,206, 67,171,213, 34, 59, 91, 9,141, 70, 11,189, +142,135, 94,175, 71, 45, 31, 83,236,218, 52, 45,231,152, 62,207, 90,150, 99, 37,115,113, 48, 69,173,106, 14, 58,134, 33,202,135, +207, 98,204,138,226,213,104, 52,120,254,225, 3,158,133,133, 1, 0, 58, 47, 89, 86, 98, 56,118, 93,190, 1,111,111,239,210, 66, +235,230,226,228,128,232,139,207,115, 10,109,101, 4, 30,222, 58, 0, 83, 83, 5, 0,192,167,105,127,136, 68, 57, 2, 43, 75,169, +133, 77,213,114, 32,148, 22, 59,189, 95,110,229,120, 94, 32,146, 86,160, 28, 15, 74,121, 80,158, 3,165, 60, 36,166,214, 38, 99, + 71, 13, 1,207,115,168, 91,183, 46, 8,203,130,211,169,209,171, 83,107,164,164,101,192,218,194,204,160,184, 21,137, 68,104,218, +180,169,172,184,243,111,223,190, 85, 22, 20,100, 37,167,145, 14, 89, 89, 74,168,213,106,104, 53,122,104,117,122,240,149, 69, 88, + 56,235, 91,232,181,122,100,247,245,207, 57,246, 67, 55,104, 53, 58,132,155, 48,140,159,183,173,142, 1, 81, 62, 9,140, 55, 43, + 77, 96,229,137,130,226, 80,212,152,191, 98, 68,214,179,193,131, 7,215,170,238,231,247,184,119, 43,191, 95, 95, 4,188,140,126, + 17,240,242,147,235, 42,120,248,133,126,191,116,223,100,161, 72, 86,203, 80,113, 5,124,220, 93,248,133,152,145,145,145, 81, 93, +161, 80,224,205,155, 55, 96, 89, 22,132,144,183,148,210,234, 0, 48,114,228,200,119, 2,129,192,149,101, 89,172, 95,191,158, 8, + 4,130,106,254,254,254, 51, 0, 28, 40,161, 33,231,101,106,106,250,145,245, 74, 36, 18, 97,218,180,105, 24, 48, 96, 64,190,184, + 18,137, 68,216,177, 99, 7,106,215,174, 13,141, 70,227,101,160, 8,126, 8,160,177, 1, 22, 62,146, 43,202, 75, 21,161,122,189, +126,112, 82,239,222, 85,112,253, 58, 26,186,186,122,215,170, 85, 11, 90,237, 95, 6,204,202,149, 43,151,203,200,200,136, 37,132, +252, 9,224,119, 74,233,211, 18,249, 84, 20, 31,222, 69,230, 53, 86, 81,183,110,221,124,139, 85, 65,235,149, 72, 36,130, 76,164, + 40,179,192,162,148, 34, 43, 43,139, 57,119,238,156,141,151,151, 23, 1, 0,111,111,111,114,239,222, 61, 43,153, 76,150,232,228, +228, 84,106,195, 87,102,102,142, 29,131,251, 0, 0,230,180,106,151,223, 32, 58, 55,127, 6,132, 66, 33, 90, 78,153,241, 73,190, +231,121,158,133, 17, 70,113,101,128, 22,249, 90,226,170,176, 5,107,201,146, 37, 47,151, 44, 89,242,137, 53,236,171, 89,176, 12, + 49,249, 27,218, 10, 42,140,149, 43, 87,162, 90,181,106, 37, 86, 64,107,215,174,197,238,221,187, 87, 82, 74, 67,202,250,252,142, + 45,107,250, 96,213,209,151,174, 30, 62, 4, 0, 22,252,208,137,201,202,202,194,237,219,183, 97,110,110,142,183,111,223, 26,154, +192,166,230,230,230,243, 25,134,233,197, 22, 30,217, 95,180,176,228,120,158, 63,152,150,150, 86,172,155, 6, 74, 1,173, 78,143, +172,108, 21, 52, 26, 13,126,248,105, 93,169,225, 88, 2, 16,173, 38, 67,208,180,137,191,172, 56, 11, 78, 93,223,166, 24, 51, 64, +254, 73,165,205,230,184, 2, 67,141,186, 57,107, 75, 63,185, 31, 0, 74, 1,142, 3,108,236,172,176,117,223,175, 37, 70,129,158, +227,115, 91,195, 28, 50,213, 28,188,234,119, 68,228,171,235,249, 22, 35,177, 40,167,107, 88, 36, 20,130,167, 36,199,123, 67,113, + 2, 72, 44,171,144, 18, 19,226,190,233,212, 11,140,232, 88, 13,135, 46, 61, 71,207, 86,213,113,245,126, 32,154,215,243,198,203, +224, 48,248,184, 87,196,250,109, 7, 65, 41, 50,254, 88,245,115,236, 95, 21,153,254,131, 33, 22,172,123,247,238, 41, 11, 91,173, + 10,254,210,210,235,193,156,174,192, 92, 11,150, 82,165,198,148,233, 6,185,227,201, 73,163,198,245,101,134, 92, 92,146,133,202, + 16, 1, 86,216,146,133, 82,220,172, 84, 6, 80, 27,152,250,127, 89, 96,114, 28,135,211,167, 79,231,167, 71, 81,233, 88, 48,237, + 12, 16, 55,248,240,225, 3, 2, 2, 2,224,239,239,143,180,180, 52, 8, 25, 6,147, 95,188,128,247,192,129,208,136, 68,224,121, + 30, 98,177, 24, 35, 71,142, 52, 56, 62,203, 88, 42,231,142, 99,227,104, 41,101,201,175, 29, 59,118,172,242, 38, 43, 11, 47,131, +130,208,106,222, 60, 0,192,233,211,167, 63,202, 19,147, 38, 77, 18, 7, 6, 6, 14,123,244,232,209, 48, 66,200, 74, 74,233,228, +226, 56,181, 84,149, 63, 6,171,119,255, 30,168,226, 85, 25,187,183,237,205, 63, 63,233,167, 9, 16, 10, 69, 16, 10,133,176,176, +176, 48,232,109, 10,150,221,217,217,217,204,161, 67,135, 92,154, 53,107, 38, 26, 49, 98, 4, 1,128, 77,155, 54, 49, 91,182,108, +145, 95,184,112, 65,100,110,110, 30, 83,170,168,212,106, 63, 73, 99, 66, 8,132, 66, 33, 68, 98, 17,192,243, 32,132,200,151, 47, + 95,190,224,229,203,151,117, 60, 61, 61,161, 86,171, 7, 18, 66,158, 24,253, 96, 25, 81,154, 22, 41,106, 44, 85,174, 21,170, 56, + 36, 20, 28,151, 85,156, 64, 43, 56, 38, 11,192, 87,153,108, 33, 40, 77, 84,177, 44, 91,170,117,138, 97,152, 82,187, 8, 39, 77, +154, 4, 83, 83,211,226, 42, 30,250,226,197,139,192,152,152,152, 77,148,210,117,159,243, 34,167, 46, 63,121, 57,127, 98,183, 12, +228,246,157, 90, 88, 88, 36,182,104,209, 34, 19,128,246,192,129,143, 27,196,106,181,186,216,138,219,220,220,124,254,150, 45, 91, +198,119,237,218,149, 41,236, 42,160, 96, 55, 94,222,166,211,233,112,224,192,129,241, 83,167, 78, 69,113, 86,175,188,202, 59, 59, + 75, 9,101,238, 0,231,119, 1,135, 12, 45,204,139, 61,165,176,116,130,139, 43, 87,108, 37,194,136,114,198, 8, 57, 84,240,203, + 63,102,106, 42, 5, 87, 2, 39, 33, 76, 72, 88,120,180,115, 57, 7, 43,188,139, 72,128,125,197,106, 72,137,250, 43, 30, 4, 2, + 22,194,220, 46, 66, 11, 51, 57, 18,226,227,193, 48,108,137,130,248,231, 61, 79,112, 63, 32, 12,135, 47, 61,133, 86,149,133, 85, + 59,207, 65,171,206,132, 86,149, 5,173, 42,231,119,241,212,239, 64, 8, 98,181,170, 76,143, 50,101, 96,129, 0,245,234,213, 43, + 86,224, 68, 69, 69, 25,104,193,162,249, 22, 44,165,170,140,105,100, 88, 75,169, 68, 11, 85,222,249,207, 21, 4,121,174, 27,100, + 50, 89,237, 29, 59,138,119,199, 80, 20, 28, 29, 29,207, 42, 20,138, 74,134, 94, 95, 6,167,163,139, 45, 44, 44,230,123,122,122, +122,173, 90,181, 74,200,178, 44, 90,182,108,233,241,221,119,223,125, 0,128,106,213,170, 57,229,149, 49,223,127,255, 61,189,119, +239, 94, 64, 78,219,162,120,136,197,226, 32,115,115,243,218, 45, 90,180, 64, 90, 90, 26, 34, 34, 34, 32,151,203,225,253,235,175, +120,241,253,247,240,219,176, 1, 76,139, 22, 32,132, 64, 44, 22,227,197,139, 23,144,201,100, 65, 37, 20,230,245, 0, 44, 3,208, + 16,127,117, 11, 82, 0,183, 1,252, 68, 41,189, 95, 68,121,199, 0, 0,199,243,165, 37,214,183, 83,166, 76, 65,170, 80, 8,116, +232, 0, 81, 72, 8,180, 90, 45,252,253,253, 81,187,118,142, 39, 14,127,127,127, 8, 4, 2, 84,175, 94, 29, 78, 78, 78, 88,191, +126,253,183,248,120,102,245,199,101, 87,166, 14, 31,222, 69,194,223,223, 63,223, 82,213,161, 67,135,124, 11,150, 80, 40,204,183, +100, 17,142, 53,168, 50, 43, 40,176,116, 58, 29, 17,137, 68,130, 81,163, 70,145,225,195,135, 83,157, 78,199,139, 68, 34,102,243, +230,205,228,222,189,123, 2,165, 82, 89,106, 3,220,183, 91, 47,204,105,157, 99, 4,253,185,146, 45,132, 34, 33,196, 34, 17,166, + 4, 69,230,167,139,217,142,125,226,165, 75,151,246,244,244,244,204,233,110, 7, 4, 70, 63, 88, 70,148, 98,224, 73, 40, 36,142, + 52, 5,246, 19, 0,144,220,253,132, 2, 66, 42, 1, 57, 51, 2,235, 20,186, 54,239,188,166,208,111,222,249,103, 95,227,125, 74, +106, 1, 7,223,189,123,215,189, 86,173, 90, 8, 15, 15,255,100,102, 91, 94,133, 37,151,203, 33,147,201,112,231,206, 29, 0, 8, + 46,142,236,202,149, 43,191, 33,199, 75, 50, 0,192,201,201,201,191,121,239,102,119,234,182,171,131, 61, 75,246,166,197,196,196, + 84,207,243,129, 67, 8, 33, 78, 78, 78, 3,132, 98, 65, 31, 87,223,242, 77,193,243,203, 46,157,184, 53,175,164, 23,113,245,240, +201, 4,160, 44, 48,139,112,197,231, 68, 8,195, 48,189,186,118,237,202, 4, 6, 6,162, 79,159, 62,216,189,123,119,177,215, 14, + 24, 48, 0,251,246,237, 67,215,174, 93,153,233,211,167,247, 42, 77, 96,229, 88, 71, 52, 95, 45, 51,190, 9,126,134, 93,123, 55, + 23, 59,198,200,206,206, 22, 0, 16, 31,159,144,127,172,118,237,146, 29, 49,243,122,205,197, 39,143, 30,248, 55,104,210, 82, 20, + 17,151, 10, 94,175,134, 42, 35,241,175, 22,110,106, 28,168, 94, 5,145,137, 21, 28,108,204,241,248,238, 5,141, 86,163,186, 88, + 18,231,248,174, 62,248,190,147, 23, 64,121,116,155,188, 21,167,214,141,203,239,222,105,212, 99, 2, 46, 31, 88, 99,240, 24,190, +194, 16, 10,133,120,241,226,133,178, 56,235, 21,203,178,165,250,212,250,203,202,168, 67,118,182, 18,217, 74,213, 87, 75, 35, 66, +136,173,189,189,253, 31, 86, 86, 86,210,162, 4, 20, 33,196,214,214,214,246, 15,107,107,107,169,161, 93,132,197,137,171, 92,191, + 88,143, 6, 15, 30, 92, 38,145, 37,145, 72, 42, 5, 7, 7,231, 59, 25, 45,233, 87,163,209,160,121,243,230, 2, 3, 11,203,147, +132,144,247,142,142,142,183,189,189,189,205,223,189,123,135,189,123,247,138,132, 66, 97,249,188,242, 35, 35, 35, 3, 44,203, 34, + 62, 62, 94, 7, 96,104,105, 93,100,106,181,250,250,245,235,215,107,116,234,212,137, 13, 10, 10, 2,203,178, 57,225,242,247,135, +223,134, 13, 8,152, 56, 17, 77,195,194,160,210,106, 33,149, 74,113,254,252,121,109,118,118,246,245,226,248,100, 50,217,166,208, +208, 80, 31,169, 84, 10,173, 86, 11,158,231,193, 48, 12, 17, 8, 4,141, 44, 44, 44,214, 2,168,243,241, 55,101,103, 55,114,210, + 47, 85, 57,189,158,139, 9,127,151, 80, 90, 28, 36, 37, 37,225,228,201,147,168, 95,191, 62,154, 54,109,138,168,168, 40,132,132, +132,160, 67,135, 14,249,215, 60,123,246, 12, 79,158, 60,129,155,155, 91,233, 22, 60, 86, 7, 55,207, 74, 16, 9, 69, 16,138,132, + 57,191, 66, 97,238,150,243, 63,239, 88,158,207,194,178, 88,176, 0, 64,161, 80,228,229, 11,190, 82,165, 74, 49, 49, 49, 49,142, + 0,216, 60, 7,172,134, 52, 86,242,234,136, 60,113, 37, 18,139,242, 45, 89, 0,144,154,154,170,234,218,181,235,159,106,181,122, + 8, 62, 99, 69, 17, 35,254,147,120,248,127,116,239,223, 34,176,218, 55,104,208, 96, 67,191,126,253, 90,174, 94,189, 26, 10,133, + 2, 49, 49, 49,249, 21,161, 88, 44, 70,185,114,229,144,156,156,140,141, 27, 55, 34, 50, 50,242, 10,128,145,134, 62, 56, 38, 38, +230,222,219,167,193, 73,205,123, 54,176,246,105, 80,213, 34, 34, 56,178, 62,128, 59,185,226,106,107,191, 73,237,135, 52,239, 94, + 23, 34,177, 16, 17,111, 99,255,191, 69, 8,203,178, 44, 33, 4,125,250,244, 49,232,250,190,125,251,226,250,245,235, 40,169, 59, +145,207,179, 96,101,171,144,165,252,122,141,179, 49,227, 7, 96,204,248, 1,249, 34,194,144, 46,150, 28,113,187,191, 4,129,165, + 93,125,106,255,198, 17, 53,235,250, 87,168,237, 83, 9,247, 31, 61,197,158, 13,127, 25, 21,182,253,182, 0,191,108,187,130,114, +246,150,208,170,179,112,246,208,230, 88,173, 58,123,245,103, 26,225,114, 68, 45, 33, 48,208,191,228, 71, 86,211, 60,129,229,235, +235, 91,172, 5, 43, 57, 57, 89, 89, 90,133,144,159, 70, 26, 29, 50,179,148, 80,102,127, 29,129, 69, 8,241,107,212,168,209,197, +131, 7, 15, 90,219,217,217, 33, 58, 58,250, 35,129, 69, 8,241,107,216,176,225,197,131, 7, 15, 90,219,219,219, 35, 34, 34,194, + 96,247, 32, 69,136, 43, 36, 36, 36,144,148,148, 20,222,210,210,178, 76, 34,139, 97, 24,168,213,106,188,122,245,202,208,199, 26, + 60,227,203,220,220,124,199,190,125,251,204, 19, 19, 19,193,178, 44, 94,189,122,245,209, 44,194,188,109,235,214,173,162,110,221, +186,109, 1, 80,163, 36, 62,189, 94,191,114,192,128, 1,195,162,162,162, 44,237,236,236, 16, 19, 19, 3,177, 88, 12, 74, 41, 72, +243,230,104,252,254, 61,180, 28, 7,153, 76,134, 55,111,222, 96,211,166, 77, 89,106,181,122,101, 49,233, 35, 54, 49, 49,113, 23, +137, 68,232,223,191,255, 71,231,118,238,220,137,206,181,217,218, 35, 90, 75, 50,245,144,170,227,100,223,156,101, 89,150,140,156, +178,204,163, 94,147, 14,190,175, 3,238,191, 75,136,139,188, 93,202,235,235, 52, 26, 13, 60, 61, 61,241,240,225, 67, 92,186,116, + 9, 45, 90,180, 64,211,166, 77,241,252,249,115, 92,184,112, 1, 79,158, 60, 1, 33, 4,214,214,214,121,195, 44, 74, 28,107,161, +201,210, 35, 62, 42,233, 19,107, 85,225,125,145, 72, 4,181, 88,107, 80, 26, 5, 5, 5,225,225,195,156,250, 39, 59, 59, 27, 2, +129, 64, 63,101,202, 20, 48, 12, 67, 3, 2, 2, 96,103,103, 71,127,250,233, 39, 78, 32, 16,232,195,195,195, 13,205,251, 57,214, +170, 92,113, 37, 16, 9, 63, 18,102, 60,207,103, 60,123,246,108, 4, 33,228, 57, 33, 36,207, 27,170,209, 15,150, 17,255, 42, 8, + 74,104,133,188, 7,208,138, 16,242,237,177, 99,199, 86,174, 93,187,214,182, 99,199,142, 72, 73, 73, 65,133, 10, 21,224,232,232, +136, 83,167, 78,225,204,153, 51,137, 28,199, 77,166,148,238, 46,226, 35,107, 85,156,175, 12, 74, 41,117,114,114, 58,168,206,204, +252,190, 86, 83, 47, 92, 57,112,115,137,163,163,227, 72,103,103,231, 31, 6,207,232, 50,164, 89,215, 58,120,243, 36, 20,247, 46, +188, 64, 92,120, 34, 6, 55,254,169, 68,206,194,131,220, 45, 44, 44,134,153,152,152,136, 1,104,139,104, 5,127, 52,139,176, 32, + 39,199,113,156, 70,163,193,254,253,251, 13, 18, 89,123,247,238,133, 74,165, 2, 87,168, 31,181, 32, 39,229, 41, 17, 8, 37,112, + 42,231, 9,173, 54, 11, 60,255,121,214,154,130,156,132, 16, 48, 12,131,119, 98, 49,236, 18, 19,113,255,254,125,131, 56, 10,182, +156,139,138, 79, 74,169,138, 16,210,127,205,162, 41,167,198, 78, 91,102,209,162, 65, 13,204,249,117, 39,180,218,109, 96, 88, 6, + 50,137, 8,181,234, 54, 4, 11, 53,254, 88,250, 99,106,118,122, 74,255,194, 75,230,124,194, 89, 82, 79, 10, 5, 56,158,199,165, + 27, 15, 12,126,247,252, 90,158,227, 32, 16, 8,240,246,237, 91,101, 81,179, 7, 89, 54,167, 59,147, 97,152, 34, 91,221, 31,167, + 17, 79,132, 34, 41,202, 85,240,134, 70,157,249, 85,210,200,206,206,238,199,163, 71,143, 90,231,185, 60,120,254,252, 57, 8, 33, +175, 10, 88, 67,126, 60,122,244,168,181, 82,169, 68, 64, 64, 64,222,146, 80,175,202,242, 29,229, 89,174, 18, 18, 18, 72, 76, 76, + 12, 76, 76, 76,152,231,207,159,171,171, 87,175,254, 8, 37,175,212,144,207,169, 82,169,194,138, 27, 31,169, 82,169,156,165, 82, +169,176,208,189, 78,238,238,238,111, 10,119, 21, 22, 21,206,180,180,180,251, 83,167, 78,173,213,174, 93, 59,252,248,227,143,201, +150,150,150,166,127,252,241,135,128,101, 89, 50,118,236, 88, 46, 62, 62, 62,115,243,230,205,230,199,142, 29, 67,106,106,234,157, +210,222,157, 82,154, 65, 8, 25,209,160, 65,131,157,231,206,157, 51,113,119,119, 71,122,122, 58, 40,165,216,177, 99, 7,198,142, + 29, 11,169, 84,138, 55,111,222,160,115,231,206,217,217,217,217, 35, 10,143,141, 44,192, 73, 8, 33,148,231,121,204,158, 61, 59, +223,169,104,158,147, 81, 83, 25,193,166, 73,149,229, 19, 54,167,201,191,157,179,121, 32, 0,112,122, 61,247, 58,224,254,187, 29, +235,230, 92, 21,137, 68, 55, 74, 73,163,153, 19, 38, 76,248,163, 67,135, 14, 50,133, 66,129,228,228,100,220,190,125, 27,119,239, +222,197,189,123,247,160,209,104, 96,109,109, 13, 75, 75, 75,196,196,196, 32, 40, 40, 72, 9, 96,102, 73,156, 98,185, 16,174, 85, +243,102,242,254,101,189,202,223, 23, 9, 33, 20,252, 53,147,208,144,188,212,164, 73, 19,212,171, 87, 47, 79,248,112, 31, 62,124, +136, 81,171,213,164,128,216,143,202, 19,226,229,203,151,215,111,221,186,149,150,196,121,111,211,122,156, 91, 56, 19, 98,145, 8, +147, 95, 69,228,139,173,157, 45,106, 66, 40, 22,193,171, 83,143,130,245,192,239,132,144,109,185,255,213,134,228,249, 47,104,240, + 24, 57,255,225,156,255, 25,129, 85,224, 3,216, 67, 8, 57,251,221,119,223, 45,245,243,243,251,110,213,170, 85, 68, 36, 18, 97, +222,188,121, 52, 58, 58,122,123,110,171, 35,229,115, 30, 78, 41,221,126,237,200,157,209,131,166,117, 37,147, 86, 15,110,244,232, +114, 64, 80,181, 6,238,168,214,192, 29,143,174, 4, 98,221,140,189,187, 57, 29, 55, 59, 38, 38,166,180,102,147,186, 85,195,170, +133, 7,185, 91, 95,191,122,217,186,172,179, 8,121,158, 63,184,119,239,222,241,221,187,119,103, 30, 60,120,240,201,152,171, 60, +103,124, 60,207,227,226,197,139,208,106,181,216,190,125, 59,207,243,124,241,126,176, 64,143,175, 89,189,116,208,246, 93,199,197, + 98, 17,193,221, 27,135,145,150, 82,178, 85, 78, 36, 18, 98,235,142, 35, 90,145, 72,248,186,168,243, 90,173, 54,226,242,229,203, +246,109, 57, 78,200, 48,204, 39,194,169, 56, 28, 60,120, 80,199,243,252,135, 82,210,229, 14, 33,194, 78, 63,255, 56,116,111,135, +222,223,217, 55,104,208, 72,104, 99,103, 15, 66, 8,226,227,226,241, 38,224,129,238,236,225, 45,113, 89,217, 25, 6, 45,149, 51, +116,197,181,252, 49, 87, 0,208,113,236,218,252,241, 87, 0,208,105,240, 84, 52,175,239, 3, 98,136,169,233, 47,113,197,235,245, +122,200,229,114,232,245,250, 34, 93, 53,152,155,155,203, 84, 42,149,146, 82, 10,142,227, 74, 52, 13, 81,224,171,167, 17,199,113, + 94, 41, 41, 41,200,202,202,194,221,187,119,233,162, 69,139, 18, 18, 18, 18,242, 7, 99,234,116, 58,175,228,228,100,100,102,102, +226,206,157, 59,116,233,210,165, 9, 73, 73, 73, 51,202,242, 13,201,100,178,218, 2,129,224, 81, 74, 74, 10,111, 98, 98,194,232, +116, 58, 93,245,234,213, 37, 50,153,204,224,133,206,163,163,163,219, 21,119,206,205,205, 45, 56, 56, 56,184, 10,199,113, 5,215, + 40, 20,169, 84, 42,247, 6, 13, 26, 24,210,181, 51, 97,219,182,109, 56,114,228, 72,221,244,244,244, 1, 31, 62,124,216, 9,160, +174, 64, 32,192,211,167, 79, 95,169, 84,170,126,221,187,119,223,145,146,146,114, 31,192, 4, 3,203,141,115,132,144,254, 94, 94, + 94,219,230,207,159,175,104,218,180,169,192,201,201, 9,117,234,212,193,155, 55,111,112,250,244,105,221,239,191,255,158,149,157, +157, 61,148, 82,122,177,228,100, 7,209,235,245, 16,139,197,249,155, 68, 34,129, 72, 36, 66,134,146, 98,248,175, 33, 74, 61,100, +202,149,243, 70,156,166, 0,137,141, 8, 73,140,143,141,184, 79, 8,185, 17, 29, 29,157, 86, 76,156,137, 85, 42, 85, 13, 71, 71, + 71, 1, 33,100,181, 86,171, 29, 50,110,220, 56,135,197,139, 23,163,106,213,170, 72, 76, 76,132, 92, 46,135,187,187, 59, 18, 18, + 18,240,224,193, 3, 46, 59, 59,123, 3,128, 5,148,210, 18,187, 29, 83, 19,210,225, 98, 95,254, 35, 75, 39,165, 20, 84, 15,232, + 56, 14,156,150, 66, 67,116, 16, 10,117, 16,137, 68,134, 84,146,148,231,121,164, 56, 58, 34,234,252,121,228,174, 42, 81,172, 21, +237,212,169, 83, 6, 36, 16, 15,177, 68,252, 81,183, 32, 33, 4, 34,177, 24, 66,177,232,147, 25, 49, 70,171,149, 17,255, 89,129, +149,251, 1,164, 2, 24, 73, 8,217,217,172, 89,179, 83,148, 82, 33,128, 14,148,210,155, 95,242,240,152,152,152,199, 78, 78, 78, +211,237, 93, 44,151,126, 51,160, 17,170,214,168, 0, 78,207,225,246,153,167,216,190,248,216,190,168,136,168,193,134,172, 77,198, +243,252,213,134,181,171, 50, 40,224, 91,219,201,201,137,255,156, 89,132,105,105,105,115, 39, 79,158,140, 31,127,252,177,204,179, + 8,139,187,230,249,171,248,145,126, 94,182, 46,157,190,105,220, 22,132,161, 26,141,186,132, 2, 15,249, 30, 71, 69, 34,225,235, + 7,207,162,171, 23,117, 93, 66, 66, 66,219, 33, 67,134, 92, 20, 8, 4,149,202, 18,231, 60,207,127,136,139,139,107, 89,122,154, +235,110, 19, 66,220, 79,238,219, 56,241,220,145,109,109,121,158,115, 35, 0, 88,129,232,157, 78,171, 61,175, 86,166,175, 50,116, +177,231,229, 35,253, 49, 97,205, 5,172,255,177, 19,198, 45, 61,128, 45,179,135, 99,250,175,123,177,236,199, 9, 88,180,246, 79, +204,153,208, 31, 61,191, 29,194, 83,194,220, 50,244, 61, 88,150, 61,183,113,227,198, 65,195,135, 15,207,159,140, 64, 41,253,168, + 64,215,233,116, 74,158,231,177, 97,195, 6, 30,192,185,146,248, 62, 78, 35, 66, 75, 26, 15,101,104, 26,165,167,167, 15,245,247, +247,223, 1, 64, 66, 41,125,155,146,146, 50,138, 82,154,191,132, 83,102,102,230,208, 6, 13, 26,236,160,148, 74, 8, 33,159,156, + 55, 4,185, 46, 27,106, 91, 90, 90, 62,202,181, 92, 73, 62,103,160,123, 73, 81, 93, 66,247, 33,103, 64,217,193,163,192,242, 55, +132,144,197,117,235,214, 45,184,216,243, 43, 0,181,203, 26, 40, 74,233, 69, 66,136,207,236,217,179, 39, 74,165,210,230,217,217, +217, 30, 0, 32,151,203,223,168,213,234,171, 74,165,114, 85,110,185, 85, 18,135,198,196,196,228,141, 94,175,247,181,181,181,205, +153, 33,155, 43,178, 0,224,196, 35,238, 17,165,250, 50,175, 26,127,230,204,153,138,150,150,150,109, 8, 33, 61, 41,165,158, 25, + 25, 25,234, 89,179,102,221, 61,114,228, 72,106,133, 10, 21,190,233,208,161, 3,177,178,178,194,195,135, 15,105, 82, 82,210, 97, + 0, 51, 12,153, 57,205,243,252,135,229,203,203,182,182, 96,105,141, 41,173, 86, 27,123,230,204, 25,155,118,241,241, 2, 43,158, +255,104,134, 99, 81, 19, 46, 94,191,126, 13,181, 90, 93,162, 19, 70,117, 90, 10, 90, 76,156, 10,228,206,230,204, 67,142,229,138, +130,106,140,122,202,136,255, 6,200,223, 50,141,185,140, 38, 68, 39, 39,167, 62, 82,185,100, 76, 5, 15,199,234,209, 33,241,129, + 25,105,217,187, 99, 98, 98, 54, 82, 74,185,207,229, 44,139,163, 81,163,153,247,239,227,252,203, 15, 22, 7, 74, 57, 80,158,130, + 82, 30, 60,207,229, 44, 68, 77,121, 80,142, 35,132,224,150, 58, 59,109,184,161,225, 36,132, 88,218,216,216, 44,160,148,182, 99, + 89,150, 41,104,252, 42,248, 63,215,114,117, 46, 33, 33, 97, 78, 97, 75,235,255, 98,124, 30, 58,116,168, 72,209,111,232, 44,194, +158, 61,123,114,101,252, 54,175,202,229,242, 34, 29,106,102,101,101,133, 71, 71, 71,183,249, 39,196,103,158,245,147, 26, 80,160, + 21,234,106, 47,243, 44,194,210, 56, 43, 86,172, 40,209,106,181, 53, 1,120, 0,176, 0,144,172,211,233,206, 37, 36, 36,196, 17, + 66,106, 3,152,157,123,219, 66, 74,233,163,255,203,239,157, 16, 34,179,177,177,217,198, 48,140,139, 33,247,235,245,122, 77,114, +114,242,160,130, 13,129,130,156, 54, 54, 54,143, 4, 2,129,139, 1, 60,145,137,137,137,181,141,229,167,145,243, 63,111,193,250, +187, 17, 29, 29,189, 31,192,254,175,201, 89,156,167,118, 35,254,255, 34, 43, 57,230,111, 73,135, 92,177, 52,246,191, 22,159,121, + 2,169,136,227,143, 1,144,191,225,219,108,254,191, 16, 47,244, 51, 91,138,185, 2,170,241,215, 12, 75, 88, 88,152, 26,192,157, +220,173,240,243, 30, 1,232,244, 15,138, 55, 37,128, 62, 95,139,175, 36,209,100,132, 17,255, 53, 48,198, 40, 48,194, 8, 35,140, + 48,194, 8, 35,140,248,186, 32, 0, 90, 21,211,178, 49,216,244, 71, 8,105,245, 25, 45,167, 75, 70, 78, 35,167,145,211,200,105, +228, 52,114, 26, 57,255, 91,156,255, 25,228, 57,124,252, 59, 54, 0,173,140,156, 70, 78, 35,167,145,211,200,105,228, 52,114, 26, + 57,255,107,155,177,139,208, 8, 35,140, 48,194, 8, 35,140, 48,226, 43,195, 96,129,165,112,240,242,178,173,232,183,195,170, 92, +245,231, 86,229,170, 63,183,173,232,183, 67,225,224,229,245, 95,140, 52, 66,136,140, 16,242,173, 80, 40,188,232,232,232,152, 78, + 8,153,248, 47,125, 79, 51, 66, 72, 79, 66,200, 2, 66, 72, 55, 66,136,201,215,228,111, 70,136,160, 47, 33, 99, 6, 17, 18, 62, +136,144,240,190,132,140,105, 70,200,191,110,217,140,249, 19,156,252,111,158,235,127,118,254, 4, 39,255, 34,207, 79,113,178,190, +127,177,247,154, 37, 99,157,173,190, 82,186,153,218,219,219,111,114,112,112, 8,179,183,183,255, 96,111,111,191,141, 16, 98,110, + 44,238,140, 48,194, 8, 35,254,255, 65,144, 91, 32, 55, 5,112, 13, 64, 51, 74,233,245,194, 23, 89, 85,168, 54,220,203,179,234, +143, 63,207,155, 73,108,109, 44,101, 58, 29,167,141,136,140,241,158,251,243,146, 67, 86, 21,170,173, 76,254,240, 98,203,103, 84, + 2,132,101,217, 62, 18,137,164, 35,128, 60,161,246, 74,173, 86,159,226, 56,110,191,161,179,130, 28, 28, 28,110,176, 44, 91,177, + 44,207,230, 56, 46, 60, 54, 54,182,209,103, 86, 94,189,202,151, 47,191,173,105,211,166, 38,117,235,214,133, 88, 44,198,236,217, +179, 39, 3, 88,101, 40,135,149,149,155,169, 86, 34,253, 65, 32, 22,183,166, 58,141, 47, 5, 5, 24, 73, 0,175, 87, 95, 22,169, +213, 43,147,147,223,101, 24, 24,150, 25, 0, 6, 35,103, 90,249, 22, 74,233,242, 47,201, 12,131,107, 18,157,142,203,201, 19, 34, + 1, 56,115,115,243,107, 51,103,206, 20,116,236,216, 17, 91,182,108,105,180,105,211,166, 17,132,144,203, 0, 78, 80, 74,223,125, +105,230,179, 7, 70, 54,104,212,104,205,160,201,147, 89,229,141, 27, 88,179,109,219,106,164,167, 3,192,250,178,230, 37,145, 8, + 61,109,108,132, 29, 41, 69, 77, 2, 16, 2, 60, 77, 72,226,207,104,181,220,126, 90,214,117,120, 62,230,254, 22, 31, 79,171,223, + 83, 86,142,180,119,116,150,164,147, 87,227,180,119, 87,103, 1,248,166,240,121,189, 74, 58,136,178,229, 58, 42,233,147, 8, 0, +191,126,161,184, 50,177,181,181,125,126,252,248,113,151,186,117,235, 10, 0,224,209,163, 71, 3, 59,118,236,216,130, 16,226, 75, + 41, 77,255, 63, 18,235, 82, 1,195,140, 17, 11,133,173, 57,142,171, 6, 0, 44,203,190,208,232,116, 23,245, 60,191,222, 80,159, +106, 70, 24, 97,196,191,218,120, 81,162, 22,249,159, 20, 88, 0,174, 81, 74, 9, 33,132,162,208, 84,111,133,189,167,183,143,143, +215,228,115, 71,119,150, 75, 75, 78, 85,253,246,235,174, 39,153,172, 40,203,195,203, 93,252,219,170,229, 22, 99, 38, 76,250, 65, + 97,239,121, 63, 51, 46, 40,176, 12,145, 88, 94, 38,147, 29, 89,177, 98,133,111,243,230,205,133,118,118,118,136,139,139,195,171, + 87,175,124,175, 92,185,210,117,231,206,157,147, 9, 33,221, 41,165,134, 44,124,229,126,121,215, 54, 59,185,149, 53, 56,157, 14, + 78,213,107,230, 59,200,123,123,229, 2,244, 90, 45,120,157, 14, 94, 29,187, 2, 0,120,158,135,183,183, 55,251,153,137,239,228, +227,227,179,123,241,226,197, 34,181, 90,141,251,247,239,227,234,213,171,124, 76, 76,204, 82, 67, 57, 20,246, 30,205, 25,153,124, +127,159,254,223,153,119,233, 88, 89, 88,222,222, 22,128, 9, 94,135,234, 27,156,189,112,165,206,209,253,219,191, 87,216,123,244, +201,140,123,115,181,100,145,102, 85,159, 16,178, 40,207,163, 51, 33,100, 89,165, 74,149,230, 20,188,166,240,186,118,148, 82, 8, + 4,130,184,140,140,140, 62,137,137,137, 79, 10,115,234, 56, 8,246,236,201,209, 15,179,198,124,203,222,186,117, 75,238,237,237, +173, 6,128,229,203,151, 99,193,130, 5,226,243,231,207,183,223,181,107, 87,123, 66,200,106, 74,233,137, 47,201,124, 34,224,167, + 65,147, 39,179,138,176, 48, 40,158, 61, 67,255,244,116,193, 47,192, 79,101, 17, 88,132,144,202, 14, 14,194, 67,147, 39, 13,241, +114,117,171, 47, 18,137,108,114, 22,215,214, 36,122,132,135, 63,233,185,244,151, 77,211, 8, 33, 61, 40,165,111, 13,228, 19, 0, +152, 15, 64, 10, 96, 22,128,217, 9, 9, 9,238, 28,199,193,193,193, 97, 54, 33,228, 24,128,159,109,109,109,105, 66, 66,194, 84, + 74,169,190, 36,203, 85,250, 59, 58, 43,150,184,182,171, 90,107, 16, 98,201,185,118,147,190,113, 60,107,230, 70,126,158,187, 38, +250, 46, 0,124,227,230,102,234,234, 41,159,170, 48,171,102,149, 30,117,105,234, 55,110,110,155,207,190, 51, 76, 96, 23, 22,153, + 0,224,228,228,180,124,215,174, 93,229,234,213,171,151,159,199,107,212,168,193, 46, 95,190,220,121,226,196,137,171, 1, 12, 49, +144,207,195,214,214,246, 60,199,113,234,164,164, 36,143,188,227,118,126,221, 27, 88,155,202, 91, 38,164,100,220, 72,124,121,236, +186,129, 92,117,165, 34,209,225, 19,187,215, 56,214,168,231,207, 40,108,236,160,138,138, 70,166, 78,219,234,234,237,123,205, 70, +140,249,105, 66,110, 26, 61, 48, 86, 49, 70, 24,241,159, 70,177, 90,228,127, 89, 96, 33,247,133, 62,129, 68, 34,158, 54,119,230, + 84,146,154,148,170, 84,103,100,106,244, 42,149,146, 17,242,170,231,175,222,199, 51, 2, 54,117,210,248,241,166, 83,103,204,156, + 6,160,191,161,226,202,207,207,239,193,145, 35, 71,236,172,172,172,144,150,150,134,164,164, 36, 60,120,240, 0,148, 82,116,239, +222, 93, 82,175, 78,157,154,179,102,207,190, 75, 8,241, 55, 68,100,201,173,108,176,188, 81,206, 26,177,115,194,146,242,158,131, + 77,189, 58,230, 95,179, 32, 50, 13, 0, 32,149, 74,243, 23, 10,254, 12,248,183,108,217, 82, 4, 0,195,134, 13, 75,207,200,200, + 88, 2, 96, 15,165, 52,202, 80,113,101,227,232,116,234,143, 13,203,101,213,220,220,161,213,233,241, 33, 54, 26, 2,161, 5, 92, + 92, 68, 24,210,191,181,176, 73, 3, 43,155, 69, 11, 55,157,150,219,122,116,203, 74,120,115,190, 56, 46, 11, 11,139,157,251,247, +239,199,129, 3, 7, 0, 0,111,222,188,129,187,187,187,188,180, 48, 4, 4, 4,184,118,238,220,121, 31,128, 42,165, 93, 91,216, +145,189, 68, 34, 65,163, 70,141,224,237,237,141,227,199,143, 55, 3,112,226, 75, 51,160,242,198, 13, 40,158, 61, 3,174,151,189, +177, 66, 8,169, 92,171, 86,133,123,103, 78,239,182, 57,125,230, 21,126,253,117, 27,222,189,203, 49,172,185,186,186,226,219,126, +189,132, 47, 94,220,241,233,217,243,219, 59,132,144, 70,148,210, 55, 6,208,206,223,188,121,243,140, 74,149, 42,161,103,207,158, +189,124,124,124, 28,204,204,204,176,113,227, 70, 56, 58, 58,186,106, 52,154,183,199,143, 31,119,138,141,141,197,248,241,227, 1, + 96,114,113, 68,205,218, 54,155, 37,233,228,213,184,106,173, 65, 80,152, 57, 98,243,222,253,120,253,120,103, 99,181,246,213,172, + 37, 99,157, 7, 40,169,100,176,139,187,233,180,138,181,155, 90, 87,241,233,140, 10,181,158,216,168,184,155,239,103,143,113, 93, + 42,144,170,118,206, 93, 17,157,244,201, 59,247, 58,196,250,166, 7, 89, 5, 92, 68, 18,165,115,249, 92, 97,149, 95, 16,113, 20, +157,155, 52,105,146,159,112, 97, 97, 97, 80,171,213,240,242,242, 98, 52, 26, 77,115, 3,227,213,163, 77,155, 54,183,206,156, 57, + 99,237,225,225,241,209,210, 45, 14,214, 22,109,175, 31, 89, 61,126,209,154, 63, 61,237,188,187,165,198, 7, 30,125, 81,154,184, +106, 88,191,214,165,179, 71,118, 43, 72,102, 4,196, 22,137, 0,159,132,144,125, 91, 65, 76,172,208,103,244, 36, 65,243,150, 45, +156, 91,127,211,227, 18, 33,164, 37,165,244,161,177,142, 49,194,136,255,180, 21,139,254, 91,222, 69, 80,192,186, 65,138,122, 49, +158,242,213, 29,236,172,101,171, 87,236,120,200,106, 53, 26, 19, 11, 51,173,185,153, 57,133,169, 25,171,213,105, 51,203,187, 87, + 18,241,148,175, 94, 20,121,225,169,154,132, 16, 34,147,201,142,156, 56,113,194, 78, 40, 20,130,231,121,216,218,218, 34, 52, 52, + 20,169,169,169,200,200,200,192,187, 87,175, 80,169,124, 57,204,155, 54,213,113,252,212,105, 71, 8, 33,181, 11,118, 23, 22, 53, +253,147,211,105, 11, 39, 80,113,139,251,126,244, 91, 18,103, 49, 8, 13, 15, 15,135, 66,161,128,175,175,175,226,246,237,219, 55, +139, 19, 87,133, 57,173,172,220, 76, 5, 10,217,129,223,255,152, 45,211,234, 2, 16, 24,146,140,170,149, 26,195,222,186, 60,162, +147, 53,184,247,224, 4, 2,158,239,129,155,115,121,140, 29,221, 66,186,116,249,161,253,150,150,149,203,167,164,188, 79, 47,138, + 51, 61, 61, 93, 81,185,114,101,148, 47,159,179, 46, 25,199,113, 8, 12, 12, 4,199,113,249,251, 5,127,119, 28,190, 2,125,250, + 7, 12, 26, 56, 16, 73, 73, 73,138,162, 56,133, 44,244,147, 70,124, 43,144, 9, 1,177,220, 74,147,153,153,153,111, 13,212,106, +181,120,250,244, 41,252,253,253,155, 30, 60,120,176, 68, 53,100,104,124,106,129,101,107,182,111, 95,219, 63, 45,141, 1,128, 45, +132,240, 90, 74,151, 25,154,151,236,236,132,135,207,157,221,101,195, 50, 65,176, 50,255, 5, 15, 30,124,128, 86,155, 19,222,164, +164,120,140, 27,147, 14,145,208, 20,199,143,255,105,237,229,213,232,112,110, 23, 25, 95, 74, 56,165,103,207,158,197,184,113,227, + 16, 24, 24,232,196,178, 44,238,223,191, 15,153, 76,134, 21, 43, 86,176, 94, 94, 94, 78,114,185, 28,231,206,157, 67, 92, 92, 28, + 41, 41,156,215,206, 95,251, 57,237,221,213, 89,177,228, 92,187,205,123,247,227,187,126,125,224, 64, 67,110,154,187,145,159,219, +116,106, 56,135,178,229, 58,202, 77,171, 91,186,251,118,130, 72,172,192,216,159, 22,224, 77,192, 73,203,236,140,231, 99, 8, 23, + 81, 14,185,107,243,125,180,216,241,193,158,220,218,189,119,106, 93, 44,255,176,130, 83,173,145,247, 1, 60,255, 75, 96,185, 10, + 8,195,153,231, 89, 43,223,190,125,139,119,239,222, 65, 32, 16, 64,169, 84, 66,175,215, 23, 25, 78,103,103,231,145,122,189,126, + 78,110, 58,239,112,116,116, 28,186,123,247,110,235,130, 2, 59,207,114,149,156,154,158,114,231,225,203,215,147, 70,246,108,118, +227, 94, 64,132,133, 95,215,240,212,103,199,210,138, 73, 35,169, 76, 44, 62,124,238,232,159, 10,221,251, 43,144,123, 53,131, 80, +225, 14, 78, 23,133,236,148, 44,100,188,139,129,250,143,117,168, 49,102, 34, 78, 30, 59,164,240,169, 86,251, 32, 33,196,157, 82, +170,249,140,111,211, 96, 24, 57,141,156, 70,206,127, 38,103, 73, 90, 4, 64, 45, 0,246,185,255,147,144, 51, 52,198, 6, 64, 34, +114,150,237,178, 7,160, 1, 32, 46,112, 79,225,253,130,215, 22,222, 47,248, 63, 41,247,191, 93,238,239, 67, 0,201,159, 45,176, +138, 87,147, 76,186,158,231, 37, 98, 91, 91,245,208,222,173,124, 47, 92,122,244, 84,110,109, 46,104,211,188, 86,211, 7, 47,222, +221,101,192,232, 8, 97, 12, 26,215,193,178,108,159,213,171, 87, 87, 51, 51, 51, 3,207,243, 48, 55, 55, 71, 66, 66, 2, 52, 26, + 13,210,210,210,160,206, 72,135, 54, 35, 29,207, 34,194,208,176,105, 51,244,104,215,198,235,207, 99, 39,250, 0,216, 87, 18,175, + 83,245,154,249,150,171, 5, 21,173,255, 50, 69, 68,164,230,139,173, 95,106,186, 67,164, 80,160,245,164,105, 95,146,240, 79,196, + 98,241,217,238,221,187,127, 51,101,202, 20, 38, 38, 38,230, 28, 33,164, 33,165,180,212,238, 81,173, 68,250,195,247, 63,116,180, +180, 84, 80, 28,188,120, 2, 77,106,246,131,137,152, 69, 82,186, 22,132, 0,175, 94, 30, 1, 33, 86,120,254, 38, 6,141,107,152, +161, 77, 91, 47,197,177, 67,175,166,224,175,241, 63,159, 36, 77, 74, 74, 10,226,227,227,161,211,233,160,211,233,208,179, 87, 47, +236,218,185, 19, 89, 89, 89, 80, 42,149,208,104, 52,224, 56, 14, 12,195,224,226,169,131,136,120,255, 10, 13,252,253, 81,156,233, +117,199, 19, 42, 36,132,220,123,253,250, 53, 94,189,122,133,200,200, 72, 72,165, 82, 56, 56, 56, 96,193,130, 5, 80,171,115,214, + 16,235,213,171, 87, 83, 0, 47,190,244, 67,122, 7,108,122,175,215,207,250,230,232, 81,187,219, 71,143,242,119, 79,156,136,148, +102,102,110, 52,228, 94,145, 8, 61,151, 47, 27, 93, 85, 46,151, 35, 50,124, 53, 60, 61, 69,152, 60,209, 26, 75,126, 73, 4, 0, +140, 31,231,130, 58,181,109,144,158,122, 8, 54,118, 51,176,118,237, 4,183,193,131, 87, 14, 4,176,163, 20,234, 89, 39, 78,156, +232,225,238,238,238,252,228,201, 19, 34, 22,139, 33,147,201, 32,147,201, 32,149, 74, 17, 31, 31,143,208,208, 80,186,124,249,242, + 40,228,116, 33, 22,139,220,110,192,111, 38,125,227,120,246,245,227,157,141,157,217,247,207,122,140,109, 20,246,252,222,147,140, + 11, 23,111, 47,212,171,164, 17,169,145,151,166, 86,174,243,196,102,204,143,243,177,110,249, 92,188,190,127, 35,217,190,124,250, +122, 25, 81,239,168,215,186, 8,171, 88,179,249,130, 49,179,123,235, 71, 14,238, 97,113,210,254,206,200, 51, 2,146, 16,155,248, +120, 5, 66,159, 40, 37, 85,106, 14,240,112,101, 52, 87,174, 92,145, 53,105,210, 4, 42,149, 42,223, 18,185,123,247,110, 94,175, +215, 23,217,237,172,213,106,231, 68, 69, 69, 57, 42,149, 74,180,107,215,110,252,138, 21, 43,228,121,107,200,113, 28,247,145,229, +234,231, 85,187,206,255, 48,103,253,213,243,251,126,113,250,121,218,208,102,253,199, 46,186,138, 98,214,121, 20, 48,204,152,147, + 71,183, 57, 72, 45,117,144, 89,181,129, 42, 78,137,215,155,190, 67,118,186, 10,117,126,158, 15, 64, 12,141,142,193,198, 78, 61, + 33,180,118,194,220,225, 67,157,102,110,220, 60, 26,192,106, 99, 59,222, 8, 35,140, 40, 4,123, 66,200, 41, 0,152, 54,109,218, +140, 37, 75,150,188, 36,132,156,162,148,118,204,109,208,157,162,148,118,204,187, 38,183,206,254,100, 63,239,218,194,251,133,255, + 79,159, 62,221,103,233,210,165,139,253,253,253,247,221,185,115,231,253,231, 8, 44, 38, 79, 49, 22,252,253,200,130,197,243, 55, +222,134,132,101,183,109, 93,223,249,228,181, 23,143,134, 12,233,208,178,119,231,198,109,222, 71,196, 7,185, 85,112,176, 9,120, +249,204,140,231,249, 27,134, 60, 76, 34,145,116,108,209,162,133, 32, 37, 37, 5, 38, 38, 38, 72, 72, 72, 64, 84, 84, 20,180, 90, + 45, 84,105,169, 80,167,165, 66,149,154, 2,109, 90, 10,222, 61,122,128,234,110,174,146,220, 65,240,165, 9,159, 34, 45, 83, 5, + 45, 89, 98, 83, 83, 72, 76, 77, 65,202,216, 61, 72, 8,233, 98,105,105,121,143, 16, 50, 43,183, 50, 26, 51,117,234,212, 68,158, +231,177,104,209, 34, 51,133, 66,113,144, 16, 34, 41,141,199,212,150,237,232, 95,195,151, 9, 10,125,142, 70,126,131,224, 81,185, + 61, 66,227,148, 72,204,208, 34, 62, 85,139, 58, 77,126, 67, 69,191,249, 40, 87, 99, 9, 94,125, 72,134,147,179, 59, 3,129,164, +196, 69,153,227,226,226, 62,218,223,183,119, 47,178,179,179,225,230,230,134,126,253,250, 97,234,212,169,232,215,175, 31,156,156, +156,208,191,119,103,204,157, 59, 23,241,241,241,165, 5, 85,237,225,225,161,174, 80,161,130,186, 66,133, 10,106,173, 86,139,204, +204, 76,164,166,166, 22,142,239, 9,101,254, 58,236,237,167, 59, 58, 58, 62,183,183,183,127, 41,149, 74,207, 60, 37, 36, 72, 93, +177,162,125,195,174, 93,137,119,239,222,108,184,137, 9,185, 14, 40, 12,225,178,177, 18,118,104,222,226, 27,113,106,202, 54, 0, + 57, 70,169,161, 67,108,113,235,186, 15,110,223,172,141,113, 99,220, 64, 24, 41, 8, 35, 70,118,214, 21,212,171,235, 47,178,176, + 32, 29, 75, 73,235,111, 1, 60,109,216,176,161,211,216,177, 99,137, 68, 34,193,248,241,227,181,195,135, 15, 15,238,215,175, 95, +240,229,203,151,185, 10, 21, 42,160, 92,185,114,164, 92,185,114,142, 0,158,230,222, 83, 34,204,220,200,207,106,237,171,155, 22, +238,242,247, 28,108, 26,100,234, 36, 61,231,174,136, 78, 90,184, 62,228,215,208,215,217,174,175,239,223, 72, 10, 14, 56,201,135, + 62,188,150, 24, 29,156,225,186,112,125,200,175,211,215, 69, 21,249, 49, 95,191, 14,254,200,169,235,218,236,172,108, 65,215, 78, +205,179, 71, 14,235,227, 97,165,240,217, 13,231, 54,126, 21,203,187,244,159,187,120,173,118,248,232, 31,180, 91,182,110,163, 25, + 25, 25, 72, 79, 79,199,218,181,107,245, 39, 79,158,140,226, 56,238,135,226,218, 62, 0,160,211,233, 48,114,228, 72,185,153,153, + 25, 34, 34, 34,242, 45,160, 0, 16,147,144,244,226,246,195,128,160, 73,163,122, 53,205, 82,171,213,231,175, 61,122,229,237, 94, +193,133, 16, 90,236, 4, 19,177, 80,216,186,118,189,122, 44,165,169, 32,130,242,120,183,115, 57,210, 99,147,145, 30,159, 12, 86, + 40,135, 30, 18,232,120, 49, 44,170,215,197,155,135, 79,224,108,107, 47,144, 8,133,198, 37,174,140, 48,226, 63,138,146,180, 72, + 65,145,180,116,233,210,197, 37,157, 47,240,171, 41,180,159, 47,160, 10,139,175,130,255, 1, 96,233,210,165,139, 41,165, 29,239, +220,185,179, 23,128,242,115,222,167, 84,181,193,170, 52, 75,166, 76,157, 5,115, 51,153,121,189,154,238, 14,199,206, 93,123,124, +227,206,163, 87, 21, 93,108,108,169, 78, 99,185,108,229, 58, 23,146,173, 52,116,144,183,151,141,141, 13,180, 90, 45,222,190,125, +139,200,200, 72,104,181, 90,232,179,178,160, 78, 77,133, 42, 37, 5, 92, 86, 6, 68, 28, 7,101, 66, 60,172, 77,164,192, 95, 51, + 12, 75, 19, 66, 69, 10,172,188, 95,169,153, 25, 36,166,102, 96,132,194, 34,187, 15,139,225,172, 85,183,110,221, 3, 1, 1, 1, +245, 90,181,106,181,144, 16, 98, 78, 41,253, 16, 21, 21,213,114,246,236,217,106,123,123,123,140, 28, 57,178, 42,128, 65,165,138, + 75,177,198,171,130, 67, 85,120,184, 14, 66,197,114, 45,144,154,165, 67, 66,186, 14,241,169, 90,108,252,205, 31,135,183,212,197, +173,195,141, 17,112,190, 53, 82,117, 14, 80, 56,117, 1,229, 52, 62, 37,113,222,185,115, 7, 27, 54,108,192,134, 13, 27,240,199, + 31,127, 96,221,186,117, 72, 73, 73,129,175,175, 47,194,195,195,113,246,236, 89,196,196,196,192,198,198, 6, 79,159, 62,197,198, +141, 27,241,224,193, 3, 67, 50,185, 65,215,148,181,175, 92,175,215, 15,142,233,218,181, 90,156,149,149,119,205,154, 53,191, 25, + 63,126,188,107,195,134, 13,243,207, 87,174, 92,185,188, 76, 38,139, 37,132,108, 33,132,212, 40,137,139, 7,106,218,218,250, 66, +163, 14,202, 77, 43, 33, 8,145,162, 69,235, 87,104,216,248, 17,180, 58, 17, 24, 34, 1,195, 72,161,215, 39,193,210,210, 9,148, + 18,223, 82,130, 56, 59, 33, 33,193,253,210,165, 75, 76,104,104, 40,164, 82, 41, 0,132,205,155, 55,111,221,175,191,254, 26,104, +109,109,205,157, 58,117, 10,199,142, 29, 67,199,142, 29,217,225,195,135,187,151, 43, 87,110, 67,105,239, 61,119, 77,244,221, 61, + 43,207,246, 21,234, 44,107, 72,101, 21, 43, 33, 75,209,101, 76, 51, 91, 57, 0,156,125,247, 46,195,174,124,250,210,172,140,231, +225, 22, 46,153,191,148, 54,192,157,210,185,252,227,224,160,123,123,142,158, 75,139,143, 75, 17,214,172,230,163, 92,178,224, 71, + 81,197, 74, 85,150,205,157, 58,202, 33, 42, 93,154,218,122,252,217,160, 35,231, 30,100, 14, 24,242,157,126,216,136,177,170,179, +231, 46, 30,229,121,190, 90,113, 51, 8,121,158, 71, 76, 76, 12, 94,190,124,137,144,144, 16, 36, 36, 36, 32, 49, 49, 17, 25, 25, + 25,249,221,138, 38, 25,233,167,215,109, 63,249, 76, 46,147,153,212,171,230, 94,254,254,147,192,120,185, 76,102,226, 94,169,188, + 7, 33,243,139, 44, 71, 56,142,171, 38, 53,145, 1, 32, 72, 13,184,129,204,148, 76,100,166,102, 34, 35, 57, 19,106, 45, 11,149, +154,129, 82,195,160, 66,211, 54,200,204, 82, 33, 51, 41, 13, 60,199,249, 25,171, 25, 35,140, 48,162,132,122,249,212,180,105,211, +102, 24,120,185,193,221,152,133, 5,215,180,105,211,102, 16, 66, 78, 77,159, 62,221, 7, 6,140, 89, 46, 10,165,186,105, 72, 76, +124,147,105,102,235,221,125,226, 79,115,206,238,221,186,222, 86,163, 81,134,219, 88, 42, 56, 83, 19,137,229,240,145,139,144,145, +153,210, 45, 51,217,240, 89, 79, 41, 41, 41,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,165, 18,156, 50, 11,202,148, 36, 48, 90, + 53, 68, 28, 7, 43, 19, 25, 42, 56, 57,160,162,189,131, 65,156,111,175, 92,200, 31,208, 94,176, 91,112,121, 93, 47,136,229, 10, +136, 77, 21,248,254,212, 53, 0,128, 72, 36, 2,102, 47, 52, 36, 17,109,156,157,157, 79,236,217,179, 71,148,144,144,128,167, 79, +159, 62,163,148,166, 17, 66, 76, 1,240,175, 94,189,186, 20, 16, 16,208,209,221,221, 29, 0,220, 74,227, 75, 79,100, 56,157,158, + 34, 34, 54, 12,161,145, 79, 96,101, 94, 25, 66, 19, 15,196,167,106, 33,145, 85,134, 78,253, 87, 47,163, 42,253, 3,148, 90,195, + 38, 58,106,181, 90,104,181, 90,232,116, 58,168,213,106, 12, 24, 48, 0,183,239,220,193,190, 99,151,241,254,221, 27, 84,173,228, +128,129, 3, 7,160, 70,141, 26,120,248,176,228,241,195,131,107, 18,221,204, 38, 16,172,252,134,129, 88, 97,173,174, 63,245,252, +125, 67, 68, 86, 73,173,141, 2,241,249,107,199,142, 29,171,188,201,202,194,203,160, 32,180,154, 55, 15, 0,112,250,244,233,252, +107, 52, 26, 13, 38, 77,154, 36, 14, 12, 12, 28,246,232,209,163, 97,132,144,149,148,210,162, 7,145, 83,224,244,233,187, 24, 53, + 42, 16, 9, 9, 57,227,176,247,239,253, 75,143,134,190,215,162, 93,135,156,158, 43, 11, 11, 11,172, 92,233,107, 80,124,114, 28, +135, 77,155, 54,229,119, 11, 2,128, 64, 32,104, 56,105,210,164,238, 69, 93, 95,165, 74, 21, 81,105,156,147,122,185, 72,159,126, +144,141, 49,175, 82,209,199,204,166, 58,146,116, 79,124,159, 68,197,140,155,212,203,101,245,202,131,145, 42, 25, 81,239, 32, 92, + 68, 57,129, 84,181,211,144, 48,190, 59,187, 86, 99, 81,113,200,206,216,132,244,153, 99,191,251,214,218,204,194, 46,107,203,186, + 37,150, 12,203,208, 19,143,180,169, 62,174,214, 22, 93,234,175,201, 28, 53,113,246, 19,141, 62, 98, 44, 34, 78,188, 41,201, 85, + 5,199,113,136,142,142, 70, 66, 66, 2,194,195,195,145,152,152,152,251,237, 39,126, 50, 19,181,140, 5, 33,148,225,225,248,112, +116, 11, 42, 14, 24,128, 58, 11, 23,128,227, 5, 80,102,115, 88,217,160, 37, 82,210,148, 80,243, 4, 78,181, 26,224,187, 51, 55, +193, 80, 14,216,184,222, 88,131, 24, 97,196,127, 87, 60, 21,171, 69, 10, 11,161, 37, 75,150,116,252,218,207, 47, 40,178,150, 44, + 89,242,114,201,146, 37, 95,244,172, 82,221, 52, 0, 64,122, 66, 96,136,117,133,234,209, 89,202, 76, 19, 59,123, 27,141, 66, 42, +225,211,210,179,216, 39, 47,158,105, 51, 99,222,190, 46,195,243, 94, 5, 4, 4,248, 70, 71, 71, 35,252,195, 7,232,149, 89, 96, +212, 26, 80, 85, 54, 90, 53,106, 0, 41, 0, 41, 67, 32,226,181, 16,176, 98,100,100,166, 3,192,171, 82, 43, 69,157,238, 19, 75, + 22, 33, 4, 98, 83, 83,136,229,114,136, 21,166, 31, 89,180, 12,177,208, 72, 36,146, 61, 7, 15, 30,116,116,118,118,198,130, 5, + 11,224,226,226,226, 89,173, 90,181,236,198,141, 27,203,236,237,237,225,237,237,141, 6, 13, 26,224,236,217,179, 0, 80,170, 79, + 40,157, 94,250,252,117, 24, 26, 38, 38,223,193,205,107,127, 64,163, 84,163,102,211, 63,160, 21, 84,132,173,207,124,240,111,119, + 35, 59,246,120,142,181,192,161, 19, 34,195,195, 64, 88,241,203, 50,102, 14, 60,127,254, 28,123,143, 95,135, 99, 5, 47,132, 7, + 7, 33,232,234, 37,220,182,181, 70, 69,111, 31,232,116,186, 18,223, 93,199, 65,240,243,250,124, 55, 13,146,228,228,100,137,149, +149,149, 58, 47,238, 28, 29, 29,191, 68,100,125, 59,101,202, 20,164, 10,133, 64,135, 14, 16,133,132, 64,171,213,194,223,223, 31, +181,107,215, 6, 0,248,251,251, 67, 32, 16,160,122,245,234,112,114,114,194,250,245,235,191, 69, 49,179,244, 24,130,167,122,125, +146,167,171,171,107,190,192,218,185, 43, 1, 79, 30,181, 6,129, 24,107,215,253,229,149,161,124,249,242,136,141, 9, 1, 33, 52, +160,148, 48, 46,116,112,112,152,237,232,232,232,250,235,175,191,178, 82,169, 20,163, 71,143,174,156,153,153, 89, 49,215,100,140, +233,211,167,231, 88,165,230,206,197,188,121,243,160, 86,171,179,139, 35,219,181,170,186, 83,124, 50, 63,204,222,193,185, 91,115, +155,138,213, 90,180,109,133,202,238, 45,208,162,109, 56, 0, 44,182, 18,132,245, 94, 62,203,247,168, 77, 57,171,109, 23,206, 93, +156,219,168,105,139,153,211, 70, 90,254,188,116, 99, 74,169, 99, 26,211, 62,236,200,120, 45,238,179,234,183, 13,187, 86,205,153, + 62, 65, 26,158,160, 73,137, 74,161,153, 10,137, 64,225,102, 79, 20,227,126, 90,248, 62, 58, 58,100, 50, 34,206,149, 58,115,146, +231,121,132,132,132,228,143,217, 83,169, 84,200,202,202, 66, 68, 68, 68,126, 23,161, 82,110,214,110,236,144, 78,126, 89, 74,101, +246,253, 23,193,225,179,198,247,247,207, 82, 42,179,131, 67,195,223, 80,186,166, 72, 21,198, 48,204,139,236,140,236, 86,217,169, + 42, 36, 60,125, 13,151,150, 21,160,211, 19,104,244, 28, 18,146, 50,160,214, 3, 28, 35,132, 79,239,129,224,136, 0,137,209, 81, + 96, 88,246,153,177,154, 49,194,136,255, 44, 74,117,211, 64, 8, 57,229,239,239,191,175,160,149, 41,239, 63, 0, 53,128,146,134, +236, 36, 20, 20, 81,121,221,134,197, 61,167, 16,239,103, 11,172, 18,187,123, 8, 33,196,175, 90, 5,167,229,115,191,117,225,245, +250,170,241,137,113,122,129, 64, 34, 44,103,174,140, 41,203,195,212,106,245,169, 75,151, 46,117,109,221,186,181, 36,248,197, 51, +104,210,210,160, 73, 75,133,144,215,195, 74, 86, 27,140, 86, 13,162,209,192,217,147,135, 42, 67,134,235,183, 3,116,106,181,250, +148,161, 2,139, 97,217,143,199, 93, 41, 20,144,152,154, 65,162, 80, 20,238, 66, 36,165,168,104,147,206,157, 59,183,172, 95,191, + 62, 40,165,216,180,105, 19,180, 90,173, 88,171,213, 66,163,209, 64,171,213, 34, 61, 61, 29,187,118,237,194,239,191,255,126, 27, +192,246, 82, 43, 49,189,230,210,249,139, 87,234, 14,237,223, 81,120,230,212, 74,232, 53, 28,148,196, 5, 89, 89, 58,100,106, 76, +192, 89, 15, 0,226, 78,131, 21, 72,225, 95,189, 50,142, 31, 58,162,133, 94,125,217, 16, 81, 85, 16, 42,149, 10, 17,225, 97,136, +124,247, 6,138,244, 88,216,154,153, 32, 59,228, 13,106, 12, 28, 4,141, 70, 83,230, 12, 82,174, 92, 57,240, 60,143,230,205,155, +231, 15,154,254, 92,145,149,148,148,132,147, 39, 79,162,126,253,250,104,218,180, 41,162,162,162, 16, 18, 18,130, 14, 29, 58,228, + 95,243,236,217, 51, 60,121,242, 4,110,110, 37, 27, 5, 19,147,117,103, 34, 35,158,246,234,210,165,139,232,222,189,123,160,148, +194,221,221, 12,102,166,114, 16, 70, 2, 47, 47, 59, 0, 57,218,191, 89,179,102, 72, 79, 15,209,167,164,208, 51,165,196,229, 30, + 66,200, 49,141, 70,243,182, 73,147, 38, 78,239,222,189,195,196,137, 19, 5,251,247,239,207, 51, 25, 99,218,180,143, 39, 73, 40, +149,197,119,205, 87,173,230,249, 99,101,189,101, 83,169,172, 98, 37, 51,155,234,168,236,222, 2, 0,208,186,227, 80, 84,174, 82, + 30,233,137,207, 43,169,148, 97,221, 68,130, 20,203,231,107,163, 2,101, 29,124,135,168,226,175, 5, 3, 48,196,113, 47, 85, 6, +239,143, 11, 23, 14, 56,112,236,196,217,145,237, 59,118, 22,234, 56,189,222,183,130,208,226,224,209,211,241, 81, 31,194,215, 32, +252, 92,192, 95,246,190, 18,173,118, 92,122,122, 58,228,114, 57, 2, 2, 2,212, 29, 58,116,144, 48, 12,131,183,111,223,230, 11, + 44, 59, 27, 43,239,134,117,124, 61,127, 94,181,235,188, 92, 34,145,180,109, 86,219, 43, 48,248, 67, 36,165, 36,172, 56, 94,141, + 78,119,241,197,211,103,205,109,157,170,176, 33,215,238,193,186,113,123,168,213, 12,148, 26, 30,106, 61,160,103, 69,112,172, 81, + 15, 22,110, 94,160, 0, 30,222,187,173, 83,235,116,231,141,117,140, 17, 70,252,167,173, 88,180, 36,113,148,251, 63, 25, 64,216, +146, 37, 75, 18, 11, 88,151, 18, 0, 60, 3,224,151,123, 93, 66,161,251, 18,144, 51, 27,176, 78, 1,158,132, 2, 66,171,224,127, + 77,161,107, 62,171,225, 87,170,155, 6, 0,176,177,177,177,171, 89,179,182,219,230,173, 7, 64, 41,197,235, 39, 43,144, 18, 31, +132,217,139,239,186,185,184,184, 52,141,140,140,188,110,200,195, 56,142,219,191,109,219,182,201,245,106,213,172, 89,201,197, 5, +207,194, 66, 33,162, 28, 68, 28, 7, 70,171,134,128,211,192,197,151, 3, 67, 20,136,142, 78,195,210, 61, 7, 2, 56,142,219, 95, + 26,175,103,251,206, 88, 16,153, 6, 66, 8,126,245,247,133,216, 84, 1,145, 92,129,239, 79, 92,201, 23, 85,167, 22, 76,135, 88, +161,128, 91,189,210, 29,184, 83, 74,179, 77, 77, 77, 31,189,120,241,162,142,175,175, 47, 38, 79,158,140,176,176, 48,240, 60,143, +184,184, 56, 85, 76, 76, 76, 84, 66, 66, 66, 24,128,163, 0, 54, 27,226, 41, 92,164, 86,173, 62,117,120,231, 88,255, 70, 77,109, +186,116,251, 29,199, 14, 77, 66,106, 90, 58,178,245, 50,100,169,244,200, 82,179,176,178,174,134,122,213,171, 35, 58, 42, 30, 47, +239,157,207, 20,168,179, 87,148,197,122,197, 48, 12,158, 61,123, 6, 87, 39, 83,188,185,121, 29, 54, 38, 66,248, 57, 57,192,169, + 97, 35,132,132,132,148,202, 33,100,161,255,246,219,111,243, 61,185,183,105,211, 38,116,192,128, 1,142,147, 38, 77,194,214,173, + 91,113,251,246,237, 79, 6, 94, 55,109,218, 20, 55,110,220,152, 15, 96,110,105, 70, 60,141, 70, 3, 79, 79, 79, 60,124,248, 16, +151, 46, 93, 66,139, 22, 45,208,180,105, 83, 60,127,254, 28, 23, 46, 92,192,147, 39, 79, 64, 8,129,181,181, 53,116, 57,162, 89, + 87, 28,153, 86,139,131,191, 44,219, 54, 99,213,170,223,125,250,247,239,143,195,135,247, 97,232,144,170, 32,140, 4,132, 72,208, +185, 83, 85, 44, 88,248, 16,245,234, 53,131,141,141, 16,171, 86, 30,127,175, 84,114,187, 12,136,202,159, 47, 92,184,224,164, 82, +169,144,154,154, 74, 21, 10, 5, 73, 74,202,153,161, 90,148, 5, 43, 59, 59, 91, 90, 28,209,139,199,175, 86,164,102,208, 20,154, +249,164, 91,178,254, 73,181, 22,109, 35,208,186,227, 16, 92, 60,181, 29, 87,206, 95,130,149, 32, 44, 20,242,140,179,137,161,137, +233, 49, 89,238, 27,188,106, 13,103, 35,179,206,111, 24,223,197,146,117,116,228, 15, 78,251, 61, 45,181,132,244,166,132, 16,146, + 28,184,251,196, 81,138,206, 13,252,235, 85,241, 45,239, 40, 78, 73,140,167,135,142,159, 13,208,134, 30, 62,153, 39,172, 74, 91, + 21,129, 82,186, 96,218,180,105,115,114,255,239,152, 53,107,214,240,165, 75,151,218,198,198,198,230,143,193,138, 79, 76,190,210, +160,195, 56, 46, 41, 53, 77,179,109,213, 79, 61,101, 82,137,120,214,210,109,215,116, 44,238, 21,199,171,231,249,245,189, 39,206, +158, 16,252,250,137,115, 69,153, 24,199,127,154,139,103, 23,174, 66,199,136, 48,234,210,125,168,181, 28, 82, 19,147,112,121,216, + 24, 40,236, 45,241,251,181,195,113, 60,207,255, 97,172, 98,140, 48,226,191,139, 18,180, 72, 81, 99, 92,226, 12,184,238,161, 1, + 60,127, 11, 12,154, 82,151,152,152, 24,127,227,198,125, 92, 59,245, 51,174,159,250, 25, 47,159, 60, 67,116,148, 6, 81,113, 42, +152,153,153,221, 45, 65,137,182, 42, 92, 41,100,103,103,119,159, 53,123, 78,172, 84,102,130, 38, 45, 91,194,193,214, 14, 38, 34, + 33, 88, 61, 15,150, 8,145,153, 96,129, 55,207,179, 49,117,219,238,248,204,236,236,238,133, 43,135,194,156, 5,142,131, 16, 2, +137,153, 41,196, 10, 83, 72, 76,205, 62,234, 46,148,154,153, 65,106,106, 6,129, 88, 92,212, 96,248, 79, 56, 51, 51, 51,123,244, +236,217, 51, 37, 45, 45, 13,195,135, 15,199,245,235,215,159,156, 63,127,222,236,217,179,103,178,248,248,248, 42,148,210, 54,148, +210,141,197,137,171,194,156,201,201,239, 50,168, 94,221,103,201,156, 31,148, 42,189, 53,122, 13,218, 15, 57, 19, 1, 61,199,131, + 2,112,178, 18,163, 97,171,133,136,215, 52,192,254, 13,139,178,121,173,170,127, 65, 31, 88,133, 57, 41,165,212,218,218,250,163, +119, 97, 24, 6,215,174, 93, 67,175,158, 61,208,182, 91, 87,216, 86,114,133, 93,171,246,104, 59,124, 20, 54,110,220, 8,134, 97, + 96,101,101,245,145, 69,163, 32,231,142, 39, 84,184,231, 57, 37,123,158, 83,178,253, 49, 21, 0, 24,184,123,247,238, 95,252,252, +252,174,222,190,125,123, 5,128, 62, 5,227,187, 64, 88,230, 21,180, 94, 21,147, 70, 51, 39, 76,152,160, 12, 14, 14,134, 92, 46, +135, 94,175,199,237,219,183,241,251,239,191,227,215, 95,127,197,147, 39, 79, 96,109,109, 13, 55, 55, 55,168,213,106, 60,124,248, + 80, 9, 96,102, 9,121,137, 79, 72,208,247, 88,187,118,105, 82,199,142,141,177,109,219, 58, 56, 56, 52,128, 80,224, 0,129,208, + 22,114,133, 39,182,108,254, 5,223,124, 83, 19, 39,142, 31, 72, 78, 76,210,247, 40,236,117,189,152,112,170,238,223,191,143, 13, + 27, 54,160,103,207,158, 81,189,122,245,226,210,210,210,242, 45, 88,121,171,164,207,203, 29, 67,166, 86,171, 37,197,113, 14,255, +233, 69,212,143, 63, 7, 44,136,139,141,170,127,253,234,221,111,175,156,191,132,247,193, 87,112,229,252, 37,220,188,114,103, 90, + 92,108, 84,253,154,117, 61, 68,221,135,143,253,113,231,145,195,172,194,204, 17, 59,143, 28,102,251,141,251, 97, 81,237,182, 45, +102,150,150,231,115,211,145,102,198,199, 77, 95,188,226,183, 76,189, 86,197, 44, 95,179, 62, 90,153, 16, 51, 19,121, 83, 43,139, +177, 94, 21,228,204,206,206,222,168, 84, 42,157,148, 74,165,147, 74,165,154, 25, 22, 22,214,100,242,228,201, 9, 28,199,229, 91, + 72,227, 95, 30,191,251,234,230,246,197,118, 54,150,178, 6,117,124,170,174,220,120,232, 90,120, 68,220,159,121, 62,176,138, 73, + 35, 85,166, 82,213,163,107,247, 1, 89,169, 41,106,248,255, 48, 13,188, 84, 1, 53, 7,232, 40, 11, 61, 17,224,197,207, 43, 33, +179, 50,197,158,208,199,217,105, 58,109,143,130, 62,176, 74,121,247, 47,105, 33, 27, 57,141,156, 70,206,127, 32,231,191, 13,130, + 60,197, 88,240,183, 48,156,157,157,155,116,233,220, 10,205, 58,206, 2,165, 20, 65,143,151, 33, 37,225, 53,156, 29, 36, 8, 9, + 79,247, 7,112,221,208, 7, 82, 74,195, 9, 33,245, 39,204,156,117,164, 87,155,150, 94,190,149, 42, 73, 42, 86,172, 0,185,157, + 29, 18, 19, 19,112,235, 94,160,110,209,222,131, 1,185,226,202,144,165,114,192,243,124,206,224,117, 0, 45, 39, 76, 5, 97, 89, + 32,215, 29, 67, 94,133, 88,169, 78, 3, 16,129, 0, 28,229,161, 86,171,169, 1,225,140, 36,132,244,232,223,191,255,229, 83,167, + 78, 49,109,219,182,173,113,244,232, 81,254, 75, 34, 59, 51,238,205, 85,133,189, 71,199, 69,211, 71,238,175,223,162,171,153,187, + 79,109, 81,237,138, 44,180, 58,130,232,168, 15, 56,117,228,129, 54,240,254,249,116,170, 87,245,201, 74, 40,121,169, 28,173, 86, + 27,110,111,111,111, 63,127,254,124,232,245,122,232,245,122,112, 28,135,196,196, 68,220,189,123, 23,213,234,212,131,215,144, 97, + 72, 72, 72,192,218,181,107,225,226,226,130,197,139, 23, 35, 57, 57, 25,122,189, 62,220,192,180,226, 0,156,207,221, 62, 18,178, +121,173,140,210,186, 7,221,220,220,196, 42,149,170,134,163,163,163,128, 16,178, 90,163,209, 12,153, 62,125,186,195,226,197,139, + 81,181,106, 85, 36, 38, 38, 66, 46,151,195,221,221, 29, 9, 9, 9,120,240,224, 1,151,157,157,189, 1,192, 2, 74,105, 66, 41, +225,123, 75, 8,169, 63,126,252,247, 71,126, 89, 58,210, 93,165,110, 38,182,178,106, 4, 74,245, 72, 72, 8, 67, 70,250,109,237, +194, 5,219,223,197,197,235,186, 83, 74,131, 13, 76,166,185, 99,199,142, 5,114,151,202, 9, 9, 9,121,234,229,229,229, 94,156, + 5,203, 16,172, 60, 24,169, 2,176,119,249,196, 6, 19,211, 19,159,187, 91, 9,194, 66,235,251,242,107, 87, 30,140, 84,205,159, +104,241,115, 98,216,245, 55, 49, 89,231, 55,236, 60,114,152, 29,212,173, 7,231,162, 8,158, 38,181,163,135, 90,116, 42, 53,125, +104,141, 26, 53,202, 17,146, 92, 57, 62,233,245,163,161,195, 71,246, 54, 23, 41,207,248,185, 36,185, 49,229,107, 74,159, 60,121, + 18,106,232,154,158,133,120,223, 16, 66,154, 76,159, 62,253, 60,165,244,163,177, 7,241,137,201, 87,252, 59,142,165,169,169,105, + 79,227, 3,143,191, 48,128,235, 1, 33,164,165,111,181,154,135,127, 89,188,212,190,217,132,201,130, 55, 87,175, 1,156, 14, 31, +174, 95, 3, 39,209,240, 43,239, 92,140, 75,211,106,187, 25,189,184, 27, 97,132,209,122, 85,146, 22,249,159, 20, 88,165, 33, 50, + 50,242,186,155,171,203,133, 55,111,154,180, 41,239, 98, 11, 0, 8, 9,141, 70, 84,156,250,130,161,221,131, 69,136,172,218,187, + 79,158,233, 35,145, 72, 58,146, 92, 87, 12,244, 51, 22,123,214,235,245,145,149, 42, 85, 42,230,108,209,174,154, 56,142,139, 51, + 48,156,215, 8, 33, 3,220,220,220,150,126,248,240,225, 8,165, 52,235, 75, 35, 60, 51,238,205, 85, 43, 43, 55,215, 59,151, 14, +255,112,239,218,169, 86, 84,175,169, 6, 0, 68, 32, 46,211, 98,207,153,153,153, 35, 71,143, 30,189, 81, 40, 20,150, 71,238,152, +178,188, 25, 95, 28,199,177, 90,173, 86,202,113, 28, 11,128, 48, 12,163, 23, 10,133,170, 35, 71,142,232,245,122,125,184, 90,173, + 30,249,165, 31,128,161, 56,115,230, 76, 69, 75, 75,203, 54,132,144,158,148, 82,207,140,140, 12,245,172, 89,179,238, 30, 57,114, + 36,173, 66,133, 10,237, 58,116,232, 64,172,172,172,240,240,225, 67,154,148,148,116, 8,192, 76, 74,105, 72, 25,194, 19, 66, 8, +241, 27, 57,234,143,190, 86, 86, 27, 59, 80, 10, 63, 80, 16,194,224, 69, 90, 26,127, 38, 59,155,251, 51, 87, 40, 26,202,167, 47, +100, 57, 91, 24, 16, 16,176, 29,128,176,168, 49, 88,101,130, 73,230, 9,149, 50,172, 7, 81,100, 31, 93,185, 38, 82, 5, 0,115, + 87,165,166, 1,216, 50,190,155, 21,255,234,241,150,101,206,102,193, 63,173, 57,154,188,205, 16,186,154, 53,107,186, 50, 12,211, + 7,128,175,157, 36,181,138,173, 56,141, 35,132, 54, 39,132,177, 1,240,220,219,219,251, 20,128,200,207, 76,231, 55, 0, 42, 20, + 62, 30,255,242,248, 93, 0,119,203,200,245,128, 16, 82,101,226,148, 73, 99,196, 66, 97,107,112, 92,245,133,199, 14, 82,227, 98, +207, 70, 24, 97,196,191,222,130,101, 8,222,133, 68,182, 5, 0, 15, 15, 15, 26, 28, 28,252,197, 10, 51, 87, 64,237, 67, 41, 94, +218, 75, 67, 98, 98, 98,237,191, 89, 81,239, 5,176,247,107,114,230, 10,168, 5,185,219,231,134,235, 5,128,122,255,215,173,141, +220,190,242,249,197, 93,211,166, 77,155, 15, 90,173,246, 82,110, 69,111, 1, 32, 89,167,211,157,211,104, 52,113,132,144,218, 43, + 87,174,204,243, 84,191,144, 82,250,232, 51,195,193, 3,216,147,187,125,237,119,220,227,228,228, 52,201,218,218,218, 77,165, 82, +137, 85, 42,149,168,160,246,151,201,100, 9,134,114, 89,152,146, 29, 34, 65,138,181,133, 41,249, 68, 64, 89, 57,227,176, 50, 43, +160,170,149, 51, 14, 27,202,247,228,201,147,144, 26, 53,106,236,102, 24,166, 18,165,212, 30,160,230,148, 34,129, 82,154, 40, 16, + 8,162, 2, 3, 3,163,254, 41, 5, 77,174,128, 90,145,187, 25, 97,132, 17, 70, 24, 5, 86, 97,188,121,243,134, 24,163,205,136, +130, 34,171,164,243, 97, 97, 97,106, 0,119,114,183,194,247, 62, 2,208,233,159,254,142,209,209,209, 53,191, 6,207,240,159, 94, + 68, 1,248,161,118, 17, 75, 46,207, 93,155,156, 1,224,199,230,157,203,198,249,244,233,211,112, 0,225,198,156,104,132, 17, 70, + 24,241,207, 2, 99,140, 2, 35,140, 48,194, 8, 35,140, 48,194,136,175, 11, 2,160,200,153, 0,101, 89, 41,251,115,102, 19,148, +198,111,228, 52,114, 26, 57,141,156, 70, 78, 35,167,145,243,223,199,249,159, 65,222, 44,187,191, 99, 3,208,202,200,105,228, 52, +114, 26, 57,141,156, 70, 78, 35,167,145,243,191,182, 9,140, 18,211, 8, 35,140,248,175,226,208,161, 67, 6, 45,250,217,247,167, + 45, 29, 21, 10,203,217,153,233,105, 75,247,173, 24,122, 52,239,120,207,158, 61, 57, 99, 44, 26, 97,132, 17, 69,161, 88,129,229, +234, 90,206,155,225,248,134,148, 50, 44,101,168,142,164, 43,247,191, 75, 78,254,200,125, 64,249,242,229, 45,132, 12, 58, 17, 74, +229,132,240, 28,207, 50,183, 67, 66, 34, 2, 13,125, 56, 33, 68,108,105,105, 57, 86, 36, 18,181,210,104, 52, 46, 12,195, 68,170, +213,234, 75,217,217,217,235, 10, 59, 28,252,191, 68,213,170, 85,251, 93,187,118,205,162, 81,163, 70,106,153, 76,166, 87, 42,149, +130,115,231,206, 73,190,249,230,155,212,183,111,223,126,214, 12, 67,103,103,231, 22, 91,182,108,169,220,182,109, 91, 84,169, 82, + 37,171, 79,159, 62, 34,127,127,127,209,240,225,195,223, 71, 69, 69, 93, 41, 11, 23, 33,196,155, 16,178,139, 16,194,242, 60, 63, + 48,119,134,225, 87, 7, 33,132, 1, 48, 2, 64, 87, 0,174, 0, 66, 0, 28, 3,176,201, 16,111,246, 69,240,245, 0,208, 30,128, + 95,238,161,103, 0,206, 80, 74, 15,127, 65, 24,123, 0,104, 79, 8,169,145,107,161,125,250,181, 56,133, 66, 97, 13, 0,208,233, +116, 79,255, 41,225, 36,132, 12,145,201,100,223, 1,128, 82,169,220, 76, 41,221, 94,230,192,108,244,162, 0,224,189, 44, 8, 0, + 16,248,147, 39, 12,221, 15,124, 95,198,217,196,197, 60, 11, 35, 95,145, 47,136,203,246,253,251,247, 95,252,231,159,127,206,165, +148, 30,255, 59,242,190,131, 67,185,117,191,174,217,228,244,195,216, 97, 75,145,179,130, 67,137,240, 33,164,181,152,101, 59,107, + 56,238,102, 32,112, 16,128,192,202,202,170,159, 88, 44,110,162,209,104, 28, 5, 2, 65,140, 70,163,185,145,150,150,182,151, 82, +170,251,226, 0, 6, 17, 75,109, 54, 28, 8,255,215, 58,108,148,129, 90,100,130, 88,120,210,148,146,110,101, 89,118,133,179,179, +243,136,212,212,212, 76,134, 97, 40,201, 65,110,212,230, 59,107, 38, 60,207, 71, 37, 39, 39,215,254,204, 52,146, 2,152,135,156, + 53,221,214, 80, 90,114,152,138, 9,231, 15, 78, 78, 78,221,210,211,211,179, 89,150,165, 5,194, 71, 0,128, 97, 24,194,243,124, +124, 82, 82,210, 64, 99,213, 94, 60,156,156,156, 24,145, 72, 52,136, 97,152,149,122,189,190,114,120,120,120, 10, 0,216,217,217, +249,197,199,199, 27,215, 2,253,218, 2,171,128, 91,250,102,148,210,235,174,174,229,188,123,118,237,190,120,212,200,209,132,101, + 25, 4,188,124, 41,248,118,224,144, 54, 86, 86, 86,206, 10,181,218, 11,132,240,217, 82,105,128, 78,167,141, 58,184,247, 79, 83, +207,170, 85, 57,142,227,177, 97,227, 31,223,184,186,150,155, 97,136,200, 34,132,120, 56, 56, 56,236,154, 54,109,154, 67,231,206, +157, 89, 7, 7, 7,132,133,133, 89,236,219,183,175,234,111,191,253,214,155, 16, 50, 48,215, 23, 79, 89, 63,228,198, 14, 86, 76, + 27, 83, 25,105,137, 12, 14, 25, 58, 92,142, 85,226, 2,165,244,230,231, 70, 82,118,118,246,184,236,236,236,122,117,234,212,161, + 91,183,110, 37,131, 7, 15,166,132, 16,162, 84, 42,119,224, 51, 93, 56,200,229,242,245,109,219,182,117,119,119,119, 15,121,247, +238, 93,251, 3, 7, 14,156, 25, 52,104,144,171, 92, 46, 15, 6,224, 81, 70,186,237, 73, 73, 73,126, 74,165, 18, 46, 46, 46, 91, + 1,212,250, 27,196, 21, 1,112,216,202,202, 74,181, 96,193,130,205,205,154, 53,115,142,142,142,230,166, 78,157,218,240,233,211, +167,237, 8, 33, 93, 13, 21, 89,132, 16, 75, 0, 27, 20, 10,133,201,212,169, 83,111,180,110,221, 58, 84,161, 80, 72,159, 63,127, + 46,156, 58,117,234, 8, 66, 72, 47, 0,163,202, 82, 8,231,113,218,218,218, 90,204,157, 59,247, 69,131, 6, 13,174,139, 68, 34, +209,235,215,175,133,211,166, 77, 27,243, 37,156,238,238,238,166,115,230,204,121, 88,163, 70,141, 56,169, 84, 42,122,247,238,157, +112,198,140, 25,163, 88,150,237,197,243,252,103,113, 90, 89, 89,153,205,152, 49,227, 81,211,166, 77, 19, 36, 18,137, 56, 48, 48, + 80, 48,125,250,244, 81,101, 9,167,181,181,117,115,107,107,235, 77,177,177,177, 2, 0,112,116,116,172,235,230,230,246, 91,158, + 63,180, 92,225,134, 92, 81,152,161, 82,169,250, 39, 37, 37,125,226,192,214,123, 89, 16,126,156,179,163,223,143,115,114,246,119, +230, 30, 47,109, 31, 24,108,112,222,247,174,156, 83,198,140,153,242,251,128,156,223,156,227,127,228, 6,117,125,101, 66,203, 34, +214, 8, 33, 93, 90,180,104, 49,239,202,149, 43,127, 52,107,214,108,234,238,221,187,237, 34, 34, 34,126, 33,132,148,235,219,183, +239,224,203,151, 47, 47, 73, 72, 72, 56,244,181,242,191, 88, 36,145, 16,134, 64, 38, 53, 49, 51,228,122, 33,195,116,188,211,165, +203,119,155, 95,191,174,249, 91, 80, 80,229, 44, 71,199,122,227,199,143,183,239,222,189, 59, 83,174, 92, 57,188,125,251,214,122, +247,238,221, 94,155, 55,111,238, 70, 8,153, 64, 41,253,240, 37,226, 42, 43, 21,213,212, 26,212,164, 20, 22,127,197, 17, 82, 37, + 90, 60,145, 7,145, 23,197,137, 44, 66,200,170, 46, 93,186, 12, 60,118,236,152, 98,247,238,221,138, 6, 13, 26,192,222,222, 30, +132, 16,112, 28, 7,158,231,193,243,124,238, 90,159,238, 95, 50,131,124,245,205,155, 55, 71,188,125,251, 22,195,135, 15,103, 1, +204, 42, 99,249, 51,169, 91,183,110, 29,142, 28, 57, 34, 59,120,240,160,172, 78,157, 58,112,112,112, 0,128,252,240, 81, 74, 81, +185,114,229,127, 93, 37,237,234,234, 74,197, 98, 49, 88,150, 5,165, 20, 60,207, 67,167,211, 65,163,209, 68,168,213,234,110,241, +241,241, 79, 12,229,178,183,183,103,164, 82,233, 96,153, 76,182,149,101, 89,232,245,250,171,110,110,110, 45, 56,142,131, 68, 34, +185, 10,252,149,127,254, 47, 80, 88,139,252,107, 44, 88, 5, 87,176,102, 56,190,225,168,145,163, 73,159,126,125, 99,223,134,188, +231, 5, 66,113,191,115,231,207,155,120,123,123, 51,234,117,235,160, 79, 72,128,110,226,196, 6,151, 46, 93,210,245,234, 55, 64, + 41,100,201,118,215,202,149, 76,246,239,221,231,112,228,240,161,134, 0, 2, 75,179, 92, 57, 56, 56,236,186,118,237,154,115,229, +202,149,145,154,154,138,176,176, 48,100,101,101,161,119,239,222,194,134, 13, 27, 58,247,236,217,115, 23, 33,164,145,161,150, 44, + 66,136,125, 21, 23,193,169, 95,231,244,246,248,166, 77, 67,185,115, 57, 55,208, 88, 21, 34,222, 5,213, 57,117,237,222,120,119, + 11,230,205,219, 52,218,145, 82, 26, 87,214, 72, 74, 76, 76,252,169, 91,183,110,135,155, 55,111,110, 43,145, 72,224,228,228, 68, + 58,119,238, 28, 31, 29, 29, 61,255, 11, 50, 18,114, 91, 93, 92,193,223,194,203,248, 24, 8, 23, 75, 75, 75, 88, 90, 90, 2,128, +243,151,100,136, 94,189,122,177,225,225,225,223,241, 60,239, 85,240,184,157,157, 93, 85,142,227, 82, 62,124, 8,175,170,212,104, +189, 70,143,157, 49,175, 79,207, 86, 22,119,238,220,225,219,182,109,171,190,113,227,198, 8, 0, 27, 12,124,204,134,234,213,171, +191, 91,189,122,181, 58, 56, 36,180, 82,192,171, 96,200,165, 34,174, 92,185,114,146,192,192, 64,245,236,217,179,179,214,172, 89, +179, 1, 64,175, 50, 4,125,195, 55,223,124,147, 50,107,214,172,248, 55,239, 66, 29,159, 5,190,161, 10,137, 72,103,111,111,199, + 62,122,244, 72,245,203, 47,191,240, 75,150, 44, 41, 51,231,128, 1, 3,162,167, 78,157, 26,154,144,148,234,156,146,154, 65,197, +217,217, 90, 23, 23, 23,193,213,171, 87, 51,127,255,253,119,245,212,169, 83,203,204,217,172, 89,179,216,133, 11, 23,134, 7, 5, +135, 56, 61, 9,120, 13,133, 68,168,115,112,176, 99,159, 60,121,146,189,100,201, 18,237,178,101,203, 12,226,148,203,229, 59, 15, + 28, 56, 32, 56,126, 60,199,104,115,247,238, 93,198,213,213,213,164,224, 53, 74,149, 26, 12, 1, 18, 19, 19, 77,252,253,253,119, + 2,112, 41,142,111,208,160, 65,177,101,201, 43,131,212,203, 12,182, 90,229, 9,171,209,163, 71, 23,231,155,107,128,119, 25, 68, + 86,251,246,237,103,158, 62,125,218,109,247,238,221, 43,247,236,217,163, 1, 0,169, 84,106,179,111,223,190, 37,189,123,247, 70, +239,222,189,103, 3,248,106, 2,139,163,156, 22, 0, 36, 82,137, 36, 40, 40,136,120,122,122,150,232, 8, 89,203,243,143, 54,191, +126, 93,251,123, 79,207, 58,201, 60, 95, 69,244,205, 55,153,147, 38, 77, 74, 76, 79, 79, 71, 88, 88, 24,180, 90, 45, 6, 15, 30, +204, 54,107,214,204,169,119,239,222,107, 9, 33, 61, 40,165, 90, 3,172, 56, 43,156,157,157, 71,164,165,165,101,230, 89,113,188, + 42,153, 10,154,212,208, 75,170, 87,209,137, 69,172, 94,212,105, 34, 79, 46,172, 35, 89,158,149,113, 11, 0, 68,217, 72, 16, 1, + 41, 69,148, 65,203,186,116,233,210,251,216,177, 99,150, 0,112,232,208, 33,100,103,103,163, 66,133, 10, 16,137, 68, 16, 10,133, + 16, 10,133,249,255,203, 82, 54, 17, 66,166, 40, 20,138,246,153,153,153,199, 40,165,107, 1,184, 55,106,212, 8,174,174,174, 0, +208, 48,247,154,129, 44,203,246,229, 56,110, 19,165,244, 88, 9, 92,227,187,116,233,210,250,200,145, 35,166,121,225,212,233,116, +112,117,117,133, 72, 36,130, 88, 44,206, 15,231,191, 17, 98,177, 24, 82,169, 20, 2,129, 0,148,210,188,245, 65,175,233,116,186, +241, 0,222, 91, 90, 90, 50, 41, 41, 41,134, 54,110, 89,129, 64,176,178, 64,218, 86,227, 56,110,187, 94,175, 47,175,213,106,205, +255, 9,239, 91, 80,139,252,175,167, 29, 83, 72, 57, 54,203,121, 65,134,101, 89, 6,239, 67,194,116,205,155,183, 28, 20, 30, 30, +174,168, 87,175, 30, 35, 20, 10,145,117,229, 10, 84, 15, 31, 66,161, 80,160, 91,183,110,194, 27, 55,110,152,153, 41,204,134,135, +190, 15,205, 96, 89, 6,148, 50,165,142,105,176,180,180, 28, 59, 99,198, 12, 7,119,119,119,232,245,250,124, 15,228,122,189, 30, + 17, 17, 17, 80, 40, 20, 24, 56,112,160,157,137,137,201, 88, 3, 51, 77, 69, 15, 87,187, 39,215,206,108,172, 53,105, 84,123,185, +135,201, 69,200, 35, 38, 64,113,232,123,120, 69,159,195,180,174,245,228, 23,214,207,174,233,230,100,245,132, 16, 82,177,172,145, +164, 82,169,110, 5, 4, 4, 12,191,126,253, 58, 15, 0, 87,175, 94,165,175, 94,189, 26,249, 37,173, 78,158,231,145,154,154, 10, +158,231,217,220,253,188,223,255,179,204,208,171, 87, 47, 54, 34, 34, 98,164,151,151,151,199,253,251,247,113,226,196, 9, 92,186, +116, 9,231,207,159,135, 88, 44, 46,223,179,103,207,132,132,164, 84,203,212,212, 52,105, 76,228,187,186,251, 54,109,114,138, 14, + 13,189,243,231,159,127,102, 34,167,219,208,144,180,234,161, 80, 40,100, 43, 87,174,204, 50,181,112,232, 80,175,126,227, 58, 66, +169,153,141, 72,162,176, 77, 75, 75,215, 62,123,246, 44,104,249,242,229, 30, 85,171, 86,181,204,237, 70, 51,136,211,198,198,198, +124,230,204,153, 90, 19, 83,219,198,117,234,213,247, 21, 75,205,172,132, 98, 19,171,134, 13, 27,118, 11, 10, 10, 10,157, 59,119, +174,115,141, 26, 53,236,202,194, 89,185,114,101,211,169, 83,167,170,205,204,173, 90,123,123,121,215,108,224, 95,183, 79,173, 90, +181, 6, 10, 4, 2, 46, 46, 46, 46,120,210,164, 73,206, 77,155, 54,181, 46, 11,167,165,165,165,233,194,133, 11, 53,149, 92,171, +246,232,212,169, 99,115,169,137,133,149, 88,102,106,165, 84, 42,185, 87,175, 94,189, 93,176, 96,129,179,159,159,159,141, 33,156, +217,217,217, 66, 27, 27, 27,248,250,250,194,219,213, 21,105,105,105, 56,114,228, 8,182,111,223,142, 45, 91,182, 96,239,222,189, +168,221,168, 13, 76, 77, 77, 17, 29, 29,141,244,244,116, 97, 81, 60,249,221,116,127, 7, 54,122,209, 63,248,177, 3, 70,143, 30, + 29, 85,130,184,194,232,209,163,163,198, 76,249,125, 64, 94, 23, 98, 73,150,171,150, 45, 91, 62, 63,115,230,204,187,221,187,119, +195,219,219, 27,109,219,182, 21, 3,192,216,177, 99,197,189,123,247,198,129, 3, 7,112,232,208,161, 64, 15, 15,143,219,132,144, + 46,134, 4,115,224,192,129,141,122,245,234,117,179, 87,175, 94, 79,251,244,233,179,105,228,200,145, 78, 5,207,199, 68, 71, 62, +210,104, 52,240,171, 89,199,100,225,214,251,253, 75,227,123, 5,236,222, 20, 20,180,125,233,203,151, 31,102,123,123, 91, 84, 8, + 13,181,218,177, 98,133, 77,222,226,217, 58,157, 14, 17, 17, 17,176,180,180, 68,255,254,253,109, 36, 18,201, 64, 3,242,207,170, + 46, 93,186, 12, 9, 15, 15, 87,108,222,188,217,241,233,211,167, 78, 49, 49, 49,142,151, 47,157,183,253,113,242, 88, 83,115,133, + 88, 28,157,144, 35, 80, 67,163, 33, 15,122,143, 70,148,194,162, 96,183,225, 71,173, 50, 23,151, 17,199,142, 29,115, 40, 80, 46, +127, 36,168, 10,255, 7, 67, 25, 43, 31,178,173, 98, 23, 18,111,225, 77,126, 40, 33,156, 29, 14, 30, 60,184, 60, 52, 52,180,105, +199,142, 29,215, 16, 66, 42, 20,113,141,109,243,230,205, 55,191,126,253,186,109,151, 46, 93,142, 18, 66,218, 20,219,122,116,113, +233,118,236,216, 49,235,188,125, 27, 27, 27, 72,165,210, 79,196,149, 72, 36, 2,195,252,251, 60, 15,177, 44, 11,129, 64,144,159, + 14, 2,129, 0, 44,203, 94, 96, 24, 38,130, 97, 24,173,161,226, 42, 87,188,176, 28,199,245,227,121, 62,147, 16, 2,161, 80, 8, +137, 68,210, 81, 44, 22,251, 10,133,194,127,196,251, 22,212, 34,255, 26,129,149,235, 48,242, 26, 0, 80, 66,178,158, 7, 4, 8, + 89,177,120,192,159,123,246, 72, 68, 34, 17, 62,124,248,128,192,192, 64,100, 95,190, 12,229,157, 59,136,139,139, 67,102,102, 38, +236,237,237,177,113,235, 86,185,134,163, 67, 95,191,121,195, 82,230,175,241, 4,197, 77,213,148, 72, 36,173,186,119,239, 94,172, + 16,139,142,142, 70,251,246,237,133, 44,203,182, 42, 34,131, 92, 42,148, 24,196,201,150,156,188,124,120,161,163,163, 56, 16,120, + 59, 9,200,120, 2, 80, 53,160,215, 0, 81, 47,128,211,243, 81, 33, 51,136,156, 95, 56,200,193,217, 68,112,146, 20,106,138, 25, + 48, 77,213,213,211,211,115,203,128, 1, 3, 24, 0,104,209,162, 5,241,244,244,220, 68, 8,113, 45, 33, 35, 95, 42,165,114,188, +151,146,146,130,222,189,123, 91,187,185,185, 93,234,221,187,183,117,222,241,207,229,204,235, 57,242,241,241, 73,146,201,100,123, + 9, 33, 18, 3, 62,184,124,206,240,240,240,239, 60, 61, 61,171,108,222,188,153,101, 89, 22,155, 55,111,198,254,253,251,113,235, +214, 45, 36, 37, 37, 41, 38, 77,154,100,126,234,210,189,115,183,111, 61, 56,177, 98,214, 20,235,110, 45,155,185, 90,166, 37,164, + 59, 59, 59,183, 66,206,152, 44, 67,194,217,126,220,184,113, 23,158,190, 10,177, 99,133, 34,145, 88, 40,144,217,218, 88, 84,112, +176,181,172,226,108,109, 89,197, 84, 44,180, 72, 79, 79,127,127,224,192,129, 76,228,140,207, 50,136,115,206,156, 57,207,130, 66, + 34,172, 25,161, 64, 32, 18,136,196, 22,230, 10,235,206, 29,219, 52, 7, 0, 25, 75, 36,233,233,233, 17, 59,119,238,204, 42, 11, +231,236,217,179,239,198, 36,164,216,137,164, 82, 86, 34, 17,230,199,165,165,153,194, 94, 46,145,200,178,179,179, 63,108,217,178, + 37,173, 44,156,211,167, 79,127,248, 50,248,131, 13, 97,192, 50, 32, 66, 75, 75, 83, 59, 91, 11, 83, 7, 59, 51,133,131,148,129, + 52, 61, 61, 61,108,231,206,157,233,134,112,106,181, 90, 97,124,124, 60,130,130,130, 80,174, 78, 29, 92,186,116, 9,229,203,151, + 71,239,222,189,209,183,111, 95,200,100, 50,180,240,175,134, 25, 51,102,224,221,187,119,208,235,245,226, 50,230, 37, 56, 57, 57, + 93, 43,238, 92,222, 56,170,226, 56,189, 43,147,124,113,101, 8,119, 81,215, 21,230,108,223,190,253,204,203,151, 47,187,237,218, +181,171,243,192,129, 3,111,237,218,181, 11,245,235,215,199,171, 87,175, 80,169, 82, 37,236,216,177, 3,125,251,246,189,181,118, +237,218,206,143, 31, 63,246,171, 92,185,242,140,210, 56,251,244,233, 51,166, 70,141, 26, 87, 98, 99, 99,253,147,147,147,125,143, + 28, 57, 50,180, 91,183,110,239,251,245,235,215, 50,223,130,165,211,237, 57,125,226, 48, 58,116,238,142,170, 62,190, 27, 6,207, +216, 93,173, 36, 78, 74, 41,125, 9,108,218, 30, 19,147,176, 71,165,202,238, 45, 20,154,152,220,191,111,117,232,143, 63,108, 10, +174, 4, 16, 21, 21,133, 78,157, 58, 9, 69, 34, 81,227,146,194, 73, 8, 89,214,181,107,215,222, 71,142, 28,201,183, 54,221,185, +115, 7, 47, 94,188, 64, 88, 88, 24, 82, 83, 83,209,114,100, 38, 70, 47,201,225, 30,189,132,162,205, 88, 42, 47,137, 51, 51, 51, + 83,121,244,232, 81,244,234,213, 11, 35, 70,140, 64,229,202,149,243, 69, 86, 97,113,117,253,193, 69,136,125,147,173, 26,109,194, +144,214,199, 97, 43,119,193,244, 98,194, 41,106,213,170,213,198,206,157, 59,131,227, 56,168, 84, 42, 30, 64,114, 81,186,161, 82, +165, 74,194,114,229,202,225,231,159,127,134,133,133,197,106, 66, 8, 91, 20,103, 86, 86,150,250,204,153, 51, 24, 56,112, 32, 38, + 76,152,128, 42, 85,170,228,135,115,231,238,253, 54,125,135,142,242,168,213,168,137,159,119,173,250,213, 51,212,108, 29,145,137, +213,119,164, 8,115,219,223,225, 58,224,255, 7,103, 94,183, 96,222, 70, 8, 1,203,178, 75, 89,150,237,201, 48, 12, 45, 11, 39, +207,243,122,189, 94,127, 95,175,215, 15,206, 19, 89, 44,203,130,101,217, 50,139,211,191,203, 21, 67, 65, 45,242,175,233, 34, 44, +184,228,137,142,199,201, 1,131,134,118,186,116,249,178,137, 88, 44, 70,104,104, 40,226,226,226,176,127,239, 94,238,160,157, 93, +182, 80, 40,164,253,183,111, 55, 29,246,221,119, 68, 40, 20,194,211,211, 19, 61,123,246,148,245,232,221, 47,222, 86, 40,220,111, +128, 66,117,204,235, 63, 31, 58,116, 40, 86,173, 90,245,209,249, 31,127,252, 17,123,247,238, 5, 33,196,193, 16,195,203,248,249, + 93, 93, 44, 43, 91,196,209, 39, 59,133,132, 53,177, 2,107, 2, 48, 34, 64,202,230,136, 44,134,133,250,241,149,100,166,254,129, +244,238,141,179,157,215,156,219,216, 11,192, 1, 67, 35,201,201,201,105,246,149, 43, 87,108, 39, 77,154, 68,211,211,211, 73, 76, + 76, 12, 93,188,120,177,237,152, 49, 99,102, 3, 24,244, 57, 17, 31, 29, 29,189,176, 67,135, 14,109, 79,159, 62,109, 63,104,208, + 32,115, 0,232,208,161, 67, 92,116,116,244,194, 47, 73, 80,145, 72,196,190,124,249,210,106,229,202,149,125, 39, 79,158,236,227, +235,235,235,144,154,154, 26, 22, 21, 21,213,179, 52,139, 27,207,243, 94,155, 55,111, 6,203,230,148,115, 12,195, 64, 44, 22, 67, + 44, 22,195,204,204, 44, 37, 36, 36,132,175,104, 47, 19,103,197,197,164, 89, 10, 44,133,196,209,193,218,194,193,177, 89, 82, 82, +210,125, 0,134,154,151,253,218,181,107,247,252,206,211,183,220,168, 65,205,171,152,136, 24,161,169, 76,202,202,196, 66, 66, 40, +229,180, 58,141,255,250,157, 87,183,121,120,120,120, 27,106, 34, 38,132,212,168, 95,191,254,229,167,175, 62,224,233,139,119,145, +182, 86, 38,214,237, 90, 52,172,154,119,190,122,221,250,125, 11, 92,158,106,208,135, 33, 16,248,213,169, 83, 39, 50, 46, 57, 11, +118, 86,230, 31, 9,105, 75, 27,187, 86, 0,144,149,150,182,190, 92,185,114,158, 2,129,160,146,161,225,108,220,184,113,204,227, +192,112, 56,216, 90, 89,229, 30,254,104, 76, 79, 98, 76,204, 6,119,119,119, 79, 67, 44,173, 26,141, 70,114,236,216, 49, 60,126, +252, 24, 11,125,124,240, 99,197,138,176,181,181,197,229,203,151, 65, 41,133, 66,161, 64,106,106, 42, 14, 28, 56,128,150, 45, 91, + 66,163,209,200,139, 19, 74,121,227,171,138, 19, 66,209,209,209,127, 75,139,178, 48,183,247,178, 32, 4,150,176, 82,230,153, 51, +103,118,239,222,189,123,137,183,183, 55,126,248,225,135, 70,171, 87,175,190,229,235,235,219,168, 69,139, 22,184,114,229, 10,134, + 14, 29,122,107,237,218,181,141, 70,141, 26,133, 13, 27, 54,224,253,251,247, 91, 75,122,126,159, 62,125,230, 13, 31, 62,124,214, +186,117,235,144,215,130,239,218,181,107, 94,217,184,173, 87,175, 94, 73,121,215, 30,220, 18,121,167,178,171,123,131, 49,227,167, +136,199,142, 26, 56, 13, 64,223, 82, 42, 10,234,228,228,148,161,111,210, 36,249,192,221,187,232, 35, 18,153,236,121,250, 20, 39, + 85, 42, 52,238,214, 45, 17, 0,166, 79,159,142, 93,187,118, 1,128,125, 73, 92, 46, 46, 46, 35,142, 30, 61,154,159, 87,172,173, +173, 33, 22,139,115, 68,144, 64, 8,150, 99,113,105,131, 28, 33,225,217, 24,189,132,226,143,233, 4,149,156,144, 85,163,106,137, +249, 17, 13, 27, 54, 68,122,122, 58, 88,150,133,169,169, 41,172,172,172, 62, 18, 87,233,153,169, 88,190,117, 30,226,171, 94, 67, +235, 19, 96, 8, 11, 60, 91, 4,100,188, 45,118, 73,167, 78, 43, 87,174,116, 84,169, 84,184,122,245, 42, 46, 95,190,252, 27,165, + 52,179,176,222,161,148,198,178, 44,187,125,217,178,101, 67,157,156,156, 48,122,244,104,143,197,139, 23,119, 5, 62,229, 37,132, +160,118,237,218, 80,169, 84, 16, 10,133, 48, 51, 51,131, 70,171, 23,246, 26, 48,194,181,130,155,175,100,241,138,197,140,189,149, + 0, 2,198, 10,193, 31,148,230,107, 86,253,188,230,222,205, 27,195,136,137, 77, 55,154,157, 24,243,191, 94, 73,115, 28, 7,157, + 78,151,183,238,170,107,158, 40, 18, 8, 4, 91, 88,150, 77,181,177,177, 57,150,152,152,104,144,208,226,121,158,227, 56, 46, 83, +167,211,165,232,116,186, 44, 66,136,130,101, 89,112, 28, 7,142,251,103, 76,136, 45,109,249,181,255, 57,129, 85,120,185,147,240, +240,240, 84, 43, 43, 43,231,170, 85,171, 50, 26,141, 38,167,235,225,208, 33,110,203,182,109,167, 85, 42,213,120, 0,162,117,191, +255,190,193,217,197,165,249,128,129, 3,137, 78,167, 67,135, 14, 29,196,167, 78,157,178,126, 23, 23,151, 97, 64, 4,126,244,188, +193,131, 7, 99,245,234,213, 0,128,113,227,198,229,155,208,137, 1,157,254, 10,115,180,111,219,177,182, 89,132,252, 55, 51,109, + 3, 93,102,197,119,166,247,228,153,178,218, 96,196, 2, 72, 89,240, 90,157, 62, 56,190,219,163,119,193, 94,222,178,228,164, 74, +173,124,154, 98,203,197, 93,237,203, 34,176, 76, 76, 76,234,154,154,154,226,209,163, 71,201,181,107,215, 78,165,148,154, 47, 92, +184,208,198,196,196,164,238, 23,168,244, 80, 66, 72,147,134, 13, 27,142,101, 24,166, 21,207,243,151,226,226,226,214, 81, 74, 67, + 13,204,132,163, 1,204, 69,129,113, 38, 26,141, 6, 12,195,128, 82,138, 62,125,250, 96,250,244,233,222, 47, 94,188,192,149, 43, + 87,172, 90,181,106,117,143, 16,146, 10, 96, 24,165,180, 88, 43, 89, 82, 82, 18,254,248,227, 15,176, 44, 11, 11, 11, 11,152,154, +154, 66, 42,149,162, 81,163, 70,177, 75,151, 46,245, 58,124,248,112,118,106,124, 60,145,101,164,169,137,181,181, 20, 78,229,219, + 13,238,214, 61, 0, 57,179, 9, 13,130, 92, 46, 55, 17, 67,157,193,112, 42,102,249,188,245, 2, 19,145,136, 72, 69, 2, 72,248, +108,118,198,210,159,169,148, 80, 97,174,117,149, 26,202, 41,149, 74, 69,114, 49, 85, 11, 37,140,206,132,161, 95,165,159, 85, 44, + 22,139, 36,194, 44,101,177, 98,150, 33, 44,203,178,146,178,112,202,100, 50,145, 66,204,169,139,125, 15, 6, 44,195, 48,197,114, +246,242, 33,244,224,216,252, 46,189,252,176,233,245,122,212,173, 91, 23,251,142, 95,197,153,203,119,144,248,225, 57,198,143, 30, + 10,119,119,119,156, 63,127,254,139,226, 33, 58, 58,186, 72,145, 85, 98,215, 98,238,184,171,146,186, 5, 63,226,158, 99, 94,234, +172, 68, 66, 72,151,198,141, 27,143,217,179,103,143,166, 93,187,118,226, 62,125,250,192,215,215,183,209,144, 33, 67, 0, 0,173, + 90,181,194,234,213,171, 27, 13, 25, 50, 4,251,247,239,199,145, 35, 71,212,205,154, 53,155, 74, 8,137,162,148,158, 41,166,194, +233,180,113,227,198,194,150, 65,232,245,122,232,116, 58, 71,189, 94,239,152, 91, 22, 97,205,154,181,137, 23,206,159,194,212, 25, +243, 97,103,235, 80,195,192,238, 29, 50,120,202,148,196, 29, 43, 86, 96,197,254,253,152, 82,169,146,201,174,192, 64, 92, 80,169, +112,224,202,149,196,220,231,148, 58,190, 41, 43, 43, 75,121,230,204, 25,179, 3, 7, 14,192,194,194, 2, 85,170, 84,201, 23, 67, + 12, 43, 3, 43,178, 68, 85,159,186, 0, 30, 0, 0, 42, 57, 33,203,179, 50,110, 17,130, 84,202, 64, 93, 66,126,132,131,131, 3, + 4, 2, 1,158,190,126, 0,211, 84, 51,212,242,169, 7,161, 80,136,140,172, 52,140, 89,209, 19,238, 63, 39,160,154, 39,160,140, + 3,238, 79,130, 46,246, 14, 86,102, 71, 96,125, 49,148, 53,203,151, 47, 15,181, 90,141,205,155, 55,211,220, 50,170,184,202,126, +230,175,191,254, 58,104,206,156, 57,108,157, 58,117, 0,160, 70, 81, 2, 43,183,204,128,179,179,115,190,240,235, 51,104,148,235, +200, 73,163,100,221,218, 52,135, 64, 96,131,212, 44, 29,146, 50,116,176,180, 81, 96,234,164, 94,210, 75,181,157,235,108, 92,251, +231, 9, 66, 72, 29, 90,208,100,248, 63, 8,173, 86, 11,158,231, 79, 51, 12, 51,139,101,217,159, 5, 2, 65,135,220, 83, 25, 12, +195,196,179, 44, 75,202, 82, 86,242, 60, 63, 64,175,215,175,212,104, 52,102,121, 22, 49,142,227,160,209,252,223, 79,220,255,210, + 53,142,255,177, 22,172, 79,186,241,116,186,170,234, 13, 27,144,117,233, 18,196, 23, 46,224,128,147, 83,166, 74,165,154, 76, 41, +141,200, 45,236,126,216,190, 99,199,237,206,119,239,154,105,130,130,224,250,226, 5,132, 22, 22, 53,202, 26,128,109,219,182, 33, + 61, 61, 29,105,105,105, 0,128,223,126,251, 13,233,233,233,121, 3,249, 74,127, 1, 17, 26, 57,216, 85, 66, 44,130,193, 11, 24, + 69, 88,213,236,250, 10,149,105,180,115,184,125, 86, 26,227,140,160, 15,245,228,202, 36, 77,125,194,106,160, 74,204,134,115,195, + 42, 16, 64,208,168, 44, 97,204, 51,157, 10, 4,130,228, 55,111,222,116,242,240,240, 56, 9,192,230, 75,251,251, 41,165,111, 1, +140,255,156,123, 89,150,157,251,254,253,123,187,173, 91,183,142, 93,184,112, 33, 45, 40,176,242,254,231, 13,138, 52, 55, 55,135, + 80, 40,180,191,115,231,142,125,189,122,245,214,231, 22,100,197,137, 73,216,219,219, 67, 40, 20,194,220,220, 28, 89,233, 41,242, + 63, 22,207,106,102, 98,105,111, 53,101,202, 20,102,240,224,193,239,214,175, 95, 95,222,161,106, 85,207,231,207,159,127,232,220, +179,215,227, 51,103,206, 0,192, 38, 3,131,254,236,197,139, 23, 98,119,183,138, 2, 94,167,228,229, 34, 64,250,108, 13, 47, 54, +117,128,148,101, 33, 32,160, 50, 19,185,221,219,176,176,104, 0,241, 6,198,227,211,224,224, 96,161,139,147,189, 32, 35, 75,149, + 42, 23,240,226,247, 15, 31,188,170, 92,167,174, 23, 0,168, 30,222, 57, 42,169,234, 99,250, 62, 62,193,204,213,213, 53,204, 16, + 78,189, 94,255, 44, 52, 52, 84,228,236,236, 44, 12, 14,126,251,167,181,153,169,147,149,189,125, 51, 0,208, 36, 39,220, 32, 74, + 85,180, 80, 40,116,142,142,141, 77,208,235,245,209,134,134,243,205,155, 55, 34, 23, 39,123,193,201,211,103,246, 57,200, 77, 28, + 45,100, 18,115, 41, 3, 34,165,124,154, 88,175,143,149,153,200,157,222,135,135, 39, 82, 74, 35,139,227,249,131, 31, 59, 32, 39, + 15, 76,217, 82,240,248,173, 91,183,112,245,209,123,152,179, 28,132,186, 44,220, 59,114, 0,221,199, 77, 44,245, 91, 10,252,201, + 19, 80, 47,219,235, 93,121,240, 71,194, 41,167, 11,208,177, 72, 33, 84,170,192, 42, 13, 27,189,174, 21, 18, 89,136,142, 46,185, +112,237,223,191,255,252,221,187,119,231, 79,226,120,245,234, 21, 90,180,104, 1, 0,152, 63,127, 62,218,182,109,139,122,245,234, +225,213,171, 87,112,119,119,199,149, 43, 87, 36, 44,203, 74, 6, 12, 24,176, 24,192,153,210,130,180,105,211, 38, 12, 29, 58,180, +168, 1,211,239, 0,168,136,165,103,230,244,165, 59,109,146,147, 18, 17,159, 16,251,180, 12, 45,114, 12,158, 50, 37,113,163, 70, +131, 61,247,239, 99,160, 92,110,178,227,237, 91,116,168, 87, 15,213, 90,180, 72, 52,164,172, 43,202,138, 99,109,109, 13,145, 72, + 4, 86,232, 4,129,216, 15,140, 72,132,154,141,253,176, 98,178, 60,123,208, 55, 88, 75, 8, 82, 37, 98, 60, 17,153, 32,182, 56, + 78,189, 94, 15,161, 80,136, 3,231,118,224,185,197,159, 64, 6,112,251, 73, 23, 76, 28, 58, 19, 63,173, 30, 1,143,197, 9, 48, +247, 0,226,239, 1, 15, 38, 49,124, 90, 40, 63, 92,157,128,179,148,210,164, 98, 4,155,151, 76, 38, 67, 86, 86, 22,130,131,131, + 63, 80, 74,211, 75,248, 30,226, 90,181,106, 21,207,178,172,163,179,179, 51, 0,148, 47,174, 65,206,243,124,254, 56,171, 93,123, + 14,218,212,104,226, 42,109,221,200, 27, 59, 79, 46,194,247,189,214, 66,200, 18,112,156, 22, 43, 87,119, 4,167,206, 68,175,206, + 35, 72,211, 86,238,126,151, 78,106,134, 3,216,252,191, 92, 73,107, 52,154,227, 90,173,118, 34, 33, 36,131,101,217,241, 66,161, +208,158, 97, 24,119,142,227, 6, 18, 66, 94,136, 68,162,138,142,142,142,201, 49, 49, 49,105,165,113, 37, 37, 37, 81, 0,219,114, + 55, 35,254,102, 48,185, 25,184, 41, 33,132, 18, 66,154,230,171, 92, 74,121,125,114, 50,168, 58,167,241, 35, 20, 10, 41,128,130, + 51,148, 76, 44, 44, 44,136,208,197, 5, 68,146,211,224,166,192, 87,179, 49,234,116,134,185,134,225, 57,176, 32, 90,208, 2, 2, + 62, 75, 74,176,200,166, 37,198,139,103, 35, 86,108, 81,240,139, 6,244, 20, 28,120,182,140,193,161,153,153,153,208,235,245,150, +110,110,110,167,245,122,189,101, 94, 23,192,255,161,217, 56,132,101, 89,140, 29, 59, 22,200,237, 74,211,104, 52,136,141,141,133, + 90,173,134, 70,163,193,251,247,239,145,150,150, 6,141, 70,131,151, 47, 95,162,114,229,202, 96, 89,214,177,148,214, 13,108,109, +109,225,232,232, 8,117, 86,186,252,240,166,213, 29,150,205,159,110,211,207,141, 50, 91,215,254,202,187,184,184, 36,249,248,248, + 56, 72, 36, 18,109,173, 90,181,212, 39, 79,158,188, 0,160,123, 25,252, 96,157, 89,176, 96, 65,189,122,245,234, 85,180, 80,200, +181, 18, 49, 11,137, 62,139, 74,212, 73, 84,160, 76,164, 21, 92, 42,106, 33, 87,212,237,211,167,143,216,144, 74, 49,143,243,167, +159,126,170,226,229,229,101, 99, 97, 38, 79, 23, 48,136, 18,113, 92, 84,202,163, 59, 23, 1, 64,100, 99,167,132, 92, 81, 55,119, + 12,157,193,156, 83,167, 78,245,113,118,118,182,102, 24,146,170,215,106, 63,228, 23,248, 42,101, 28, 43,145,102, 65, 34,109, 60, +108,216, 48, 97, 25, 57,189,170, 87,175,110,109,105,110,150, 42,100, 72,184,136,211, 71,200, 40, 23, 41,214,105, 19, 36,118,246, +153,144, 43, 26,246,235,215, 79, 80, 28,103,158,245,170,176,101, 72, 32, 16, 32, 42, 42, 10,217,209,207, 33,138, 10,130,159, 66, +136,250, 14, 54,144,203,229,165, 55, 86, 70,190, 34, 24,249,138, 4,190,167, 36,240, 61, 37, 5,247, 63,177, 54, 45, 72,195, 71, +215, 21,131,194,227,179, 62, 17, 87,133,238,205, 21, 89, 37,126, 79,127,254,249,231,140,230,205,155,199,183,109,219, 86,115,250, +244,105, 16, 66,112,229,202, 21, 68, 69, 69,161,109,219,182,160,148,226,222,189, 28,227,236,211,167, 79,209,170, 85, 43, 77,147, + 38, 77,162,254,252,243,207,185,134, 36,206,208,161, 67,161,211,233,144,153,153,137,228,228,100,156, 58,117, 10,126,126,126,212, +196,196,164, 59, 91,174,205,162, 94,195,103, 52,240,173, 94, 3,235,215,174,208,136, 5,194,165,101,236,246,192,160,201,147, 19, +211,106,214, 76,222,149,149,149, 61,216,204,204,196, 45, 34,194,234,209,249,243, 54, 90,173,214, 32,142, 60, 43,142,139,139, 75, +190,184, 18,137, 68, 16,136,109,193,202,171, 65,108,221, 22, 38, 14,221,113,245,137, 68,109, 46,199, 81, 83, 5,206,201, 45,240, +162, 4, 63, 88, 68,175,215, 67, 36, 18,225,218,227,179,240,155, 9,248,205, 4,162,235, 30, 71,223,137,237, 96, 51,254, 13,204, + 61,128,216,155, 64,234, 10, 63,232,222,155,167,171, 19,112,160, 56,113, 5, 0,106,181, 90,197,113, 28, 8, 33, 16,137, 68,226, + 2,167,110, 95,187,118, 13,151, 47, 95, 6,128,224,188,131, 41, 41, 41,148, 97, 24,200,229,114, 0,144,151,212, 77,150, 55, 30, +236,218,189, 27,214,125,123,116, 36,119,158, 93, 68, 67,191,126, 72,202,212, 34, 46, 77,139,212,108,192,167,206, 44,248,182, 58, +138,231,239, 51, 80,163,186, 47,203,138,229,131,240, 63, 14,141, 70, 51, 82,173, 86, 39,168, 84,170, 12,149, 74,149,152,157,157, + 61, 76,169, 84,118,210,235,245,183, 4, 2,129,167, 84, 42,125,108, 98, 98,114,188,124,249,242, 12, 0, 56, 59, 59, 51, 78, 78, + 78, 59,254, 23,223,181, 40, 45,242, 63, 47,176, 0, 92, 43, 60,176, 76, 47,145,188,212,143, 25, 3,139, 19, 39, 32, 12, 14,198, +144, 65,131,204, 76, 76, 76,214, 18, 66,106, 17, 66, 26, 42, 20,138,245,243,230,205, 51,181, 89,178, 4, 78, 55,110, 32,236,212, + 41,232,132,194,135,159, 19, 8,165, 82, 9,129, 64,144,111,121,145,203,229,121,253,193,165, 10, 24, 78,143,187, 81,113, 65, 16, +163, 34,120,208,204,115,233, 77,238,247, 11,153,101,119, 42,189,178,251,219, 44,145,251, 2,219,250,118,107, 43, 52,186,159, 69, + 4,153, 98, 11, 41,194,195, 35,192,129,191, 91,150,240,169, 84,170,180,172,172, 44,212,168, 81,195,250,209,163, 71,110,126,126, +126, 86,185,199, 31,124, 97,102,242,119,118,118, 62,232,226,226, 18,234,236,236,124,144, 16,226, 95,134,219,183,222,188,121, 19, + 44,203, 98,222,188,121,200,200,200,128, 86,171, 69, 82, 82, 18,194,195,195,161,209,104, 16, 25, 25,137,215,175, 95, 67,163,209, + 32, 44, 44, 12,106,181,218, 32, 97,107,106,106,138,212,164,120,249,254, 63,126,237,176,104,254,108, 89,218,219,199,136,140,142, + 3,207, 41,163,151, 47, 95,254,218,221,221,253,178, 86,171, 45,199,243,124, 83, 74,233, 70, 67,133,102,174,163,210, 91,158,158, +158,245,150, 47, 95,222,116,246,210, 45, 18, 83, 54,131,138, 77, 37,188,216, 84, 76,197,158,245, 49,124,238, 58,233,210,197, 11, +159, 62,123,246, 44,217, 16,167,155,121,156,245,235,215,247,137,141,141,109,228,231,231, 87,195,161,138,135, 84,226,236,148, 40, +118,170,144, 68,149,217,151,152,242,149, 58,173, 93,187,246,209,189,123,247,226,202,194,233,236,236, 92,237,247,223,127,175, 83, +190,124,249, 58, 82,115,115, 89,102,106,234, 38,117,106,242, 22,161,141,131,140,177,182,233,181,107,215,174,187, 23, 46, 92, 72, + 44, 11,167,183,183,183,239,226,197,139,107,213,172, 89,179,150,163, 71, 85,169,204,217, 37, 65,228, 92, 33, 94, 86,189,182,148, +169,224,218,115,245,234,213,247, 31, 62,124,152, 96, 8,167, 64, 32,224, 24,134,129, 80, 40,132, 92, 46,199,245,235,215,209,175, +123, 59, 56,216,153,193,163,106, 85, 52, 27, 57, 14,167, 79,159,134, 88, 44, 6,195, 48, 96, 24,230,139, 29, 90, 26, 34,132, 74, + 67,113,226,171, 52,110, 74,233,153,107,215,174,253, 50,120,240, 96,113,251,246,237,113,255,254,125, 12, 29, 58,244,214,145, 35, + 71, 0, 0,247,239,223,199,196,137, 19,111, 93,190,124, 25,163, 70,141, 66,139, 22, 45,196, 55,111,222, 92,111,136,243, 81,189, + 94,143,109,219,182, 65,175,215, 67,161, 80,192,202,202, 10, 29, 59,118, 68, 64, 64,192,168,237,219,183, 7,177, 66,225,183, 29, + 58,247,192,233, 19, 71,240,250,101,192,168, 29,139, 7,148,217,153, 47,195, 48,104, 63,104, 80, 98,162,143, 79,242,142,244,244, +236, 97,150,150, 38,158,177,177, 86, 87, 15, 30,180, 49, 32,255, 16,142,227,242, 69, 85,158,216,200,159, 89, 38,182,133, 64,238, + 11,129,105, 29, 60,127, 43,210, 9,235,210, 39,162,218,244, 85, 73, 78, 70, 9, 33,224,121, 30, 66,161, 16, 53,171, 52,196,219, +221, 57,199,171, 12, 0,106,237, 76,130, 93,131,156,110,193, 15,203,237,240,227,176,249, 16,178, 34, 93,105,110,115,120,158,127, +153,148,148, 4,129, 64, 0, 15, 15, 15, 7, 66, 72,158, 85,106,101,243,230,205, 23, 12, 28, 56,112, 25,128, 31,114,159, 95,161, + 87,175, 94, 78, 90,173, 22, 79,159, 62, 5,128,199, 37,164,125,254,172,193,228,244, 48, 73, 37,167,106,240,243, 26, 9, 75,203, +234,136, 74,214, 32, 58, 89,131, 45,127,116,197,227,155, 63,227,209,133,129,248, 16, 27, 11,153, 67, 55,112,122,181,239,255,122, + 37,157,144, 3,101, 66, 66,130, 94,171,213, 42, 53, 26,205, 91,173, 86,251,144, 82,234, 42, 20, 10, 47, 74,165, 82,115, 19, 19, +147, 38,114,185,124,187,135,135,135, 64, 38,147,109,151, 72, 36, 69, 10, 75,115,115,115, 98,110,110,206,154,155,155, 11,138,218, +242,174,115,117,117,165, 94, 94, 94,212,215,215,151,250,248,248,208,170, 85,171,210,138, 21, 43,166, 59, 58, 58,142,180,182,182, +102,255,198,215,189,246,111, 26,228, 94,216, 77, 3, 0,192,205,202,202, 84,167,211, 70, 94,188,120, 81,203, 48, 12, 76, 76, 76, + 48,120,232, 80,230,143,223,127,111,220,207,223,255,202,136,214,173,207, 94,185,124,185,102,189,122,245, 64, 41, 5,195, 48,216, +191,127,191, 82,165, 82, 38,149, 47, 95,222,194,144,194,162,224,135,147,158,158,158, 47,176,210,210,210, 96,111,111,111,112, 23, + 97, 86, 58, 46, 93, 62,247, 56,133,114,223,135,183,127,187, 74,187, 52,182,107,189, 84,158, 19,164,113, 58,164, 41, 41, 50, 84, + 16,220,103,172,234, 13,118,239,166,125,223,170,222,235,235, 65,119,146, 84,156,170, 76,179, 31,226,227,227,103,246,234,213, 43, +201,209,209,145,152,153,153,193,217,217,153,233,210,165, 75, 98, 68, 68,196,130,207,141,120, 27, 27,155,190,205,155, 55, 63, 25, + 21, 21,213,243,250,245,235, 21,111,220,184,209,179,121,243,230, 39,109,108,108,250, 26, 72,113, 96,198,140, 25, 89, 98,177, 24, +245,235,215, 71, 70, 70, 6, 52, 26, 77,169, 91,169, 22, 65,158,135, 84, 42,197,193, 45,171,219, 44,154, 63, 91,150,244,234, 46, +158,223,186,136,115,161,234,236,185, 75,215,220,147, 74,165,159,245,190,238,118,242,106,213,156, 76, 95, 77, 28,218, 39,122,250, +180,105,166, 47, 94,188,144,141,159,240, 3,194,226, 82,169,184,253, 74, 22, 77,103, 51,207,178,108, 72,135,111, 90,224,151,197, +115,154, 2, 24, 85,106, 69,109, 39,175,230,235,100, 26, 56,101, 68,191,144, 9, 19, 38,200,150, 46, 93,170,170, 91,183,174, 46, + 38, 38,198, 92, 97, 99, 87, 91,104,109,227, 31, 26, 27,103, 81,187, 78,157,183, 19, 38, 76, 80,149,149,115,206,156, 57, 38,183, +111,223, 22,181,108,217,146,198,199,199, 91,138,100,178, 6, 66, 83,243,166,209,137,137, 86,173, 90,181,122, 59,100,200, 16,238, +115, 56,223,188,121, 35,170, 93,187, 54,141,137,137,177, 52,177,182,173, 47,178,182,109,242, 62, 38,214,178, 70,205,154,193, 19, + 39, 78,212,149,196,217,107,221, 95,226, 68,161, 80,196,248,249,249, 97,238,220,185, 88,184,112, 33,122,247,238,141,208,176, 80, + 52, 29, 50, 2,149, 7,143,194,169,123, 15, 16, 29, 29,141,153, 51,103,194,221,221, 29, 66,161, 48,248,107, 20, 26,134,136,172, +226,186, 15,189, 43,147,107, 37,141,179, 42,141,187,103,207,158, 99,242, 92, 49, 12, 27, 54,236,214,218,181,107, 27, 13, 27, 54, + 12, 0, 80,191,126,125,252,252,243,207,141,102,205,154,117,107,209,162, 69,104,217,178, 37, 92, 93, 93, 75,245, 39,198,113, 28, +244,122, 61,250,245,235, 7,189, 94,143,132,132, 4,188,121,243, 6,155, 54,109, 2,165, 84, 10, 0,142, 78, 46,181,197, 98, 49, +158, 61,121,152, 61,123, 88,189, 63,203,208,136, 34, 5,191,173,204,204, 76,244, 28, 61, 58, 49,178, 74,149,228, 13,137,137,217, +195, 45, 45, 77, 42,125,248, 96,101,170,209, 56,151, 52,230,180,160, 24, 42,232,150,160,240,150, 55, 65,197, 80,228,113,142,234, + 55, 17,210,115,141,243, 69,150,162, 2,192,235,129,199,211,132, 24,219,109, 46,252,170,213,128,129, 51,214,238,221,191,127, 31, + 98,177, 24, 19, 39, 78, 36, 44,203,174, 38,132, 16, 74,105, 10,165,116, 46,165,116, 42,165, 84, 69, 8, 33, 18,137,100,227,208, +161, 67,161, 86,171,113,235,214, 45, 0,184, 92,156, 48,165,148,230,191,123,102, 50, 1,199,139,113,251,201, 57, 92,184,113, 8, +161, 81, 9,248, 16,175, 2, 4,230, 80,101, 69, 66,171,140,130, 38,245, 9,210,213, 38,255,186, 46,167,228,228,100,158,227, 56, + 13,199,113, 90,158,231, 43, 2, 48, 19, 8, 4, 16,137, 68,144,201,100, 3, 77, 76, 76,158,200,100,178,129, 98,177,184,200,251, +211,210,210,104, 90, 90, 26,151,150,150,166, 47,106,203,187, 46,207,247,150, 76, 38,131, 68, 34,129, 72, 36,138, 21, 8, 4, 3, + 9, 33, 7,240, 55,251,167, 42,168, 69,254,215, 81,148,163, 81, 80, 51, 89,159, 67,235,255, 48,239,213,111, 64,150,159,159,159, +165,179,179, 51, 8, 33,232,218,173, 27,105,126,253,186,169,208,201, 9,214,181,106,229,123,207,189,116,241, 34,206,157, 59,151, +117,250,216, 81,231,161,195,135,119, 66, 65,103,207,159, 70,158,192,205,205, 45,255,185, 49, 49, 49,121, 9, 8, 0, 72, 79, 79, +135,173,173, 45, 98, 98, 98, 96,160, 97,100,215,244,105,247,166,197,215,155, 89,185,158,169,144,156,205,138, 5, 71, 41,132,132, + 3,148, 20, 58, 14, 80,235, 40,106, 87, 98,173, 46, 40,245,150,167,238, 31,121, 15, 96, 87, 25, 45, 88, 87, 9, 33, 35,121,158, + 63, 4,128,185,126,253, 58, 31, 24, 24, 56,198,208, 1,233, 69,193,196,196,228,167, 43, 87,174, 88,253,244,211, 79, 41,167, 78, +157, 74,235,216,177,163,249,166, 77,155,172, 90,180,104,241, 19,128,125,165,246, 89, 82,170, 36,132,236,140,136,136, 24, 83,167, + 78, 29, 36, 39, 39, 67,171,213,226,241,227,199,112,119,119,199,163, 71,143,224,225,225,129,135, 15, 31,162,106,213,170,121, 83, +166,193,243,124,169,221,184,209, 17, 31, 20, 38,234, 20,179,232,251,103,240,250,249, 35,156, 9, 81,103, 47,223,182,255, 76,181, + 26,181,179,202, 90,128, 3, 64, 85,123,185,143,179,157,245,133,165,243,231,216,133, 93,221,143, 35,219,214,241,215,206,158,245, + 22,155, 98,100,179,190, 19,122,104,116, 40, 15, 64,210,160, 94, 29,250,141,197, 27, 94, 86, 17,177,151, 95,150,236,201,188,170, +189,220,199,201,214,250,252,242,165, 11, 77,223,157,221,142, 3, 27, 87,210,195,187,247,250,169,128,122,213,170, 85,107, 79, 8, +113, 4,160,207, 77, 35,131,150,160, 41,138,243,242,169, 83, 53, 85, 64, 61, 55, 55,183,246, 66,161,176, 98,174,149, 47,234,107, +112, 86,175, 94,189,125,110, 11,159,230,142,185, 42,211, 82, 57,195,134, 13, 91, 49,101,202,148,137, 58,157,206,186,128, 5,146, +221,180,105,147,128,227, 56,134, 82,170,101, 24, 70,123,254,252,121, 78,175,215, 71,171, 84,170,209, 95, 90, 96,244,232,209, 3, +247,238,221,155,143, 18, 6, 47, 23,170, 16, 4, 86, 86, 86,250,210,132,151,161,220,215,175, 95, 95,248,237,183,223, 78,223,183, +111,223,155,181,107,215,118, 30, 53,106, 20,246,239,223,143, 42, 85,170,224,217,179,103,152, 57,115, 38, 0, 52,154, 53,107,214, +137,173, 91,183,186,134,133,133,173, 48,196,106,171,215,235,177,119,239, 94,116,237,218, 21,182,182,182,112,114,114, 2, 33,228, +234,240,225,195,127, 7, 0,150,176, 34, 0, 80,171,212,106, 79,207, 58, 6, 91,108, 93, 93, 93,243,203,186,216,216,216,252,153, +127,109,190,253, 54,113,203,210,165,248, 83,169,196,112, 75, 75,147, 72, 23, 23,199, 19,239,222,141, 32,132,108, 42,206, 34,156, +103,197, 41, 77, 92,149,193,162,140,188,177, 77,246,246,246,152, 53,118, 9,150,252, 49, 11,111,113, 13, 85,250, 3, 47, 87, 1, + 93, 93,199,161,142, 95,125, 56, 57, 57, 25,154, 69,174,126,255,253,247, 15, 3, 3, 3,235, 84,175, 94, 29, 11, 22, 44,232, 50, +111,222,188, 11,132,144, 17,121,179,152, 9, 33,149, 88,150, 93,125,241,226,197,214,102,102,102,120,245,234, 21, 14, 30, 60,248, + 22,121, 35,244,139, 8,103, 94,165, 47, 20, 10, 81,190,156,135,234,117, 88,166, 73,124,212,109,220,186,121, 12, 85,252,126,128, +204,161, 19,172, 60, 23, 65, 27,180, 6,154,164, 11,176, 42,215, 17,145, 97,239,192, 10, 36, 1,255, 54,145,149,146,146, 66,173, +173,173,121,142,227,206,115, 28, 55,147,227,184, 69, 2,129, 32,111,252,173,175, 94,175,255,226, 25,129,121,190,183,242,120, 41, +165,114,129, 64,144,206,178,172,146, 16,242,183, 78, 55, 44,168, 69,254, 53, 22,172,143, 50, 52, 79,132, 85, 61, 60, 56, 17,131, +237, 93, 59,117,202,126,250,244,105,126, 43, 79,245,224, 1,178,206,157, 3,199,113,160,148,226,198,245,235, 24, 56, 96, 64,166, +144, 37, 91, 42, 85,170, 72, 9,253,203,247, 10, 33,228, 19, 63, 86, 34,145,168, 87,175, 94,189,242, 11,157,136,136, 8,200,229, +114,136,197, 98,240, 60, 15,189, 94, 15,150,101, 97,110,110, 14,189, 94,175, 41,226, 99,107, 85, 40, 49,116, 92,114, 86,207,173, + 29,250,199, 56,101,106,233, 72,139, 74,168, 32,146,229,127,148, 14,102, 4,157,253,132,176, 17,196,211,203, 43, 90, 71,243,234, +164,158,133,215,254, 42, 42,156,133,206,123, 84,175, 94,253,247,129, 3, 7, 50, 0,208,170, 85, 43,166,122,245,234,191, 17, 66, + 60, 74,184,167, 68, 78,169, 84, 42, 1,128,147, 39, 79, 38,191,121,243,166,221,201,147, 39,147, 11, 30, 55,144,115,211,178,101, +203, 96, 98, 98, 2,189, 94, 15,141, 70,147, 63,254,170,224,175, 86,171,133,141,141, 13, 78,159, 62, 13,142,227, 78,151, 22, 78, + 47,223,234,153,105, 2,139,184, 29, 39, 46,227,108,152, 54,179,172,226,170, 32,103, 21, 71, 69, 85, 7, 27,235,139,203, 23, 47, +180, 77,121,251, 24,145,145,145,244,252,185,211,119,149,148, 70,165,166,211,217, 41,153,180,106,182,154,202,234,186, 34,252,226, +198,169,116, 86, 19,232, 64, 62,237, 26, 46,200,233,227,168,168,234,108,107,125,126,229,138,165,166,169,193,143, 16, 19, 27,139, + 51,167, 79, 62, 85, 82, 26, 69, 41, 61, 76, 41, 29,194,243,124, 53,158,231,171, 81, 74,135, 20, 39, 90,202,202,169,213,106,171, +105,181,218,175,202, 89,214,112, 22,152, 65,136,249,243,231, 7, 71, 70, 70,142,138,139,139,235,145,183, 37, 39, 39,119,205,200, +200,232,152,157,157,221, 94,185,170,162,121, 86, 86,150, 93, 70, 70,134,163, 82,169,172, 77, 41,125,108,104,254, 44,140,130, 21, +108,116,116,244,188,232,232,104, 82, 98,254, 28,249,138,172, 95,241,253,238,131, 7, 15,218,127, 9,119,225,112, 38, 36, 36, 28, +218,187,119,111,141,202,149, 43,187, 14, 25, 50, 4, 27, 54,108,192,218,181,107,213, 0,176,117,235, 86,117, 1,203, 85,185,208, +208,208, 58, 69,117, 15, 22,228,100, 24,102, 87,155, 54,109,232,141, 27, 55,208,181,107,215,124, 7,160,155, 55,111,134, 94,175, + 79,111,217,178, 37, 15, 0, 74, 85,118, 58,229, 41, 52,218,162,251,217,139,138, 79,177, 88,252, 77, 65,127,127,121, 78,148,197, + 98, 49, 40,165,168,218,168, 81, 98,170,159, 95,242,182,180,180,236,121,213,170,153,141,240,244, 28,226, 5, 12, 40,138,147, 16, +242,145, 21,167,240,246, 57,223,102, 30,242, 56, 92, 92, 92,176,112,242, 74,184, 60,232,129,171,141,173, 81, 35,105, 8,218, 54, +238,140,170, 85,171, 26,204, 73, 41,165,241,241,241,163,230,204,153,195,139,197, 98,124,247,221,119, 56,114,228, 72,171,142, 29, + 59,134, 57, 59, 59,135,249,248,248,196,142, 25, 51, 38, 36, 49, 49,177, 99,253,250,245,145,156,156,140,209,163, 71,107,147,147, +147,123, 21, 28,199, 89, 56,156,121, 78, 49, 69, 34, 17,186,116,104,149,252,199,111, 43,249,150, 77,199,192, 68,102, 6,157,176, + 28,146, 51,117, 72,201,162,208, 72,234, 65, 44,146,160,173,191, 15,238,157,223,145,205,105,178,118,126,110,158,255,220,248,252, +255,193, 73, 41,165, 28,199,169,244,122,253, 86,158,231,103,231,245, 36,229,249,179, 42,108, 12, 45,107, 56,121,158,207,119,221, +144,203,173, 16, 8, 4,199, 89,150,245,201,155, 72,245,119,188,251,191, 13, 31,185,105,200,251, 37,132,231, 56,142, 71,165,202, +149, 76,195, 66,195,215,245,238,221,107, 88,251,246, 29, 76, 58,116,232, 32,245, 9,202,233,162, 56,121,242, 36,142, 28, 57,146, +125,225,194,133,116,137,144,221, 90,174,124, 57,123,142,227, 65, 72,201, 22, 18, 83, 83,211, 9, 51,102,204,144,165,165,165, 97, +237,218,181,124,141, 26, 53, 24,185, 92, 14,173, 86,139,173, 91,183,234,124,124,124,132, 12,195, 32, 45, 45, 13, 12,195,188, 54, + 80,241, 62, 39,132,180,253,189,121,247, 35,117,198, 14,181,246,110,222,192,178, 89, 57,103,232,106, 81, 68, 71,132,226,205,229, + 11, 41, 47,207,175, 78,130, 42,174, 59,165, 52,176,172,145,228,228,228, 52,247,194,133, 11,118,227,198,141,163, 42,149,138,132, +135,135,211,197,139, 23,219,125,247,221,119,115, 81,138, 47,156,146,190,163,212,212, 84, 16, 66,248,220,204,154, 87,184, 24,108, +126,165,148, 6, 16, 66,142,119,235,214,173, 75,203,150, 45, 17, 20, 20,148,223, 21, 88, 80, 96,229,205, 38, 92,178,100, 73, 42, +240,151,131,192,226, 32,145, 72,176,249,208,185,179,209,145, 31, 76, 42, 85,114, 83,153, 91, 90,242,159, 99,185, 2, 0, 49,195, +204,251,101,225, 28,187,196, 87,247, 72,192,221, 43,252,193,231,113,241,122,142, 22,237,161, 63, 35,154,230,170,254,146, 91, 47, + 12, 59,111,217,146,133,230,121,221,151,251,158,196,164, 19,142,142,251,178,166,198,255, 8,231,255, 1,114,102,248, 69, 19, 39, + 39, 39,154,215,133, 87,148,192, 42, 13, 69,117, 15,126, 46,247,251,247,239, 23,215,170, 85,107, 74,112,112,240, 65,111,111,239, + 81, 0,202,171,213,234,212, 89,179,102, 45,223,186,117,235, 48, 67, 44, 87, 0,176,127,255,254,213, 67,135, 14, 61,215,169, 83, +167,169, 60,207, 87, 47, 80, 33,189,183,179,179,203,247,200,149, 16, 23, 59,109,228,176,126,211, 50, 51, 83, 12,246, 83,167, 80, + 40, 70,204,154, 53, 75,154,149,149,133,245,235,215,243, 62, 62, 62, 76, 94, 99,104,247,238,221,122, 15, 15, 15, 65,175, 49, 99, + 18, 87,197,198,226,231,155, 55,179,166,249,250,214,216,246,230, 77,237,162, 44,236,121, 21,102, 81,150,171,188,225, 21,159, 81, +145,127, 36,176,242, 68,214,220,137, 75, 17, 21, 21, 5,145, 72, 4,119,119,119, 20,215,221, 84, 66,185,244,140, 16,210, 47, 60, + 60,124,231,250,245,235,197,245,235,215, 71,221,186,117, 33, 20, 10, 43,228,133, 87,163,209,224,249,243,231,152, 49, 99, 6,125, +240,224,193,119, 37, 45, 80,207,113, 92,188,135,135, 71,126,247, 17, 33, 36, 41, 93, 77,204, 15,120,213, 83, 12, 25,121,144,220, +122,120, 7,209, 90, 30,106, 29,143, 74,149,107,162, 89,187, 85, 56,113,246, 5, 23, 29, 22, 24,168, 83,166,108,249, 55, 86,220, +201,201,201,212,206,206, 78,159,107,148,104,152, 55,164, 38,111,102,232,151, 90,176,114, 27,236, 33, 60,207,199, 49, 12,211, 48, +215,247,150,153, 64, 32,184,204, 48,140, 13, 0,253,223,241, 94,133,181,200,191,166,139,240, 35,245,202, 50,183, 55,108,252,227, +155,253,123,247, 57,176, 44,227,240, 46, 36,228, 97,231,238, 61,163, 46, 94,188,104, 37, 50, 55,175, 11,128,215,140, 26,117, 87, +171, 86, 38,159, 58,126,188, 66,165, 74, 21,253,114, 23,123,166, 60,203,220, 46,233,129,153,153,153, 89, 55,111,222,204,158, 62, +125, 58,137,136,136,216, 99,111,111,223,231,236,217,179,138,238,221,187, 43,131,130,130, 14, 59, 56, 56,116,105,222,188,185,233, +148, 41, 83,212,153,153,153,235,202,144, 48,129,132, 16,175, 7,115, 86,124,251, 96,217, 31,173, 33, 96, 27, 66, 45, 4,120,221, +109,104, 51, 46, 2,216, 67, 41,253,172, 76, 33,151,203,253,228,114, 57,158, 62,125,154, 82,175, 94, 61,141, 74,165, 18, 45, 90, +180,200, 90, 46,151,251,125, 65, 70,162, 41, 41, 41,224,121, 94, 0,128,228,254,130, 47,251, 90, 57,125, 59,119,238,124,252,192, +129, 3,109, 58,116,232, 0, 87, 87, 87,232,116, 58,120,120,120, 64,163,209,192,221,221, 29,106,181, 26,243,231,207, 71, 90, 90, +218, 36, 67, 22, 17,150, 74,165, 16,139,197,168,234,229,155, 45,149, 74,241,185,226, 10, 0,228, 66,198,245,245,169,109,136, 79, + 74,228, 15, 60,139,139,203,214,114,109,131,227,179, 94, 22,190, 46,155, 67, 86,243, 33,227,163, 0, 64,205, 35,179, 68, 78, 49, + 92, 95,159,218,132,184,248, 68,236,127, 18,147,154,165,229,219,189, 46,130,179, 76,225,252, 31,225,236,181, 46, 8,205,190, 55, +252,218,131, 35,191,172,128,248, 28, 33,149,135,192,247,148, 96,163, 23,197,198,117, 69,250,184,250, 18,238, 92,203,212,241,220, + 74, 37,162, 95,191,126,211, 66, 67, 67, 23,230,250,187,218, 88, 22,174,109,219,182, 5, 3, 24, 90,210, 53,251, 86, 12, 61, 10, +224,104, 89,120, 51, 50, 50, 84,143, 31, 63, 86, 77,153, 50,133, 68, 68, 68,156,117,112,112,104,115,238,220, 57,147,238,221,187, +171, 3, 2, 2, 46, 59, 57, 57, 53,105,213,170,149,226,204,253,251, 81,217,239,222,157, 58, 21, 26,234,162,227,249, 83, 37, 9, +162,175, 37,174,242,248, 10, 90,134,242, 68,150,147,147, 19, 42, 84,168,240, 69,223, 61,165,244, 0, 33,228, 85,163, 70,141,142, + 12, 25, 50,164, 74,189,122,245,224,225,225,129,228,228,100, 68, 70, 70,226,214,173, 91,216,180,105,211,125,165, 82, 57,174,160, +101,181, 40, 36, 37, 37,125,178,140, 16,145, 89, 59,237, 88, 63,239,228,195, 91,117, 61, 26,119, 24, 44,243,117,226,241,255,216, +187,238,248,166,170,247,253,156,123,111,246,106,186, 7, 45, 45,171, 20, 1,129,150,189, 17, 20, 4,148, 33,227,167, 40, 75, 11, +136, 95, 69,144,161,236, 45, 8,130,202, 16, 4, 4, 68, 16,112, 34,160, 50, 4, 89, 2,130, 34,101, 83, 40,208, 61,210,149, 54, +205,186,247,252,254,104, 18, 67,233, 72, 74,193,130,121, 63,159,243,105,146,155, 62, 57,251, 60,231, 61,239,121, 95,147,153,226, +206,173,235,152, 61,125, 93, 97,202,173,171, 23,204, 86,115,191, 71,221, 7, 86, 5,210,132,231,249,111, 45, 22, 75, 77,155, 54, +182,202,124, 90,153, 76, 38,189,213,106, 29,198,113, 28, 47, 18,137, 54,177, 44, 91,207, 22,214,110, 30,165,148,123, 80, 4,235, +177,212, 96,149,148,248,248, 59, 23,234,212, 9,123,239,155,175,119,182,163,148, 97, 41, 33, 5, 90,173,247,174,219,183,111,223, +229, 5,187,174,143,143,122,196,107, 35, 6, 19,129,136, 8, 17,120,129,101,142,197,199,223,185, 80, 65,195,141, 26, 60,120,240, +199, 10,133, 98,154, 78,167,251, 83,171,213,254,213,180,105,211,185,148,210,233, 6,131,225,123,181, 90,125,178,109,219,182,243, +195,195,195,151, 83, 74,255,112,115, 80, 91, 81,108,255,181,169,138, 85,182,115, 0,120,113, 28,151,251,247,223,127,111,141,138, +138,122,145, 82,234, 69, 8,201,173, 44,102, 81, 81,209,255,114,114,114,252, 98, 99, 99, 45,107,215,174,141, 26, 54,108,216,148, +184,184, 56, 81, 81, 81, 81,188,155,101, 54, 18, 66,250, 12, 26, 52,104,157, 72, 36,234,202, 48, 12, 17, 4,129, 58, 61, 7,165, + 20, 60,207,255, 80, 81,189,136, 68, 34,253,179,207, 62,171,170, 80, 43, 37,145,232, 93, 94,100, 76,252,184,213, 7,227, 22, 22, + 89, 40,181, 10,116,212,229,180,130, 82,175,144,157,186, 76, 27,185,140, 89, 36,140,251,248,231, 11, 11,141, 22, 65,176, 10,116, +116, 89,152,110, 45,134,143, 8, 38, 0,140, 97, 86,124,129, 53, 43, 28, 6,239,246, 99,195,146,239,171, 90,236,154, 38,184,227, +101,217,230,142,225,194,168, 7,128, 93, 10,217,114, 87, 6, 12, 24,240,192,236, 73,204,102,243,212,231,159,127,126,174, 86,171, +253, 32, 35, 35,227, 79,173, 86,123,161, 65,131, 6,227, 4, 65, 88, 94, 88, 88,184, 75,173, 86, 63,215,162, 69,139,241, 17, 17, + 17, 27, 19, 40,221, 88, 30, 22,207,243, 73,118, 45, 14, 0,106,215, 62,217, 9,132, 51,145,176, 88, 44,137,174,228,143,231,249, +164,166, 77,155, 18,103,109, 86,201,191,206,226, 42,110,137, 77,111,131,185,115,231,182, 5,240, 20,128,166, 0,242, 0,220, 2, +112,130, 82,250, 83,165, 9,156, 33, 43,153, 16, 18,115,241,236,145,209, 87, 46,156,125,201,126, 91,144,101, 37,231,121,115,225, + 38,139, 33,123,221, 99, 78,174,144,158,158,254, 39,128,240, 7,129,109, 52, 26, 95, 36,132, 92, 98, 89,150,138, 68,162,151, 88, +150,253, 85, 16,132, 15, 76, 38,211, 22,190,186,184,124,127, 4,132, 60,200, 62, 72, 8,233, 86,213,241,138, 60,152, 30, 76, 15, +166, 7,211,131,233,193,244, 96, 62, 56, 76, 95, 95, 95, 5, 0, 19, 33,132,178, 44,171,100, 24,198,155, 82,106,224,121, 62,215, +106,181, 90,178,179,179,133, 7,145,207,255,132, 6,203, 35, 30,241,136, 71, 60,226, 17,143,252, 55,133,231,249,162,156,156, 28, + 1, 0,124,124,124, 10, 8, 33, 38, 74, 41, 79, 41,229,179,179,179, 5, 79, 13,185, 72,108, 1,148,122, 19,192, 29,102, 90,153, +219, 4, 21,225,123, 48, 61,152, 30, 76, 15,166, 7,211,131,233,193,124,252, 48,255, 51, 98,183,209,121, 16, 9, 64, 55, 15,166, + 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 90, 98, 60, 20,211, 35, 30,241,136, 71, 60,226, 17,143,120,164,106,197, + 99,131,229,166,216, 98,202,189, 14, 96, 0,128,186, 0,174, 3,216, 9, 96,149, 27, 1,143,157,241, 52, 0,166, 0,104, 7,160, + 54,128, 27, 0,142, 0,120,159, 82,170,247,212,120,233,226,239,239,255,158, 72, 36,210, 2,197, 78,241,236,127,157, 95,243, 60, +159,147,155,155,187,224, 1,245, 3,150, 82,202,187,147, 87,231,188, 57,255,181, 88, 44, 15, 44,159, 30,169,182,243, 72,125, 31, + 31,159, 45, 58,157,110, 8,165,244,138,167, 70, 60,242, 56, 73, 64, 64,192,104,179,217, 60, 77, 44, 22,207, 79, 79, 79, 95,253, +159, 39, 88,132,144,195, 0, 64, 41,237, 4, 0,106,181,250, 56,195, 48,181,109,207, 0, 0, 78, 30, 92, 75,253, 43, 8,194,141, +172,172,172,182,101,253,152, 66,161, 56,206,178,108,109, 66,136, 61,248, 44, 24,134,129,197, 98, 81,179, 44,155, 95, 6,102,162, + 78,167,107, 94, 77, 38, 69, 2,224, 71,111,111,239,162,185,115,231,174,234,220,185,115, 88,114,114,178,117,210,164, 73, 29,255, +250,235,175, 94,132,144,103,221, 33, 89,132,144, 54,132,144,141,205,154, 53,251,118,232,208,161,219, 91,181,106, 37,201,202,202, + 82,239,220,185,179,198,166, 77,155,206, 16, 66,134,184,235,170,226, 17, 88, 88,184,178,252,145,149,247,172,164,136, 68, 34,109, + 98, 98,162,218,214,103, 29,158,135, 45, 22, 11, 44, 22, 11, 10, 10, 10,208,180,105,211, 42,207,127,112,112,112, 52, 33,100, 69, +100,100,100,243,144,144,144,211, 0,198, 38, 39, 39,255,229, 78, 94,173, 86, 43, 40,165,142,124, 54,108,216,208, 51, 35,187,215, +135, 94,149, 72, 36, 61, 34, 35, 35, 91, 26,141,198,236, 27, 55,110,156,226,121,126, 6,165, 52,181,138,240,189, 0,204,144, 74, +165,173,234,214,173, 27,118,245,234,213, 59,102,179,249, 36,128, 57,148,210,220,170, 32, 87,157, 58,117, 58,186,114,229, 74,223, + 49, 99,198, 28, 37,132,180,247,144, 44,143,252, 91, 82,179,102, 77,109, 65, 65,193, 58, 0,209, 34,145, 40,200, 22,131, 48, 85, + 42,149,254, 41,151,203, 71, 30, 61,122, 52,199, 93, 76,158,231,103, 36, 36, 36, 4,181,110,221,122,113,227,198,141,103,103,102, +102, 22,153,205,230, 3,217,217,217,227, 41,165,121, 21,140,143,187,184,200, 35, 79,176,108,113,127, 58,223,245,128,227, 66, 19, + 18, 18, 2,212,106, 53,120,158,119,104, 7,236,139,153,179,123, 7,155,159, 37, 52,104,208,192, 92,193, 66, 19,150,152,152, 24, +160, 82,253,227,106,201,108, 54, 35, 40, 40, 72, 72, 74, 74, 10, 40, 25, 72,216,100, 50, 33, 52, 52,180, 58,249, 50,121,221,199, +199, 39,247,246,237, 59, 77,139,140,230, 57,175,253,239,221,247,134, 12,120,218,251,248,241,227,194,179,207, 62,107, 60,124,248, +240,235, 0, 92,114,142, 74, 8,241, 34,132,108,154, 52,105,210,108,153, 66,227,123,240,248, 5,227,166,157,187,147,154,213,175, + 69,198,143, 31,207,190,249,230,155,191, 69, 71, 71,111, 33,132,196,184,163,201, 82,171,213, 63, 73,165,210, 8,150,101, 97, 54, +155,111,235,116,186,103,170,209,194,216, 12,192, 89, 66, 72, 52,165,244, 79, 87,159,149, 39, 89, 89, 89, 48, 24, 12,247,164,134, + 13, 27,162,170, 93,144, 16, 66,184,176,176,176,239, 23, 46, 92, 88, 35, 53, 37, 5, 31, 46, 91,214, 26,192, 42, 0,173, 93,249, +255,244,244,244,123,242,217,160, 65, 3,120,196,173, 54,152, 50,123,246,236,133, 47,189,244, 18,120,158,135,193, 96, 8,185,118, +237, 90,163,105,211,166,245, 35,132,180,164,148,198,223, 39,190,127,100,100,228,165,113,227,198,249,180,108,217, 18,182,168, 18, + 33, 71,142, 28,105,189,126,253,250, 87, 8, 33, 13, 40,165, 25,247,243, 27, 62, 62, 62, 91, 62,251,236, 51, 95,133, 66,129, 31, +126,248,193,183,107,215,174, 71, 8, 33, 29, 42, 75,178, 8, 33,140,175,175,239,155, 0,158, 18, 4, 65, 2,224,100,118,118,246, + 60, 74,169,217,211, 99, 60, 82,158,248,249,249,189,154,159,159,191, 82, 42,149,138,189,189,189,161, 80, 40,236, 49, 8,107, 74, +165,210,154, 82,169,180,231, 83, 79, 61, 53,246,224,193,131,229,122,196,111, 27, 29, 52, 28, 12,153,195, 18,134, 5,128,134,145, +190, 26, 47, 47, 47,204,153, 51, 71,217,167, 79, 31, 37, 0, 28, 61,122,116,232,176, 97,195,186, 18, 66, 26,151, 69,178, 74,227, + 34,143,133, 6,139, 82,122,184, 68, 65, 33,151,203,177,125,251,118,176, 44,123, 87, 20,247,210, 94,215,172, 89,179,194, 31,179, +107,192,118,237,218, 5,141, 70, 3, 47, 47, 47,199, 2, 35,149, 74,113,224,192, 1,136, 68, 34,112, 28, 7,145, 72,132,230,205, +155,163,156, 0,243, 15, 68, 6, 54, 42, 14, 50, 89,154,243,198, 14,117,229, 24,240,230,172,193,133, 69,230, 22, 0, 10,114,178, +179,179, 79,127,243, 77,114,179,250,245,197, 91,182,108,105, 89,163, 70,141, 1,174, 18, 44, 0, 83, 98, 98, 98,190,102,229, 94, +126, 67,135, 13, 31, 58,146, 99,204,175,140,122,103,254,157,148,204,130,216,216,216,111,126,248,225,135,161,139, 22, 45,186, 56, +113,226,196, 41, 0,166,186,154,127,137, 68, 18,113,237,218,181, 72, 65, 16,240,228,147, 79, 86,155,112, 3,118, 2, 69, 41, 5, + 33,228, 46, 34, 85,222,179,138,196,174,177, 42, 45, 85,181,212,168, 81,163,193,203, 47,191,236,167,203,204,196,135,203,150,217, + 63,110, 94,209,113,161,253, 40,208,100, 50,225,133, 23, 94,120,153,231,121,206, 78,254,140, 70,163, 41, 55, 55,183,200,233,166, + 78, 6,165,244,105, 23,234,179,182, 82,169,252, 0, 64,180,193, 96,168, 1, 0, 74,165, 50, 73, 16,132,111, 11, 10, 10,166, 82, + 74, 13,149,108,167, 48, 0,141, 80,118,200, 38,186,112,225,194,171, 83,166, 76,137,127,216,152,132,144,136,192,192,192, 5, 3, + 7, 14,196,238,221,187,177,103,207, 30,139, 92, 46,231,134, 13, 27, 70,198,142, 29,235, 61,110,220,184,158, 0, 62,186,207,102, +238, 57,123,246,108,159, 39,158,120, 2, 59,119,238,196,185,115,231, 12,145,145,145,242,206,157, 59,131,227, 56,159,247,222,123, +239, 89, 0, 27,239,231, 7,116, 58,221,188,119,222,121,103,211,214,173, 91,213, 55,110,220,192,138, 21, 43,252, 6, 15, 30,124, +152, 16,210,201, 85,146, 69, 8,145, 2,120, 19, 64, 23,150,101, 59, 12, 27, 54,204,250,191,255,253, 79,196, 48,140,101,217,178, +101,254,235,215,175, 31,236,231,231, 23,157,153,153,233, 49, 51, 40, 71, 88,150, 53, 11,130, 32, 2, 32,163,148, 26, 43,122,255, + 56,149,221,215,215,119, 76,118,118,246,170,160,160, 32, 4, 6, 6,222,179,214, 26,141, 70,200,100, 50,113, 80, 80,208,103,125, +251,246, 21,125,247,221,119,101, 30,245, 17,150,204,248, 97,219,220, 26, 62,222,106, 0,192,242, 79,127, 46, 4,128,239,190,251, + 14,201,201,201,240,246,246, 70,227,198,141,217,185,115,231, 6,143, 31, 63,254, 67, 0, 35,203,194, 42,201, 69, 30, 11,130, 85, +214,194, 96, 15, 36,106, 39, 82,118,242, 83,242,181,157,148,149,168,168,253, 37, 38, 5,162,215,235, 29,228, 74,163,209,192,182, +168,194, 98,177,220,131,203,243, 60, 74, 70,213,118,229,250, 39, 33,100, 12,128, 3,148,210,235,174, 84,130, 51,230,142, 55, 26, + 96,147,116,210,139,118,151,231, 61,223, 41,254,187, 9,192,241,155, 35, 87,172,236,212,169,198,155,211, 63,158,101,200, 74,206, +124,239,229,231, 34, 34,131,124,229,202,156,244, 92,159,168,168,238,112, 10, 31,224, 66, 62, 59, 14, 29, 58,116,243, 47,191, 39, + 16,153, 76, 44,230, 88, 86,212,254,201,250,190, 97, 94,172,151, 26,240,186, 19,127,245,248,240,225,195,159,156, 56,113, 98, 7, +119,202,206, 48, 12, 52, 26, 13, 54,111,222, 12,198,206,104, 93, 44,123, 85, 73, 41,237,206,217, 9,148, 78,167,195,238,221,187, +209,171, 87,175,179,132,144,104,219, 87,206, 82, 74,145,151,151,135,148,148, 20, 4, 7, 7,159, 37,132,136,156,143, 11, 75, 98, +218,181,168,118, 50, 53,108,216,176,151,173, 86, 43,231, 52, 57,148, 36, 46,247,144, 23, 87,203, 30, 18, 18,242, 11,128,167, 89, +150,133,169,168,200,244,193,210,165,206,143,255,112, 38, 87,101, 97,218,243,202,243, 60,119,246,236, 89,145,125,204, 0, 16, 1, + 80, 2,240,179, 5, 85,253,219,133,250,108,160, 80, 40,142,239,218,181, 75,211,188,121,115, 34,145, 72, 96,181, 90,113,254,252, +249,176, 69,139, 22,141,218,191,127,255,179,132,144,134, 37,131,154,187,216,238,141,142, 28, 57, 82, 80,167, 78,157, 82, 9, 99, + 94, 94, 30, 87,191,126,253, 78, 0,226,255, 5,204,196,180,180,180,190, 79, 63,253,244,232,212,212,212, 75, 86,171,117, 50,128, +198,126,126,126,103,251,247,239, 15,185, 92,222,197, 21,130, 85, 94,187, 7, 4, 4,244,105,219,182, 45, 86,172, 88,129, 69,139, + 22,117,163,148, 30, 32,132,116,205,203,203,219,255,252,243,207, 67,171,213,246, 45,141, 96,185,218,151, 8, 33,245, 59,118,236, +248,217,156, 57,115,212,187,119,239, 70,100,100, 36,242,243,243, 49, 97,194,132,128,153, 51,103, 30, 34,132,116,182,147,172,178, + 48, 9, 33, 13,165, 82,233,198,173, 91,183,170,234,212,169, 83, 71, 44, 22, 51,117,234,212,129, 78,167, 67, 81, 81,145,116,254, +252,249, 79,202,229,242,191, 62,250,232,163,141, 0,250, 63,236,241, 94, 34,175,185, 0, 52, 0,180,238, 28,175,150, 83,246, 92, + 0, 82,199,224, 17,137, 32,147,201, 32,147,201, 32,149, 74,113,245,234,213,233, 18,137,100, 25, 74, 9,229, 82, 26, 38,249,103, +209,106, 74, 8, 57,197,178,108,185,239, 75,154,128, 60,236,250,180,229, 57,148, 16,178, 28, 64,151,226, 41,159, 57,236,231,231, +247, 86,106,106,234, 45, 87, 49, 67, 66, 66,124,245,122,253, 71,193,193,193, 8, 12, 12,116,172, 29, 53,106,212,128,197, 98, 65, + 90, 90, 26, 40,165,200,201,201,129, 66,161, 64, 72, 72,200, 71,163, 70,141,218,185,102,205,154,172, 82, 49, 5, 44,122,126,240, +180, 25, 44,203, 50, 0,192,114, 42,213,184,119,129,136,136, 8,180,111,223, 30, 69, 69, 69,200,205,205, 69,163, 70,141, 56, 66, +200, 80,134, 97, 52,148,210,213,148,210,131,143, 51,129,183, 47, 72,179, 75,158,123, 18, 66, 32, 8, 2, 56,142,187,139, 96,149, + 76,118, 50,100,235,167,164, 34, 85,182,201,100,114,144, 43, 47, 47, 47, 7, 57,179, 90,173,101, 17,172,202, 48,243, 38,130, 32, +212, 38,132,172,113,149,100,149,148,161, 67,135,222, 99,207, 49,126,252,248,196,244,244,116,250, 66,247,166,202, 75,123,147, 83, +234,122,171,228,254,106,117, 45,153,183,143, 54, 43, 43,235, 4, 0,173, 27, 63, 81, 47, 38, 38, 70,190,233,155, 35,137,175,189, +189,112,110,243, 58,190,154, 38,161,126,222, 65, 94,114,137,138, 33, 5, 50,171, 37,209,199,199, 39,178, 18, 59, 50, 0,128, 86, +171, 5,199,113,213, 66,131, 69, 41,181, 18, 66,162, 9, 33,103,119,239,222,141, 86,173, 90, 57, 72,150,157,124,228,230,230,226, +252,249,243,232,216,177, 35, 0, 68,187, 98,139, 37, 8, 2,204,102, 51,204,102,179,131,184,136,197,226,123,136,139,253,187, 44, +203,254, 93,201, 34,204,245,246,246,238,216,165, 75, 23,201,182,237,219, 37,148,210, 2, 20, 7,164,214, 83, 90, 70,224,234, 18, + 98,181, 90, 29, 90, 53,145, 72,132,219,183,111, 59,180,192,118, 77,112,201, 35,242,178, 68, 42,149,190,243,213, 87, 95,105, 90, +182,108, 73,178,178,178, 32, 8,130, 99,114, 92,181,106,149,108,192,128, 1, 53,206,156, 57,243, 30, 42, 17,118, 6, 0, 41,139, + 8, 1,128, 70,163,177, 2,110,223, 62, 46, 21,211,106,181,146,118,237,218, 77,204,204,204,124,210, 96, 48,204,119,165, 31, 1, +248,193,150,236,115,202, 95,151, 46, 93, 50, 12, 26, 52, 72, 94,171, 86,173, 86,247,219, 87,235,215,175,223, 70, 36, 18,225,228, +201,147, 70, 0,246,157,244,225,115,231,206, 25,251,247,239, 47, 13, 11, 11,107,227,134,230,174,126,131, 6, 13,246, 5, 4, 4, +200,237, 26,203,129, 3, 7,138,214,174, 93,171, 78, 74, 74,130,217,108,198,148, 41, 83,208,187,119,111,248,249,249, 97,252,248, +241,129,139, 23, 47,222, 2, 32,166, 28, 76,153, 68, 34,217,124,237,218,181,200,224,224, 96,249,239,191,255,142, 38, 77,154, 32, + 51, 51, 19,169,169,169,208,235,245, 72, 77, 77,197,200,145, 35, 3, 62,252,240,195,144,106,180,214,228,136,197, 98, 40, 20, 10, +109, 78, 78, 78,238,125,224, 72, 1, 72,156,201,149, 84, 42,133, 84, 42,133, 76, 38,131, 32, 8,143, 69,144,224,114,218,191, 6, + 33,228,130, 88, 44,150, 42, 20, 10, 49,195, 48,144, 74,165,221,125,124,124,226,158,121,230,153,198,191,252,242, 75,130, 43, 56, + 69, 69, 69,155,165, 82,169, 40, 32, 32, 0, 0, 16, 25, 25,137, 38, 77,154,160,160,160, 64,200,205,205,133, 86,171,101,110,221, +186, 5,131,193,128,148,148, 20,132,135,135,139, 24,134,217, 12,224,217,210,240,142,157, 73,249, 20,192,167,246,247,254,254,254, +105, 0,228,246,247, 50,153, 12, 53,106,212, 64, 82, 82, 18,212,106, 53, 59,115,230,204,254,219,183,111,239, 71, 8, 25, 74, 41, +253,194, 9,106,246, 99,103,131, 69, 41,157, 69, 8,233, 84,218, 2,102, 59,143, 45, 83,115,101, 79,174, 16, 33,123, 32,202,192, +192, 64, 40, 20, 10, 40, 20, 10, 71,192, 81,158,231,239,193,183,237,232,221, 46,148, 82,169,196, 75, 47,189, 68, 87,175, 94, 61, +218, 70,178,174,185,250,191, 3, 87, 92,114,104,173, 74, 74,195,134, 13,143,191,247,222,123,125,126,253,245,215,164,230,117,106, +113,202,228, 91,122,153, 70,171, 69,104,205, 94,195,250,246, 63,135,226,219,132,174,202,181,252,252,124,121,221, 80,133,137, 97, +138, 72, 77, 41,167, 14, 86,138,165, 65,222,222, 53,196, 38, 99,186,198,219, 91, 98, 52, 26,115, 0,148, 27,156, 89,163,209,252, + 44,149, 74,195, 89,150, 5,203,178,240,243,243,243,162,148, 66,171,213, 34, 52, 52, 84, 21, 21, 21,117,133,227, 56, 48, 12, 3, +189, 94,127,235,230,205,155,221, 43,202,152,183,183,247,207, 82,169, 52,220, 30, 60,148,101, 89,199,133, 4,251,107,150,101, 65, + 8, 65, 97, 97,161, 75,152,148,210, 63, 9, 33,209,189,122,245,114,144,172,189,123,247,162, 71,143, 30,200,201,201, 65, 92, 92, +156, 51,185,114,233,120,208,217,168,157, 82, 10,177, 88,140,203,151, 47,223,117,116,109, 79,106,181,186,210,131,196,199,199,231, +232,192,129, 3,241,217,103,159, 81, 91,148,119, 37, 33,164,137,151,151,215,229, 11, 23, 46,184,100,231, 66, 41,133,217,252,207, + 87,237,125,220,121,124,185, 65,162,187,199,196,196,144,220,220, 92, 59,113,116,108,132, 88,150,197,202,149, 43,229, 45, 91,182, +156, 38,147,201, 38,138,197,226, 60,139,197,178,173,168,168,104, 62,165, 52,167, 58, 77, 62, 29, 58,116,120,251,206,157, 59,189, +195,195,195,119,221, 7,121,167, 45, 90,180, 48, 1,144,179, 44, 43,170,130, 5,140,181,245,173, 34, 59,201,167,148, 90, 99, 98, + 98,138,108,139,187,203, 17,144,253,252,252,182,236,217,179, 39, 52, 60, 60, 28, 22,139, 5, 86,171, 21,122,189, 30,135, 15, 31, +134,209,104,132,213,106, 69,100,100, 36,102,204,152, 81,244,214, 91,111,201,214,172, 89,147,174,215,235,135, 84, 0,251,214,206, +157, 59,149,193,193,193,114,131,193,128,248,248,120,196,196,196, 32, 63, 63, 31, 5, 5, 5, 40, 44, 44,132,217,108, 70, 94, 94, +158,150,231,121, 83,181, 89,104, 56, 14, 82,169, 20, 98,177, 56, 39, 60, 60, 28,132, 16, 89, 66, 66, 66,101,142,220, 52, 0,242, + 68, 34,145,196,153, 88, 73,165, 82,156, 60,121,114,170, 76, 38,251, 16,110, 4, 34, 46, 25,175,176,162,247,213,128, 96, 45, 23, +139,197, 82, 31, 31, 31,177,211, 58, 45, 86,169, 84, 8, 8, 8, 88, 1,160,167,139,229,110,230,227,227,227,152,223,155, 54,109, +138, 59,119,238,124,155,155,155,251, 74,122,122, 58, 24,134,217,204, 48, 76, 63, 59, 15,200,206,206, 70, 88, 88, 88,179,178,240, +218,197, 4,143, 6,161, 14, 13, 86,195,122, 62,170, 18,235, 20, 52, 26, 13,110,222,188,137,130,130, 2,122,245,234, 85, 50,102, +204, 24, 98, 50,153, 62, 39,132,156,160,148,222, 40,143,139, 60,234, 26,172, 82,207, 61,237, 71,132,165, 17,170,146,132,203, 21, + 34,100, 50,153, 84, 49, 49, 49,130,125,225,182, 39, 0,164, 44,130,101,211, 20,184, 45, 34,145, 72, 61,102,204,152,252,213,171, + 87,143, 34,132,172,165,148, 94,173,108, 37,237,250,122,107,224,162, 25, 83,102,248,132,212,170, 59,113,226,116,238,185,231,158, +251,125,211,166, 77,188,207, 19, 61,187, 30,252,249,139,192,143, 38, 76,218,187,103,207, 30,160,216,224,217, 85, 57,250,227,143, + 63, 6,141,127,115, 44,102,188,243,214, 79,154, 72, 63,137,138,248, 40,101,198,130, 12, 21,168, 65, 90,175, 65,239,111,118,237, + 74, 1, 80,110,164,121,185, 92, 30,126,245,234,213, 72,103, 2, 97, 54,155,161,213,106,177,105,211, 38,127,181, 90,237,175, 82, +169,192,113, 28,154, 52,105,226,170,134, 36,252,202,149, 43,145,106,181, 26,133,133,133, 48, 26,141,176, 88, 44, 16, 4, 1,132, + 16,136, 68, 34, 72, 36, 18, 40,149, 74,183,110,234, 57,147,172,189,123,247,162, 81,163, 70,200,206,206,198,165, 75,151,220, 38, + 87,206, 90, 33,103,123, 43,142,227,176,165, 78, 29,188,150,156,236, 32, 46,203,189,188, 48, 67,168, 92,116,135, 39,159,124,146, + 30, 59,118, 12, 63,253,244, 19,158,127,254,121,242,253,247,223,155,121,158, 23, 39, 37, 37,185,172, 13, 19, 4,193,145, 87,251, +124,237, 76,172,220, 37, 88, 86,171, 85, 45,145, 72, 80, 84, 84,228, 56,194,119, 78,181,107,215,134, 78,167,227,242,242,242,184, +228,228,100,197,188,121,243,254,119,232,208,161, 96, 0, 47,254,155,147,205,234,213,171,195, 95,123,237,181,219, 28,199,209, 30, + 61,122,188,124,235,214,173,190,193,193,193, 7,126,253,245,215,165, 0,234,187,139,231,239,239,255, 7,199,113,161, 42,149, 74, +188, 99,199, 14, 75,126,126,190, 56, 32, 32, 32,205, 78,104,237,117,109,177, 88, 18,115,115,115,155,187,130,231,239,239, 47,254, +228,147, 79, 44, 89, 89, 89,226,160,160,160, 52, 59,142, 82,169, 20,239,216,177,195,146,151,151, 39,214,106,181,127,228,228,228, + 84,136,151,153,153, 57,100,232,208,161, 71, 14, 28, 56,224,199,178, 44,110,221,186,133,172,172, 44,104,181, 90,108,222,188, 25, +225,225,225,216,185,115,167, 78,167,211,189,250,193, 7, 31, 76,211,235,245,174,184,108,232,216,170, 85,171,240,156,156, 28,104, +181, 90, 20, 20, 20,224,143, 63,254, 64,195,134, 13,145,156,156, 12,134, 97,160,213,106,177,106,213,170, 66, 66,136,174, 58, 44, + 50, 44,203, 58,180, 76, 78,164,168,168, 77,155, 54, 56,120,240,224,100,119, 72, 17,165,212, 36, 18,137,238, 34, 86,246,215, 98, +177,216,234,110,222,120,158, 23,219,108, 64,137, 43,239,171,129,116,146,203,229,226,146, 31, 22, 22, 22,138,131,131,131, 59,184, + 65,120,125,229,242, 98, 5, 83,120,120, 56,114,115,115,121,147,201, 52,120,243,230,205, 22, 0,136,137,137, 25,204,243,124,145, +213,106,101, 37, 18, 9, 10, 10, 10, 16, 16, 16,224, 91, 38, 32,131,201, 63,108,155, 23, 84,210, 6, 43, 56, 56, 24,209,209,209, + 48, 26,141, 72, 73, 73,193,225,195,135, 45, 60,207,127,185,122,245,106,193,223,223,127,196, 11, 47,188,192,158, 57,115,230, 13, + 0,111,151,199, 69, 30,105,130,101, 99,140,135, 0,116,182, 23,206,249,136,176, 60,205, 85, 9, 13, 22,169, 96,160,229, 36, 38, + 38, 42,149, 74,165,227, 51,139,197,130,144,144, 16, 65, 16, 4, 82,242,119,236,249,168,172,136, 68, 34,245,187,239,190,155,179, +106,213,170, 87,224,162,161,248,142, 55, 26, 96, 83, 9,114,245,233,162, 57, 43, 62, 89, 60,207,231,250,222,207,177,238,227, 37, + 60,207,227,204,147, 79, 62,217, 65,175,215,115, 94, 74, 11, 50,115,176, 23,197,126,176, 92, 34,131, 54, 95, 90, 27, 78,157, 58, +117,166,103,207,158,199, 54,124,245,141, 79,114,124,252, 9,105, 94,102,138,166, 94, 36, 39,174, 17,222, 47,191,168, 72, 60,120, +240, 96,127, 0, 47,148,135,197, 48, 12,226,227,227,145,144,144, 0,149, 74, 5,181, 90, 13,149, 74, 5,141, 70, 3,181, 90, 13, +181, 90,237,118, 29, 50, 12, 3,158,231,241,245,215, 95, 67,161, 80, 64,169, 84,222,149,236,228,234,126,218,166, 71,143, 30,208, +233,116, 80,169, 84,142, 99, 77,119,196,110,131,101, 50,153, 96, 50,153, 96, 54,155,121, 0, 34,142,227, 48, 50, 49,209,161,213, +113,135,184,148,148, 38, 77,154,208, 19, 39, 78,224,216,177, 99, 40, 40, 40,192, 39,159,124,130,224,224,224,167, 0, 76,119, 99, +199, 89, 39, 40, 40,168,199, 51,207, 60, 19, 98,177, 88,160,215,235,153,191,255,254, 27, 50,153, 12, 44,203, 34, 49, 49, 17, 91, +183,110,197,205,155, 55,237,218,195, 80, 66, 72, 45, 74,233,205,242, 22, 5,142,227, 28,187, 79,123,114,214, 98,177, 44,139,192, +192, 64, 4, 5, 5,225,211, 79, 63, 21,215,170, 85,171,247,191, 57,209, 44, 94,188,184,222,242,229,203,215,111,218,180,105,239, +144, 33, 67,182,159, 63,127,126,184,151,151,215,223, 7, 15, 30,156, 39,149, 74,133, 74,142,239,208,228,228,228, 0,231,143, 4, + 65, 80, 88,173, 86, 7,161, 45, 44, 44, 68,227,198,141, 93,198,187,112,225,130, 2, 0,230,205,155, 39, 2,160,176,187,255,176, + 99, 22, 22, 22,138, 26, 54,108, 24,234, 34, 25,184, 66, 8,233,208,173, 91,183,227,251,246,237,243, 14, 15, 15, 71, 82, 82, 18, +146,146,146, 80,175, 94, 61, 44, 88,176,160, 32, 47, 47,175,157,141, 84,125,239, 98,177, 67,188,189,189, 69,183,111,223,134,213, +106, 69,179,102,205,176,106,213, 42, 12, 30, 60, 24,141, 27, 55, 70, 94, 94, 30, 46, 92,184,128,141, 27, 55,122,139,197,226, 23, +254,237, 5,198,118,132, 85,102,170,140, 88,173, 86,141, 76, 38,203,147, 74,165, 18,187,253,213,225,195,135,221,214, 94, 57,111, +252,220,121, 95, 29,200,106, 73,145, 72, 36, 8, 10, 10,114, 25, 71, 42,149, 18,251,220,104,181, 90,145,155,155,203, 7, 7, 7, + 59,142,241,207,158, 61,203, 71, 68, 68,240, 44,203,178, 18,137, 4,132, 16, 40, 20,138, 50, 39,124,202,211, 57,207, 13,158,238, +184, 69,200,136,148,154,113,239, 22,111,246,207,158, 61, 11,179,217,140,195,135, 15, 91, 62,248,224,131,228,156,156,156,113, 0, +184,159,127,254,121,232,164, 73,147,216,128,128,128,110, 78,243,229, 61, 92,228,113,208, 96, 29,162,148, 18,155, 65, 57,177, 19, + 27, 74,233, 61,164,170, 44,194,101,211, 96,145,138, 6, 27,203,178,248,233,167,159, 28, 68,192,126,139,144, 82,138,170, 38, 88, +190,190,190, 5,173, 90,181,210,220,185,115,103,107,101, 53, 87,159, 46,154,179,226,253,121,179,124,178, 46,158, 64, 98,114, 10, +116,233,150, 51, 71,255,190,249, 45,128,111, 1, 0,107,158, 56,132, 81, 23, 87,186,138,249,132,191,162,233,147, 33,234,111,159, +238,217, 59,108, 80,236,219,204,235,175,191,222,126,232,208,161,185, 67,134, 12,121, 83,165, 82,213, 55,155,205,217,223,236,222, +157, 48,104,208,160, 90, 60,207, 15,173,200,103,136,197, 98,185,213,191,127,127, 71,221, 6, 5, 5,105,182,109,219, 22,168, 86, +171,241,242,203, 47,103, 36, 36, 36, 56,142,133,242,243,243,111,185,146, 71,179,217,124,171,105,211,166,101, 30, 11,218, 53,144, +238, 96,218,218,210,113, 91, 48, 43, 43, 11,151, 47, 95, 6,199,113,104,221,186, 53,142, 30, 61,138,246,237,219,187,117,131,176, +168,168, 8,225,225,225, 40, 42, 42, 66, 65, 65, 65, 33, 0,233,230, 90,181, 0, 0,111,100,101,225,143, 15, 62,192,239, 11, 23, + 86,170, 31, 53,109,218,148,158, 60,121, 18,127,255,253, 55,140, 70, 35, 94,125,245, 85,216,142, 7, 1,224, 25, 23,203,219,184, + 65,131, 6,251, 15, 30, 60,232,175, 86,171,161,215,235,161,215,235, 49, 98,196, 8,140, 30, 61, 26, 22,139, 5,171, 87,175,198, +119,223,125, 7,141, 70, 3,189, 94,143,130,130, 2,239, 94,189,122, 29, 39,132,116, 44,235,104,155, 82, 74,110,222,188,137,247, +223,127, 31,130, 32, 96,210,164, 73,136,140,140,116, 16,171, 91,183,110, 97,222,188,121,224,121, 30, 51,103,206, 68,189,122,245, + 96,177, 88,100,238,248, 25,171,106, 25, 63,126,252,245,111,191,253,118,239,157, 59,119,158, 93,180,104, 81, 39, 66,136, 48,113, +226,196,247, 53, 26, 13,127, 63,184,217,185,249,184,124,237,150,131, 0,149, 76,254,126, 62,110,227, 93,141,191,227,248,127,158, +119,198,227,225,235,227,237,110, 22, 11, 45, 22, 75, 65,191,126,253,180, 95,127,253, 53,169, 87,175, 30,110,220,184, 97,223,148, + 22, 86,194, 53, 67,146, 78,167,139,100, 89, 86,124,237,218, 53, 68, 68, 68,160, 85,171, 86,152, 63,127, 62, 50, 51, 51, 97,181, + 90, 17, 16, 16, 32, 88, 44,150,179, 38,147,233,183,127,123,129,113,214, 50, 57,167, 95,127,253,117,178, 76, 38,163, 0, 78, 2, +112,139, 96, 83, 74, 77, 53,107,214,188, 11,187, 50,218,171, 7, 72,130, 30,216,205,196,224,224,224,195,106,181,186,119,118,118, +246, 93, 90,172,118,237,218,153, 3, 3, 3,143,184,138,163, 82,169,178, 89,150,245, 5,128,164,164, 36, 40,149, 74,113,124,124, +252, 66, 66,200, 20, 0,168, 85,171,214, 66,157, 78, 39,174,101,155, 79,131,130,130, 96, 50,153,202, 52, 87, 57,126, 54,245,115, + 0,159, 59,173,189, 41,185,185,185,242, 37, 75,150,232, 23, 46, 92,104,224,121,222, 8,224, 96, 78, 78,142,195, 15, 86, 68, 68, + 68,174, 72, 36,242,209,106,181, 53,156,160,238,225, 34,143, 3,193,186,231,182,158, 51,233,113,133,100,185,162,133, 32,132,192, + 96, 48,220,165, 13,177,223, 34, 44,141, 96,217, 22,242, 74, 29, 17,218,200,149,124,219,182,109, 95,126,252,241,199,199, 92,253, + 63,103, 27,172, 53, 75,231, 46,178,147,171,115, 71,247,225,251, 75,185,153,147, 22, 46, 91, 94,217,202,110,232,175,108, 18, 20, +232,119,232,131,133,115, 53,215,247,126,142,237,107, 62,164,231, 78,159,110,121,250,244,233, 87,198,142, 29, 91,211,214,161,116, + 0,254, 2, 48,200,149, 91, 55, 25, 25, 25,119,217, 63, 69, 70, 70, 94,209,106,181,129, 50,153, 12,241,241,241,250,184,184, 56, +183,143, 94, 74, 98, 86,133,148, 36, 87,113,113,113,232,210,165, 11, 0,224,232,209,163,104,215,174,157, 91, 36,203, 98,177,228, + 60,241,196, 19, 14,109, 86,110,110,174, 0, 0,177, 41, 41, 88, 27, 28, 12,142,227,240,251,194,133,152,106,177, 96,190,200, 61, +211,156,102,205,154,209,211,167, 79, 35, 33, 33, 1, 86,171, 21,125,250,244,113, 38, 87, 46, 75, 80, 80,208, 59, 7, 15, 30,244, + 95,187,118,173,113,203,150, 45, 70, 65, 16,152,102,205,154,169,163,163,163,177,124,121,113, 55, 26, 52,104, 16, 38, 77,154,132, +184,184, 56, 40, 20, 10,116,232,208,129,159, 53,107, 86,192,184,113,227,222, 64,241, 53,252,210, 22, 24,218,189,123,119, 28, 57, +114, 4, 44,203,162,101,203,150,200,202,114, 92,238, 65, 96, 96, 96,105,207, 88,219,120,255, 87, 22, 34,142,227,232,225,195,135, + 23,117,234,212, 9,119,238,220,121, 54, 38, 38,230,147,225,195,135, 39,221, 47,174,183,151, 26, 77, 27,214,129,209,104,132,209, +104, 68, 72, 72, 8,242,243,243,113,253,250,117, 24,141, 70, 4, 6,104,221,198,139,110, 92,207,129, 23, 16, 16,128,130,130, 2, +220,188,121, 19, 38,147, 9,126,126,222,238,244,249,176,238,221,187,255,250,229,151, 95,250,110,220,184,209,212,185,115,103,201, + 39,159,124, 66, 52, 26, 13,210,211,211, 43, 91,228,195, 71,143, 30, 13,239,214,173, 91,212,197,139, 23,113,248,240, 97,152, 76, + 38, 68, 71, 71,227,234,213,171,104,211,166, 13,244,122,253,201,211,167, 79,255, 80, 29, 22, 24,251,241,157, 61, 29, 57,114,100, +170, 70,163,177, 0, 88,118, 63,125,241,246,237,219,210, 38, 77,154, 24,101, 50,153,196, 70,214, 62,252,183,250,118, 41,237,126, + 95, 55, 19, 43,152, 83,198,249,249,249,117,171, 93,187, 54,210,210,210,196, 18,137, 4,237,218,181, 51,183,104,209,194, 28, 20, + 20,244,134, 27,237,114, 81, 44, 22,119, 44,222, 68,240,184,125,251, 54, 40,165,147, 26, 55,110,252, 86,126,126, 62,178,178,178, + 36, 26,141,198,177,153,142,138,138,130,209,104,188,232, 6,201,156, 19, 17, 17, 49, 77, 44, 22,207,207,200,200, 88, 93, 74, 29, + 73,154, 54,109,170, 17,139,197, 48,155,205,198, 18,207,170,149,221, 91,149, 16, 44, 39,214, 88, 82,109, 94,225,241,160,171, 54, + 88,132, 16,152, 76, 38, 40,149, 74,199,209,147,179,231,246,210, 8, 86,101, 36, 44, 44, 12,173, 90,181,146,111,223,190,125,203, +146, 37, 75,142, 87, 6, 99,231,151, 95, 4,123, 9,133, 97,201, 39,247,224,242,185, 63,240,237,133,156,204, 73, 11,151,189,249, +220, 11, 47,166,149, 36,100, 59, 70, 85,140, 87, 63, 64,217,184, 70,160,239,161, 15, 63,120, 95,147,117,241, 4, 82, 82, 83,177, +231,228,233, 51, 38, 74, 47, 0,152, 84, 85, 13,234,124, 27,173,186,116, 84,103, 55, 13,153,153,153,184,112,225,130,157, 92, 69, + 3, 64,251,246,237,207,218, 73,214,153, 51,103, 16, 19, 19,115,143,155,134,123, 52, 13,217,217, 11, 74,252, 70, 55, 0,126,118, +162,207,113, 28,218, 77,155,230, 54,185, 34,132, 80,158,231,161,211,233,236, 59,195, 74,145, 43, 27, 86,187,194,194, 66,108,217, +178, 37,243,218,181,107, 97,181,107,215, 30,247,249,231,159, 47, 83, 40, 20,119,171, 56, 10, 11,209,173, 91, 55,140, 25, 51, 6, + 51,102,204, 16,134, 15, 31,206, 50, 12, 83,102, 4,123,158,231,197,181,106,213, 58, 0,224,169,139, 23, 47, 2,192,113, 74,105, + 59,251,243,242,158,185, 32, 66,126,126,190, 72,173, 86,151,234,226, 65, 92,124, 77,211,221, 35, 61, 7,230,177, 99,199,222, 95, +186,116,233,183, 19, 38, 76,184,118,159,152,165,106,176,122,247,238,141, 34,163, 5,137,105,185,224,121, 43, 12,230,116,183,241, +156, 53, 88,189,123,247,134,161,200,132,219, 41, 58, 88,173, 60,242, 13, 86, 87,219, 94,241,244,211, 79,255,188,109,219,182,160, + 19, 39, 78,128,231,121,225,234,213,171, 55,251,245,235,167,153, 56,113,162,175,147,141,169,187,242,241,139, 47,190, 56,224,216, +177, 99,186,168,168, 40,159,147, 39, 79, 34, 61, 61, 29, 86,171, 21, 79, 61,245, 20, 36, 18,201,237,133, 11, 23,138, 1,124, 92, + 93, 8,150, 84, 42,197, 31,127,252, 81, 37,196,202, 89, 36, 18, 73,165,143, 25, 31, 85, 57,121,242,100,210,216,177, 99, 27,106, + 52,154,229, 29, 58,116,232,226,235,235,203,120,123,123, 31,174, 81,163,198, 91, 77,154, 52,113,249, 52, 65, 36, 18, 13, 87, 42, +149,215,173, 86, 43,107,211,156, 3, 0,172, 86,171,132, 97, 24,212,170, 85,203,161, 52,105,217,178, 37,130,130,130,248, 75,151, + 46, 13,119, 21, 63, 61, 61,253,174, 91,133,165,200,168,118,237,218,113, 70,163, 17, 9, 9, 9, 71, 75,106,232, 31, 23,146, 85, +166,129, 10,195, 48,160,148, 66,214,188, 57, 82,246,237,195,215, 95,127, 93, 46,208,154, 53,107, 80, 82,165, 71, 8,233,230,236, + 43,195,126, 91,240,181,215, 94,115,124,231,204,153, 51, 14, 99,247, 62,125,250,220,133,121,234,212,169,123, 72, 86, 73,204, 50, + 26,247,226,142, 29, 59, 78, 47, 94,188,248,164,139,147,161, 3,211,110,131, 53,224,165,151, 83, 86,188, 63,227,252,198, 31, 14, + 52, 78, 49,208,148, 73, 11,151, 77, 40, 73,174, 92,197,124, 34, 72,245, 68,104,128,239,225,165, 31,188,239,101,215,134,109, 59, +155,154, 11, 43, 29,229, 78, 99,185, 82,118,103, 77, 34, 33, 68,168, 10,204, 74, 16,139,187, 48,157,221, 52,164,164,164, 56,200, +149,147,163,209,232,246,237,219,159,181,145, 43,251, 51,107,101,242,201,113, 28, 38,232,245,224, 56, 14,157,103,207,198, 83,115, +231,186, 93,118,158,231,193,113, 28, 34, 35, 35,221, 38, 87,206,152,148,210, 99,231,207,159,143, 24, 54,108,152, 58, 50, 50, 50, +158, 16, 34, 26, 49, 98,132, 16, 28, 28,204,252,254,251,239,160,148,162,125,251,246, 72, 75, 75,131, 32, 8,216,188,121, 51,134, + 13, 27, 70,254,250,235, 47, 42, 8,194,254,242,242,153,144,144, 48,170,107,215,174,107,138,138,138,184,172,172,172, 81,174, 62, +171,168,236, 59,118,236,184, 22, 25, 25,217, 9,101,187, 98, 16, 0,156,184, 31, 76,155,246, 46,234,126, 48,203,210, 96,125,245, +213, 87, 16, 4, 1, 97, 65, 90, 24,141, 70,148, 36,179, 21, 97,150,212, 96,109,223,190, 29,130, 32,160,102,176, 15, 76, 38, 19, +236,134,193, 21, 97,250,250,250,126,184,105,211,166,208, 75,151, 46, 33, 49, 49, 17,203,150, 45,187,149,147,147,211, 51, 39, 39, + 71, 58,107,214,172, 67, 47,189,244, 82,160, 32, 8, 70,119,199, 38,165,212, 72, 8, 25,222,182,109,219,205,243,230,205,187,209, +160, 65,131,154,237,218,181,211,102,101,101,101,252,249,231,159, 55,215,172, 89,163,178, 90,173,195,203, 58,122,122, 24,227,221, + 89,146,146,146,102,219,214, 25,183,136,149, 43,249, 60,117,234,212,187, 54,236, 83,174, 96, 63,172,178,223,239,205,196,138,242, +185,114,229,202, 68,148,240,111,230,110, 62, 79,157, 58,149,208,173, 91,183,185,129,129,129,179,100, 50, 25, 50, 50,138,131, 19, +216, 53,141,246,245,186,121,243,230,232,222,189, 59,174, 92,185, 50,119,218,180,105, 9,247, 83,159,182,141,118, 29, 0,175,116, +237,218,117,226,128, 1, 3,176,114,229, 74, 80, 74,215, 63,174,132,216,238,166,129, 56,255, 5, 0,139,197,114,231,250,245,235, +193,245,178,179,217, 16, 66,208,178,101, 75, 56,199, 16,180,219,229,216, 13,229,126,251,237, 55,171, 32, 8,229,250,156,226,121, +254,206,177, 99,199, 2,247,237,219, 39,178, 55,164,205, 88, 83, 72, 78, 78,102, 14, 29, 58,228,208,134,113, 28,135,195,135, 15, + 91,205,102,243,109,119, 11,117,229,202,149, 42,217,189,253, 22,151,240,214,207,123,190,243,107,221,170, 67,142,198,199,167,212, + 1,108,247,248, 94,110,199,226,152,249,139, 23,206,213,218,201,213, 87,103, 83,115,138,140,124,151,139, 25,133,231,170,186, 65, +243,243,243, 19,236,183, 5,245,122,253,237,234,210,209,236, 55, 8,131,131,131,207,162,196,109, 65,251,179,152,152,152,123,158, +185,165, 38, 17, 4,120,121,121, 57, 38, 7,119,237,174, 8, 33,212,126,100, 93,114, 60, 84, 70, 82, 83, 83,151, 76,155, 54,237, +153, 5, 11, 22,248,239,221,187, 87, 99,195, 68,255,254,253,211,207,159, 63,223, 1,128,180,160,160, 96,255,130, 5, 11,252,157, +226, 17,114,189,122,245, 74, 75, 75, 75, 91, 81, 65,125,222, 0,208,213,221,103, 21,201,128, 1, 3,226, 81,138,195,207,251,145, + 7,129,105, 23, 93, 78, 30,226, 19,146,108,177, 40, 5,240,183,210, 28,118, 83, 22,139, 21,186,188, 44,183, 53, 88,215,111, 38, +217, 66,131,241,224,249,100, 27, 94,177,161, 59,205, 46,116, 69, 59,208,126,249,242,229, 61, 25,134, 97,126,255,253,119,227,226, +197,139,239,100,100,100,244,161,148,222,182,245,179,206, 27, 55,110,220,226,130, 75,134,178,218,254, 2, 33,164,205,228,201,147, +223, 4,208, 30, 64, 77, 0,183, 1, 28, 5,240,113, 53,243, 56,190,236, 17,197,174,180, 60, 42, 55, 19,247,239,223, 63,187,111, +223,190, 92,120,120,248,123,225,225,225, 76,118,118, 54,244,122, 61, 24,134, 65, 80, 80, 16, 26, 53,106,132,160,160, 32,225,226, +197,139, 11, 38, 79,158, 92,161, 79,189,134, 13, 27,214,177, 88, 44,117, 25,134,169, 3,160, 14,165,180, 14, 33,164, 14, 0, 31, +155, 38, 76, 19, 17, 17,193,181,110,221, 26,173, 90,181,194,161, 67,135,176,115,231,206,207, 41,165, 63, 59,107,175,170, 98,238, +173,246, 26,172,236,236,236,238, 61,123,246,220,199,178,108,173,210, 22,172, 82,130, 50, 39,164,165,165, 61, 91,238,228,149,157, +221,253,173,183,222,218,199,178,108, 45,187,102,202,106,181, 26,117, 58,221,235,157, 59,119, 94, 37, 18,137,164,206,184,130, 32, +220, 74, 75, 75,123,168,177,244, 74,250,193,234,222,179,111,230,253, 98,170,196, 76,221,203, 63,174, 69, 90,122, 38,190, 58,155, +154,157,111,226, 59, 95,201, 40, 56,255, 32,242,159,144,144,208,163,186,118, 54, 27,145, 42,245,232,175,188,103, 46, 74,134, 11, +142, 68, 51, 42,200, 31,177,145, 44, 82, 69,229, 61, 79, 8,105, 59,118,236,216,233, 10,133,162, 37, 0, 20, 22, 22,254,158,156, +156, 60,215,126, 75,176,162,231, 30, 41, 91, 44, 22, 75, 98,163, 39,162,236,117,125,151,107, 6,231,215, 86,171, 53,209, 29,188, +210,112,156,223,243, 60,159, 88,129, 22,121, 66,171, 86,173,216, 9, 19, 38,164,237,221,187,215, 30,224,182,208,169, 95, 92, 65, + 57,206, 68, 93,236, 91, 70, 0,139,109,201, 35,213,112,174,115,231,253,191, 37,223,125,247,221,244,193,131, 7,111,244,241,241, +249,162, 78,157, 58, 81,129,129,129, 26,185, 92, 14,163,209,152,111, 50,153, 46, 95,185,114,101,200,180,105,211,110,184,130,181, +113,227, 70, 22,128, 88, 16, 4, 25,195, 48, 74, 0, 26, 66,136,183,157, 96, 17, 66, 96, 54,155,145,144,144,128,169, 83,167,242, + 7, 14, 28,248, 0,192, 76, 55,178,219, 2,128,191,211, 60,238, 15,192,132, 98,199,179, 25, 0, 78, 63, 50, 4,203,230,173,186, + 77, 21,119,186,242, 48,195,171, 75,165, 12, 53, 46,222,138, 53,139,239,138, 67,104, 39, 95,165,190,175,224,160, 47,215, 96, 29, +251,241,207,113, 75,140, 86, 42,152,173,194,136, 43,233, 5, 23,254,195, 19,143,181, 50,207, 92,192,125,186,138,242, 71,170,184, +188,241, 0,134, 86,246,185, 71,202, 97,203, 25, 25,205,171, 35,158,201,100,122,171,109,219,182, 31,241, 60,191,212, 98,177, 28, +245,180,148, 71,170,179,124,245,213, 87, 55,236,235,242,192,129, 3, 89, 0,216,177, 99,135,219,183,123,135, 13, 27,198,219, 2, +140, 23, 1, 40, 0,144,135, 98, 71,217, 4, 0, 10, 10, 10,178,147,147,147, 47,242, 60,127, 17,192,150, 74,220,160,245, 39,132, +252, 72, 41,237,109, 35,108, 63, 82, 74,123, 59,127,246,200, 16,172,255,170,236,136,251,103,129, 45, 73,156, 42,122, 95,150, 92, + 78,213, 31,190,223, 29,171, 71, 60,226,145, 71,102, 19,113, 27, 64, 31, 79, 77,120,228,145, 91,255, 42, 65,172,236,114,225,194, +133, 7,102, 10,240,168, 10,227,169, 2,143,120,196, 35, 30,241,136, 71, 60,226,145,170, 21, 2,160, 91, 25,187, 48,119,110, 7, +116,171,196, 46,111,191, 7,211,131,233,193,244, 96,122, 48, 61,152, 30,204,255, 22,102, 37,165, 87, 5, 71,132,187,171, 29,195, +114, 54,226,172,234, 4,160,155, 7,211,131,233,193,244, 96,122, 48, 61,152, 30, 76, 15,230,125,166, 46, 83,166, 76,121, 23,197, +241,137,233,148, 41, 83,222,165,148,246, 42,166, 49,180,215, 67,206,139, 75,201, 99,131,229, 17,143,120,196, 35, 30,241,136, 71, +170,187, 28, 95,184,112, 97,225,194,133, 11,237, 6,237, 25, 0,136, 77,123,149, 81, 29, 51,252,175, 17, 44, 66, 72, 8,195,137, + 95, 22,137,165, 93, 64,133, 70, 0, 0,134,141,227, 77, 69,191, 90,173,230, 47, 40,165,201, 46, 96,148,122,227, 43, 10,120, 34, + 82, 43,255,222,200,243,226,219,249,166,129,151,139, 29,209,149,166,189, 43,215,225,219, 64, 66,218,201, 36,146, 95, 36, 90,109, +169,222, 5, 77, 57, 57,134, 34,147,233,153, 29,148, 30,243,244,125,143,120,196, 35, 30,241,200,163, 32,132, 16,165,183,183,247, + 1,134, 97,194,157, 62, 67,105,175, 1,128,231,249, 20,157, 78,247, 12,165, 52,243, 97, 98,150, 92,114, 81,198, 90, 94, 93,133, +179, 21,220, 78, 52, 42,140, 96,221, 32, 88,213, 33,170, 78,248,151,201,169,105,103,243,138, 76, 35, 47, 39,229,235,220,254, 81, +177,236, 53,173, 95,208,252,255, 27,254,150,111,100,253, 40, 18, 22, 86, 3,160,192,237, 59,137,129,215,175, 93,237,186,125,211, +199,227,197, 50,217, 84,115, 81,209,103,238, 98, 71, 2,202, 8,149,244,200,103, 83, 94,210,114,176,226,197,121, 95,238, 21,244, +230,154, 87,139,175,141,186, 44, 3, 9,105,231,237,227,243,243,226,125,251,228,234,102,205, 74, 18, 51, 8,130, 0,253,217,179, +242, 41, 61,122,252, 60,144,144,238, 30,146,245, 88, 78, 66, 65, 26,141,102,156, 72, 36,234,108, 54,155,195, 37, 18,201, 29,158, +231, 15,103,103,103, 47,167,148, 38,121,106,200, 35, 30,169,112, 12,149, 25, 96,252,223, 12, 62, 14, 0,106,181,250, 15,134, 97, + 66,157, 23,127,187,127,198,146,126, 30,157,252, 61,222,200,202,202,106, 91, 78,121,235,248,248,248,172, 2,208,162, 34, 71,199, +182,253,253,105,157, 78,247,186,205, 93, 75,105,120,106,111,111,239,217,132,144,129, 12,195, 84, 24,240, 87, 16, 4,158, 82,186, + 35, 59, 59,123, 38,165, 52,191,172,239,121,123,123,239,191,116,233, 82,139,128,128,128, 10,221,210, 88,173, 86,220,190,125,219, +191,101,203,150,191, 1,104,240, 32, 49,221,225, 34,143, 12,193,178, 53,182, 75, 17,172, 5, 1, 47,111,152,255,122,141,148, 91, +215,106,140, 90,176,181,126, 3, 63, 69,231, 75,153,133,169,174,254,160, 68,174,254,161,253, 83,189,187,140,121,115,130,242,207, +243,151,241,203,161, 19,200, 43, 48,130,101, 24,104,213, 10,212,175, 95,151, 44, 91,251,181,223,231,159, 46, 91, 42, 87,105,123, + 25,244, 57,207,187, 83, 32, 47, 5,247,222,164,126, 45,149,190, 62, 60, 32,240,120,167,103, 83,229,123, 63,158,125, 15,133,214, +247,220, 38, 87,251,247, 43,210,211,210,240,129,175, 47, 56,139, 5, 50, 66, 32, 39, 4, 50, 0, 42,169, 20, 29,190,252, 18,243, +119,239, 86, 76,237,213,203, 67,178, 30, 51, 81,171,213,195,235,215,175,191,120,221,186,117,190,181,107,215,134, 82,169,132, 78, +167,243,187,114,229, 74,179,183,223,126,123,168,151,151,215,180,220,220,220, 53,158,154,242,136, 71,202, 36, 27,205, 0,148, 26, +188,189,188,103, 15, 75, 24,134, 9, 77, 74, 74, 10, 80, 40, 20,224,121,222,230,189, 95,112,108,160,157, 15, 56,108, 14,102,209, +160, 65, 3,115, 5,243,198,202,244,244,244,110,206, 33,203,202, 59, 40, 73, 74, 74,234,214,176, 97,195,149, 0,158, 41,131,180, +204,126,243,205, 55,199, 53,110,220,216,174,245,177, 69, 45, 40,254,155,153,153,137,177, 99,199, 58,126, 67, 16, 4,236,219,183, +239,205,225,195,135, 3,192,219,229,148, 61, 60, 32, 32,128,140, 26, 85,190,175,161, 89,179,102, 97,214,172, 89,248,248,227,143, +137, 72, 36,210, 86, 80,159, 85,130,233, 42, 23,121,164, 8,150,203,157,146, 10,123,230, 45, 95, 55,114,206,176,246,100,195,219, +221, 34, 71,127,188,255, 68,195, 16,121,199, 11,201,134, 59, 46,104,174, 70,180,238,248,108,231,177,227, 38, 41,183,126,119, 16, + 87, 46,158,195,165,163,219,238,250, 78,243,103,134, 35, 53, 51, 31,195,199,188,163, 34, 44,215, 89, 44, 83,140, 48, 23, 21,110, +112, 37,111, 81, 64, 96,184, 84,242,191, 54,173, 26,137, 80, 51, 17,160, 64,251,152,122,162,176,159,255,254, 95, 62,172, 31, 95, + 6, 42,140, 37, 88,146, 92,109,125,225, 5,244, 48, 24, 16,136, 98,159, 22,246, 84, 8,224,114,223,190,104,240,237,183,152,253, +253,247,138,153,125,250,184, 77,178, 20, 10,197,231, 6,131, 97, 81, 37, 28,174,253,155,147,102,125,181, 90, 61, 53, 47, 47,239, +229,106,148,167, 96, 0, 25,165,196, 47, 20, 3,208, 82, 74,221,138,248, 43,147,201, 94,123,241,197, 23,151,173, 88,177, 66,145, +150,150,134,228,228,100,240, 60, 15,153, 76,134,200,200, 72,178,127,255,126,223, 73,147, 38, 45,209,104, 52,210,188,188,188,143, +220,200, 39, 35, 18,137,134,249,248,248,244, 13, 12, 12, 12,200,200,200,200,200,206,206,222,101, 52, 26, 55, 84,118, 39,111,195, + 28, 18, 17, 17,209, 55, 36, 36, 36, 48, 41, 41, 41, 51, 49, 49,241, 7,163,209,248, 57,165, 84,184,207, 58,109, 2,192,215,246, + 81, 74, 68, 68, 68,220,205,155, 55,211,171, 16, 51, 57, 34, 34,226,130,187,152,132, 16, 37,128,237, 0, 66, 42,248,106, 50,128, + 65, 54, 7,199, 30,249, 23,200,149, 45,244,212, 93, 68,170,188,103, 15, 91,228,114, 57,182,109,219, 6,145, 72, 4,145, 72,132, +236,236,108,132,134,134, 58,222,139,197, 98,199,235,154, 53,107, 86,136,199,243,124, 75,150,101,161,215,235,193,243,188, 35,229, +228,228,128, 82, 10,169, 84, 10,158, 47, 14,187,228,244,188,101, 57,245, 56, 48, 36, 36, 4, 91,183,110,133,201,100,186,231,185, + 70,163,193,249,243,255, 4, 5, 97, 89, 22,173, 90,181, 98, 8, 33, 3,203, 35, 88,118, 77, 81,108,108, 44, 88,150,117,132,190, +179,191,182, 39,158,231, 49,107,214, 44, 56,135, 16,123,152,152,143,252, 56,176, 21,146,150, 22, 38,164, 65,144,234,245,238, 93, + 90,127, 32,151,138,229,130,213, 2,222,106, 6,111, 49,129, 35, 60,158,105, 18,140, 54,181, 21,200,208,229, 97,212,154, 83,121, + 73, 73,198, 86,231,179,242,175,148, 83,249, 33,106,109,192, 95,159,110,254,206,239,151, 19,151, 16,119,238, 44,206,238, 93, 85, +234,119,187,189, 56, 5, 13,155,180,192,147,245,130, 48,113,244,128,204,172,244,228,166,165,217,100,149,180,193,106,171, 22,111, + 94, 49,164,203,139, 77,154,105, 25,116,178,173, 87,251,173, 56,115, 34,149,127,235,135, 63,183,158,200, 55, 15, 45,193,148,239, +217, 90, 12,149, 74, 11, 63, 57,113, 66,158,158,158,142,173, 47,188,128, 24,131, 1,153, 34, 17,158,176, 88, 28, 36, 43, 7, 64, + 22,199, 33,200,106, 69,145, 70,131,160,175,191, 6,207, 48,152,210,163,135, 97,179,201,164,112,181,242, 85, 42, 85, 6,203,178, +124, 94, 94, 94,231, 71,129,100,217,200,213, 33, 66,136, 56, 55, 55,215,167, 26,228,135, 1, 48,103,228,200,145, 35,142, 28, 57, +114,253,250,245,235,221,108,158,132, 65, 8,225,234,214,173,123,176, 67,135, 14,117,214,175, 95,255, 25,128, 57,174, 16, 14, 66, + 72,141,218,181,107,255, 25, 23, 23,231,119,245,234, 85,232,245,122,136, 68, 34, 12, 25, 50, 4, 95,127,253, 53,196, 98, 49,164, + 82, 41,196, 98, 49, 58,118,236,152,121,243,230,205, 22,148,210, 91, 46,224,178, 94, 94, 94,159,175, 90,181,170, 94,159, 62,125, + 56,163,209, 8,158,231,177, 99,199, 14,203,204,153, 51, 19,178,178,178, 94,113,151,100, 17, 66,152,224,224,224, 13,159,125,246, + 89,253,167,158,122,138, 51, 24, 12, 16, 4, 1,187,119,239,182,188,247,222,123, 55, 82, 82, 82,134, 82, 74,249, 74,212,107, 51, +133, 66,209,240,245,215, 95,207,232,211,167,143, 25, 0, 78,159, 62,205,156, 59,119, 78, 83,187,118,237, 91,211,167, 79, 63, 91, + 9,204, 24,181, 90, 29, 53,106,212,168,204,222,189,123, 91,196, 98,177,112,236,216, 49,238,202,149, 43,154,136,136,136,248,247, +222,123,239,156, 27, 88,123,142, 31, 63,222, 41, 52, 52, 84,176, 77,234,212, 62,193, 51, 12, 67,109,127,113,249,242,101,174, 83, +167, 78,135, 40,165,207,195, 35, 15,115, 92,114, 0, 44,148, 82,232,116, 58,156, 60,121, 18,189,122,245, 2,128,104,219, 87,206, + 82, 74,145,151,151, 7,131,193,128,224,224, 96, 0, 16, 61,236,227, 66,173, 86,155,150,145,145, 17,240,253,247,223, 67, 36, 18, + 97,223,190,125, 88,189,122, 53,182,109,219, 86, 42,201, 10, 14, 14, 70,100,100,100, 98,114,114,114, 88, 57,115,122,174, 94,175, +215,228,230,230,130,231,121,156, 60,121, 18,235,214,173, 67, 64, 64, 0,252,252,252,224,239,239,143,150, 45, 91, 66,169, 84, 58, + 72, 86,135, 14, 29,242,244,122,189, 87,105,120,190,190,190,201, 19, 38, 76, 8, 62,115,230, 12, 44, 22, 75,169, 4,107,220,184, +113,206, 90, 36, 40, 20, 10,180,105,211, 38, 37, 43, 43,171,204, 13,136,191,191,127, 74, 70, 70, 70,208,185,115,231,238, 34, 63, +165, 17, 34,150,101,161, 86,171, 81,171, 86,173,180,148,148,148,160, 7,137, 89, 22, 23,121,228, 53, 88,182,137,170,243, 93, 26, +161,136,160,169,139,199, 13,148,131, 55,131, 90, 12,128,185, 16, 48,235, 33,152, 10, 65,196,114,192, 98,128,191, 84,135,237, 99, +162, 52,147,183,198, 95,124,194, 95,211,235, 98, 70,222, 79,165,106,190, 56,241,144,129,195,222,244, 77, 76,207, 67, 82, 90, 46, + 88,230, 31, 31,167,209,221,134,129, 99, 25,156,250,185, 88, 81,197,176, 44,114, 11,140,200,209,155, 49, 96,216, 56,159,207,150, +205, 24, 2, 96, 81,121, 5,105, 4, 68, 54, 82,169,250, 53,110, 20,206,160, 94, 10, 72,157, 93,197, 36,234,200,115,104,150, 29, +192, 54,248, 69,210, 79,159,111, 94, 16, 7, 92, 45, 15, 71,162,213,202,213,205,154, 97,177,175, 47,122, 26, 12,184,206,113,120, + 81,167,195,111,227,198,129,219,176, 1, 28, 0,227,136, 17,104,183,124, 57,206,251,248, 32, 36, 47, 15,230, 17, 35, 32, 57,115, + 6, 98, 47, 47,185, 59,149, 47, 22,139,205,235,214,173, 11,121,245,213, 87, 15, 17, 66,170, 53,201, 34,132,212,247,241,241, 57, +244,254,251,239, 7, 78,159, 62, 61,165,138, 48, 3,149, 74,229,142,130,130,130,113,238,238, 96,109,228,106,222,154, 53,107, 70, +199,198,198,106, 95,125,245, 85,122,253,250,117, 45, 0,187, 54,196,191, 67,135, 14,117,215,173, 91, 23,212,162, 69,139, 55, 71, +141, 26, 37, 38,132, 76,171,136,100,169, 84,170, 49,235,214,173,243,203,204,204,116,144, 43,145, 72,132,196,196, 68,200,229,114, + 71,176,115,145, 72,132,247,223,127,223,119,204,152, 49,227, 0,140,171, 40,191, 82,169,116,216,170, 85,171,234,117,239,222,157, + 75, 72, 72, 0,195, 48,144, 74,165,120,233,165,151, 68,133,133,133,225,115,230,204,137, 5,176,202,157, 58, 16,137, 68, 67,214, +174, 93, 91,191, 93,187,118,220,165, 75,151,208,166, 77, 27,156, 58,117, 10, 47,188,240,130, 40, 63, 63,191,214,164, 73,147, 70, + 2, 88,235,174,150, 73,161, 80, 52,254,245,215, 95,239,132,133,133, 57, 54, 32,181,106,213,226,123,245,234,165,187,116,233, 82, +212,137, 19, 39,178,218,180,105,115,219, 13,204, 26, 10,133,162,193,158, 61,123, 82,230,204,153,211,117,205,154, 53,125, 0,160, +101,203,150, 63,204,157, 59,247,160, 78,167,107,116,228,200, 17, 93,135, 14, 29, 18, 93,132, 12, 9, 14, 14,230,199,142, 29,171, + 42,239, 75,235,215,175,207, 1, 80,147, 16, 82,219, 22, 0,219, 35, 15, 65, 40,165, 86, 66, 72, 52, 33,228,236,238,221,187,209, +170, 85, 43,236,222,189, 27,189,122,245, 58,107,123,142,220,220, 92,156, 63,127, 30, 29, 59,118, 4,138, 3,188,255, 43,182, 88, + 60,207,131,227, 56, 36, 38, 38, 98,253,250,245, 88,176, 96, 1, 34, 35, 35, 97,177, 88, 28, 99,159,227, 56,136, 68, 34,187,182, +197,165, 69,223,106,181,226,244,233,211,248, 98,243,102, 76,155, 58, 21,106,181, 26, 0, 96, 54,155,161,203,206,134, 76, 38,115, +104,176, 42,168,203, 29,215,174, 93, 27, 23, 26, 26,122,215,209,160,253,175,109,206,130, 32, 8,176, 90,173, 40, 42, 42,194,178, +101,203,172,148,210, 29, 21,140, 73,135,198,107,220,184,113, 48, 26,255,137, 15,222,164, 73, 19, 0, 64, 68, 68, 4,154, 54,109, +234,120,207, 48, 12,117, 21,243,179,182,141, 97,112,250,118,212,172, 37, 0,128,208,208, 80, 68, 69, 69,217, 73,117,169,152,165, +113,145, 71,154, 96,149,197, 20, 47,222, 76, 93,244,234,164, 37, 75,148, 50, 86,244, 86,223, 39, 81, 83, 43, 6,228, 62, 16,119, +156, 12,162, 13, 47,238, 0,186, 27,192, 47,147,177,180,159,142,137,221, 82,244, 93, 93, 31, 31,255,235, 58,221, 61,198,117, 34, +177,172, 75,157,122,245,201,237, 20, 29, 56,142,131,210,203, 15,109,251,190, 13,150,101,160,210,250,129,240,134,127,212,156, 12, + 11,142,229,160,203, 55, 32,162,118, 61, 70, 42,147,119,169,136, 96,121,121,137, 86, 78, 28,220, 86,198,200, 50,129, 16,137,211, + 84, 44, 1,227,155,143, 9, 61, 34,229,177, 63,252,189, 18,185,150,174, 46, 85,140, 93, 99,101,181,226,183,113,227,208,117,237, + 90,252, 14, 64, 4, 32,102,237, 90, 92,142,141, 69,128,197, 2, 41, 0,214,104,132,181,196,153,189,139, 11, 15,250,246,237,139, +204,204,204,192,169, 83,167, 86,154,100,201,229,242, 47, 8, 33, 61, 69, 34,145,153, 16, 2,134, 97, 28,193,185,237,175,205,102, +179,152,101,217, 61,153,153,153,110, 31,237, 17, 66,234,123,123,123, 31, 58,126,252,120,160, 82,169,196,172, 89,179,170,132, 92, +169,213,234,223, 71,142, 28, 89,243,139, 47,190,248,137, 16,210,195, 85,146, 85,146, 92,173, 93,187, 54,103,253,250,245,159, 57, + 31, 5, 82, 74, 83, 8, 33, 27, 90,180,104,241,122,108,108,172, 22,192,232, 81,163, 70,161, 34,146, 37,149, 74, 59,215,169, 83, + 7, 58,157,206, 49,193, 74,165, 82, 0,128, 82,169,132,151,151, 23,196, 98, 49,140, 70, 35,162,163,163,137, 68, 34,105,239, 74, +158,213,106,117,207,126,253,250,113,199,142, 29, 67,106,106, 42,188,188,188,160, 84, 42,193,243, 60, 94,123,237, 53,241,242,229, +203,159,117,151, 96,133,133,133,245,233,218,181, 43, 23, 23, 23,135,155, 55,111,194,104, 52,226,202,149, 43,208,104, 52,120,229, +149, 87,196,139, 23, 47,126,206, 93,130, 5,160,113,108,108,108,154, 51,185,178,139, 82,169, 36,245,235,215,215,249,250,250,198, + 0,184,237, 14,230, 27,111,188,145,190,112,225,194,142,251,247,239,159,108,255,112,255,254,253,147, 0,224,163,143, 62, 58,226, +239,239, 31, 3,192, 85,130, 5, 74,169,240,127,255,247,127,183, 36, 18, 9, 68, 34, 17, 36, 18,201, 93, 73, 44, 22,131, 97, 24, +181,125, 74,121,140,181, 69, 45, 0,124,136,226, 27, 86, 83, 41,165, 39,171, 9,201,250,147, 16, 18,221,171, 87, 47, 7,201,218, +187,119, 47,122,244,232,129,156,156, 28,196,197,197, 57,147,171,127,203, 6, 11,130, 32, 64, 36, 18, 97,201,146, 37, 48,155,205, +216,178,101, 11,118,238,220,121,215, 28,170,209,104,240,241,199, 31,187,117,156,197,243, 60, 54,110,220,136,201,147, 38, 57,200, +149,109, 83,141,160,192, 64,248,250,249, 33, 62, 62,190, 66,130,149,157,157, 61,115,215,174, 93, 40,207,200,125,215,174, 93,142, +215,206, 70,238,174,228,147,101, 89, 24,141, 70, 60,253,244, 63,161, 92,223,120,227, 13,199,107,157, 78, 7,150,101,237,117, 65, + 92,197, 52, 80,160,175,236,159,207,122, 78,152,224,120,157,153,153, 89, 38,230,227,160,181, 42, 85,131, 85,154, 92, 77, 47, 88, +193,145,148,166, 11,199, 62, 51,172,102,128, 23,168, 62, 13,226,167,102,226,175, 12, 57,150, 44,219, 3, 0,120,231,165,230,104, +210,109, 30, 76,159, 63,131,113,109, 88,201,203,137,198,137, 0,166,223, 59,224,132, 6,161, 53, 66,240,215,245,243,224, 88, 22, + 18, 47, 63,120,249, 4, 66,176,154,144,155,126, 19,135,190, 89, 9, 0, 88,179,113, 7, 24,134, 1,199,177, 48,154,120, 68,214, + 12,129, 32, 8, 13,202,203,231, 19, 64,219,206,129,126,173, 34, 34,124, 8, 26,230,224,158, 8, 64,205,164,136, 76, 86,145, 54, + 42,121,203,236,220,188,182, 23,129,227, 21, 85,140,204,134, 18, 12, 64,188, 97, 3,126, 7,208,122,109,241, 90,117, 37, 54, 22, +170, 13, 27,160,180,125, 71, 74, 8,242,120,190, 82, 3, 28, 0,162,162,162,176,102,205,154,192, 49, 99,198, 84,138,100, 21, 21, + 21,205,215,104, 52, 93, 55,108,216, 16,216,175, 95,191,123,158, 95,191,126, 29, 29, 59,118, 76, 75, 77, 77,157,127, 63,228, 74, +171,213,226,206,157, 59,247,125,110,110, 39, 87,251,246,237, 11, 15, 13, 13, 69,116,116,180,255, 59,239,188,227, 14,201,154,238, + 76,174, 70,141, 26,245, 55,128, 0, 66, 72, 73,130, 66,108,207,158,116, 34, 89,185, 0, 22,151,179,243, 12, 87, 42,149, 72, 79, + 79,199,176, 97,195,112,245,234, 63, 10,207,144,144, 16,199,206, 46, 62, 62, 30,254,254,254, 32,132, 4,184, 82,102,127,127,255, + 64,147,201,132, 17, 35, 70,224,206,157,127,204, 21,107,212,168, 97,175, 83, 63,119,235, 49, 48, 48, 48,208, 96, 48,160, 67,135, + 14, 40, 42, 42, 2, 0, 12, 26, 52, 8, 34,145, 8,233,233,233, 16,137, 68,126,149,104, 30,191, 94,189,122,149,233, 34, 69,163, +209,152,189,189,189,159,112, 19,211,247,185,231,158, 75, 90,187,118,237, 61, 71,117,167, 78,157,122,222,199,199,103,191,143,143, + 79,125, 55, 49, 5,103, 50, 37, 22,139,239, 34, 88, 34,145, 8, 12,195, 8,120,252,229, 3, 0,246, 91,109,171, 1, 52,173, 70, +154, 44, 7,201,218,187,119, 47, 26, 53,106,132,236,236,108, 92,186,116,233, 95, 39, 87, 78,132, 4, 28,199, 57, 54,199, 50,153, + 12,209,209,209, 14,114, 69, 8, 65, 97, 97, 33, 56,142,179,207,215, 46, 77,126, 57, 57, 57, 8, 14, 10,130, 90,173, 70,189,200, + 72, 92,179,205, 35,246,215, 82,169, 20,132, 16, 88,173,214,138,234, 48, 31,197,182, 84,111, 87,117,243,216,201, 80,185,170,226, +144, 16, 8,130, 96,159,243,105, 85, 96,250,249,249, 65,175,215,187,138,249,232, 19, 44, 66, 72, 39, 0,135,224,116, 53,146, 16, +194, 60, 17,168, 90,191,112, 76,215, 97,207, 52,242,131, 33,227, 38,100,106, 63, 16,109, 4,150, 44,219,131,184, 27, 89, 0,128, + 37, 95,254,129,173,115,122, 2,114, 31, 68,121,101, 34, 72,205,245, 43,141, 96, 17, 80, 34, 80, 10,142, 45, 62,143,229, 56, 22, + 44,203, 64,151,145,130,229, 51, 71,219,200,213, 78,236, 62,114, 9,161,117, 26, 57,206,105, 65, 8, 64,203,239,212,254, 94,226, + 53, 99,250,183,150, 19,109, 14,160, 21,221,251, 5,111, 49, 72, 4,131,177,157, 67, 21,167,119, 21,173,185,152,107,110, 88,161, + 86,136, 16,135, 65, 59, 7, 64,236,244, 76,108,211,100, 49,246,173,177,237,214, 73, 37,136,134, 67,197, 27, 24, 24,136, 5, 11, + 22, 4, 78,153, 50,101, 11,220, 12, 12, 77, 41,189, 66, 8,233,252,218,107,175, 29,202,202,202, 10,140,138,138,130, 74,165,130, + 74,165, 66, 90, 90, 26, 6, 12, 24,144,150,154,154, 90, 89,237,216,230,145, 35, 71, 6,138,197, 98, 92,191,126, 29, 62, 62, 62, + 14, 98, 88, 89,114,165,209,104,126,223,191,127,127,120,221,186,117,113,249,242,101, 60,241,196, 19,216,190,125,187,255,139, 47, +190,232, 18,201,146,203,229,125,109,132, 9,177,177,177,218,216,216,216, 78, 0, 58, 85,244,219,177,177,177,218,183,223,126,251, +185,242, 8,150, 72, 36,186,163,211,233,130,228,114, 57,190,249,230, 27,168, 84, 42, 40, 20, 10,132,132,132, 64,167,211, 65,161, + 80,128, 82, 10,139,197, 98,159, 36,178, 92, 41,119, 70, 70, 70, 26,207,243, 97, 63,253,244, 19, 50, 50,254,241,137, 23, 30, 30, + 14,155,189, 70,166,187,117,153,156,156,156, 70, 8, 9,251,235,175,191,144,144,144,128, 30, 61,122,224,187,239,190, 67,243,230, +205, 1, 0, 38,147,169, 50,206,247,120,150,101,105, 57,237, 71, 0,120, 87, 37,166,109,209,114, 11, 83, 16, 4,193, 78,174,156, +255, 58,147,174, 10,126,243,113, 17, 47,231,253, 65,117,205,100,143, 30, 61,160,211,233,160, 82,169, 42, 92,128, 31, 54,193, 18, +137, 68,152, 61,123, 54, 70,143, 30,141,192,192, 64, 76,158, 60, 25, 28,199, 57,146,243, 73,128, 59, 18, 16, 24, 88,238,115,187, + 13, 86, 5,243,165,218,203,203,107, 54,195, 48, 3, 89, 23, 42,142,231,121, 94, 16,132, 29,185,185,185,229,186,105,176, 27,164, +187,210, 22,206,117, 80, 65, 94,239, 27,179, 52, 46,242, 40,139,189,116,135,108,170,185, 67,206,228,234,253,209, 93,134, 61,211, +200, 27, 63, 28, 56, 9,177, 57, 7, 48,229,151,211,178, 22, 16,177, 18,129, 94,162,208, 82, 43,159, 97, 47, 39, 38, 37,195,215, + 91,101, 35, 87,182,196, 48,104,210,168,120,243,186,251,200, 37,132,214,110, 4,142,101,193,177, 44, 84,114, 41,210, 82, 83,192, +113,204,229,178,126,182, 49,139,254,253,235,135, 69, 4, 6, 72,128,198,229, 12,128, 24, 53, 66,131, 37,232,238, 43, 11,111,204, +162,127, 5,132, 5, 82, 27,193,202, 7, 96, 26, 49, 2,209,107,215,226, 74,108, 44,110,198,198,162,214,218,181,192,136, 17, 16, +240,207,173, 66,190, 18, 26, 44,123, 71,180, 19,161,233,211,167,167,101,101,101, 13,169,228,110,241, 74,118,118,118,231,169, 83, +167,166,101,102,102, 66,161, 80, 32, 37, 37,229,190,200, 21, 0, 24, 12,134, 87,214,174, 93,155,118,232,208, 33,168, 84, 42,168, +213,234, 74, 19, 44,187,230,106,230,204,153, 53,195,194,194, 16, 31, 31, 15, 47, 47, 47,248,250,250,162, 73,147, 38, 56,118,236, +152,127, 88, 88,216, 79,182, 91, 70,229,229,233,251,181,107,215,230, 0,192,218,181,107,115, 8, 33,135, 9, 33,159, 18, 66, 86, +151, 72,159, 18, 66, 14, 59,127,215, 96, 48,124, 91, 30,182,201,100, 58,124,233,210, 37,170, 80, 40,192,178, 44,204,102, 51,100, + 50,153,163,189,236,134,185, 0, 96, 51, 60, 61,234, 74,217,243,243,243,247,126,254,249,231,150,176,176, 48, 60,249,228,147,136, +137,137, 65,155, 54,109, 16, 30, 30,142,217,179,103,155, 10, 10, 10,246, 86,130, 96,237,222,190,125,187, 37, 44, 44, 12, 49, 49, + 49,144, 74,165,104,210,164, 9, 66, 66, 66,176, 96,193, 2, 83,110,110,238,222, 74, 52,211,237,243,231,207,179,229,144, 91, 13, + 92,184,141, 91, 66,238,156, 62,125,154,109,221,186,245, 15, 37, 31,180,108,217,242, 7,149, 74,229, 5,192, 93,187, 62,234, 76, +170,164, 82,169, 35,217, 63,231, 56,238,191,160,193, 26, 7,224,111, 0,241, 0, 38, 87,167,140, 57,223, 22,204,202,202,194,165, + 75,151,112,230,204, 25,180,110,221, 26, 71,143, 30, 5,138,221, 52, 52,251, 23,243, 7, 74, 41, 68, 34, 17,162,162,162,240,246, +219,111, 99,207,158, 61,184,114,229, 10, 44, 22,139,131, 0,217,109, 46,221,209, 96,137,197, 98, 4, 6, 6,194, 98,177, 56,180, + 87, 0,112,237,234, 85,112, 28, 7, 65, 16, 96, 50,153, 42,212, 96,121,121,121,205, 94,183,110,221,155,153,153,153,193, 25, 25, + 25, 1,206, 41, 45, 45, 45, 32, 37, 37, 37, 32, 41, 41, 41,224,206,157, 59, 1,183,110,221, 10,184,121,243,102,240,162, 69,139, +222,244,242,242,154,237,234, 26,212,164, 73, 19,188,241,198, 27,142,180, 98,197, 10, 71, 58,116,232,208, 63,202, 14, 55,214,181, +168, 89, 75,208, 51,131, 58,210, 30,127,226, 72,113,239,140, 42, 15,243, 46, 46,242, 88,104,176,156,217, 39, 0, 52, 8, 82,204, +123,255,181,142,195,158,126,194, 11,223, 31,248, 3,115,190,189,113, 57,114,152,127, 84, 93,239, 12, 8, 25,151,240,206, 75,205, +177,228,203, 63, 0, 20, 31, 17, 10,233,113,160,217,241,160,234, 48,220,212,101,150,122,188, 96, 53, 21, 29,188,113,253,106,151, +168,198, 45,152,212, 76,253, 93, 55, 12,162, 59, 15, 0, 33, 4, 53,106, 55, 2,203,113, 96, 89, 6, 28,203, 66,171,145,225,210, + 95,127, 9, 70,131,225, 96,105,152,209, 0,231, 43,151,124,242, 82,247, 38, 50, 4,235, 1,185,244,159,217,247,198,128, 18, 43, + 3, 7, 52, 86, 99,120,146,175,252, 96, 90,209, 39,162, 2,243, 15, 0, 44,101,237,106,212, 82, 41, 10, 1,100,138, 68,104,179, +124, 57,174,198,198, 66,189, 97, 3, 88, 20, 91, 81,251, 47, 95,142,252,205,155,193, 88,173,160, 50,217,125,105,176,210,210,210, + 48,104,208,160,251, 34, 66,206,154,172, 49, 99,198, 28, 90,176, 96, 65,224,244,233,211,171, 12,115,242,228,201,135,190,252,242, +203,192, 90,181,106, 85,186,179,169, 84,170, 73,130, 32,104, 23, 47, 94,156,186,116,233, 82,148,180, 23,179, 17, 28,169, 86,171, + 93, 2,160, 75, 57, 80,115, 70,141, 26, 37, 6, 48,218,166,201,122,114,212,168, 81,199, 41,165,211, 74,212,239,172, 53,107,214, + 12,114, 58, 74,252, 20,192,242,242,242,152,151,151,183,250,237,183,223, 30,241,219,111,191,249,201,100, 50, 16, 66, 32, 22,139, + 81,175, 94, 61,155,230,181,216,224,149, 82,138, 9, 19, 38,100,166,167,167,187,228,166,193,104, 52,110,156, 51,103, 78, 23,131, +193, 16, 62,124,248,112,177,183,183, 55,210,210,210,240,225,135, 31,154, 54,110,220,120,167,160,160,192, 93, 91, 41, 88, 44,150, +141, 51,102,204,232,172,215,235,107,191,250,234,171,226,220,220, 92, 24, 12, 6, 76,156, 56,209,180, 97,195,134, 68,131,193,224, +182,163,222, 54,109,218, 92,191,117,235, 86,251,194,194,194,108,133, 66, 81, 82,187, 71,148, 74,101, 11, 0,155,221,193,140,142, +142,142,191,125,251,118,235,121,243,230, 29,182, 88, 44,162, 83,167, 78,245,177,147,171, 79, 62,249,228,144, 76, 38,235, 10,247, +141,241, 5,169, 84,122,151,198,170,228,107,142,227, 30,123, 13, 22,165,244, 16,138, 93, 95, 84, 43, 41, 73,174,226,226,226,208, +165, 75,241,144, 62,122,244, 40,218,181,107,135,163, 71,143,162,125,251,246,255,170,155, 6, 59,193,226, 56, 14, 47,190,248, 34, +186,117,235,134,154, 53,107, 58,198,185,179,145,187, 59, 36,195,106,181,162,113,227,198, 48,154, 76, 16,139,197,142, 35, 72,142, +227,224, 31, 16,128,235,215,175,187,164,193, 98, 24,102, 96,223,190,125,153, 11, 23, 46, 96,240,224,193,248,226,139, 47,202,252, +238,203, 47,191,140,109,219,182,161,111,223,190,204,187,239,190, 91,174,155, 6,187,113,185, 43,101,178,175,211, 21,105,240,170, + 10,211,153,139, 60, 54, 4,203,201,185, 23,106,251, 43,134,119,171,199,225,251,131,127, 96,206,247,183, 55,242,148,126,243,205, +217,236, 31, 39,183, 3,204, 59, 94, 66,147, 1,155,139,143, 5, 1, 8,233,113, 48,239,120, 25, 68,225,135, 35, 73, 34,228, 26, +204,187, 75,239,112,230, 47,190,219,178,242,237,214,171,218,251, 7, 7,120, 65,151,107,112,144,172,179,135,118, 2, 0,250,143, +154, 15,142, 45, 62, 58,212,168,100,144,139, 89,124,189,233,163, 76,179,185,168,212, 94, 37,136,152,209,175,182,173,231,229,229, + 69,129,134,226,187, 27,169,246,206,123,137, 86, 51,111,248,197,101,227,165,186, 42,205,242, 11, 57,163, 1,124,114,143, 6, 35, + 39,199,144,127,230,140,188,195,150, 45,184,212,175, 31,106,228,231, 35,206,219, 27,254, 86, 43, 84,118,109,213,134, 13,200,255, +226, 11,200,172, 86,192,203, 11, 89, 43, 87,194,122,254, 60,172,121,121, 6,119, 9,214,181,107,215,238, 91,203, 84, 26, 33,154, + 50,101,202,150,172,172,172, 33, 85,137,249,202, 43,175, 28, 58,112,224, 64, 96,101,113,242,243,243,199, 3, 24, 95, 5,249, 17, + 8, 33,211,108, 14,237, 70,199,198,198,106, 79,159, 62, 61,130, 16,178,138, 82,154, 98,171,219,128,145, 35, 71,190, 86,130, 92, + 85,120,139,144, 82,122, 91,165, 82,205, 29, 63,126,252,252,165, 75,151,170,236, 6,237,231,206,157,131,213,106,133, 72, 36, 2, +207,243, 24, 57,114,164, 62, 43, 43,107, 73, 89, 30,152, 75,193,181, 18, 66, 94,158, 63,127,254,200,143, 62,250,168, 55,203,178, +254, 60,207,103, 24, 12,134,159, 12, 6,195,218,202,220,162,178,213,195,208,233,211,167, 15, 93,182,108, 89, 95,134, 97, 2,172, + 86,107,102,126,126,254, 46,131,193, 80, 41,223, 90,199,143, 31,207, 88,181,106,213,141,140,140,140, 6,161,161,161,185, 42,149, +202,100, 50,153, 88,185, 92,174, 81, 42,149,209, 0, 78, 0,184,232, 14,230,153, 51,103, 82, 63,253,244,211, 4,163,209, 24,245, +233,167,159, 30,209,104, 52, 7, 8, 33, 68, 44, 22,123,203,229,242, 46, 0, 14, 3,184,230,150,234,157, 97, 4,103,109, 85, 73, +251, 43,137, 68,242, 95,177,193,170,118, 98,115,211,112,150, 82,138,204,204, 76, 92,184,112,193, 78,174,162, 1,160,125,251,246, +103,237, 36,235,204,153, 51,136,137,137, 57, 75, 8,121,232,110, 26,156, 53, 88,118, 34, 85,179,102, 77,199,123,231,228,100,131, +229,146,240, 60, 15,177, 88, 12,142,227, 16, 28, 18,226,248, 45, 74, 41,174, 95,191, 14,157, 78,231, 18,193, 98, 89,150, 37,132, + 96,240,224,193, 46,253,238,255,253,223,255,225,240,225,195, 96, 93,100,131, 44,203, 34, 34, 34,194,165,147, 22,184,104, 47,197, +178, 44, 66, 67, 67, 43,141,233,204, 69, 30, 27,130,229, 44,241,233,134,121, 47,127,120,236,221,139,169, 69,223, 92, 74, 43,124, + 27, 0,221, 17,167,248,165,137, 63,251,204, 51,245, 19, 97, 92,219, 30, 68, 83,236,116,141,234, 83, 64,148,129, 72, 20,106, 96, +214, 15,151, 83,173, 32,139,203, 88, 12,146,197, 50,197,180, 77,235, 62, 89, 58,114,204, 4, 85, 92,124, 26,114,245, 70,176, 44, +227, 60,105,130,227, 88,104,148, 50,132, 5,121,225,203,207, 62,204,207,207,203,153, 94, 86, 92,194,112,181, 56,182,107,139,186, + 82, 4, 21, 0, 69, 50,160,232,159,206, 74,255,234, 99, 91,213, 75, 40,169, 26,105,241,236,237, 2,217,119,183, 11, 98, 75, 35, + 88, 69, 38,211, 51,239, 62,251,236,207,243,126,252, 81,209,224,155,111,144,246,194, 11, 8,201,203,131, 20,184,203, 38,139,177, + 88, 0, 47, 47,100,126,241, 5, 10,121, 30, 75,135, 15, 47, 44, 50,155,187,187,169,129, 16,119,234,212,169,202,200,149, 51, 33, +130,155,118, 92,174,146,172,110,221,186, 29,162,148, 74,171,193,206,221, 78,178,204,167, 79,159,126,237,200,145, 35,241,184, 59, +224,103,206,145, 35, 71,226, 95,125,245, 85,178,126,253,250, 13, 0,102,184,234,120, 83,175,215,127,162,213,106,209,177, 99,199, + 25, 11, 23, 46,244,109,222,188, 57, 2, 2, 2,144,159,159,143, 51,103,206, 96,220,184,113,186,188,188,188,133,217,217,217, 75, +221,204, 51,111,211,212,172,173,202,122, 0,240,185, 45, 85,137,188,254,250,235,231,226,227,227,179,252,253,253, 91,137,197,226, + 39, 81,108,231,147, 10, 96,131,187, 68,200, 46,163, 71,143,254, 43, 62, 62, 62,179, 70,141, 26,173,109,152, 90, 0, 73, 0,214, + 85, 2, 51,249,143, 63,254, 8,109,209,162, 5, 35, 18,137, 40,203,178, 16,137, 68,148,227, 56,106,179,155,161, 0,176,107,215, + 46, 41, 0, 29, 60,242,176,199,166,195, 77, 67, 74, 74,138,131, 92, 57, 57, 26,141,110,223,190,253, 89, 27,185,178, 63,179,254, + 75,121,197,156, 57,115,176,102,205, 26, 84,228,129,220,118, 91,143, 84,132,103,215, 96,241, 60, 15,179,217,140,184,184, 56, 16, + 66,192,243,188,227, 88,208,238,162,193,106,181,150,123,251,156,231,121,222,100, 50,225,171,175,190,114,137,100,109,221,186, 21, + 69, 69, 69,224, 43, 96,110,206, 46, 21,154, 54,109, 10,157, 78,231,184,196, 19, 29, 29,237,248,158,217,108,118,139,176,218, 49, +163,162,162,144,153,153, 9, 63,191,226,123, 54, 97,175,196,254,163,108, 41,248,239,248,253, 37,174,186, 22,104,170,213,122, 25, + 37,150,111,159,111, 36,237, 60, 48,218, 11,181,131,212, 16,137,101, 72,206,179, 98,255,197, 60,172, 59,148,122,199, 96,225,123, + 95, 73, 47, 56, 95, 30,142, 76,233,245, 83,243,182,221,218,189,242,218, 56,165,222,200, 35, 33,225, 22, 50,210, 83,192, 16, 6, +193, 53, 66, 17, 30, 30, 1,185,132,193, 23,107,151, 22,156, 61,126,224, 88,126,158,174, 71, 89, 88,189,181,146,227,203, 94,104, +215,186, 78, 29, 53,129,213, 2,240, 22,192,106, 1, 4,219, 95,251,103,194,221,125,237,194,133, 28,250,238,159,186,223,127,204, + 49,149, 26, 83,106, 32, 33,237,188,189,189,127,158,243,253,247, 10,193,100,130,105,196, 8,200,141, 70,200, 9, 1,161, 20, 12, + 0, 34,147, 33,107,229,202, 98,114, 53,108, 88, 97, 78,110,174,219,161,114,252,253,253, 63,207,204,204,124,228, 60,185,251,250, +250, 78,173,140,187,135, 7,152,167, 0, 0, 57,118, 39,163, 37,118,210,254,118,173, 86, 37,112, 35,252,253,253,223,101, 24,166, + 13,165,212,151, 97,152,108, 65, 16, 78,164,167,167, 47,162,148, 94,247, 44,165,255, 90,123,219, 61,185, 87,116, 94,157, 14,224, + 45, 0,249,148,210, 4, 79,205, 61,244,118,106, 6,224, 44, 74,185, 45, 88,222,179,135, 37,190,190,190, 39,127,254,249,231,230, +181,107,215,102,156,205, 21,236,190,238,236,199, 88, 28, 87,172,135,248,237,183,223,172,131, 7, 15, 62,145,154,154,218,177, 44, + 76,141, 70,243,203,223,127,255,253,116,110,110,238, 61, 68,202,217,179,187,253,125, 65, 65, 1,198,140, 25,179, 47, 47, 47,175, +212, 80, 57, 90,173,118,217,210,165, 75,223,236,223,191, 63, 99,119, 43,225,156,236, 97,125,236,201,108, 54, 99,243,230,205,194, + 71, 31,125,244,113, 78, 78, 78,153, 71,132, 33, 33, 33,119,146,147,147, 67,237, 46, 19,202, 74,206, 18, 17, 17,145,146,144,144, + 16,242, 48, 49,255, 51, 4,203, 54, 40, 72, 84,128,114, 16, 5, 6, 50, 16, 26, 51,132, 72,172, 20, 87, 64,241,139,130, 43, 92, +117, 38,153,186,116, 68, 38, 86, 40,198,170, 85,222, 51,251, 15,121,195, 55,162, 78, 36, 9, 12,174, 1, 2, 6,105,169, 73,184, +117,227, 42,253,118,203,202,172,130, 60,221,236,194, 66,253,202,242,112, 26, 16, 82,183,142, 70,188, 93,194,163, 62,236,229, 40, + 17, 63,234,158, 29, 6, 0,179,136,185,124, 35,223, 50,248, 82, 57,139,164,157,100,205,216,185, 83,193, 53,108,120,143,131, 55, + 65, 16, 96, 61,127, 30, 75,135, 15,175, 20,185,242,136, 71, 60,114,223, 11,120,109, 84,236,227,202, 2, 32,241,223, 12, 42,252, + 31,111,163,106, 27,236,153, 16,162,244,241,241, 57,192,178,108,184, 93, 3,227,108, 19, 84, 74,160,231,132,180,180,180,174,148, +210,194,114, 48,235,168,213,234,149, 60,207,183,116, 37,216, 51,203,178,167,242,243,243,199,150, 23,236,249, 65,220, 34,244,243, +243,187,126,235,214,173, 58,246, 91,209,206,107,101,201,122, 0,128,107,215,174,161, 83,167, 78,183, 82, 82, 82, 34, 30, 38,230, +127,138, 96, 85,113,231, 14, 17, 75, 85, 67, 37,114,217, 83,130,197, 26, 5, 2,112, 34,209,101, 83,145,225,160,209,160,223, 84, +214,177, 96, 73,194,119, 63,121,160, 21, 20,126, 32, 33,237,164, 98,241, 47, 98, 47, 47,121,105, 95,181,230,229, 25,138,204,230, +103, 60,228,202, 35, 30,241,136, 71, 60,242, 8, 17,223,250, 62, 62, 62, 63,139, 68, 34,169, 51,137, 44,249,218,177,214, 89,173, + 69, 25, 25, 25, 61,202, 59,109,121, 16,152,143,188,216,153,166,171,201,206, 75, 92,252,110, 55, 87, 49,109,169, 83,117,199,124, +128,101,167, 85,136,217,201,134, 57,235, 17,201,103,167,234,138,233,196,195, 93,194,117, 7,211,213, 62,229,102, 62,105, 85,231, +243, 65, 97, 86,213, 56, 42, 37,159,244, 1,180,251,172, 71, 36,159,157,170, 27,102,201,254,227, 10,174,187,152,174,244,169, 74, +228,147, 86,117, 62, 31, 20,230,253,142,163,114,242, 73,239,183, 47,149,209,246,179,220,229, 30,143, 98,226,220,100,189,244, 1, +145, 60,226,132, 79,170, 43,166,115, 61, 84,165, 75,255, 7, 16, 30,224, 80, 85, 99,150,168,207,170,146, 89,182, 27, 35,135,225, +130,163, 80,119,202, 94, 21,237, 94,162,172, 85,130,235,140, 89, 85,117,233,140, 83, 85,253,254, 65, 99, 86,213, 88, 42,137, 89, + 21,253,190,180,118,127,128,109, 84, 85,249,172,146,177,244, 32,250,124, 41,253,231,190,113, 75, 98, 86,197, 88, 42,137, 89, 21, +253,254, 97, 96, 86,197, 88, 42, 13,179, 42,250,125, 89,109,255, 95,209, 20, 50,149,169,172, 7,164,178,172,242, 0,143, 15, 34, + 34,247,131, 32,153,132, 16,106,243, 96, 91,237, 49,171,184,141,102,217, 48,103, 85, 33,102,231,170,106,163, 7,209,223,157, 49, +171, 10,191, 36, 78, 85,180, 83,105,152,247,155,223, 50,242, 89,229,101,191,223,126,255,176, 48,171,184,141,170,100, 44,149,192, +236, 92,197,155,128,206, 78,239,103, 85, 37,102, 85,141,165, 82,242,121,223,237, 84, 26,230,253,230,183,140,124, 86,121,217,171, + 98, 13,121, 80,184,143,130,112,213, 33, 19, 15,130, 8,217, 7, 93, 85, 98, 63, 8, 45,206,131,210,180, 85,149, 22,167, 20,220, +195, 85, 8,119,168,170,243,105,203, 31,121,156,156,213,121,198,146,103, 44, 61,202, 99,169,180,126, 67, 41,157, 69, 8,153, 89, +157,250,121, 73,204,170, 34, 66,165,148,253,190,198, 82,201,255,173,138,177, 84, 1, 38,121, 16,229,175,234,241, 84, 29,133,169, + 46, 25,177,177, 90,250, 0,240, 58, 87,231, 6,120, 64,249,236,252, 40,148,253, 65,228,147, 16, 50,235, 1,149,253, 81,169, 83, +207, 88,242,140,165,106, 55,150, 74,244,201,206, 85,165, 25,170,234,141, 84, 73,204,170,248, 13,103,140,170,234,163, 15,186,236, + 85, 57,150, 30, 68,219, 63, 42,242,255, 3, 0, 76, 61, 50,167, 83, 88, 95, 69, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 6479030bcd1..5cc35d4ad77 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -41,10 +41,13 @@ struct View3D; struct ViewContext; struct RegionView3D; struct SK_Sketch; +struct IDProperty; +struct MeshDeformModifierData; typedef struct EditBone { struct EditBone *next, *prev; + struct IDProperty *prop; /* User-Defined Properties on this Bone */ struct EditBone *parent;/* Editbones have a one-way link (i.e. children refer to parents. This is converted to a two-way link for normal bones when leaving editmode. */ @@ -92,6 +95,7 @@ typedef struct EditBone /* armature_ops.c */ void ED_operatortypes_armature(void); +void ED_operatormacros_armature(void); void ED_keymap_armature(struct wmKeyConfig *keyconf); /* editarmature.c */ @@ -111,6 +115,7 @@ EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, EditBone *ebo); / void ED_armature_sync_selection(struct ListBase *edbo); void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d); +EditBone *addEditBone(struct bArmature *arm, char *name); /* used by COLLADA importer */ void transform_armature_mirror_update(struct Object *obedit); void clear_armature(struct Scene *scene, struct Object *ob, char mode); @@ -158,6 +163,10 @@ char * BIF_nameBoneTemplate(const struct bContext *C); void BDR_drawSketch(const struct bContext *vc); int BDR_drawSketchNames(struct ViewContext *vc); +/* meshlaplacian.c */ +void harmonic_coordinates_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, + float *vertexcos, int totvert, float cagemat[][4]); + #endif /* ED_ARMATURE_H */ diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 802ceff1c07..97a08845020 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -116,7 +116,7 @@ typedef struct bCommonKeySrc { /* -------- */ /* mode for modify_keyframes */ -enum { +typedef enum eModifyKey_Modes { MODIFYKEY_MODE_INSERT = 0, MODIFYKEY_MODE_DELETE, } eModifyKey_Modes; @@ -208,7 +208,7 @@ short id_frame_has_keyframe(struct ID *id, float frame, short filter); * WARNING: do not alter order of these, as also stored in files * (for v3d->keyflags) */ -enum { +typedef enum eAnimFilterFlags { /* general */ ANIMFILTER_KEYS_LOCAL = (1<<0), /* only include locally available anim data */ ANIMFILTER_KEYS_MUTED = (1<<1), /* include muted elements */ diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index e5f703e714e..1cd685b5f32 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -59,7 +59,7 @@ struct UvVertMap; struct UvMapVert; struct Material; struct Object; -struct recti; +struct rcti; // edge and face flag both #define EM_FGON 2 diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index b136baa6bdb..b2d92869a2f 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -42,6 +42,9 @@ struct Mesh; struct Curve; struct ReportList; struct ModifierData; +struct wmOperatorType; +struct wmOperator; +struct wmEvent; /* object_edit.c */ void ED_operatortypes_object(void); @@ -71,11 +74,15 @@ void ED_object_toggle_modes(struct bContext *C, int mode); #define EM_FREEUNDO 2 #define EM_WAITCURSOR 4 #define EM_DO_UNDO 8 +#define EM_IGNORE_LAYER 16 void ED_object_exit_editmode(struct bContext *C, int flag); void ED_object_enter_editmode(struct bContext *C, int flag); -void ED_object_base_init_from_view(struct bContext *C, struct Base *base); -struct Object *ED_object_add_type(struct bContext *C, int type); +void ED_object_base_init_from_view(struct bContext *C, struct Base *base, int view_align); +void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode); +int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); +void ED_object_add_generic_get_opts(struct wmOperator *op, int *view_align, int *enter_editmode); +struct Object *ED_object_add_type(struct bContext *C, int type, int view_align, int enter_editmode); void ED_object_single_users(struct Scene *scene, int full); diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 307dbd74872..e67bebc95a2 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -43,6 +43,7 @@ struct BMFace; struct ImBuf; struct Scene; struct bContext; +struct Main; /* for derivedmesh drawing callbacks, for view3d_select, .... */ typedef struct ViewContext { @@ -136,5 +137,11 @@ struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C); void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d); +void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene); + +int ED_view3d_context_activate(struct bContext *C); +void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, + int winx, int winy, float viewmat[][4], float winmat[][4]); + #endif /* ED_VIEW3D_H */ diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index f071111660b..ee1a23f242b 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -52,10 +52,10 @@ DEF_ICON(ICON_BLANK004) DEF_ICON(ICON_X) DEF_ICON(ICON_BLANK005) DEF_ICON(ICON_GO_LEFT) -DEF_ICON(ICON_BLANK006) -DEF_ICON(ICON_BLANK007) -DEF_ICON(ICON_BLANK008) -DEF_ICON(ICON_BLANK008b) +DEF_ICON(ICON_PLUG) +DEF_ICON(ICON_UI) +DEF_ICON(ICON_TEXNODE) +DEF_ICON(ICON_TEXNODE_SEL) /* ui */ DEF_ICON(ICON_FULLSCREEN) @@ -109,8 +109,8 @@ DEF_ICON(ICON_QUIT) DEF_ICON(ICON_URL) DEF_ICON(ICON_BLANK037) DEF_ICON(ICON_BLANK038) -DEF_ICON(ICON_BLANK039) -DEF_ICON(ICON_BLANK040) +DEF_ICON(ICON_FULLSCREEN_ENTER) +DEF_ICON(ICON_FULLSCREEN_EXIT) DEF_ICON(ICON_BLANK1) // Not actually blank - this is used all over the place /* BUTTONS */ @@ -219,7 +219,7 @@ DEF_ICON(ICON_POSE_DATA) DEF_ICON(ICON_BONE_DATA) DEF_ICON(ICON_CONSTRAINT) DEF_ICON(ICON_SHAPEKEY_DATA) -DEF_ICON(ICON_BLANK079a) +DEF_ICON(ICON_CONSTRAINT_BONE) DEF_ICON(ICON_BLANK079) DEF_ICON(ICON_PACKAGE) DEF_ICON(ICON_UGLYPACKAGE) diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index ca7401c36be..d2948852346 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -145,6 +145,7 @@ void ui_but_anim_autokey(uiBut *but, Scene *scene, float cfra) if(fcu && !driven) { id= but->rnapoin.id.data; + // TODO: this should probably respect the keyingset only option for anim if(autokeyframe_cfra_can_key(scene, id)) { short flag = 0; @@ -232,89 +233,3 @@ void ui_but_anim_remove_keyingset(bContext *C) /* this operator calls uiAnimContextProperty above */ WM_operator_name_call(C, "ANIM_OT_remove_keyingset_button", WM_OP_INVOKE_DEFAULT, NULL); } - -void ui_but_anim_menu(bContext *C, uiBut *but) -{ - uiPopupMenu *pup; - uiLayout *layout; - int length; - - if(but->rnapoin.data && but->rnaprop) { - pup= uiPupMenuBegin(C, RNA_property_ui_name(but->rnaprop), 0); - layout= uiPupMenuLayout(pup); - - length= RNA_property_array_length(&but->rnapoin, but->rnaprop); - - if(but->flag & UI_BUT_ANIMATED_KEY) { - if(length) { - uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); - } - else { - uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); - } - } - else if(but->flag & UI_BUT_DRIVEN); - else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { - if(length) { - uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); - uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - } - else - uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); - } - - if(but->flag & UI_BUT_DRIVEN) { - uiItemS(layout); - - if(length) { - uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1); - uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); - } - else - uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); - - uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button"); - if (ANIM_driver_can_paste()) - uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); - } - else if(but->flag & UI_BUT_ANIMATED_KEY); - else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { - uiItemS(layout); - - if(length) { - uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1); - uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0); - } - else - uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0); - - if (ANIM_driver_can_paste()) - uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); - } - - if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { - uiItemS(layout); - - if(length) { - uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1); - uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); - } - else { - uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); - uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); - } - } - - uiItemS(layout); - - uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button"); - - uiPupMenuEnd(C, pup); - } -} - diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c963848b923..c689b5a73c7 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -51,6 +51,7 @@ #include "ED_screen.h" #include "ED_util.h" +#include "ED_keyframing.h" #include "UI_interface.h" @@ -3378,6 +3379,145 @@ static uiBlock *menu_change_hotkey(bContext *C, ARegion *ar, void *arg_but) return block; } +static int ui_but_menu(bContext *C, uiBut *but) +{ + uiPopupMenu *pup; + uiLayout *layout; + int length; + char *name; + + if((but->rnapoin.data && but->rnaprop)==0 && but->optype==NULL) + return 0; + + + if(but->rnaprop) + name= (char*)RNA_property_ui_name(but->rnaprop); + else if (but->optype) + name= but->optype->name; + else + name= "<needs_name>"; // XXX - should never happen. + + pup= uiPupMenuBegin(C, name, 0); + layout= uiPupMenuLayout(pup); + + if(but->rnapoin.data && but->rnaprop) { + + length= RNA_property_array_length(&but->rnapoin, but->rnaprop); + + if(but->flag & UI_BUT_ANIMATED_KEY) { + if(length) { + uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); + uiItemBooleanO(layout, "Replace Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframes", 0, "ANIM_OT_delete_keyframe_button", "all", 1); + uiItemBooleanO(layout, "Delete Single Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + } + else { + uiItemBooleanO(layout, "Replace Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + uiItemBooleanO(layout, "Delete Keyframe", 0, "ANIM_OT_delete_keyframe_button", "all", 0); + } + } + else if(but->flag & UI_BUT_DRIVEN); + else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { + if(length) { + uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1); + uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + } + else + uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0); + } + + if(but->flag & UI_BUT_DRIVEN) { + uiItemS(layout); + + if(length) { + uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1); + uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + } + else + uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0); + + uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button"); + if (ANIM_driver_can_paste()) + uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); + } + else if(but->flag & UI_BUT_ANIMATED_KEY); + else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { + uiItemS(layout); + + if(length) { + uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1); + uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + } + else + uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0); + + if (ANIM_driver_can_paste()) + uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button"); + } + + if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) { + uiItemS(layout); + + if(length) { + uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1); + uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + } + else { + uiItemBooleanO(layout, "Add to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0); + uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button"); + } + } + + uiItemS(layout); + + uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button"); + + uiItemS(layout); + + + } + + + { /* Docs */ + char buf[512]; + PointerRNA ptr_props; + + if(but->rnapoin.data && but->rnaprop) { + sprintf(buf, "%s.%s", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop)); + + WM_operator_properties_create(&ptr_props, "WM_OT_doc_view"); + RNA_string_set(&ptr_props, "doc_id", buf); + uiItemFullO(layout, "View Docs", 0, "WM_OT_doc_view", ptr_props.data, WM_OP_EXEC_DEFAULT, 0); + + + WM_operator_properties_create(&ptr_props, "WM_OT_doc_edit"); + RNA_string_set(&ptr_props, "doc_id", buf); + RNA_string_set(&ptr_props, "doc_new", RNA_property_description(but->rnaprop)); + + uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + } + else if (but->optype) { + WM_operator_py_idname(buf, but->optype->idname); + + WM_operator_properties_create(&ptr_props, "WM_OT_doc_view"); + RNA_string_set(&ptr_props, "doc_id", buf); + uiItemFullO(layout, "View Docs", 0, "WM_OT_doc_view", ptr_props.data, WM_OP_EXEC_DEFAULT, 0); + + + WM_operator_properties_create(&ptr_props, "WM_OT_doc_edit"); + RNA_string_set(&ptr_props, "doc_id", buf); + RNA_string_set(&ptr_props, "doc_new", but->optype->description); + + uiItemFullO(layout, "Edit Docs (TODO)", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + } + } + + uiPupMenuEnd(C, pup); + + return 1; +} + static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) { uiHandleButtonData *data; @@ -3431,12 +3571,8 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) /* handle menu */ else if(event->type == RIGHTMOUSE && event->val == KM_PRESS) { /* RMB has two options now */ - if(but->rnapoin.data && but->rnaprop) { - button_timers_tooltip_remove(C, but); - ui_but_anim_menu(C, but); - return WM_UI_HANDLER_BREAK; - } - else if((but->block->flag & UI_BLOCK_LOOP) && but->optype) { + + if((but->block->flag & UI_BLOCK_LOOP) && but->optype) { IDProperty *prop= (but->opptr)? but->opptr->data: NULL; char buf[512]; @@ -3446,8 +3582,11 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) } } + else if (ui_but_menu(C, but)) { + return WM_UI_HANDLER_BREAK; } } + } /* verify if we can edit this button */ if(ELEM(event->type, LEFTMOUSE, RETKEY)) { @@ -4439,7 +4578,8 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, case WHEELUPMOUSE: case WHEELDOWNMOUSE: /* arrowkeys: only handle for block_loop blocks */ - if(inside || (block->flag & UI_BLOCK_LOOP)) { + if(event->alt || event->shift || event->ctrl || event->oskey); + else if(inside || (block->flag & UI_BLOCK_LOOP)) { if(event->val==KM_PRESS) { but= ui_but_find_activated(ar); if(but) { @@ -4462,9 +4602,10 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, ui_handle_button_activate(C, ar, bt, BUTTON_ACTIVATE); } } + + retval= WM_UI_HANDLER_BREAK; } - retval= WM_UI_HANDLER_BREAK; break; case ONEKEY: case PAD1: @@ -4511,9 +4652,10 @@ int ui_handle_menu_event(bContext *C, wmEvent *event, uiPopupBlockHandle *menu, break; } } + + retval= WM_UI_HANDLER_BREAK; } - retval= WM_UI_HANDLER_BREAK; break; } } diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 97bbee0a1c3..3c3b289a945 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -475,7 +475,6 @@ void ui_but_anim_copy_driver(struct bContext *C); void ui_but_anim_paste_driver(struct bContext *C); void ui_but_anim_add_keyingset(struct bContext *C); void ui_but_anim_remove_keyingset(struct bContext *C); -void ui_but_anim_menu(struct bContext *C, uiBut *but); int ui_but_anim_expression_get(uiBut *but, char *str, int maxlen); int ui_but_anim_expression_set(uiBut *but, const char *str); void ui_but_anim_autokey(uiBut *but, struct Scene *scene, float cfra); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 41a0ad7d4b0..53ccc253b99 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -336,7 +336,7 @@ static void ui_layer_but_cb(bContext *C, void *arg_but, void *arg_index) } /* create buttons for an item with an RNA array */ -static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int len, int x, int y, int w, int h, int expand, int slider) +static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int len, int x, int y, int w, int h, int expand, int slider, int toggle, int icon_only) { uiStyle *style= layout->root->style; uiBut *but; @@ -420,7 +420,10 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon str[0]= RNA_property_array_item_char(prop, a); if(str[0]) { - if(type == PROP_BOOLEAN) { + if (icon_only) { + str[0] = '\0'; + } + else if(type == PROP_BOOLEAN) { str[1]= '\0'; } else { @@ -429,9 +432,11 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon } } - but= uiDefAutoButR(block, ptr, prop, a, str, 0, 0, 0, w, UI_UNIT_Y); + but= uiDefAutoButR(block, ptr, prop, a, str, icon, 0, 0, w, UI_UNIT_Y); if(slider && but->type==NUM) but->type= NUMSLI; + if(toggle && but->type==OPTION) + but->type= TOG; } } else if(ELEM(subtype, PROP_COLOR, PROP_RGB) && len == 4) { @@ -893,13 +898,10 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper name= ui_item_name_add_colon(name, namestr); if(layout->root->type == UI_LAYOUT_MENU) { - /* whether the property is actually enabled doesn't matter, - * since the widget code for drawing toggles takes care of the - * rest (i.e. given the deactivated icon, it finds the active one - * based on the state of the setting) - */ - if ( (type == PROP_BOOLEAN) || (type==PROP_ENUM && index==RNA_ENUM_VALUE) ) - icon= ICON_CHECKBOX_DEHLT; /* ICON_CHECKBOX_HLT when on... */ + if(type == PROP_BOOLEAN) + icon= (RNA_property_boolean_get(ptr, prop))? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; + else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) + icon= (RNA_property_enum_get(ptr, prop) == value)? ICON_CHECKBOX_HLT: ICON_CHECKBOX_DEHLT; } slider= (flag & UI_ITEM_R_SLIDER); @@ -912,7 +914,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper /* array property */ if(index == RNA_NO_INDEX && len > 0) - ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider); + ui_item_array(layout, block, name, icon, ptr, prop, len, 0, 0, w, h, expand, slider, toggle, icon_only); /* enum item */ else if(type == PROP_ENUM && index == RNA_ENUM_VALUE) { char *identifier= (char*)RNA_property_identifier(prop); diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 06735badebf..a35da38ea66 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -1989,14 +1989,15 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe name= (namebuf)? namebuf: ""; /* hardcoded types */ - uiBlockSetEmboss(block, UI_EMBOSSN); - if(itemptr->type == &RNA_MeshTextureFaceLayer || itemptr->type == &RNA_MeshColorLayer) { uiItemL(sub, name, icon); + uiBlockSetEmboss(block, UI_EMBOSSN); uiDefIconButR(block, TOG, 0, ICON_SCENE, 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "active_render", 0, 0, 0, 0, 0, NULL); + uiBlockSetEmboss(block, UI_EMBOSS); } - else if(itemptr->type == &RNA_MaterialTextureSlot) { + else if(RNA_struct_is_a(itemptr->type, &RNA_MaterialTextureSlot)) { uiItemL(sub, name, icon); + uiBlockSetEmboss(block, UI_EMBOSS); uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, ptr, "use_textures", i, 0, 0, 0, 0, NULL); } else if(itemptr->type == &RNA_ShapeKey) { @@ -2006,6 +2007,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe uiItemL(split, name, icon); + uiBlockSetEmboss(block, UI_EMBOSSN); row= uiLayoutRow(split, 1); if(i == 0) uiItemL(row, "", 0); else uiItemR(row, "", 0, itemptr, "value", 0); @@ -2013,12 +2015,11 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe if(ob->mode == OB_MODE_EDIT && !((ob->shapeflag & OB_SHAPE_EDIT_MODE) && ob->type == OB_MESH)) uiLayoutSetActive(row, 0); //uiItemR(row, "", ICON_MUTE_IPO_OFF, itemptr, "mute", 0); + uiBlockSetEmboss(block, UI_EMBOSS); } else uiItemL(sub, name, icon); - uiBlockSetEmboss(block, UI_EMBOSS); - /* free name */ if(namebuf) MEM_freeN(namebuf); diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index eca4eef230c..f24ae62db8f 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -37,6 +37,9 @@ #include "UI_interface.h" #include "UI_resources.h" +#include "WM_api.h" +#include "WM_types.h" + /*************************** RNA Utilities ******************************/ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int index, char *name, int icon, int x1, int y1, int x2, int y2) @@ -58,11 +61,12 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind value= RNA_property_boolean_get_index(ptr, prop, index); else value= RNA_property_boolean_get(ptr, prop); - + + // XXX: when to do TOG, and when to do ICONTOG? for now, let's just do TOG, since ICONTOG causes too much trouble everywhere else if(icon && name && strcmp(name, "") == 0) - but= uiDefIconButR(block, ICONTOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconButR(block, TOG, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else if(icon) - but= uiDefIconTextButR(block, ICONTOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); + but= uiDefIconTextButR(block, TOG, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); else but= uiDefButR(block, OPTION, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL); break; @@ -183,4 +187,3 @@ int uiIconFromID(ID *id) return (ptr.type)? RNA_struct_ui_icon(ptr.type): 0; } - diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 246da9ddf4c..65f1f9a2f70 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -2368,7 +2368,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct uiFontStyle *fstyle= &style->widget; uiWidgetType *wt= NULL; - /* handle menus seperately */ + /* handle menus separately */ if(but->dt==UI_EMBOSSP) { switch (but->type) { case LABEL: diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c index 9c4829a9d7a..354c638817c 100644 --- a/source/blender/editors/mesh/bmesh_tools.c +++ b/source/blender/editors/mesh/bmesh_tools.c @@ -1773,7 +1773,7 @@ void EDBM_unpin_mesh(BMEditMesh *em, int swap) { BMIter iter; BMHeader *ele; - int i, types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; + int types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; int sels[3] = {1, !(em->selectmode & SCE_SELECT_VERTEX), !(em->selectmode & SCE_SELECT_VERTEX | SCE_SELECT_EDGE)}; int itermode; @@ -2627,7 +2627,6 @@ static int removedoublesflag_exec(bContext *C, wmOperator *op) Scene *scene = CTX_data_scene(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; BMOperator bmop; - char msg[100]; int count; EDBM_InitOpf(em, &bmop, op, "finddoubles verts=%hv dist=%f", @@ -3369,4 +3368,243 @@ void MESH_OT_rip(wmOperatorType *ot) /* to give to transform */ Properties_Proportional(ot); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); -}
\ No newline at end of file +} + +/************************ Shape Operators *************************/ + +/*BMESH_TODO this should be properly encapsulated in a bmop. but later.*/ +static void shape_propagate(Object *obedit, BMEditMesh *em, wmOperator *op) +{ + BMIter iter; + BMVert *eve = NULL; + float *co; + int i, totshape = CustomData_number_of_layers(&em->bm->vdata, CD_SHAPEKEY); + + if (!CustomData_has_layer(&em->bm->vdata, CD_SHAPEKEY)) { + BKE_report(op->reports, RPT_ERROR, "Mesh does not have shape keys"); + return; + } + + BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { + if (!BM_TestHFlag(eve, BM_SELECT) || BM_TestHFlag(eve, BM_HIDDEN)) + continue; + + for (i=0; i<totshape; i++) { + co = CustomData_bmesh_get_n(&em->bm->vdata, eve->head.data, CD_SHAPEKEY, i); + VECCOPY(co, eve->co); + } + } + +#if 0 + //TAG Mesh Objects that share this data + for(base = scene->base.first; base; base = base->next){ + if(base->object && base->object->data == me){ + base->object->recalc = OB_RECALC_DATA; + } + } +#endif + + DAG_id_flush_update(obedit->data, OB_RECALC_DATA); +} + + +static int shape_propagate_to_all_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + Mesh *me= obedit->data; + BMEditMesh *em= me->edit_btmesh; + + shape_propagate(obedit, em, op); + + DAG_id_flush_update(&me->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, me); + + return OPERATOR_FINISHED; +} + + +void MESH_OT_shape_propagate_to_all(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Shape Propagate"; + ot->description= "Apply selected vertex locations to all other shape keys."; + ot->idname= "MESH_OT_shape_propagate_to_all"; + + /* api callbacks */ + ot->exec= shape_propagate_to_all_exec; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/*BMESH_TODO this should be properly encapsulated in a bmop. but later.*/ +static int blend_from_shape_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + Mesh *me= obedit->data; + BMEditMesh *em= me->edit_btmesh; + BMVert *eve; + BMIter iter; + float co[3], *sco; + float blend= RNA_float_get(op->ptr, "blend"); + int shape= RNA_enum_get(op->ptr, "shape"); + int add= RNA_int_get(op->ptr, "add"); + int blended= 0, totshape; + + /*sanity check*/ + totshape = CustomData_number_of_layers(&em->bm->vdata, CD_SHAPEKEY); + if (totshape == 0 || shape < 0 || shape >= totshape) + return OPERATOR_CANCELLED; + + BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { + if (!BM_TestHFlag(eve, BM_SELECT) || BM_TestHFlag(eve, BM_HIDDEN)) + continue; + + sco = CustomData_bmesh_get_n(&em->bm->vdata, eve->head.data, CD_SHAPEKEY, shape); + VECCOPY(co, sco); + + + if(add) { + VecMulf(co, blend); + VecAddf(eve->co, eve->co, co); + } + else + VecLerpf(eve->co, eve->co, co, blend); + + VECCOPY(sco, co); + } + + DAG_id_flush_update(&me->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, me); + + return OPERATOR_FINISHED; +} + +static EnumPropertyItem *shape_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + Object *obedit= CTX_data_edit_object(C); + Mesh *me= (obedit) ? obedit->data : NULL; + BMEditMesh *em = me->edit_btmesh; + EnumPropertyItem tmp= {0, "", 0, "", ""}, *item= NULL; + int totitem= 0, a; + + if(obedit && obedit->type == OB_MESH && CustomData_has_layer(&em->bm->vdata, CD_SHAPEKEY)) { + for (a=0; a<em->bm->vdata.totlayer; a++) { + if (em->bm->vdata.layers[a].type != CD_SHAPEKEY) + continue; + + tmp.value= totitem; + tmp.identifier= em->bm->vdata.layers[a].name; + tmp.name= em->bm->vdata.layers[a].name; + RNA_enum_item_add(&item, &totitem, &tmp); + + totitem++; + } + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + +void MESH_OT_blend_from_shape(wmOperatorType *ot) +{ + PropertyRNA *prop; + static EnumPropertyItem shape_items[]= {{0, NULL, 0, NULL, NULL}}; + + /* identifiers */ + ot->name= "Blend From Shape"; + ot->description= "Blend in shape from a shape key."; + ot->idname= "MESH_OT_blend_from_shape"; + + /* api callbacks */ + ot->exec= blend_from_shape_exec; + ot->invoke= WM_operator_props_popup; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "shape", shape_items, 0, "Shape", "Shape key to use for blending."); + RNA_def_enum_funcs(prop, shape_itemf); + RNA_def_float(ot->srna, "blend", 1.0f, -FLT_MAX, FLT_MAX, "Blend", "Blending factor.", -2.0f, 2.0f); + RNA_def_boolean(ot->srna, "add", 1, "Add", "Add rather then blend between shapes."); +} + +/* TODO - some way to select on an arbitrary axis */ +static int select_axis_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; + BMEditSelection *ese = em->bm->selected.last; + int axis= RNA_int_get(op->ptr, "axis"); + int mode= RNA_enum_get(op->ptr, "mode"); /* -1==aligned, 0==neg, 1==pos*/ + + if(ese==NULL) + return OPERATOR_CANCELLED; + + if(ese->type==BM_VERT) { + BMVert *ev, *act_vert= (BMVert*)ese->data; + BMIter iter; + float value= act_vert->co[axis]; + float limit= CTX_data_tool_settings(C)->doublimit; // XXX + + if(mode==0) + value -= limit; + else if (mode==1) + value += limit; + + BM_ITER(ev, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { + if(!BM_TestHFlag(ev, BM_HIDDEN)) { + switch(mode) { + case -1: /* aligned */ + if(fabs(ev->co[axis] - value) < limit) + BM_Select(em->bm, ev, 1); + break; + case 0: /* neg */ + if(ev->co[axis] > value) + BM_Select(em->bm, ev, 1); + break; + case 1: /* pos */ + if(ev->co[axis] < value) + BM_Select(em->bm, ev, 1); + break; + } + } + } + } + + EDBM_selectmode_flush(em); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + +void MESH_OT_select_axis(wmOperatorType *ot) +{ + static EnumPropertyItem axis_mode_items[] = { + {0, "POSITIVE", 0, "Positive Axis", ""}, + {1, "NEGATIVE", 0, "Negative Axis", ""}, + {-1, "ALIGNED", 0, "Aligned Axis", ""}, + {0, NULL, 0, NULL, NULL}}; + + /* identifiers */ + ot->name= "Select Axis"; + ot->description= "Select all data in the mesh on a single axis."; + ot->idname= "MESH_OT_select_axis"; + + /* api callbacks */ + ot->exec= select_axis_exec; + ot->poll= ED_operator_editmesh; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + RNA_def_enum(ot->srna, "mode", axis_mode_items, 0, "Axis Mode", "Axis side to use when selecting"); + RNA_def_int(ot->srna, "axis", 0, 0, 2, "Axis", "Select the axis to compare each vertex on", 0, 2); +} + diff --git a/source/blender/editors/mesh/editmesh.c b/source/blender/editors/mesh/editmesh.c index e43a9903586..035d8dfc584 100644 --- a/source/blender/editors/mesh/editmesh.c +++ b/source/blender/editors/mesh/editmesh.c @@ -730,6 +730,13 @@ EditMesh *make_editMesh(Scene *scene, Object *ob) em->totedge= me->totedge; em->totface= me->totface; + if(tot==0) { + return; + } + + if(ob->actcol > 0) + em->mat_nr= ob->actcol-1; + actkey = ob_get_keyblock(ob); if(actkey) { keyco= actkey->data; @@ -935,8 +942,6 @@ void load_editMesh(Scene *scene, Object *ob, EditMesh *em) CustomData_add_layer(&me->fdata, CD_MFACE, CD_ASSIGN, mface, me->totface); mesh_update_customdata_pointers(me); - em->mat_nr= ob->actcol-1; - /* the vertices, use ->tmp.l as counter */ eve= em->verts.first; a= 0; diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c index 1be2cf85ef6..4afbdd7272e 100644 --- a/source/blender/editors/mesh/editmesh_add.c +++ b/source/blender/editors/mesh/editmesh_add.c @@ -1170,7 +1170,7 @@ static void make_prim(Object *obedit, int type, float mat[4][4], int tot, int se /* uses context to figure out transform for primitive */ /* returns standard diameter */ -static float new_primitive_matrix(bContext *C, float primmat[][4]) +static float new_primitive_matrix(bContext *C, int view_align, float primmat[][4]) { Object *obedit= CTX_data_edit_object(C); Scene *scene = CTX_data_scene(C); @@ -1180,7 +1180,7 @@ static float new_primitive_matrix(bContext *C, float primmat[][4]) Mat4One(primmat); - if(rv3d && (U.flag & USER_ADD_VIEWALIGNED)) { + if(rv3d && view_align) { Mat3CpyMat4(vmat, rv3d->viewmat); } else Mat3One(vmat); @@ -1204,7 +1204,8 @@ static float new_primitive_matrix(bContext *C, float primmat[][4]) /* ********* add primitive operators ************* */ -static void make_prim_ext(bContext *C, int type, int tot, int seg, +static void make_prim_ext(bContext *C, int view_align, int enter_editmode, + int type, int tot, int seg, int subdiv, float dia, float depth, int ext, int fill) { Object *obedit= CTX_data_edit_object(C); @@ -1213,14 +1214,13 @@ static void make_prim_ext(bContext *C, int type, int tot, int seg, if(obedit==NULL || obedit->type!=OB_MESH) { /* create editmode */ - ED_object_add_type(C, OB_MESH); - ED_object_enter_editmode(C, EM_DO_UNDO); - obedit= CTX_data_edit_object(C); + obedit= ED_object_add_type(C, OB_MESH, view_align, FALSE); + ED_object_enter_editmode(C, EM_DO_UNDO|EM_IGNORE_LAYER); /* rare cases the active layer is messed up */ newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - dia *= new_primitive_matrix(C, mat); + dia *= new_primitive_matrix(C, view_align, mat); make_prim(obedit, type, mat, tot, seg, subdiv, dia, depth, ext, fill); @@ -1229,7 +1229,7 @@ static void make_prim_ext(bContext *C, int type, int tot, int seg, /* userdef */ - if (newob && (U.flag & USER_ADD_EDITMODE)==0) { + if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA); /* adding EM_DO_UNDO messes up operator redo */ } WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -1237,8 +1237,11 @@ static void make_prim_ext(bContext *C, int type, int tot, int seg, static int add_primitive_plane_exec(bContext *C, wmOperator *op) { + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ - make_prim_ext(C, PRIM_PLANE, 4, 0, 0, sqrt(2.0f), 0.0f, 0, 1); + make_prim_ext(C, view_align, enter_editmode, PRIM_PLANE, 4, 0, 0, sqrt(2.0f), 0.0f, 0, 1); return OPERATOR_FINISHED; } @@ -1250,17 +1253,23 @@ void MESH_OT_primitive_plane_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_plane_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_plane_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_cube_exec(bContext *C, wmOperator *op) { + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + /* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */ - make_prim_ext(C, PRIM_CUBE, 4, 0, 0, sqrt(2.0f), 1.0f, 1, 1); + make_prim_ext(C, view_align, enter_editmode, PRIM_CUBE, 4, 0, 0, sqrt(2.0f), 1.0f, 1, 1); return OPERATOR_FINISHED; } @@ -1272,16 +1281,23 @@ void MESH_OT_primitive_cube_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_cube_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_cube_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_circle_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0, + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), 0.0f, 0, RNA_boolean_get(op->ptr, "fill")); @@ -1296,6 +1312,7 @@ void MESH_OT_primitive_circle_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_circle_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_circle_exec; ot->poll= ED_operator_scene_editable; @@ -1306,11 +1323,17 @@ void MESH_OT_primitive_circle_add(wmOperatorType *ot) RNA_def_int(ot->srna, "vertices", 32, INT_MIN, INT_MAX, "Vertices", "", 3, 500); RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00); RNA_def_boolean(ot->srna, "fill", 0, "Fill", ""); + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_tube_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0, + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), RNA_float_get(op->ptr, "depth"), 1, RNA_boolean_get(op->ptr, "cap_ends")); @@ -1326,6 +1349,7 @@ void MESH_OT_primitive_tube_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_tube_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_tube_exec; ot->poll= ED_operator_scene_editable; @@ -1337,11 +1361,17 @@ void MESH_OT_primitive_tube_add(wmOperatorType *ot) RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00); RNA_def_float(ot->srna, "depth", 1.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00); RNA_def_boolean(ot->srna, "cap_ends", 1, "Cap Ends", ""); + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_cone_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0, + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0, RNA_float_get(op->ptr,"radius"), RNA_float_get(op->ptr, "depth"), 0, RNA_boolean_get(op->ptr, "cap_end")); @@ -1356,6 +1386,7 @@ void MESH_OT_primitive_cone_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_cone_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_cone_exec; ot->poll= ED_operator_scene_editable; @@ -1368,11 +1399,16 @@ void MESH_OT_primitive_cone_add(wmOperatorType *ot) RNA_def_float(ot->srna, "depth", 1.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00); RNA_def_boolean(ot->srna, "cap_end", 0, "Cap End", ""); + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_grid_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"), + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"), RNA_int_get(op->ptr, "y_subdivisions"), 0, RNA_float_get(op->ptr,"size"), 0.0f, 0, 1); @@ -1387,6 +1423,7 @@ void MESH_OT_primitive_grid_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_grid_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_grid_exec; ot->poll= ED_operator_scene_editable; @@ -1397,11 +1434,18 @@ void MESH_OT_primitive_grid_add(wmOperatorType *ot) RNA_def_int(ot->srna, "x_subdivisions", 10, INT_MIN, INT_MAX, "X Subdivisions", "", 3, 1000); RNA_def_int(ot->srna, "y_subdivisions", 10, INT_MIN, INT_MAX, "Y Subdivisions", "", 3, 1000); RNA_def_float(ot->srna, "size", 1.0f, 0.0, FLT_MAX, "Size", "", 0.001, FLT_MAX); + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_monkey_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0); + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0); + return OPERATOR_FINISHED; } @@ -1413,16 +1457,23 @@ void MESH_OT_primitive_monkey_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_monkey_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_monkey_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"), + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"), RNA_int_get(op->ptr, "segments"), 0, RNA_float_get(op->ptr,"size"), 0.0f, 0, 0); @@ -1437,6 +1488,7 @@ void MESH_OT_primitive_uv_sphere_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_uv_sphere_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_uvsphere_exec; ot->poll= ED_operator_scene_editable; @@ -1447,11 +1499,17 @@ void MESH_OT_primitive_uv_sphere_add(wmOperatorType *ot) RNA_def_int(ot->srna, "segments", 32, INT_MIN, INT_MAX, "Segments", "", 3, 500); RNA_def_int(ot->srna, "rings", 24, INT_MIN, INT_MAX, "Rings", "", 3, 500); RNA_def_float(ot->srna, "size", 1.0f, 0.0, FLT_MAX, "Size", "", 0.001, 100.00); + + ED_object_add_generic_props(ot, TRUE); } static int add_primitive_icosphere_exec(bContext *C, wmOperator *op) { - make_prim_ext(C, PRIM_ICOSPHERE, 0, 0, RNA_int_get(op->ptr, "subdivisions"), + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + + make_prim_ext(C, view_align, enter_editmode, + PRIM_ICOSPHERE, 0, 0, RNA_int_get(op->ptr, "subdivisions"), RNA_float_get(op->ptr,"size"), 0.0f, 0, 0); return OPERATOR_FINISHED; @@ -1465,6 +1523,7 @@ void MESH_OT_primitive_ico_sphere_add(wmOperatorType *ot) ot->idname= "MESH_OT_primitive_ico_sphere_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= add_primitive_icosphere_exec; ot->poll= ED_operator_scene_editable; @@ -1474,4 +1533,6 @@ void MESH_OT_primitive_ico_sphere_add(wmOperatorType *ot) /* props */ RNA_def_int(ot->srna, "subdivisions", 2, 0, 6, "Subdivisions", "", 0, 8); RNA_def_float(ot->srna, "size", 1.0f, 0.0f, FLT_MAX, "Size", "", 0.001f, 100.00); + + ED_object_add_generic_props(ot, TRUE); } diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index 848930e156b..0d1057fbc08 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -460,15 +460,26 @@ void MESH_OT_sticky_remove(wmOperatorType *ot) /************************** Add Geometry Layers *************************/ -static void mesh_calc_edges(Mesh *mesh) +static void mesh_calc_edges(Mesh *mesh, int update) { CustomData edata; EdgeHashIterator *ehi; MFace *mf = mesh->mface; - MEdge *med; + MEdge *med, *med_orig; EdgeHash *eh = BLI_edgehash_new(); int i, *index, totedge, totface = mesh->totface; + if(mesh->totedge==0) + update= 0; + + if(update) { + /* assume existing edges are valid + * useful when adding more faces and generating edges from them */ + med= mesh->medge; + for(i= 0; i<mesh->totedge; i++, med++) + BLI_edgehash_insert(eh, med->v1, med->v2, med); + } + for (i = 0; i < totface; i++, mf++) { if (!BLI_edgehash_haskey(eh, mf->v1, mf->v2)) BLI_edgehash_insert(eh, mf->v1, mf->v2, NULL); @@ -496,10 +507,14 @@ static void mesh_calc_edges(Mesh *mesh) med = CustomData_get_layer(&edata, CD_MEDGE); for(i = 0; !BLI_edgehashIterator_isDone(ehi); BLI_edgehashIterator_step(ehi), ++i, ++med, ++index) { - BLI_edgehashIterator_getKey(ehi, (int*)&med->v1, (int*)&med->v2); + if(update && (med_orig=BLI_edgehashIterator_getValue(ehi))) { + *med= *med_orig; /* copy from the original */ + } else { + BLI_edgehashIterator_getKey(ehi, (int*)&med->v1, (int*)&med->v2); med->flag = ME_EDGEDRAW|ME_EDGERENDER; } + } BLI_edgehashIterator_free(ehi); /* free old CustomData and assign new one */ @@ -515,7 +530,7 @@ static void mesh_calc_edges(Mesh *mesh) void ED_mesh_update(Mesh *mesh, bContext *C, int calc_edges) { if(calc_edges || (mesh->totface && mesh->totedge == 0)) - mesh_calc_edges(mesh); + mesh_calc_edges(mesh, calc_edges); mesh_calc_normals(mesh->mvert, mesh->totvert, mesh->mface, mesh->totface, NULL); diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 465a2932d1f..0f9dceabb9e 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -269,6 +269,7 @@ void MESH_OT_edge_rotate(struct wmOperatorType *ot); void MESH_OT_select_vertex_path(struct wmOperatorType *ot); void MESH_OT_loop_to_region(struct wmOperatorType *ot); void MESH_OT_region_to_loop(struct wmOperatorType *ot); +void MESH_OT_select_axis(struct wmOperatorType *ot); void MESH_OT_uvs_rotate(struct wmOperatorType *ot); //void MESH_OT_uvs_mirror(struct wmOperatorType *ot); @@ -281,6 +282,7 @@ void MESH_OT_colors_reverse(struct wmOperatorType *ot); void MESH_OT_delete(struct wmOperatorType *ot); void MESH_OT_rip(struct wmOperatorType *ot); +void MESH_OT_shape_propagate_to_all(struct wmOperatorType *ot); void MESH_OT_blend_from_shape(struct wmOperatorType *ot); /* ******************* mesh_layers.c */ diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 8e1e53ad2a7..a756c4ac072 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -111,6 +111,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_select_vertex_path); WM_operatortype_append(MESH_OT_loop_to_region); WM_operatortype_append(MESH_OT_region_to_loop); + WM_operatortype_append(MESH_OT_select_axis); WM_operatortype_append(MESH_OT_uvs_rotate); //WM_operatortype_append(MESH_OT_uvs_mirror); @@ -143,6 +144,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_knife_cut); WM_operatortype_append(MESH_OT_rip); WM_operatortype_append(MESH_OT_blend_from_shape); + WM_operatortype_append(MESH_OT_shape_propagate_to_all); WM_operatortype_append(MESH_OT_uv_texture_add); WM_operatortype_append(MESH_OT_uv_texture_remove); @@ -270,8 +272,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_edge_flip", FKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - - WM_keymap_add_item(keymap, "MESH_OT_split", FOURKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "MESH_OT_extrude_repeat", FOURKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_edge_rotate", FIVEKEY, KM_PRESS, KM_CTRL, 0); @@ -297,6 +298,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) RNA_string_set(kmi->ptr, "name", "INFO_MT_mesh_add"); WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0); /* use KM_RELEASE because same key is used for tweaks * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT * */ @@ -323,8 +325,8 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", VKEY, KM_PRESS, KM_CTRL, 0); RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_edit_mesh_vertices"); - /* UV's */ - WM_keymap_add_item(keymap, "UV_OT_mapping_menu", UKEY, KM_PRESS, 0, 0); + kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", UKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_uv_map"); ED_object_generic_keymap(keyconf, keymap, TRUE); } diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 889aeee8180..11e2234dbb9 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -129,7 +129,7 @@ MetaElem *add_metaball_primitive(bContext *C, int type, int newname) cent[2]-= obedit->obmat[3][2]; if (rv3d) { - if (!(newname) || U.flag & USER_ADD_VIEWALIGNED || !rv3d) + if (!(newname) || U.flag & USER_ADD_VIEWALIGNED) Mat3CpyMat4(imat, rv3d->viewmat); else Mat3One(imat); diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index f2022cb490f..e68d810ab59 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -99,7 +99,7 @@ /************************** Exported *****************************/ -void ED_object_base_init_from_view(bContext *C, Base *base) +void ED_object_base_init_from_view(bContext *C, Base *base, int view_align) { View3D *v3d= CTX_wm_view3d(C); Scene *scene= CTX_data_scene(C); @@ -122,11 +122,9 @@ void ED_object_base_init_from_view(bContext *C, Base *base) VECCOPY(ob->loc, scene->cursor); } - if (U.flag & USER_ADD_VIEWALIGNED) { - ARegion *ar= CTX_wm_region(C); - if(ar) { - RegionView3D *rv3d= ar->regiondata; - + if (view_align) { + RegionView3D *rv3d = CTX_wm_region_view3d(C); + if(rv3d) { rv3d->viewquat[0]= -rv3d->viewquat[0]; QuatToEul(rv3d->viewquat, ob->rot); rv3d->viewquat[0]= -rv3d->viewquat[0]; @@ -143,8 +141,42 @@ void add_object_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menu /* keep here to get things compile, remove later */ } +void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) +{ + RNA_def_boolean(ot->srna, "view_align", 0, "View Align", "Align the new object to the view."); + + if(do_editmode) + RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object."); +} + +static void object_add_generic_invoke_options(bContext *C, wmOperator *op) +{ + if (!RNA_property_is_set(op->ptr, "view_align")) + RNA_boolean_set(op->ptr, "view_align", U.flag & USER_ADD_VIEWALIGNED); + + if(RNA_struct_find_property(op->ptr, "enter_editmode")) /* optional */ + if (!RNA_property_is_set(op->ptr, "enter_editmode")) + RNA_boolean_set(op->ptr, "enter_editmode", U.flag & USER_ADD_EDITMODE); +} + +int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + object_add_generic_invoke_options(C, op); + return op->type->exec(C, op); +} + +void ED_object_add_generic_get_opts(wmOperator *op, int *view_align, int *enter_editmode) +{ + *view_align= RNA_boolean_get(op->ptr, "view_align"); + *enter_editmode = FALSE; + + if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { + *enter_editmode = TRUE; + } +} + /* for object add primitive operators */ -Object *ED_object_add_type(bContext *C, int type) +Object *ED_object_add_type(bContext *C, int type, int view_align, int enter_editmode) { Scene *scene= CTX_data_scene(C); Object *ob; @@ -159,17 +191,22 @@ Object *ED_object_add_type(bContext *C, int type) ED_base_object_activate(C, BASACT); /* more editor stuff */ - ED_object_base_init_from_view(C, BASACT); + ED_object_base_init_from_view(C, BASACT, view_align); DAG_scene_sort(scene); + if(enter_editmode) + ED_object_enter_editmode(C, EM_IGNORE_LAYER); + return ob; } /* for object add operator */ static int object_add_exec(bContext *C, wmOperator *op) { - ED_object_add_type(C, RNA_enum_get(op->ptr, "type")); + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), view_align, enter_editmode); return OPERATOR_FINISHED; } @@ -182,7 +219,7 @@ void OBJECT_OT_add(wmOperatorType *ot) ot->idname= "OBJECT_OT_add"; /* api callbacks */ - ot->invoke= WM_menu_invoke; + ot->invoke= ED_object_add_generic_invoke; ot->exec= object_add_exec; ot->poll= ED_operator_scene_editable; @@ -191,6 +228,8 @@ void OBJECT_OT_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", object_type_items, 0, "Type", ""); + + ED_object_add_generic_props(ot, TRUE); } /********************* Add Effector Operator ********************/ @@ -217,35 +256,36 @@ void add_effector_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or me } /* for effector add primitive operators */ -static Object *effector_add_type(bContext *C, int type) +static Object *effector_add_type(bContext *C, wmOperator *op, int type) { - Scene *scene= CTX_data_scene(C); Object *ob; - - /* for as long scene has editmode... */ - if (CTX_data_edit_object(C)) - ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); /* freedata, and undo */ - - /* deselects all, sets scene->basact */ + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + if(type==PFIELD_GUIDE) { - ob = add_object(scene, OB_CURVE); + ob= ED_object_add_type(C, OB_CURVE, view_align, FALSE); + rename_id(&ob->id, "CurveGuide"); + ((Curve*)ob->data)->flag |= CU_PATH|CU_3D; ED_object_enter_editmode(C, 0); BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, CU_NURBS|CU_PRIM_PATH, 1)); + + if(!enter_editmode) ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); } - else - ob= add_object(scene, OB_EMPTY); - - ob->pd= object_add_collision_fields(type); - - /* editor level activate, notifiers */ - ED_base_object_activate(C, BASACT); + else { + ob= ED_object_add_type(C, OB_EMPTY, view_align, FALSE); + rename_id(&ob->id, "Field"); - /* more editor stuff */ - ED_object_base_init_from_view(C, BASACT); + switch(type) { + case PFIELD_WIND: + case PFIELD_VORTEX: + ob->empty_drawtype = OB_SINGLE_ARROW; + break; + } + } - DAG_scene_sort(scene); + ob->pd= object_add_collision_fields(type); return ob; } @@ -253,7 +293,7 @@ static Object *effector_add_type(bContext *C, int type) /* for object add operator */ static int effector_add_exec(bContext *C, wmOperator *op) { - effector_add_type(C, RNA_int_get(op->ptr, "type")); + effector_add_type(C, op, RNA_int_get(op->ptr, "type")); return OPERATOR_FINISHED; } @@ -275,6 +315,8 @@ void OBJECT_OT_effector_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", field_type_items, 0, "Type", ""); + + ED_object_add_generic_props(ot, TRUE); } /* ***************** add primitives *************** */ @@ -294,12 +336,14 @@ static int object_add_curve_exec(bContext *C, wmOperator *op) ListBase *editnurb; Nurb *nu; int newob= 0, type= RNA_enum_get(op->ptr, "type"); + int view_align, enter_editmode; + + object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); if(obedit==NULL || obedit->type!=OB_CURVE) { - ED_object_add_type(C, OB_CURVE); - ED_object_enter_editmode(C, 0); + obedit= ED_object_add_type(C, OB_CURVE, view_align, TRUE); newob = 1; - obedit= CTX_data_edit_object(C); if(type & CU_PRIM_PATH) ((Curve*)obedit->data)->flag |= CU_PATH|CU_3D; @@ -311,7 +355,7 @@ static int object_add_curve_exec(bContext *C, wmOperator *op) BLI_addtail(editnurb, nu); /* userdef */ - if (newob && (U.flag & USER_ADD_EDITMODE)==0) { + if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); } @@ -326,6 +370,8 @@ static int object_add_curve_invoke(bContext *C, wmOperator *op, wmEvent *event) uiPopupMenu *pup; uiLayout *layout; + object_add_generic_invoke_options(C, op); + pup= uiPupMenuBegin(C, op->type->name, 0); layout= uiPupMenuLayout(pup); if(!obedit || obedit->type == OB_CURVE) @@ -354,6 +400,8 @@ void OBJECT_OT_curve_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", prop_curve_types, 0, "Primitive", ""); + + ED_object_add_generic_props(ot, TRUE); } static EnumPropertyItem prop_surface_types[]= { @@ -372,21 +420,23 @@ static int object_add_surface_exec(bContext *C, wmOperator *op) ListBase *editnurb; Nurb *nu; int newob= 0; + int view_align, enter_editmode; + + object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); if(obedit==NULL || obedit->type!=OB_SURF) { - ED_object_add_type(C, OB_SURF); - ED_object_enter_editmode(C, 0); + obedit= ED_object_add_type(C, OB_SURF, view_align, TRUE); newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - obedit= CTX_data_edit_object(C); nu= add_nurbs_primitive(C, RNA_enum_get(op->ptr, "type"), newob); editnurb= curve_get_editcurve(obedit); BLI_addtail(editnurb, nu); /* userdef */ - if (newob && (U.flag & USER_ADD_EDITMODE)==0) { + if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); } @@ -403,7 +453,7 @@ void OBJECT_OT_surface_add(wmOperatorType *ot) ot->idname= "OBJECT_OT_surface_add"; /* api callbacks */ - ot->invoke= WM_menu_invoke; + ot->invoke= ED_object_add_generic_invoke; // WM_menu_invoke ot->exec= object_add_surface_exec; ot->poll= ED_operator_scene_editable; @@ -412,6 +462,7 @@ void OBJECT_OT_surface_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", prop_surface_types, 0, "Primitive", ""); + ED_object_add_generic_props(ot, TRUE); } static EnumPropertyItem prop_metaball_types[]= { @@ -429,21 +480,23 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) MetaBall *mball; MetaElem *elem; int newob= 0; + int view_align, enter_editmode; + + object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); if(obedit==NULL || obedit->type!=OB_MBALL) { - ED_object_add_type(C, OB_MBALL); - ED_object_enter_editmode(C, 0); + obedit= ED_object_add_type(C, OB_MBALL, view_align, TRUE); newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - obedit= CTX_data_edit_object(C); elem= (MetaElem*)add_metaball_primitive(C, RNA_enum_get(op->ptr, "type"), newob); mball= (MetaBall*)obedit->data; BLI_addtail(mball->editelems, elem); /* userdef */ - if (newob && (U.flag & USER_ADD_EDITMODE)==0) { + if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); } @@ -458,6 +511,8 @@ static int object_metaball_add_invoke(bContext *C, wmOperator *op, wmEvent *even uiPopupMenu *pup; uiLayout *layout; + object_add_generic_invoke_options(C, op); + pup= uiPupMenuBegin(C, op->type->name, 0); layout= uiPupMenuLayout(pup); if(!obedit || obedit->type == OB_MBALL) @@ -485,19 +540,20 @@ void OBJECT_OT_metaball_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "type", prop_metaball_types, 0, "Primitive", ""); + ED_object_add_generic_props(ot, TRUE); } static int object_add_text_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); + int view_align, enter_editmode; + + object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; - ED_object_add_type(C, OB_FONT); - obedit= CTX_data_active_object(C); - - if(U.flag & USER_ADD_EDITMODE) - ED_object_enter_editmode(C, 0); + obedit= ED_object_add_type(C, OB_FONT, view_align, enter_editmode); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); @@ -512,11 +568,13 @@ void OBJECT_OT_text_add(wmOperatorType *ot) ot->idname= "OBJECT_OT_text_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= object_add_text_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ED_object_add_generic_props(ot, TRUE); } static int object_armature_add_exec(bContext *C, wmOperator *op) @@ -525,14 +583,23 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) View3D *v3d= CTX_wm_view3d(C); RegionView3D *rv3d= NULL; int newob= 0; + int view_align, enter_editmode; + + object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { - ED_object_add_type(C, OB_ARMATURE); + obedit= ED_object_add_type(C, OB_ARMATURE, view_align, TRUE); ED_object_enter_editmode(C, 0); newob = 1; } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); + if(obedit==NULL) { + BKE_report(op->reports, RPT_ERROR, "Cannot create editmode armature."); + return OPERATOR_CANCELLED; + } + if(v3d) rv3d= CTX_wm_region(C)->regiondata; @@ -540,7 +607,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) add_primitive_bone(CTX_data_scene(C), v3d, rv3d); /* userdef */ - if (newob && (U.flag & USER_ADD_EDITMODE)==0) { + if (newob && !enter_editmode) { ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); } @@ -557,19 +624,23 @@ void OBJECT_OT_armature_add(wmOperatorType *ot) ot->idname= "OBJECT_OT_armature_add"; /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; ot->exec= object_armature_add_exec; ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ED_object_add_generic_props(ot, TRUE); } static int object_lamp_add_exec(bContext *C, wmOperator *op) { Object *ob; int type= RNA_enum_get(op->ptr, "type"); + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); - ob= ED_object_add_type(C, OB_LAMP); + ob= ED_object_add_type(C, OB_LAMP, view_align, FALSE); if(ob && ob->data) ((Lamp*)ob->data)->type= type; @@ -601,37 +672,19 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) /* properties */ RNA_def_enum(ot->srna, "type", lamp_type_items, 0, "Type", ""); -} - -/* add dupligroup */ -static EnumPropertyItem *add_dupligroup_itemf(bContext *C, PointerRNA *ptr, int *free) -{ - EnumPropertyItem *item= NULL, item_tmp; - int totitem= 0; - int i= 0; - Group *group; - memset(&item_tmp, 0, sizeof(item_tmp)); - - for(group= CTX_data_main(C)->group.first; group; group= group->id.next) { - item_tmp.identifier= item_tmp.name= group->id.name+2; - item_tmp.value= i++; - RNA_enum_item_add(&item, &totitem, &item_tmp); - } - - RNA_enum_item_end(&item, &totitem); - *free= 1; - - return item; + ED_object_add_generic_props(ot, FALSE); } static int group_instance_add_exec(bContext *C, wmOperator *op) { - /* XXX, using an enum for library lookups is a bit dodgy */ Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type")); + int view_align, enter_editmode; + ED_object_add_generic_get_opts(op, &view_align, &enter_editmode); + if(group) { - Object *ob= ED_object_add_type(C, OB_EMPTY); + Object *ob= ED_object_add_type(C, OB_EMPTY, view_align, FALSE); rename_id(&ob->id, group->id.name+2); ob->dup_group= group; ob->transflag |= OB_DUPLIGROUP; @@ -650,9 +703,6 @@ static int group_instance_add_exec(bContext *C, wmOperator *op) void OBJECT_OT_group_instance_add(wmOperatorType *ot) { PropertyRNA *prop; - static EnumPropertyItem prop_group_dummy_types[] = { - {0, NULL, 0, NULL, NULL} - }; /* identifiers */ ot->name= "Add Group Instance"; @@ -665,11 +715,12 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) ot->poll= ED_operator_scene_editable; /* flags */ - ot->flag= 0; + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", prop_group_dummy_types, 0, "Type", ""); - RNA_def_enum_funcs(prop, add_dupligroup_itemf); + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + RNA_def_enum_funcs(prop, RNA_group_itemf); + ED_object_add_generic_props(ot, FALSE); } /**************************** Delete Object *************************/ @@ -739,7 +790,6 @@ static void copy_object__forwardModifierLinks(void *userData, Object *ob, /* after copying objects, copied data should get new pointers */ static void copy_object_set_idnew(bContext *C, int dupflag) { - Object *ob; Material *ma, *mao; ID *id; #if 0 // XXX old animation system @@ -749,8 +799,7 @@ static void copy_object_set_idnew(bContext *C, int dupflag) int a; /* XXX check object pointers */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { relink_constraints(&ob->constraints); if (ob->pose){ bPoseChannel *chan; diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 8c0da354938..947ad72527f 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -327,7 +327,7 @@ static void test_constraints (Object *owner, const char substring[]) /* clear disabled-flag first */ curcon->flag &= ~CONSTRAINT_DISABLE; - + if (curcon->type == CONSTRAINT_TYPE_KINEMATIC) { bKinematicConstraint *data = curcon->data; @@ -395,6 +395,26 @@ static void test_constraints (Object *owner, const char substring[]) if (data->lockflag+3==data->trackflag) curcon->flag |= CONSTRAINT_DISABLE; } + else if (curcon->type == CONSTRAINT_TYPE_SPLINEIK) { + bSplineIKConstraint *data = curcon->data; + + /* if the number of points does not match the amount required by the chain length, + * free the points array and request a rebind... + */ + if ( (data->points == NULL) || + (!(data->flag & CONSTRAINT_SPLINEIK_NO_ROOT) && (data->numpoints != data->chainlen+1)) || + ( (data->flag & CONSTRAINT_SPLINEIK_NO_ROOT) && (data->numpoints != data->chainlen)) ) + { + /* free the points array */ + if (data->points) { + MEM_freeN(data->points); + data->points = NULL; + } + + /* clear the bound flag, forcing a rebind next time this is evaluated */ + data->flag &= ~CONSTRAINT_SPLINEIK_BOUND; + } + } /* Check targets for constraints */ if (cti && cti->get_constraint_targets) { @@ -414,7 +434,7 @@ static void test_constraints (Object *owner, const char substring[]) } /* target checks for specific constraints */ - if (ELEM(curcon->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO)) { + if (ELEM3(curcon->type, CONSTRAINT_TYPE_FOLLOWPATH, CONSTRAINT_TYPE_CLAMPTO, CONSTRAINT_TYPE_SPLINEIK)) { if (ct->tar) { if (ct->tar->type != OB_CURVE) { ct->tar= NULL; @@ -855,7 +875,7 @@ static int pose_constraints_clear_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pchans) { free_constraints(&pchan->constraints); - pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_CONST); + pchan->constflag &= ~(PCHAN_HAS_IK|PCHAN_HAS_SPLINEIK|PCHAN_HAS_CONST); } CTX_DATA_END; @@ -947,6 +967,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o /* curve-based constraints - set the only_curve and only_ob flags */ case CONSTRAINT_TYPE_CLAMPTO: case CONSTRAINT_TYPE_FOLLOWPATH: + case CONSTRAINT_TYPE_SPLINEIK: only_curve= 1; only_ob= 1; add= 0; @@ -1070,6 +1091,10 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase BKE_report(op->reports, RPT_ERROR, "IK Constraint can only be added to Bones."); return OPERATOR_CANCELLED; } + if ( (type == CONSTRAINT_TYPE_SPLINEIK) && ((!pchan) || (list != &pchan->constraints)) ) { + BKE_report(op->reports, RPT_ERROR, "Spline IK Constraint can only be added to Bones."); + return OPERATOR_CANCELLED; + } /* create a new constraint of the type requried, and add it to the active/given constraints list */ con = add_new_constraint(type); @@ -1119,6 +1144,7 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase } /* do type-specific tweaking to the constraint settings */ + // TODO: does action constraint need anything here - i.e. spaceonce? switch (type) { case CONSTRAINT_TYPE_CHILDOF: { @@ -1424,7 +1450,7 @@ static int pose_ik_clear_exec(bContext *C, wmOperator *op) } CTX_DATA_END; - /* */ + /* refresh depsgraph */ DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* note, notifier might evolve */ diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 782f2be4a34..7d3c298eac9 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -362,25 +362,31 @@ void ED_object_exit_editmode(bContext *C, int flag) void ED_object_enter_editmode(bContext *C, int flag) { Scene *scene= CTX_data_scene(C); - Base *base= CTX_data_active_base(C); + Base *base= NULL; Object *ob; ScrArea *sa= CTX_wm_area(C); View3D *v3d= NULL; int ok= 0; if(scene->id.lib) return; - if(base==NULL) return; if(sa && sa->spacetype==SPACE_VIEW3D) v3d= sa->spacedata.first; - if(v3d && (base->lay & v3d->lay)==0) return; + if((flag & EM_IGNORE_LAYER)==0) { + base= CTX_data_active_base(C); /* active layer checked here for view3d */ + + if(base==NULL) return; + else if(v3d && (base->lay & v3d->lay)==0) return; else if(!v3d && (base->lay & scene->lay)==0) return; + } + else { + base= scene->basact; + } - ob = base->object; + if (ELEM3(NULL, base, base->object, base->object->data)) return; - if(ob==NULL) return; - if(ob->data==NULL) return; + ob = base->object; if (object_data_is_libdata(ob)) { error_libdata(); @@ -462,6 +468,7 @@ void ED_object_enter_editmode(bContext *C, int flag) } else { scene->obedit= NULL; // XXX for context + ob->mode &= ~OB_MODE_EDIT; WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene); } @@ -1595,14 +1602,12 @@ void copy_attr_menu(Scene *scene, View3D *v3d) static int shade_smooth_exec(bContext *C, wmOperator *op) { - Object *ob; Curve *cu; Nurb *nu; int clear= (strcmp(op->idname, "OBJECT_OT_shade_flat") == 0); int done= 0; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->type==OB_MESH) { mesh_set_smooth_flag(ob, !clear); @@ -1858,7 +1863,6 @@ void auto_timeoffs(Scene *scene, View3D *v3d) void ofs_timeoffs(Scene *scene, View3D *v3d) { - Base *base; float offset=0.0f; if(BASACT==0 || v3d==NULL) return; @@ -1866,13 +1870,12 @@ void ofs_timeoffs(Scene *scene, View3D *v3d) // XXX if(fbutton(&offset, -10000.0f, 10000.0f, 10, 10, "Offset")==0) return; /* make array of all bases, xco yco (screen) */ - for(base= FIRSTBASE; base; base= base->next) { - if(TESTBASELIB(v3d, base)) { - base->object->sf += offset; - if (base->object->sf < -MAXFRAMEF) base->object->sf = -MAXFRAMEF; - else if (base->object->sf > MAXFRAMEF) base->object->sf = MAXFRAMEF; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + ob->sf += offset; + if (ob->sf < -MAXFRAMEF) ob->sf = -MAXFRAMEF; + else if (ob->sf > MAXFRAMEF) ob->sf = MAXFRAMEF; } - } + CTX_DATA_END; } diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 198838d6f05..ec8409e9aa1 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -198,11 +198,11 @@ static int group_create_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Group *group= NULL; - char gid[32]; //group id + char name[32]; /* id name */ - RNA_string_get(op->ptr, "GID", gid); + RNA_string_get(op->ptr, "name", name); - group= add_group(gid); + group= add_group(name); CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { add_to_group(group, base->object); @@ -218,12 +218,12 @@ static int group_create_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void GROUP_OT_group_create(wmOperatorType *ot) +void GROUP_OT_create(wmOperatorType *ot) { /* identifiers */ ot->name= "Create New Group"; - ot->description = "Create an object group."; - ot->idname= "GROUP_OT_group_create"; + ot->description = "Create an object group from selected objects."; + ot->idname= "GROUP_OT_create"; /* api callbacks */ ot->exec= group_create_exec; @@ -232,7 +232,7 @@ void GROUP_OT_group_create(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - RNA_def_string(ot->srna, "GID", "Group", 32, "Name", "Name of the new group"); + RNA_def_string(ot->srna, "name", "Group", 32, "Name", "Name of the new group"); } /****************** properties window operators *********************/ diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 4643b875872..22a6329a097 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -362,6 +362,9 @@ static void select_editcurve_hook(Object *obedit, HookModifierData *hmd) void object_hook_select(Object *ob, HookModifierData *hmd) { + if (hmd->indexar == NULL) + return; + if(ob->type==OB_MESH) select_editmesh_hook(ob, hmd); else if(ob->type==OB_LATTICE) select_editlattice_hook(ob, hmd); else if(ob->type==OB_CURVE) select_editcurve_hook(ob, hmd); diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 93bbc69eff8..8f27f0fbae4 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -51,6 +51,7 @@ void OBJECT_OT_center_set(struct wmOperatorType *ot); /* object_relations.c */ void OBJECT_OT_parent_set(struct wmOperatorType *ot); +void OBJECT_OT_parent_no_inverse_set(struct wmOperatorType *ot); void OBJECT_OT_parent_clear(struct wmOperatorType *ot); void OBJECT_OT_vertex_parent_set(struct wmOperatorType *ot); void OBJECT_OT_track_set(struct wmOperatorType *ot); @@ -59,6 +60,8 @@ void OBJECT_OT_slow_parent_set(struct wmOperatorType *ot); void OBJECT_OT_slow_parent_clear(struct wmOperatorType *ot); void OBJECT_OT_make_local(struct wmOperatorType *ot); void OBJECT_OT_make_single_user(struct wmOperatorType *ot); +void OBJECT_OT_make_links_scene(struct wmOperatorType *ot); +void OBJECT_OT_make_links_data(struct wmOperatorType *ot); void OBJECT_OT_move_to_layer(struct wmOperatorType *ot); /* object_edit.c */ @@ -113,7 +116,7 @@ void LATTICE_OT_select_all_toggle(struct wmOperatorType *ot); void LATTICE_OT_make_regular(struct wmOperatorType *ot); /* object_group.c */ -void GROUP_OT_group_create(struct wmOperatorType *ot); +void GROUP_OT_create(struct wmOperatorType *ot); void GROUP_OT_objects_remove(struct wmOperatorType *ot); void GROUP_OT_objects_add_active(struct wmOperatorType *ot); void GROUP_OT_objects_remove_active(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 1b0dc95480a..0683cb6842f 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -65,6 +65,7 @@ #include "RNA_define.h" #include "RNA_enum_types.h" +#include "ED_armature.h" #include "ED_screen.h" #include "WM_api.h" @@ -779,7 +780,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) int mode= mmd->modifier.mode; /* force modifier to run, it will call binding routine */ - mmd->needbind= 1; + mmd->bindfunc= harmonic_coordinates_bind; mmd->modifier.mode |= eModifierMode_Realtime; if(ob->type == OB_MESH) { @@ -796,7 +797,7 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) makeDispListCurveTypes(scene, ob, 0); } - mmd->needbind= 0; + mmd->bindfunc= NULL; mmd->modifier.mode= mode; } diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index ff0566efbcf..ccb6e8cdea3 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -83,6 +83,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_shade_flat); WM_operatortype_append(OBJECT_OT_parent_set); + WM_operatortype_append(OBJECT_OT_parent_no_inverse_set); WM_operatortype_append(OBJECT_OT_parent_clear); WM_operatortype_append(OBJECT_OT_vertex_parent_set); WM_operatortype_append(OBJECT_OT_track_set); @@ -91,6 +92,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_slow_parent_clear); WM_operatortype_append(OBJECT_OT_make_local); WM_operatortype_append(OBJECT_OT_make_single_user); + WM_operatortype_append(OBJECT_OT_make_links_scene); + WM_operatortype_append(OBJECT_OT_make_links_data); WM_operatortype_append(OBJECT_OT_move_to_layer); WM_operatortype_append(OBJECT_OT_select_inverse); @@ -103,7 +106,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_select_mirror); WM_operatortype_append(OBJECT_OT_select_name); /* XXX - weak, not compat with linked objects */ - WM_operatortype_append(GROUP_OT_group_create); + WM_operatortype_append(GROUP_OT_create); WM_operatortype_append(GROUP_OT_objects_remove); WM_operatortype_append(GROUP_OT_objects_add_active); WM_operatortype_append(GROUP_OT_objects_remove_active); @@ -195,7 +198,8 @@ void ED_operatormacros_object(void) ot= WM_operatortype_append_macro("OBJECT_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); if(ot) { WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); - WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF); } /* grr, should be able to pass options on... */ @@ -203,7 +207,8 @@ void ED_operatormacros_object(void) if(ot) { otmacro= WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate"); RNA_boolean_set(otmacro->ptr, "linked", 1); - WM_operatortype_macro_define(ot, "TFM_OT_translate"); + otmacro= WM_operatortype_macro_define(ot, "TFM_OT_translate"); + RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF); } } @@ -221,8 +226,17 @@ void ED_keymap_object(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Object Non-modal", 0, 0); /* Note: this keymap works disregarding mode */ - WM_keymap_add_item(keymap, "OBJECT_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "OBJECT_OT_posemode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, 0, 0); + RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT); + RNA_boolean_set(kmi->ptr, "toggle", 1); + + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_PRESS, KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "mode", OB_MODE_POSE); + RNA_boolean_set(kmi->ptr, "toggle", 1); + + kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", VKEY, KM_PRESS, 0, 0); + RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT); + RNA_boolean_set(kmi->ptr, "toggle", 1); kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", VKEY, KM_PRESS, 0, 0); RNA_enum_set(kmi->ptr, "mode", OB_MODE_VERTEX_PAINT); @@ -237,6 +251,9 @@ void ED_keymap_object(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Object Mode", 0, 0); keymap->poll= object_mode_poll; + /* object mode supports PET now */ + ED_object_generic_keymap(keyconf, keymap, TRUE); + WM_keymap_add_item(keymap, "OBJECT_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "OBJECT_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0); @@ -244,6 +261,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_select_mirror", MKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_parent_set", PKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_verify_item(keymap, "OBJECT_OT_parent_no_inverse_set", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_parent_clear", PKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_track_set", TKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_track_clear", TKEY, KM_PRESS, KM_ALT, 0); @@ -274,6 +292,9 @@ void ED_keymap_object(wmKeyConfig *keyconf) kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", UKEY, KM_PRESS, 0, 0); RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_make_single_user"); + + kmi= WM_keymap_add_item(keymap, "WM_OT_call_menu", LKEY, KM_PRESS, KM_CTRL, 0); + RNA_string_set(kmi->ptr, "name", "VIEW3D_MT_make_links"); WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_duplicate_move_linked", DKEY, KM_PRESS, KM_ALT, 0); @@ -287,7 +308,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe_menu", IKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe_v3d", IKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_verify_item(keymap, "GROUP_OT_group_create", GKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index c2550a6b1e8..adbeb196bc8 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -72,6 +72,7 @@ #include "BKE_object.h" #include "BKE_report.h" #include "BKE_sca.h" +#include "BKE_scene.h" #include "BKE_texture.h" #include "BKE_utildefines.h" @@ -83,6 +84,7 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "ED_anim_api.h" #include "ED_armature.h" @@ -92,10 +94,6 @@ #include "object_intern.h" -/* ************* XXX **************** */ -static int pupmenu(const char *msg) {return 0;} -static int pupmenu_col(const char *msg, int val) {return 0;} - /*********************** Make Vertex Parent Operator ************************/ static int vertex_parent_set_poll(bContext *C) @@ -638,7 +636,7 @@ static int parent_set_exec(bContext *C, wmOperator *op) what_does_parent(scene, ob, &workob); ob->partype= PARSKEL; - + Mat4Invert(ob->parentinv, workob.obmat); } else { @@ -720,6 +718,59 @@ void OBJECT_OT_parent_set(wmOperatorType *ot) RNA_def_enum(ot->srna, "type", prop_make_parent_types, 0, "Type", ""); } +/* ************ Make Parent Without Inverse Operator ******************* */ + +static int parent_noinv_set_exec(bContext *C, wmOperator *op) +{ + Object *par= CTX_data_active_object(C); + + par->recalc |= OB_RECALC_OB; + + /* context itterator */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if (ob != par) { + if (test_parent_loop(par, ob)) { + BKE_report(op->reports, RPT_ERROR, "Loop in parents"); + } + else { + /* clear inverse matrix and also the object location */ + Mat4One(ob->parentinv); + memset(ob->loc, 0, 3*sizeof(float)); + + /* set recalc flags */ + ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA; + + /* set parenting type for object - object only... */ + ob->parent= par; + ob->partype= PAROBJECT; /* note, dna define, not operator property */ + } + } + } + CTX_DATA_END; + + DAG_scene_sort(CTX_data_scene(C)); + ED_anim_dag_flush_update(C); + WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_parent_no_inverse_set(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Make Parent without Inverse"; + ot->description = "Set the object's parenting without setting the inverse parent correction."; + ot->idname= "OBJECT_OT_parent_no_inverse_set"; + + /* api callbacks */ + ot->invoke= WM_operator_confirm; + ot->exec= parent_noinv_set_exec; + ot->poll= ED_operator_object_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /************************ Clear Slow Parent Operator *********************/ static int object_slow_parent_clear_exec(bContext *C, wmOperator *op) @@ -862,28 +913,30 @@ static EnumPropertyItem prop_make_track_types[] = { static int track_set_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); + Object *obact= CTX_data_active_object(C); + int type= RNA_enum_get(op->ptr, "type"); if(type == 1) { bConstraint *con; bTrackToConstraint *data; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - if(base!=BASACT) { + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if(ob!=obact) { con = add_new_constraint(CONSTRAINT_TYPE_TRACKTO); strcpy (con->name, "AutoTrack"); data = con->data; - data->tar = BASACT->object; - base->object->recalc |= OB_RECALC; + data->tar = obact; + ob->recalc |= OB_RECALC; /* Lamp and Camera track differently by default */ - if (base->object->type == OB_LAMP || base->object->type == OB_CAMERA) { + if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { data->reserved1 = TRACK_nZ; data->reserved2 = UP_Y; } - add_constraint_to_object(con, base->object); + add_constraint_to_object(con, ob); } } CTX_DATA_END; @@ -892,36 +945,36 @@ static int track_set_exec(bContext *C, wmOperator *op) bConstraint *con; bLockTrackConstraint *data; - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - if(base!=BASACT) { + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if(ob!=obact) { con = add_new_constraint(CONSTRAINT_TYPE_LOCKTRACK); strcpy (con->name, "AutoTrack"); data = con->data; - data->tar = BASACT->object; - base->object->recalc |= OB_RECALC; + data->tar = obact; + ob->recalc |= OB_RECALC; /* Lamp and Camera track differently by default */ - if (base->object->type == OB_LAMP || base->object->type == OB_CAMERA) { + if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { data->trackflag = TRACK_nZ; data->lockflag = LOCK_Y; } - add_constraint_to_object(con, base->object); + add_constraint_to_object(con, ob); } } CTX_DATA_END; } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - if(base!=BASACT) { - base->object->track= BASACT->object; - base->object->recalc |= OB_RECALC; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if(ob!=obact) { + ob->track= obact; + ob->recalc |= OB_RECALC; } } CTX_DATA_END; } - DAG_scene_sort(CTX_data_scene(C)); + DAG_scene_sort(scene); ED_anim_dag_flush_update(C); return OPERATOR_FINISHED; @@ -1077,97 +1130,77 @@ void link_to_scene(unsigned short nr) #endif } - -void make_links(bContext *C, wmOperator *op, Scene *scene, View3D *v3d, short event) +static int make_links_scene_exec(bContext *C, wmOperator *op) { - Object *ob, *obt; - Base *base, *nbase, *sbase; - Scene *sce = NULL; - ID *id; - int a; - short nr=0; - char *strp; - - if(!(ob=OBACT)) return; + Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); - if(event==1) { - IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->scene), 0, &nr); - - if(nr == -2) { - MEM_freeN(strp); - -// XXX activate_databrowse((ID *)scene, ID_SCE, 0, B_INFOSCE, &(G.curscreen->scenenr), link_to_scene ); - - return; - } - else { - event= pupmenu_col(strp, 20); - MEM_freeN(strp); - - if(event<= 0) return; - - nr= 1; - sce= G.main->scene.first; - while(sce) { - if(nr==event) break; - nr++; - sce= sce->id.next; - } - if(sce==scene) { - BKE_report(op->reports, RPT_ERROR, "This is the current scene"); - return; - } - if(sce==0 || sce->id.lib) return; - - /* remember: is needed below */ - event= 1; - } + if(scene_to==NULL) { + BKE_report(op->reports, RPT_ERROR, "Scene not found"); + return OPERATOR_CANCELLED; } - /* All non group linking */ - for(base= FIRSTBASE; base; base= base->next) { - if(event==1 || base != BASACT) { - - obt= base->object; + if(scene_to == CTX_data_scene(C)) { + BKE_report(op->reports, RPT_ERROR, "Can't link objects into the same scene"); + return OPERATOR_CANCELLED; + } - if(TESTBASE(v3d, base)) { - - if(event==1) { /* to scene */ - - /* test if already linked */ - sbase= sce->base.first; - while(sbase) { - if(sbase->object==base->object) break; - sbase= sbase->next; - } - if(sbase) { /* remove */ - continue; - } - - nbase= MEM_mallocN( sizeof(Base), "newbase"); + CTX_DATA_BEGIN(C, Base*, base, selected_bases) + { + if(!object_in_scene(base->object, scene_to)) { + Base *nbase= MEM_mallocN( sizeof(Base), "newbase"); *nbase= *base; - BLI_addhead( &(sce->base), nbase); + BLI_addhead( &(scene_to->base), nbase); id_us_plus((ID *)base->object); } } - if(TESTBASELIB(v3d, base)) { - if(event==2 || event==5) { /* obdata */ - if(ob->type==obt->type) { - + CTX_DATA_END; + + ED_anim_dag_flush_update(C); + + /* one day multiple scenes will be visible, then we should have some update function for them */ + return OPERATOR_FINISHED; +} + +enum { + MAKE_LINKS_OBDATA = 1, + MAKE_LINKS_MATERIALS, + MAKE_LINKS_ANIMDATA, + MAKE_LINKS_DUPLIGROUP, +}; + +static int make_links_data_exec(bContext *C, wmOperator *op) +{ + int event = RNA_int_get(op->ptr, "type"); + Object *ob; + ID *id; + int a; + + ob= CTX_data_active_object(C); + + CTX_DATA_BEGIN(C, Object*, obt, selected_editable_objects) { + if(ob != obt) { + switch(event) { + case MAKE_LINKS_OBDATA: /* obdata */ id= obt->data; id->us--; - + id= ob->data; id_us_plus(id); obt->data= id; - + /* if amount of material indices changed: */ test_object_materials(obt->data); obt->recalc |= OB_RECALC_DATA; + break; + case MAKE_LINKS_MATERIALS: + /* new approach, using functions from kernel */ + for(a=0; a<ob->totcol; a++) { + Material *ma= give_current_material(ob, a+1); + assign_material(obt, ma, a+1); /* also works with ma==NULL */ } - } - else if(event==4) { /* ob ipo */ + break; + case MAKE_LINKS_ANIMDATA: #if 0 // XXX old animation system if(obt->ipo) obt->ipo->id.us--; obt->ipo= ob->ipo; @@ -1176,67 +1209,75 @@ void make_links(bContext *C, wmOperator *op, Scene *scene, View3D *v3d, short ev do_ob_ipo(scene, obt); } #endif // XXX old animation system - } - else if(event==6) { + break; + case MAKE_LINKS_DUPLIGROUP: if(ob->dup_group) ob->dup_group->id.us--; obt->dup_group= ob->dup_group; if(obt->dup_group) { id_us_plus((ID *)obt->dup_group); obt->transflag |= OB_DUPLIGROUP; } + break; } - else if(event==3) { /* materials */ - - /* new approach, using functions from kernel */ - for(a=0; a<ob->totcol; a++) { - Material *ma= give_current_material(ob, a+1); - assign_material(obt, ma, a+1); /* also works with ma==NULL */ } } - } - } - } - - ED_anim_dag_flush_update(C); + CTX_DATA_END; + ED_anim_dag_flush_update(C); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + return OPERATOR_FINISHED; } -void make_links_menu(bContext *C, Scene *scene, View3D *v3d) + +void OBJECT_OT_make_links_scene(wmOperatorType *ot) { - Object *ob; - short event=0; - char str[140]; - - if(!(ob=OBACT)) return; - - strcpy(str, "Make Links %t|To Scene...%x1|%l|Object Ipo%x4"); - - if(ob->type==OB_MESH) - strcat(str, "|Mesh Data%x2|Materials%x3"); - else if(ob->type==OB_CURVE) - strcat(str, "|Curve Data%x2|Materials%x3"); - else if(ob->type==OB_FONT) - strcat(str, "|Text Data%x2|Materials%x3"); - else if(ob->type==OB_SURF) - strcat(str, "|Surface Data%x2|Materials%x3"); - else if(ob->type==OB_MBALL) - strcat(str, "|Materials%x3"); - else if(ob->type==OB_CAMERA) - strcat(str, "|Camera Data%x2"); - else if(ob->type==OB_LAMP) - strcat(str, "|Lamp Data%x2"); - else if(ob->type==OB_LATTICE) - strcat(str, "|Lattice Data%x2"); - else if(ob->type==OB_ARMATURE) - strcat(str, "|Armature Data%x2"); - - event= pupmenu(str); - - if(event<= 0) return; - - make_links(C, NULL, scene, v3d, event); + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Link Objects to Scene"; + ot->description = "Make linked data local to each object."; + ot->idname= "OBJECT_OT_make_links_scene"; + + /* api callbacks */ + ot->exec= make_links_scene_exec; + /* better not run the poll check */ + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + RNA_def_enum_funcs(prop, RNA_scene_itemf); } +void OBJECT_OT_make_links_data(wmOperatorType *ot) +{ + static EnumPropertyItem make_links_items[]= { + {MAKE_LINKS_OBDATA, "OBDATA", 0, "Object Data", ""}, + {MAKE_LINKS_MATERIALS, "MATERIAL", 0, "Materials", ""}, + {MAKE_LINKS_ANIMDATA, "ANIMATION", 0, "Animation Data", ""}, + {MAKE_LINKS_DUPLIGROUP, "DUPLIGROUP", 0, "DupliGroup", ""}, + {0, NULL, 0, NULL, NULL}}; + + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Link Data"; + ot->description = "Make links from the active object to other selected objects."; + ot->idname= "OBJECT_OT_make_links_data"; + + /* api callbacks */ + ot->exec= make_links_data_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "type", make_links_items, 0, "Type", ""); +} + + /**************************** Make Single User ********************************/ static void single_object_users__forwardModifierLinks(void *userData, Object *ob, Object **obpoin) diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index eb27486b93c..38bf5830bd5 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -240,6 +240,7 @@ static void insert_lattkey(Scene *scene, Object *ob) if(key==NULL) { key= lt->key= add_key( (ID *)lt); key->type= KEY_RELATIVE; + newkey= 1; } kb= add_keyblock(scene, key); diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 898d541d09d..0c09e0a03de 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -347,7 +347,6 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo { Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); - Object *ob; bArmature *arm; Mesh *me; Curve *cu; @@ -359,8 +358,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo int a, change = 0; /* first check if we can execute */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->type==OB_MESH) { me= ob->data; @@ -394,8 +392,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo CTX_DATA_END; /* now execute */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { /* calculate rotation/scale matrix */ if(apply_scale && apply_rot) @@ -669,7 +666,6 @@ static int object_center_set_exec(bContext *C, wmOperator *op) ScrArea *sa= CTX_wm_area(C); View3D *v3d= sa->spacedata.first; Object *obedit= CTX_data_edit_object(C); - Object *ob; Mesh *me, *tme; Curve *cu; /* BezTriple *bezt; @@ -733,8 +729,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op) } /* reset flags */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - base->object->flag &= ~OB_DONE; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + ob->flag &= ~OB_DONE; } CTX_DATA_END; @@ -742,18 +738,18 @@ static int object_center_set_exec(bContext *C, wmOperator *op) me->flag &= ~ME_ISDONE; } - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - if((base->object->flag & OB_DONE)==0) { - base->object->flag |= OB_DONE; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if((ob->flag & OB_DONE)==0) { + ob->flag |= OB_DONE; - if(obedit==NULL && (me=get_mesh(base->object)) ) { + if(obedit==NULL && (me=get_mesh(ob)) ) { if (me->id.lib) { tot_lib_error++; } else { if(centermode==2) { VECCOPY(cent, give_cursor(scene, v3d)); - Mat4Invert(base->object->imat, base->object->obmat); - Mat4MulVecfl(base->object->imat, cent); + Mat4Invert(ob->imat, ob->obmat); + Mat4MulVecfl(ob->imat, cent); } else { INIT_MINMAX(min, max); mvert= me->mvert; @@ -785,37 +781,36 @@ static int object_center_set_exec(bContext *C, wmOperator *op) me->flag |= ME_ISDONE; if(centermode) { - Mat3CpyMat4(omat, base->object->obmat); + Mat3CpyMat4(omat, ob->obmat); VECCOPY(centn, cent); Mat3MulVecfl(omat, centn); - base->object->loc[0]+= centn[0]; - base->object->loc[1]+= centn[1]; - base->object->loc[2]+= centn[2]; + ob->loc[0]+= centn[0]; + ob->loc[1]+= centn[1]; + ob->loc[2]+= centn[2]; - where_is_object(scene, base->object); - ignore_parent_tx(bmain, scene, base->object); + where_is_object(scene, ob); + ignore_parent_tx(bmain, scene, ob); /* other users? */ - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob = base->object; - if((ob->flag & OB_DONE)==0) { - tme= get_mesh(ob); + CTX_DATA_BEGIN(C, Object*, ob_other, selected_editable_objects) { + if((ob_other->flag & OB_DONE)==0) { + tme= get_mesh(ob_other); if(tme==me) { - ob->flag |= OB_DONE; - ob->recalc= OB_RECALC_OB|OB_RECALC_DATA; + ob_other->flag |= OB_DONE; + ob_other->recalc= OB_RECALC_OB|OB_RECALC_DATA; - Mat3CpyMat4(omat, ob->obmat); + Mat3CpyMat4(omat, ob_other->obmat); VECCOPY(centn, cent); Mat3MulVecfl(omat, centn); - ob->loc[0]+= centn[0]; - ob->loc[1]+= centn[1]; - ob->loc[2]+= centn[2]; + ob_other->loc[0]+= centn[0]; + ob_other->loc[1]+= centn[1]; + ob_other->loc[2]+= centn[2]; - where_is_object(scene, ob); - ignore_parent_tx(bmain, scene, ob); + where_is_object(scene, ob_other); + ignore_parent_tx(bmain, scene, ob_other); if(tme && (tme->flag & ME_ISDONE)==0) { mvert= tme->mvert; @@ -838,25 +833,23 @@ static int object_center_set_exec(bContext *C, wmOperator *op) } } } - - ob= ob->id.next; } CTX_DATA_END; } tot_change++; } } - else if (ELEM(base->object->type, OB_CURVE, OB_SURF)) { + else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { /* weak code here... (ton) */ - if(obedit==base->object) { + if(obedit==ob) { ListBase *editnurb= curve_get_editcurve(obedit); nu1= editnurb->first; cu= obedit->data; } else { - cu= base->object->data; + cu= ob->data; nu1= cu->nurb.first; } @@ -865,8 +858,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op) } else { if(centermode==2) { VECCOPY(cent, give_cursor(scene, v3d)); - Mat4Invert(base->object->imat, base->object->obmat); - Mat4MulVecfl(base->object->imat, cent); + Mat4Invert(ob->imat, ob->obmat); + Mat4MulVecfl(ob->imat, cent); /* don't allow Z change if curve is 2D */ if( !( cu->flag & CU_3D ) ) @@ -904,16 +897,16 @@ static int object_center_set_exec(bContext *C, wmOperator *op) nu= nu->next; } - if(centermode && obedit==0) { - Mat3CpyMat4(omat, base->object->obmat); + if(centermode && obedit==NULL) { + Mat3CpyMat4(omat, ob->obmat); Mat3MulVecfl(omat, cent); - base->object->loc[0]+= cent[0]; - base->object->loc[1]+= cent[1]; - base->object->loc[2]+= cent[2]; + ob->loc[0]+= cent[0]; + ob->loc[1]+= cent[1]; + ob->loc[2]+= cent[2]; - where_is_object(scene, base->object); - ignore_parent_tx(bmain, scene, base->object); + where_is_object(scene, ob); + ignore_parent_tx(bmain, scene, ob); } tot_change++; @@ -925,12 +918,12 @@ static int object_center_set_exec(bContext *C, wmOperator *op) } } } - else if(base->object->type==OB_FONT) { + else if(ob->type==OB_FONT) { /* get from bb */ - cu= base->object->data; + cu= ob->data; - if(cu->bb==0) { + if(cu->bb==NULL) { /* do nothing*/ } else if (cu->id.lib) { tot_lib_error++; @@ -945,8 +938,8 @@ static int object_center_set_exec(bContext *C, wmOperator *op) tot_change++; } } - else if(base->object->type==OB_ARMATURE) { - bArmature *arm = base->object->data; + else if(ob->type==OB_ARMATURE) { + bArmature *arm = ob->data; if (arm->id.lib) { tot_lib_error++; @@ -958,17 +951,17 @@ static int object_center_set_exec(bContext *C, wmOperator *op) /* Function to recenter armatures in editarmature.c * Bone + object locations are handled there. */ - docenter_armature(scene, v3d, base->object, centermode); + docenter_armature(scene, v3d, ob, centermode); tot_change++; - where_is_object(scene, base->object); - ignore_parent_tx(bmain, scene, base->object); + where_is_object(scene, ob); + ignore_parent_tx(bmain, scene, ob); if(obedit) break; } } - base->object->recalc= OB_RECALC_OB|OB_RECALC_DATA; + ob->recalc= OB_RECALC_OB|OB_RECALC_DATA; } } CTX_DATA_END; diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index c773fcc248d..e39df63384e 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -587,7 +587,7 @@ static void vgroup_normalize(Object *ob) dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); if(dg) { - float weight_max; + float weight_max = 0.0f; def_nr= ob->actdef-1; @@ -605,7 +605,7 @@ static void vgroup_normalize(Object *ob) dw = ED_vgroup_weight_get(dvert, def_nr); if(dw) { dw->weight /= weight_max; - + /* incase of division errors with very low weights */ CLAMP(dw->weight, 0.0f, 1.0f); } diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index a4bad0c708f..e3f25a9dc43 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -3321,8 +3321,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) if((pset->flag & PE_KEEP_LENGTHS)==0) recalc_lengths(edit); - if(ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_CUT)) { - if(added || removed) { + if(ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_CUT) && (added || removed)) { if(pset->brushtype == PE_BRUSH_ADD && (pset->flag & PE_X_MIRROR)) PE_mirror_x(scene, ob, 1); @@ -3330,7 +3329,6 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) psys_free_path_cache(NULL, edit); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } - } else PE_update_object(scene, ob, 1); diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index bd94f7ff5bb..0c24e3fff0a 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -93,11 +93,20 @@ static int particle_system_remove_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; Scene *scene = CTX_data_scene(C); - + int mode_orig = ob->mode; if(!scene || !ob) return OPERATOR_CANCELLED; object_remove_particle_system(scene, ob); + + /* possible this isn't the active object + * object_remove_particle_system() clears the mode on the last psys + * */ + if(mode_orig & OB_MODE_PARTICLE_EDIT) + if((ob->mode & OB_MODE_PARTICLE_EDIT)==0) + if(scene->basact && scene->basact->object==ob) + WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); return OPERATOR_FINISHED; diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 126c21a554b..b72c4991094 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -1195,6 +1195,7 @@ void FLUID_OT_bake(wmOperatorType *ot) { /* identifiers */ ot->name= "Fluid Simulation Bake"; + ot->description= "Bake fluid simulation."; ot->idname= "FLUID_OT_bake"; /* api callbacks */ diff --git a/source/blender/editors/screen/Makefile b/source/blender/editors/screen/Makefile index c88e53f5f97..9e3f1837f92 100644 --- a/source/blender/editors/screen/Makefile +++ b/source/blender/editors/screen/Makefile @@ -50,11 +50,12 @@ CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../python CPPFLAGS += -I../../render/extern/include CPPFLAGS += -I../../blenfont +CPPFLAGS += -I../../gpu CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include -# own include +# own include -CPPFLAGS += -I../include +CPPFLAGS += -I../include ifeq ($(WITH_OPENEXR), true) CPPFLAGS += -DWITH_OPENEXR diff --git a/source/blender/editors/screen/SConscript b/source/blender/editors/screen/SConscript index 97ce70ad71d..820609d7d30 100644 --- a/source/blender/editors/screen/SConscript +++ b/source/blender/editors/screen/SConscript @@ -4,7 +4,7 @@ Import ('env') sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../blenfont ../../makesdna ../../imbuf' -incs += ' ../../blenloader ../../windowmanager ../../python ../../makesrna' +incs += ' ../../blenloader ../../windowmanager ../../python ../../makesrna ../../gpu' incs += ' ../../render/extern/include ../../bmesh' incs += ' #/intern/guardedalloc #/extern/glew/include' diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 428f17886ec..be76e153fae 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -498,11 +498,16 @@ static void region_azone_edge(AZone *az, ARegion *ar) static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) { AZone *azt; + int tot=0; + + for(azt= sa->actionzones.first; azt; azt= azt->next) { + if(azt->edge == az->edge) tot++; + } if(az->edge=='t') { - az->x1= ar->winrct.xmax - AZONEPAD_ICON; + az->x1= ar->winrct.xmax - tot*2*AZONEPAD_ICON; az->y1= ar->winrct.ymax + AZONEPAD_ICON; - az->x2= ar->winrct.xmax - 2*AZONEPAD_ICON; + az->x2= ar->winrct.xmax - tot*AZONEPAD_ICON; az->y2= ar->winrct.ymax + 2*AZONEPAD_ICON; } else if(az->edge=='b') { @@ -513,15 +518,15 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) } else if(az->edge=='l') { az->x1= ar->winrct.xmin - 2*AZONEPAD_ICON; - az->y1= ar->winrct.ymax - 2*AZONEPAD_ICON; + az->y1= ar->winrct.ymax - tot*2*AZONEPAD_ICON; az->x2= ar->winrct.xmin - AZONEPAD_ICON; - az->y2= ar->winrct.ymax - AZONEPAD_ICON; + az->y2= ar->winrct.ymax - tot*AZONEPAD_ICON; } else { // if(az->edge=='r') { az->x1= ar->winrct.xmax + AZONEPAD_ICON; - az->y1= ar->winrct.ymax - 2*AZONEPAD_ICON; + az->y1= ar->winrct.ymax - tot*2*AZONEPAD_ICON; az->x2= ar->winrct.xmax + 2*AZONEPAD_ICON; - az->y2= ar->winrct.ymax - AZONEPAD_ICON; + az->y2= ar->winrct.ymax - tot*AZONEPAD_ICON; } BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y2); diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index e573ef06247..919cc3f0cfd 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -28,31 +28,43 @@ #include <string.h> #include "DNA_object_types.h" +#include "DNA_armature_types.h" +#include "DNA_action_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "BKE_context.h" #include "BKE_utildefines.h" #include "BKE_global.h" +#include "BKE_action.h" #include "RNA_access.h" #include "ED_object.h" +#include "ED_armature.h" int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result) { bScreen *sc= CTX_wm_screen(C); Scene *scene= sc->scene; Base *base; - Object *ob = NULL; - if(scene && scene->basact) - ob = scene->basact->object; +#if 0 /* Using the context breaks adding objects in the UI. Need to find out why - campbell */ + Object *obact= CTX_data_active_object(C); + Object *obedit= CTX_data_edit_object(C); + base= CTX_data_active_base(C); +#else + Object *obedit= scene->obedit; + Object *obact= OBACT; + base= BASACT; +#endif if(CTX_data_dir(member)) { static const char *dir[] = { "scene", "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", + "visible_bones", "editable_bones", "selected_bones", "selected_editable_bones", + "visible_pchans", "selected_pchans", "active_bone", "active_pchan", "active_base", "active_object", "edit_object", "sculpt_object", "vertex_paint_object", "weight_paint_object", "texture_paint_object", "brush", "particle_edit_object", NULL}; @@ -96,58 +108,199 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } + else if(CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { + bArmature *arm= (obedit) ? obedit->data : NULL; + EditBone *ebone, *flipbone=NULL; + int editable_bones= CTX_data_equals(member, "editable_bones"); + + if (arm && arm->edbo) { + /* Attention: X-Axis Mirroring is also handled here... */ + for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { + /* first and foremost, bone must be visible and selected */ + if (EBONE_VISIBLE(arm, ebone)) { + /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled + * so that most users of this data don't need to explicitly check for it themselves. + * + * We need to make sure that these mirrored copies are not selected, otherwise some + * bones will be operated on twice. + */ + if (arm->flag & ARM_MIRROR_EDIT) + flipbone = ED_armature_bone_get_mirrored(arm->edbo, ebone); + + /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ + if (editable_bones) { + /* only selected + editable */ + if (EBONE_EDITABLE(ebone)) { + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); + + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); + } + } + else { + /* only include bones if visible */ + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); + + if ((flipbone) && EBONE_VISIBLE(arm, flipbone)==0) + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); + } + } + } + + return 1; + } + } + else if(CTX_data_equals(member, "selected_bones") || CTX_data_equals(member, "selected_editable_bones")) { + bArmature *arm= (obedit) ? obedit->data : NULL; + EditBone *ebone, *flipbone=NULL; + int selected_editable_bones= CTX_data_equals(member, "selected_editable_bones"); + + if (arm && arm->edbo) { + /* Attention: X-Axis Mirroring is also handled here... */ + for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { + /* first and foremost, bone must be visible and selected */ + if (EBONE_VISIBLE(arm, ebone) && (ebone->flag & BONE_SELECTED)) { + /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled + * so that most users of this data don't need to explicitly check for it themselves. + * + * We need to make sure that these mirrored copies are not selected, otherwise some + * bones will be operated on twice. + */ + if (arm->flag & ARM_MIRROR_EDIT) + flipbone = ED_armature_bone_get_mirrored(arm->edbo, ebone); + + /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ + if (selected_editable_bones) { + /* only selected + editable */ + if (EBONE_EDITABLE(ebone)) { + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); + + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); + } + } + else { + /* only include bones if selected */ + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); + + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) + CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); + } + } + } + + return 1; + } + } + else if(CTX_data_equals(member, "visible_pchans")) { + bArmature *arm= (obact) ? obact->data : NULL; + bPoseChannel *pchan; + + if (obact && obact->pose && arm) { + for (pchan= obact->pose->chanbase.first; pchan; pchan= pchan->next) { + /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ + if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { + CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan); + } + } + + return 1; + } + } + else if(CTX_data_equals(member, "selected_pchans")) { + bArmature *arm= (obact) ? obact->data : NULL; + bPoseChannel *pchan; + + if (obact && obact->pose && arm) { + for (pchan= obact->pose->chanbase.first; pchan; pchan= pchan->next) { + /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ + if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { + if (pchan->bone->flag & (BONE_SELECTED|BONE_ACTIVE)) + CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan); + } + } + + return 1; + } + } + else if(CTX_data_equals(member, "active_bone")) { + bArmature *arm= (obedit) ? obedit->data : NULL; + EditBone *ebone; + + if (arm && arm->edbo) { + for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { + if (EBONE_VISIBLE(arm, ebone)) { + if (ebone->flag & BONE_ACTIVE) { + CTX_data_pointer_set(result, &arm->id, &RNA_EditBone, ebone); + + return 1; + } + } + } + } + + } + else if(CTX_data_equals(member, "active_pchan")) { + bPoseChannel *pchan; + + pchan= get_active_posechannel(obact); + if (pchan) { + CTX_data_pointer_set(result, &obact->id, &RNA_PoseChannel, pchan); + return 1; + } + } else if(CTX_data_equals(member, "active_base")) { - if(scene->basact) - CTX_data_pointer_set(result, &scene->id, &RNA_UnknownType, scene->basact); + if(base) + CTX_data_pointer_set(result, &scene->id, &RNA_UnknownType, base); return 1; } else if(CTX_data_equals(member, "active_object")) { - if(scene->basact) - CTX_data_id_pointer_set(result, &scene->basact->object->id); + if(obact) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "object")) { - if(scene->basact) - CTX_data_id_pointer_set(result, &scene->basact->object->id); + if(obact) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "edit_object")) { /* convenience for now, 1 object per scene in editmode */ - if(scene->obedit) - CTX_data_id_pointer_set(result, &scene->obedit->id); + if(obedit) + CTX_data_id_pointer_set(result, &obedit->id); return 1; } else if(CTX_data_equals(member, "sculpt_object")) { - if(ob && (ob->mode & OB_MODE_SCULPT)) - CTX_data_id_pointer_set(result, &ob->id); + if(obact && (obact->mode & OB_MODE_SCULPT)) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "vertex_paint_object")) { - if(ob && (ob->mode & OB_MODE_VERTEX_PAINT)) - CTX_data_id_pointer_set(result, &ob->id); + if(obact && (obact->mode & OB_MODE_VERTEX_PAINT)) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "weight_paint_object")) { - if(ob && (ob->mode & OB_MODE_WEIGHT_PAINT)) - CTX_data_id_pointer_set(result, &ob->id); + if(obact && (obact->mode & OB_MODE_WEIGHT_PAINT)) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "texture_paint_object")) { - if(ob && (ob->mode & OB_MODE_TEXTURE_PAINT)) - CTX_data_id_pointer_set(result, &ob->id); + if(obact && (obact->mode & OB_MODE_TEXTURE_PAINT)) + CTX_data_id_pointer_set(result, &obact->id); return 1; } else if(CTX_data_equals(member, "particle_edit_object")) { - if(ob && (ob->mode & OB_MODE_PARTICLE_EDIT)) - CTX_data_id_pointer_set(result, &ob->id); + if(obact && (obact->mode & OB_MODE_PARTICLE_EDIT)) + CTX_data_id_pointer_set(result, &obact->id); return 1; } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6b71ccaba10..6b079d3981a 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -54,6 +54,8 @@ #include "ED_screen.h" #include "ED_screen_types.h" +#include "UI_interface.h" + /* XXX actually should be not here... solve later */ #include "wm_subwindow.h" @@ -1364,8 +1366,17 @@ void ED_screen_set_scene(bContext *C, Scene *scene) if (!v3d->camera || !object_in_scene(v3d->camera, scene)) { v3d->camera= scene_find_camera(sc->scene); // XXX if (sc==curscreen) handle_view3d_lock(); - if (!v3d->camera && v3d->persp==V3D_CAMOB) - v3d->persp= V3D_PERSP; + if (!v3d->camera) { + ARegion *ar; + for(ar=v3d->regionbase.first; ar; ar= ar->next) { + if(ar->regiontype == RGN_TYPE_WINDOW) { + RegionView3D *rv3d= ar->regiondata; + + if(rv3d->persp==RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + } + } + } } } sl= sl->next; @@ -1404,18 +1415,24 @@ void ED_screen_delete_scene(bContext *C, Scene *scene) } /* this function toggles: if area is full then the parent will be restored */ -void ed_screen_fullarea(bContext *C, ScrArea *sa) +ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) { bScreen *sc, *oldscreen; - - if(sa==NULL) { - return; + ARegion *ar; + + if(sa) { + /* ensure we don't have a button active anymore, can crash when + switching screens with tooltip open because region and tooltip + are no longer in the same screen */ + for(ar=sa->regionbase.first; ar; ar=ar->next) + uiFreeBlocks(C, &ar->uiblocks); } - else if(sa->full) { + + if(sa && sa->full) { short fulltype; sc= sa->full; /* the old screen to restore */ - oldscreen= CTX_wm_screen(C); /* the one disappearing */ + oldscreen= win->screen; /* the one disappearing */ fulltype = sc->full; @@ -1432,7 +1449,7 @@ void ed_screen_fullarea(bContext *C, ScrArea *sa) if(old->full) break; if(old==NULL) { printf("something wrong in areafullscreen\n"); - return; + return NULL; } // old feature described below (ton) // in autoplay screens the headers are disabled by @@ -1455,14 +1472,15 @@ void ed_screen_fullarea(bContext *C, ScrArea *sa) else { ScrArea *newa; - oldscreen= CTX_wm_screen(C); + oldscreen= win->screen; /* is there only 1 area? */ - if(oldscreen->areabase.first==oldscreen->areabase.last) return; + if(oldscreen->areabase.first==oldscreen->areabase.last) + return NULL; oldscreen->full = SCREENFULL; - sc= ED_screen_add(CTX_wm_window(C), CTX_data_scene(C), "temp"); + sc= ED_screen_add(win, oldscreen->scene, "temp"); sc->full = SCREENFULL; // XXX /* timer */ @@ -1470,9 +1488,14 @@ void ed_screen_fullarea(bContext *C, ScrArea *sa) oldscreen->animtimer= NULL; /* returns the top small area */ - newa= area_split(CTX_wm_window(C), sc, (ScrArea *)sc->areabase.first, 'h', 0.99f); + newa= area_split(win, sc, (ScrArea *)sc->areabase.first, 'h', 0.99f); ED_area_newspace(C, newa, SPACE_INFO); + /* use random area when we have no active one, e.g. when the + mouse is outside of the window and we open a file browser */ + if(!sa) + sa= oldscreen->areabase.first; + /* copy area */ newa= newa->prev; area_copy_data(newa, sa, 1); /* 1 = swap spacelist */ @@ -1489,30 +1512,33 @@ void ed_screen_fullarea(bContext *C, ScrArea *sa) /* XXX retopo_force_update(); */ + return sc->areabase.first; } int ED_screen_full_newspace(bContext *C, ScrArea *sa, int type) { - if(sa==NULL) - return 0; - - if(sa->full==0) - ed_screen_fullarea(C, sa); + wmWindow *win= CTX_wm_window(C); + ScrArea *newsa= NULL; - /* CTX_wm_area(C) is new area */ - ED_area_newspace(C, CTX_wm_area(C), type); + if(!sa || sa->full==0) + newsa= ed_screen_fullarea(C, win, sa); + if(!newsa) + newsa= sa; + + ED_area_newspace(C, newsa, type); return 1; } void ED_screen_full_prevspace(bContext *C) { + wmWindow *win= CTX_wm_window(C); ScrArea *sa= CTX_wm_area(C); ED_area_prevspace(C); if(sa->full) - ed_screen_fullarea(C, sa); + ed_screen_fullarea(C, win, sa); } /* redraws: uses defines from stime->redraws diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h index 2b3a816f8de..6278ea8db88 100644 --- a/source/blender/editors/screen/screen_intern.h +++ b/source/blender/editors/screen/screen_intern.h @@ -51,7 +51,7 @@ ScrEdge *screen_find_active_scredge(bScreen *sc, int mx, int my); AZone *is_in_area_actionzone(ScrArea *sa, int x, int y); -void ed_screen_fullarea(bContext *C, ScrArea *sa); +ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa); /* screen_context.c */ void ed_screen_context(const bContext *C, const char *member, bContextDataResult *result); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index e0583339852..dbfabc00737 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -25,6 +25,9 @@ */ #include <math.h> +#include <string.h> + +#include <GL/glew.h> #include "MEM_guardedalloc.h" @@ -41,6 +44,7 @@ #include "DNA_curve_types.h" #include "DNA_scene_types.h" #include "DNA_meta_types.h" +#include "DNA_view3d_types.h" #include "BKE_blender.h" #include "BKE_colortools.h" @@ -59,6 +63,7 @@ #include "BKE_utildefines.h" #include "BKE_tessmesh.h" #include "BKE_sound.h" +#include "BKE_writeavi.h" #include "WM_api.h" #include "WM_types.h" @@ -69,6 +74,7 @@ #include "ED_object.h" #include "ED_screen_types.h" #include "ED_keyframes_draw.h" +#include "ED_view3d.h" #include "RE_pipeline.h" #include "IMB_imbuf.h" @@ -80,6 +86,8 @@ #include "UI_interface.h" #include "UI_resources.h" +#include "GPU_extensions.h" + #include "wm_window.h" #include "screen_intern.h" /* own module include */ @@ -1569,7 +1577,7 @@ static void SCREEN_OT_screen_set(wmOperatorType *ot) /* function to be called outside UI context, or for redo */ static int screen_full_area_exec(bContext *C, wmOperator *op) { - ed_screen_fullarea(C, CTX_wm_area(C)); + ed_screen_fullarea(C, CTX_wm_window(C), CTX_wm_area(C)); return OPERATOR_FINISHED; } @@ -2079,19 +2087,19 @@ static int region_foursplit_exec(bContext *C, wmOperator *op) RegionView3D *rv3d; rv3d= ar->regiondata; - rv3d->viewlock= RV3D_LOCKED; rv3d->view= V3D_VIEW_FRONT; rv3d->persp= V3D_ORTHO; + rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_FRONT; rv3d->persp= RV3D_ORTHO; ar= ar->next; rv3d= ar->regiondata; - rv3d->viewlock= RV3D_LOCKED; rv3d->view= V3D_VIEW_TOP; rv3d->persp= V3D_ORTHO; + rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_TOP; rv3d->persp= RV3D_ORTHO; ar= ar->next; rv3d= ar->regiondata; - rv3d->viewlock= RV3D_LOCKED; rv3d->view= V3D_VIEW_RIGHT; rv3d->persp= V3D_ORTHO; + rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_RIGHT; rv3d->persp= RV3D_ORTHO; ar= ar->next; rv3d= ar->regiondata; - rv3d->view= V3D_VIEW_CAMERA; rv3d->persp= V3D_CAMOB; + rv3d->view= RV3D_VIEW_CAMERA; rv3d->persp= RV3D_CAMOB; } WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); @@ -2568,6 +2576,7 @@ static ScrArea *find_empty_image_area(bContext *C) /* new window uses x,y to set position */ static void screen_set_image_output(bContext *C, int mx, int my) { + wmWindow *win= CTX_wm_window(C); Scene *scene= CTX_data_scene(C); ScrArea *sa= NULL; SpaceImage *sima; @@ -2584,8 +2593,8 @@ static void screen_set_image_output(bContext *C, int mx, int my) if(sizey < 256) sizey= 256; /* XXX some magic to calculate postition */ - rect.xmin= mx + CTX_wm_window(C)->posx - sizex/2; - rect.ymin= my + CTX_wm_window(C)->posy - sizey/2; + rect.xmin= mx + win->posx - sizex/2; + rect.ymin= my + win->posy - sizey/2; rect.xmax= rect.xmin + sizex; rect.ymax= rect.ymin + sizey; @@ -2637,7 +2646,7 @@ static void screen_set_image_output(bContext *C, int mx, int my) if(sa->full) { sima->flag |= SI_FULLWINDOW|SI_PREVSPACE; -// ed_screen_fullarea(C, sa); +// ed_screen_fullarea(C, win, sa); } // } @@ -2747,7 +2756,7 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs) } /* called inside thread! */ -static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibuf, volatile rcti *renrect) +static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volatile rcti *renrect) { float x1, y1, *rectf= NULL; int ymin, ymax, xmin, xmax; @@ -2808,7 +2817,7 @@ static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibu rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin); /* XXX make nice consistent functions for this */ - if (rj->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) { + if (scene && (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)) { for(y1= 0; y1<ymax; y1++) { float *rf= rectf; float srgb[3]; @@ -2849,8 +2858,6 @@ static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibu } } - /* make jobs timer to send notifier */ - *(rj->do_update)= 1; } static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) @@ -2860,8 +2867,12 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec void *lock; ibuf= BKE_image_acquire_ibuf(rj->image, &rj->iuser, &lock); - if(ibuf) - image_buffer_rect_update(rj, rr, ibuf, renrect); + if(ibuf) { + image_buffer_rect_update(rj->scene, rr, ibuf, renrect); + + /* make jobs timer to send notifier */ + *(rj->do_update)= 1; + } BKE_image_release_ibuf(rj->image, lock); } @@ -2999,7 +3010,301 @@ static void SCREEN_OT_render(wmOperatorType *ot) ot->poll= ED_operator_screenactive; - RNA_def_int(ot->srna, "layers", 0, 0, INT_MAX, "Layers", "", 0, INT_MAX); + RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); +} + +/* ****************************** opengl render *************************** */ + +typedef struct OGLRender { + Render *re; + Scene *scene; + + View3D *v3d; + RegionView3D *rv3d; + ARegion *ar; + + Image *ima; + ImageUser iuser; + + GPUOffScreen *ofs; + int sizex, sizey; + + bMovieHandle *mh; + int cfrao, nfra; + + wmTimer *timer; +} OGLRender; + +static void screen_opengl_render_apply(OGLRender *oglrender) +{ + Scene *scene= oglrender->scene; + ARegion *ar= oglrender->ar; + View3D *v3d= oglrender->v3d; + RegionView3D *rv3d= oglrender->rv3d; + RenderResult *rr; + ImBuf *ibuf; + void *lock; + float winmat[4][4]; + int sizex= oglrender->sizex; + int sizey= oglrender->sizey; + + /* bind */ + GPU_offscreen_bind(oglrender->ofs); + + /* render 3d view */ + if(rv3d->persp==RV3D_CAMOB && v3d->camera) { + RE_GetCameraWindow(oglrender->re, v3d->camera, scene->r.cfra, winmat); + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat); + } + else + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, NULL); + + /* read in pixels & stamp */ + rr= RE_AcquireResultRead(oglrender->re); + glReadPixels(0, 0, sizex, sizey, GL_RGBA, GL_FLOAT, rr->rectf); + if((scene->r.scemode & R_STAMP_INFO) && (scene->r.stamp & R_STAMP_DRAW)) + BKE_stamp_buf(scene, (unsigned char *)rr->rect32, rr->rectf, rr->rectx, rr->recty, 3); + RE_ReleaseResult(oglrender->re); + + /* update byte from float buffer */ + ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); + if(ibuf) image_buffer_rect_update(NULL, rr, ibuf, NULL); + BKE_image_release_ibuf(oglrender->ima, lock); + + /* unbind */ + GPU_offscreen_unbind(oglrender->ofs); +} + +static int screen_opengl_render_init(bContext *C, wmOperator *op) +{ + /* new render clears all callbacks */ + Scene *scene= CTX_data_scene(C); + RenderResult *rr; + GPUOffScreen *ofs; + OGLRender *oglrender; + int sizex, sizey; + + /* ensure we have a 3d view */ + if(!ED_view3d_context_activate(C)) + return 0; + + /* only one render job at a time */ + if(WM_jobs_test(CTX_wm_manager(C), scene)) + return 0; + + /* stop all running jobs, currently previews frustrate Render */ + WM_jobs_stop_all(CTX_wm_manager(C)); + + /* handle UI stuff */ + WM_cursor_wait(1); + + /* create offscreen buffer */ + sizex= (scene->r.size*scene->r.xsch)/100; + sizey= (scene->r.size*scene->r.ysch)/100; + + view3d_operator_needs_opengl(C); + ofs= GPU_offscreen_create(sizex, sizey); + + if(!ofs) { + BKE_report(op->reports, RPT_ERROR, "Failed to create OpenGL offscreen buffer."); + return 0; + } + + /* allocate opengl render */ + oglrender= MEM_callocN(sizeof(OGLRender), "OGLRender"); + op->customdata= oglrender; + + oglrender->ofs= ofs; + oglrender->sizex= sizex; + oglrender->sizey= sizey; + oglrender->scene= scene; + + oglrender->v3d= CTX_wm_view3d(C); + oglrender->ar= CTX_wm_region(C); + oglrender->rv3d= CTX_wm_region_view3d(C); + + /* create image and image user */ + oglrender->ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); + BKE_image_signal(oglrender->ima, NULL, IMA_SIGNAL_FREE); + + oglrender->iuser.scene= scene; + oglrender->iuser.ok= 1; + + /* create render and render result */ + oglrender->re= RE_NewRender(scene->id.name); + RE_InitState(oglrender->re, NULL, &scene->r, sizex, sizey, NULL); + + rr= RE_AcquireResultWrite(oglrender->re); + if(rr->rectf==NULL) + rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizex, "32 bits rects"); + RE_ReleaseResult(oglrender->re); + + return 1; +} + +static void screen_opengl_render_end(bContext *C, OGLRender *oglrender) +{ + Scene *scene= oglrender->scene; + + if(oglrender->mh) { + if(BKE_imtype_is_movie(scene->r.imtype)) + oglrender->mh->end_movie(); + } + + if(oglrender->timer) { + scene->r.cfra= oglrender->cfrao; + scene_update_for_newframe(scene, scene->lay); + + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), oglrender->timer); + } + + WM_cursor_wait(0); + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + GPU_offscreen_free(oglrender->ofs); + + MEM_freeN(oglrender); +} + +static int screen_opengl_render_cancel(bContext *C, wmOperator *op) +{ + screen_opengl_render_end(C, op->customdata); + + return OPERATOR_CANCELLED; +} + +static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event) +{ + OGLRender *oglrender= op->customdata; + Scene *scene= oglrender->scene; + ImBuf *ibuf; + void *lock; + char name[FILE_MAXDIR+FILE_MAXFILE]; + unsigned int lay; + int ok= 0; + + switch(event->type) { + case ESCKEY: + /* cancel */ + screen_opengl_render_end(C, op->customdata); + return OPERATOR_FINISHED; + case TIMER: + /* render frame? */ + if(oglrender->timer == event->customdata) + break; + default: + /* nothing to do */ + return OPERATOR_RUNNING_MODAL; + } + + /* go to next frame */ + while(CFRA<oglrender->nfra) { + if(scene->lay & 0xFF000000) + lay= scene->lay & 0xFF000000; + else + lay= scene->lay; + + scene_update_for_newframe(scene, lay); + CFRA++; + } + + scene_update_for_newframe(scene, scene->lay); + + /* render into offscreen buffer */ + screen_opengl_render_apply(oglrender); + + /* save to disk */ + ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); + + if(ibuf) { + if(BKE_imtype_is_movie(scene->r.imtype)) { + oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey); + printf("Append frame %d", scene->r.cfra); + ok= 1; + } + else { + BKE_makepicstring(scene, name, scene->r.pic, scene->r.cfra, scene->r.imtype); + ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); + + if(ok==0) printf("write error: cannot save %s\n", name); + else printf("saved: %s", name); + } + } + + BKE_image_release_ibuf(oglrender->ima, lock); + + /* movie stats prints have no line break */ + printf("\n"); + + /* go to next frame */ + oglrender->nfra += scene->frame_step; + scene->r.cfra++; + + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + /* stop at the end or on error */ + if(scene->r.cfra > EFRA || !ok) { + screen_opengl_render_end(C, op->customdata); + return OPERATOR_FINISHED; + } + + return OPERATOR_RUNNING_MODAL; +} + +static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + int anim= RNA_boolean_get(op->ptr, "animation"); + + if(!screen_opengl_render_init(C, op)) + return OPERATOR_CANCELLED; + + if(!anim) { + /* render image */ + screen_opengl_render_apply(op->customdata); + screen_opengl_render_end(C, op->customdata); + screen_set_image_output(C, event->x, event->y); + + return OPERATOR_FINISHED; + } + else { + /* initialize animation */ + OGLRender *oglrender; + Scene *scene; + + oglrender= op->customdata; + scene= oglrender->scene; + + oglrender->mh= BKE_get_movie_handle(scene->r.imtype); + if(BKE_imtype_is_movie(scene->r.imtype)) + oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey); + + oglrender->cfrao= scene->r.cfra; + oglrender->nfra= SFRA; + scene->r.cfra= SFRA; + + WM_event_add_modal_handler(C, op); + oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f); + + screen_set_image_output(C, event->x, event->y); + + return OPERATOR_RUNNING_MODAL; + } +} + +static void SCREEN_OT_opengl_render(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "OpenGL Render"; + ot->description= "OpenGL render active viewport."; + ot->idname= "SCREEN_OT_opengl_render"; + + /* api callbacks */ + ot->invoke= screen_opengl_render_invoke; + ot->modal= screen_opengl_render_modal; + ot->cancel= screen_opengl_render_cancel; + + ot->poll= ED_operator_screenactive; + RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); } @@ -3007,6 +3312,7 @@ static void SCREEN_OT_render(wmOperatorType *ot) static int render_view_cancel_exec(bContext *C, wmOperator *unused) { + wmWindow *win= CTX_wm_window(C); ScrArea *sa= CTX_wm_area(C); SpaceImage *sima= sa->spacedata.first; @@ -3030,7 +3336,7 @@ static int render_view_cancel_exec(bContext *C, wmOperator *unused) } else if(sima->flag & SI_FULLWINDOW) { sima->flag &= ~SI_FULLWINDOW; - ed_screen_fullarea(C, sa); + ed_screen_fullarea(C, win, sa); return OPERATOR_FINISHED; } @@ -3297,6 +3603,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_render); WM_operatortype_append(SCREEN_OT_render_view_cancel); WM_operatortype_append(SCREEN_OT_render_view_show); + WM_operatortype_append(SCREEN_OT_opengl_render); /* new/delete */ WM_operatortype_append(SCREEN_OT_new); diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 1393305ea45..7b3cbb28dd1 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -45,7 +45,9 @@ #include "BLI_arithb.h" #include "BLI_memarena.h" #include "BLI_cellalloc.h" +#include "BLI_ghash.h" +#include "DNA_anim_types.h" #include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_brush_types.h" @@ -462,7 +464,7 @@ void wpaint_fill(VPaint *wp, Object *ob, float paintweight) vgroup= ob->actdef-1; - /* directly copied from weight_paint, should probaby split into a seperate function */ + /* directly copied from weight_paint, should probaby split into a separate function */ /* if mirror painting, find the other group */ if(me->editflag & ME_EDIT_MIRROR_X) { bDeformGroup *defgroup= BLI_findlink(&ob->defbase, ob->actdef-1); @@ -1044,7 +1046,44 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) } #endif -static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, int alpha, float paintweight, int vgroup_mirror) +static void do_weight_paint_auto_normalize(MDeformVert *dvert, + int paint_nr, char *map) +{ +// MDeformWeight *dw = dvert->dw; + float sum=0.0f, fac=0.0f, paintw=0.0f; + int i, tot=0; + + if (!map) + return; + + for (i=0; i<dvert->totweight; i++) { + if (dvert->dw[i].def_nr == paint_nr) + paintw = dvert->dw[i].weight; + + if (map[dvert->dw[i].def_nr]) { + tot += 1; + if (dvert->dw[i].def_nr != paint_nr) + sum += dvert->dw[i].weight; + } + } + + if (!tot || sum <= (1.0f - paintw)) + return; + + fac = sum / (1.0f - paintw); + fac = fac==0.0f ? 1.0f : 1.0f / fac; + + for (i=0; i<dvert->totweight; i++) { + if (map[dvert->dw[i].def_nr]) { + if (dvert->dw[i].def_nr != paint_nr) + dvert->dw[i].weight *= fac; + } + } +} + +static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, + int alpha, float paintweight, + int vgroup_mirror, char *validmap) { Mesh *me= ob->data; MDeformWeight *dw, *uw; @@ -1062,7 +1101,8 @@ static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, int alpha, return; wpaint_blend(wp, dw, uw, (float)alpha/255.0, paintweight); - + do_weight_paint_auto_normalize(me->dvert+index, vgroup, validmap); + if(me->editflag & ME_EDIT_MIRROR_X) { /* x mirror painting */ int j= mesh_get_x_mirror_vert(ob, index); if(j>=0) { @@ -1073,6 +1113,8 @@ static void do_weight_paint_vertex(VPaint *wp, Object *ob, int index, int alpha, uw= ED_vgroup_weight_verify(me->dvert+j, vgroup); uw->weight= dw->weight; + + do_weight_paint_auto_normalize(me->dvert+j, vgroup, validmap); } } } @@ -1266,8 +1308,67 @@ struct WPaintData { int vgroup_mirror; float *vertexcosnos; float wpimat[3][3]; + + /*variables for auto normalize*/ + int auto_normalize; + char *vgroup_validmap; /*stores if vgroups tie to deforming bones or not*/ }; +static char *wpaint_make_validmap(Mesh *me, Object *ob) +{ + bDeformGroup *dg; + ModifierData *md; + char *validmap; + bPose *pose; + bPoseChannel *chan; + ArmatureModifierData *amd; + GHash *gh = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp); + int i = 0, step1=1; + + /*add all names to a hash table*/ + for (dg=ob->defbase.first, i=0; dg; dg=dg->next, i++) { + BLI_ghash_insert(gh, dg->name, NULL); + } + + if (!i) + return NULL; + + validmap = MEM_callocN(i, "wpaint valid map"); + + /*now loop through the armature modifiers and identify deform bones*/ + for (md = ob->modifiers.first; md; md= !md->next && step1 ? (step1=0), modifiers_getVirtualModifierList(ob) : md->next) { + if (!(md->mode & (eModifierMode_Realtime|eModifierMode_Virtual))) + continue; + + if (md->type == eModifierType_Armature) + { + amd = (ArmatureModifierData*) md; + pose = amd->object->pose; + + for (chan=pose->chanbase.first; chan; chan=chan->next) { + if (chan->bone->flag & BONE_NO_DEFORM) + continue; + + if (BLI_ghash_haskey(gh, chan->name)) { + BLI_ghash_remove(gh, chan->name, NULL, NULL); + BLI_ghash_insert(gh, chan->name, SET_INT_IN_POINTER(1)); + } + } + } + } + + /*add all names to a hash table*/ + for (dg=ob->defbase.first, i=0; dg; dg=dg->next, i++) { + if (BLI_ghash_lookup(gh, dg->name) != NULL) { + validmap[i] = 1; + } + } + + BLI_ghash_free(gh, NULL, NULL); + + return validmap; +} + static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event) { Scene *scene= CTX_data_scene(C); @@ -1301,6 +1402,12 @@ static int wpaint_stroke_test_start(bContext *C, wmOperator *op, wmEvent *event) view3d_set_viewcontext(C, &wpd->vc); wpd->vgroup_mirror= -1; + /*set up auto-normalize, and generate map for detecting which + vgroups affect deform bones*/ + wpd->auto_normalize = ts->auto_normalize; + if (wpd->auto_normalize) + wpd->vgroup_validmap = wpaint_make_validmap(me, ob); + // if(qual & LR_CTRLKEY) { // sample_wpaint(scene, ar, v3d, 0); // return; @@ -1484,7 +1591,9 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P if ((me->dvert+ml->v)->flag) { alpha= calc_vp_alpha_dl(wp, vc, wpd->wpimat, wpd->vertexcosnos+6*ml->v, mval); if(alpha) { - do_weight_paint_vertex(wp, ob, ml->v, alpha, paintweight, wpd->vgroup_mirror); + do_weight_paint_vertex(wp, ob, ml->v, + alpha, paintweight, wpd->vgroup_mirror, + wpd->vgroup_validmap); } (me->dvert+ml->v)->flag= 0; } @@ -1508,6 +1617,9 @@ static void wpaint_stroke_done(bContext *C, struct PaintStroke *stroke) MEM_freeN(wpd->vertexcosnos); MEM_freeN(wpd->indexar); + if (wpd->vgroup_validmap) + MEM_freeN(wpd->vgroup_validmap); + /* frees prev buffer */ copy_wpaint_prev(ts->wpaint, NULL, 0); diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 1121a3bcbcd..3b42fc7b382 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -103,8 +103,8 @@ void SOUND_OT_open(wmOperatorType *ot) { /* identifiers */ ot->name= "Open Sound"; + ot->description= "Load a sound file."; ot->idname= "SOUND_OT_open"; - ot->description= "Load a sound file into blender"; /* api callbacks */ ot->exec= open_exec; @@ -154,6 +154,7 @@ void SOUND_OT_pack(wmOperatorType *ot) { /* identifiers */ ot->name= "Pack Sound"; + ot->description= "Pack the sound into the current blend file."; ot->idname= "SOUND_OT_pack"; /* api callbacks */ @@ -269,6 +270,7 @@ void SOUND_OT_unpack(wmOperatorType *ot) { /* identifiers */ ot->name= "Unpack Sound"; + ot->description= "Unpack the sound to the samples filename."; ot->idname= "SOUND_OT_unpack"; /* api callbacks */ diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index f3db414099f..da92e450ed5 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -109,6 +109,7 @@ void ED_spacetypes_init(void) /* Macros's must go last since they reference other operators * maybe we'll need to have them go after python operators too? */ + ED_operatormacros_armature(); ED_operatormacros_mesh(); ED_operatormacros_object(); } diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index d7375ee4e55..026498f17af 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -60,6 +60,7 @@ #include "ED_armature.h" #include "ED_screen.h" +#include "ED_physics.h" #include "UI_interface.h" #include "UI_resources.h" @@ -647,7 +648,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r Brush *br= ptr->data; if(br) - CTX_data_pointer_set(result, &br->id, &RNA_TextureSlot, br->mtex[(int)br->texact]); + CTX_data_pointer_set(result, &br->id, &RNA_BrushTextureSlot, br->mtex[(int)br->texact]); } return 1; @@ -665,7 +666,7 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r return 1; } else if(CTX_data_equals(member, "particle_system_editable")) { - if(PE_poll(C)) + if(PE_poll((bContext*)C)) set_pointer_type(path, result, &RNA_ParticleSystem); else CTX_data_pointer_set(result, NULL, &RNA_ParticleSystem, NULL); diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c index 37a08bcf2ed..0fb7ea9283c 100644 --- a/source/blender/editors/space_buttons/buttons_header.c +++ b/source/blender/editors/space_buttons/buttons_header.c @@ -124,7 +124,7 @@ void buttons_header_buttons(const bContext *C, ARegion *ar) if(sbuts->pathflag & (1<<BCONTEXT_BONE)) uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_BONE_DATA, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE, 0, 0, "Bone"); if(sbuts->pathflag & (1<<BCONTEXT_BONE_CONSTRAINT)) - uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_CONSTRAINT, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE_CONSTRAINT, 0, 0, "Bone Constraints"); + uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_CONSTRAINT_BONE, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE_CONSTRAINT, 0, 0, "Bone Constraints"); if(sbuts->pathflag & (1<<BCONTEXT_MATERIAL)) uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MATERIAL, xco+=BUTS_UI_UNIT, yco, BUTS_UI_UNIT, BUTS_UI_UNIT, &(sbuts->mainb), 0.0, (float)BCONTEXT_MATERIAL, 0, 0, "Material"); if(sbuts->pathflag & (1<<BCONTEXT_TEXTURE)) diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 47806ba7937..f05c652c39d 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -252,6 +252,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_MODE: case ND_RENDER_OPTIONS: case ND_KEYINGSET: + case ND_LAYER: ED_area_tag_redraw(sa); break; diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 49bc3adb5b9..c6565eb6ecc 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -164,21 +164,9 @@ static void console_main_area_draw(const bContext *C, ARegion *ar) View2DScrollers *scrollers; //float col[3]; - /* add helper text, why not? */ - if(sc->scrollback.first==NULL) { - console_scrollback_add_str(C, " * Python Interactive Console *", 0); - console_scrollback_add_str(C, "Command History: Up/Down Arrow", 0); - console_scrollback_add_str(C, "Cursor: Left/Right Home/End", 0); - console_scrollback_add_str(C, "Remove: Backspace/Delete", 0); - console_scrollback_add_str(C, "Execute: Enter", 0); - console_scrollback_add_str(C, "Autocomplete: Ctrl+Space", 0); - console_scrollback_add_str(C, "Ctrl +/- Wheel: Zoom", 0); - console_scrollback_add_str(C, "Builtin Modules: bpy, bpy.data, bpy.ops, bpy.props, bpy.types, bpy.ui", 0); - - /* This is normally set by python but to start with its easier just to set it like this rather then running python with no args */ - strcpy(sc->prompt, ">>> "); - } - + if((sc->type==CONSOLE_TYPE_PYTHON) && (sc->scrollback.first==NULL)) + WM_operator_name_call((bContext *)C, "CONSOLE_OT_banner", WM_OP_EXEC_DEFAULT, NULL); + /* clear and setup matrix */ //UI_GetThemeColor3fv(TH_BACK, col); //glClearColor(col[0], col[1], col[2], 0.0); diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index 2a1bb8b4add..a1f9a9fd250 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -290,8 +290,12 @@ static float shorten_string(char* string, float w, int flag) static int get_file_icon(struct direntry *file) { - if (file->type & S_IFDIR) + if (file->type & S_IFDIR) { + if ( strcmp(file->relname, "..") == 0) { + return ICON_FILE_PARENT; + } return ICON_FILE_FOLDER; + } else if (file->flags & BLENDERFILE) return ICON_FILE_BLEND; else if (file->flags & IMAGEFILE) diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 87a11305bd9..b5d69934ad5 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -105,6 +105,8 @@ static void do_graph_region_buttons(bContext *C, void *arg, int event) //WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob); } +/* -------------- */ + static int graph_panel_context(const bContext *C, bAnimListElem **ale, FCurve **fcu) { bAnimContext ac; @@ -136,6 +138,37 @@ static int graph_panel_poll(const bContext *C, PanelType *pt) return graph_panel_context(C, NULL, NULL); } +/* -------------- */ + +/* Graph Editor View Settings */ +static void graph_panel_view(const bContext *C, Panel *pa) +{ + bScreen *sc= CTX_wm_screen(C); + SpaceIpo *sipo= CTX_wm_space_graph(C); + Scene *scene= CTX_data_scene(C); + PointerRNA spaceptr, sceneptr; + uiLayout *col, *subcol; + + /* get RNA pointers for use when creating the UI elements */ + RNA_id_pointer_create(&scene->id, &sceneptr); + RNA_pointer_create(&sc->id, &RNA_SpaceGraphEditor, sipo, &spaceptr); + + /* 2D-Cursor */ + col= uiLayoutColumn(pa->layout, 0); + uiItemR(col, NULL, 0, &spaceptr, "show_cursor", 0); + + subcol= uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); + uiItemR(subcol, "Cursor X", 0, &sceneptr, "current_frame", 0); + uiItemR(subcol, "Cursor Y", 0, &spaceptr, "cursor_value", 0); + + subcol= uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); + uiItemO(subcol, "Cursor from Selection", 0, "GRAPH_OT_frame_jump"); +} + +/* ******************* active F-Curve ************** */ + static void graph_panel_properties(const bContext *C, Panel *pa) { bAnimListElem *ale; @@ -226,7 +259,7 @@ static void driver_delete_var_cb (bContext *C, void *driver_v, void *dtar_v) ChannelDriver *driver= (ChannelDriver *)driver_v; DriverTarget *dtar= (DriverTarget *)dtar_v; - /* add a new var */ + /* remove the active target */ driver_free_target(driver, dtar); } @@ -308,7 +341,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* add driver target variables */ col= uiLayoutColumn(pa->layout, 0); block= uiLayoutGetBlock(col); - but= uiDefBut(block, BUT, B_IPO_DEPCHANGE, "Add Variable", 0, 0, 10*UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "Add a new target variable for this Driver"); + but= uiDefBut(block, BUT, B_IPO_DEPCHANGE, "Add Target", 0, 0, 10*UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "Add a new target variable for this Driver"); uiButSetFunc(but, driver_add_var_cb, driver, NULL); /* loop over targets, drawing them */ @@ -413,6 +446,12 @@ void graph_buttons_register(ARegionType *art) { PanelType *pt; + pt= MEM_callocN(sizeof(PanelType), "spacetype graph panel view"); + strcpy(pt->idname, "GRAPH_PT_view"); + strcpy(pt->label, "View"); + pt->draw= graph_panel_view; + BLI_addtail(&art->paneltypes, pt); + pt= MEM_callocN(sizeof(PanelType), "spacetype graph panel properties"); strcpy(pt->idname, "GRAPH_PT_properties"); strcpy(pt->label, "Properties"); diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 442b44bb482..b467d7b4ca0 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -976,7 +976,7 @@ void GRAPH_OT_bake (wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_confirm; // FIXME... ot->exec= graphkeys_bake_exec; - ot->poll= graphop_editable_keyframes_poll; + ot->poll= graphop_selected_fcurve_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c index 5761432ee29..c8f96fe3373 100644 --- a/source/blender/editors/space_logic/logic_buttons.c +++ b/source/blender/editors/space_logic/logic_buttons.c @@ -133,6 +133,7 @@ static int logic_properties(bContext *C, wmOperator *op) void LOGIC_OT_properties(wmOperatorType *ot) { ot->name= "Properties"; + ot->description= "Toggle display properties panel."; ot->idname= "LOGIC_OT_properties"; ot->exec= logic_properties; diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 9f60f94defa..403a8d1a591 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -148,16 +148,6 @@ static void node_ID_title_cb(bContext *C, void *node_v, void *unused_v) } } - -static void node_but_title_cb(bContext *C, void *node_v, void *but_v) -{ - // bNode *node= node_v; - // XXX uiBut *bt= but_v; - // XXX BLI_strncpy(node->name, bt->drawstr, NODE_MAXSTR); - - // allqueue(REDRAWNODE, 0); -} - #if 0 /* XXX not used yet, make compiler happy :) */ static void node_group_alone_cb(bContext *C, void *node_v, void *unused_v) @@ -389,10 +379,7 @@ static void node_dynamic_update_cb(bContext *C, void *ntree_v, void *node_v) static void node_buts_texture(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); bNode *node= ptr->data; - bNodeTree *ntree= ptr->id.data; - rctf *butr= &node->butr; short multi = ( node->id && @@ -401,47 +388,19 @@ static void node_buts_texture(uiLayout *layout, PointerRNA *ptr) (node->type != TEX_NODE_TEXTURE) ); - uiBut *bt; - char *strp; - short width = (short)(butr->xmax - butr->xmin); - - /* browse button texture */ - uiBlockBeginAlign(block); - IDnames_to_pupstring(&strp, NULL, "", &(G.main->tex), NULL, NULL); - node->menunr= 0; - bt= uiDefButS(block, MENU, B_NODE_EXEC, strp, - butr->xmin, butr->ymin+(multi?30:0), 20, 19, - &node->menunr, 0, 0, 0, 0, "Browse texture"); - uiButSetFunc(bt, node_browse_tex_cb, ntree, node); - if(strp) MEM_freeN(strp); - - if(node->id) { - bt= uiDefBut(block, TEX, B_NOP, "TE:", - butr->xmin+19, butr->ymin+(multi?30:0), butr->xmax-butr->xmin-19, 19, - node->id->name+2, 0.0, 19.0, 0, 0, "Texture name"); - uiButSetFunc(bt, node_ID_title_cb, node, NULL); - } - uiBlockEndAlign(block); + uiItemR(layout, "", 0, ptr, "texture", 0); if(multi) { - char *menustr = ntreeTexOutputMenu(((Tex*)node->id)->nodetree); - uiDefButS(block, MENU, B_MATPRV, menustr, butr->xmin, butr->ymin, width, 19, &node->custom1, 0, 0, 0, 0, "Which output to use, for multi-output textures"); - free(menustr); + /* Number Drawing not optimal here, better have a list*/ + uiItemR(layout, "", 0, ptr, "node_output", 0); } } static void node_buts_math(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - uiBut *bt; - - bt=uiDefButS(block, MENU, B_NODE_EXEC, "Add %x0|Subtract %x1|Multiply %x2|Divide %x3|Sine %x4|Cosine %x5|Tangent %x6|Arcsine %x7|Arccosine %x8|Arctangent %x9|Power %x10|Logarithm %x11|Minimum %x12|Maximum %x13|Round %x14|Less Than %x15|Greater Than %x16", butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, &node->custom1, 0, 0, 0, 0, ""); - uiButSetFunc(bt, node_but_title_cb, node, bt); + uiItemR(layout, "", 0, ptr, "operation", 0); } - /* ****************** BUTTON CALLBACKS FOR SHADER NODES ***************** */ static void node_browse_text_cb(bContext *C, void *ntree_v, void *node_v) @@ -664,13 +623,7 @@ static void node_shader_buts_mapping(uiLayout *layout, PointerRNA *ptr) static void node_shader_buts_vect_math(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - uiBut *bt; - - bt=uiDefButS(block, MENU, B_NODE_EXEC, "Add %x0|Subtract %x1|Average %x2|Dot Product %x3 |Cross Product %x4|Normalize %x5", butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, &node->custom1, 0, 0, 0, 0, ""); - uiButSetFunc(bt, node_but_title_cb, node, bt); + uiItemR(layout, "", 0, ptr, "operation", 0); } static void node_shader_buts_geometry(uiLayout *layout, PointerRNA *ptr) @@ -786,8 +739,6 @@ static void node_shader_set_butfunc(bNodeType *ntype) /* ****************** BUTTON CALLBACKS FOR COMPOSITE NODES ***************** */ - - static void node_browse_image_cb(bContext *C, void *ntree_v, void *node_v) { bNodeTree *ntree= ntree_v; @@ -1362,7 +1313,6 @@ static void node_composit_buts_color_spill(uiLayout *layout, PointerRNA *ptr) static void node_composit_buts_chroma_matte(uiLayout *layout, PointerRNA *ptr) { - uiLayout *col; col= uiLayoutColumn(layout, 0); @@ -1373,26 +1323,6 @@ static void node_composit_buts_chroma_matte(uiLayout *layout, PointerRNA *ptr) uiItemR(col, NULL, 0, ptr, "lift", UI_ITEM_R_SLIDER); uiItemR(col, NULL, 0, ptr, "gain", UI_ITEM_R_SLIDER); uiItemR(col, NULL, 0, ptr, "shadow_adjust", UI_ITEM_R_SLIDER); - -// uiBlock *block= uiLayoutAbsoluteBlock(layout); -// bNode *node= ptr->data; -// rctf *butr= &node->butr; -// short dx=(butr->xmax-butr->xmin)/2; -// NodeChroma *c= node->storage; - -// uiBlockBeginAlign(block); -// -// uiDefButF(block, NUMSLI, B_NODE_EXEC, "Acceptance ", butr->xmin, butr->ymin+60, butr->xmax-butr->xmin, 20, &c->t1, 1.0f, 80.0f, 100, 0, "Tolerance for colors to be considered a keying color"); -// uiDefButF(block, NUMSLI, B_NODE_EXEC, "Cutoff ", butr->xmin, butr->ymin+40, butr->xmax-butr->xmin, 20, &c->t2, 0.0f, 30.0f, 100, 0, "Colors below this will be considered as exact matches for keying color"); -// -// uiDefButF(block, NUMSLI, B_NODE_EXEC, "Lift ", butr->xmin, butr->ymin+20, dx, 20, &c->fsize, 0.0f, 1.0f, 100, 0, "Alpha Lift"); -// uiDefButF(block, NUMSLI, B_NODE_EXEC, "Gain ", butr->xmin+dx, butr->ymin+20, dx, 20, &c->fstrength, 0.0f, 1.0f, 100, 0, "Alpha Gain"); -// -// uiDefButF(block, NUMSLI, B_NODE_EXEC, "Shadow Adjust ", butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, &c->t3, 0.0f, 1.0f, 100, 0, "Adjusts the brightness of any shadows captured"); -// uiBlockEndAlign(block); -// -// if(c->t2 > c->t1) -// c->t2=c->t1; } static void node_composit_buts_color_matte(uiLayout *layout, PointerRNA *ptr) @@ -1406,7 +1336,9 @@ static void node_composit_buts_color_matte(uiLayout *layout, PointerRNA *ptr) } static void node_composit_buts_channel_matte(uiLayout *layout, PointerRNA *ptr) -{ +{ + uiLayout *col, *row; + uiBlock *block= uiLayoutAbsoluteBlock(layout); bNode *node= ptr->data; rctf *butr= &node->butr; @@ -1415,16 +1347,9 @@ static void node_composit_buts_channel_matte(uiLayout *layout, PointerRNA *ptr) NodeChroma *c=node->storage; char *c1, *c2, *c3; - /*color space selectors*/ - uiBlockBeginAlign(block); - uiDefButS(block, ROW,B_NODE_EXEC,"RGB", - butr->xmin,butr->ymin+60,sx,20,&node->custom1,1,1, 0, 0, "RGB Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC,"HSV", - butr->xmin+sx,butr->ymin+60,sx,20,&node->custom1,1,2, 0, 0, "HSV Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC,"YUV", - butr->xmin+2*sx,butr->ymin+60,sx,20,&node->custom1,1,3, 0, 0, "YUV Color Space"); - uiDefButS(block, ROW,B_NODE_EXEC,"YCC", - butr->xmin+3*sx,butr->ymin+60,sx,20,&node->custom1,1,4, 0, 0, "YCbCr Color Space"); + /*color space selector*/ + row= uiLayoutRow(layout, 0); + uiItemR(row, NULL, 0, ptr, "color_space", UI_ITEM_R_EXPAND); if (node->custom1==1) { c1="R"; c2="G"; c3="B"; @@ -1440,48 +1365,30 @@ static void node_composit_buts_channel_matte(uiLayout *layout, PointerRNA *ptr) } /*channel selector */ + row= uiLayoutRow(layout, 0); + uiBlockBeginAlign(block); uiDefButS(block, ROW, B_NODE_EXEC, c1, butr->xmin,butr->ymin+40,cx,20,&node->custom2,1, 1, 0, 0, "Channel 1"); uiDefButS(block, ROW, B_NODE_EXEC, c2, butr->xmin+cx,butr->ymin+40,cx,20,&node->custom2,1, 2, 0, 0, "Channel 2"); uiDefButS(block, ROW, B_NODE_EXEC, c3, butr->xmin+cx+cx,butr->ymin+40,cx,20,&node->custom2, 1, 3, 0, 0, "Channel 3"); + uiBlockEndAlign(block); /*tolerance sliders */ - uiDefButF(block, NUMSLI, B_NODE_EXEC, "High ", - butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20, - &c->t1, 0.0f, 1.0f, 100, 0, "Values higher than this setting are 100% opaque"); - uiDefButF(block, NUMSLI, B_NODE_EXEC, "Low ", - butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, - &c->t2, 0.0f, 1.0f, 100, 0, "Values lower than this setting are 100% keyed"); - uiBlockEndAlign(block); + col =uiLayoutColumn(layout, 1); + uiItemR(col, NULL, 0, ptr, "high", UI_ITEM_R_SLIDER); + uiItemR(col, NULL, 0, ptr, "low", UI_ITEM_R_SLIDER); - /*keep t2 (low) less than t1 (high) */ - if(c->t2 > c->t1) { - c->t2=c->t1; - } } static void node_composit_buts_luma_matte(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - NodeChroma *c=node->storage; - - /*tolerance sliders */ - uiDefButF(block, NUMSLI, B_NODE_EXEC, "High ", - butr->xmin, butr->ymin+20.0, butr->xmax-butr->xmin, 20, - &c->t1, 0.0f, 1.0f, 100, 0, "Values higher than this setting are 100% opaque"); - uiDefButF(block, NUMSLI, B_NODE_EXEC, "Low ", - butr->xmin, butr->ymin, butr->xmax-butr->xmin, 20, - &c->t2, 0.0f, 1.0f, 100, 0, "Values lower than this setting are 100% keyed"); - uiBlockEndAlign(block); - - /*keep t2 (low) less than t1 (high) */ - if(c->t2 > c->t1) { - c->t2=c->t1; - } + uiLayout *col; + + col= uiLayoutColumn(layout, 1); + uiItemR(col, NULL, 0, ptr, "high", UI_ITEM_R_SLIDER); + uiItemR(col, NULL, 0, ptr, "low", UI_ITEM_R_SLIDER); } static void node_composit_buts_map_uv(uiLayout *layout, PointerRNA *ptr) @@ -1501,6 +1408,7 @@ static void node_composit_buts_id_mask(uiLayout *layout, PointerRNA *ptr) } /* allocate sufficient! */ +/* static void node_imagetype_string(char *str) { str += sprintf(str, "Save Image as: %%t|"); @@ -1515,67 +1423,37 @@ static void node_imagetype_string(char *str) str += sprintf(str, "DPX %%x%d|", R_DPX); str += sprintf(str, "OpenEXR %%x%d", R_OPENEXR); } +*/ -static void node_set_image_cb(bContext *C, void *ntree_v, void *node_v) +/*static void node_set_image_cb(bContext *C, void *ntree_v, void *node_v) { bNodeTree *ntree= ntree_v; bNode *node= node_v; nodeSetActive(ntree, node); } +*/ static void node_composit_buts_file_output(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - bNodeTree *ntree= ptr->id.data; - rctf *butr= &node->butr; - NodeImageFile *nif= node->storage; - uiBut *bt; - short x= (short)butr->xmin; - short y= (short)butr->ymin; - short w= (short)butr->xmax-butr->xmin; - char str[320]; - - node_imagetype_string(str); - - uiBlockBeginAlign(block); - - bt = uiDefIconBut(block, BUT, B_NODE_SETIMAGE, ICON_FILESEL, - x, y+60, 20, 20, - 0, 0, 0, 0, 0, "Open Fileselect to get Backbuf image"); - uiButSetFunc(bt, node_set_image_cb, ntree, node); - - uiDefBut(block, TEX, B_NOP, "", - 20+x, y+60, w-20, 20, - nif->name, 0.0f, 240.0f, 0, 0, ""); - - uiDefButS(block, MENU, B_NOP, str, - x, y+40, w, 20, - &nif->imtype, 0.0f, 1.0f, 0, 0, ""); - - if(nif->imtype==R_OPENEXR) { - uiDefButBitS(block, TOG, R_OPENEXR_HALF, B_REDR, "Half", - x, y+20, w/2, 20, - &nif->subimtype, 0, 0, 0, 0, ""); + uiLayout *col, *row; - uiDefButS(block, MENU,B_NOP, "Codec %t|None %x0|Pxr24 (lossy) %x1|ZIP (lossless) %x2|PIZ (lossless) %x3|RLE (lossless) %x4", - x+w/2, y+20, w/2, 20, - &nif->codec, 0, 0, 0, 0, ""); + col= uiLayoutColumn(layout, 0); + uiItemR(col, "", 0, ptr, "filename", 0); + uiItemR(col, "", 0, ptr, "image_type", 0); + + row= uiLayoutRow(layout, 0); + if (RNA_enum_get(ptr, "image_type")== R_OPENEXR) { + uiItemR(row, NULL, 0, ptr, "exr_half", 0); + uiItemR(row, "", 0, ptr, "exr_codec", 0); } - else { - uiDefButS(block, NUM, B_NOP, "Quality: ", - x, y+20, w, 20, - &nif->quality, 10.0f, 100.0f, 10, 0, ""); + else if (RNA_enum_get(ptr, "image_type")== R_JPEG90) { + uiItemR(row, NULL, 0, ptr, "quality", UI_ITEM_R_SLIDER); } - /* start frame, end frame */ - uiDefButI(block, NUM, B_NODE_EXEC, "SFra: ", - x, y, w/2, 20, - &nif->sfra, 1, MAXFRAMEF, 10, 0, ""); - uiDefButI(block, NUM, B_NODE_EXEC, "EFra: ", - x+w/2, y, w/2, 20, - &nif->efra, 1, MAXFRAMEF, 10, 0, ""); + row= uiLayoutRow(layout, 1); + uiItemR(row, "Start", 0, ptr, "start_frame", 0); + uiItemR(row, "End", 0, ptr, "end_frame", 0); } static void node_scale_cb(bContext *C, void *node_v, void *unused_v) @@ -1771,43 +1649,15 @@ static void node_composit_set_butfunc(bNodeType *ntype) static void node_texture_buts_bricks(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - short w = butr->xmax-butr->xmin; - short ofw = 32; - - uiBlockBeginAlign(block); + uiLayout *col; - /* Offset */ - uiDefButF( - block, NUM, B_NODE_EXEC, "Offset", - butr->xmin, butr->ymin+20, w-ofw, 20, - &node->custom3, - 0, 1, 0.25, 2, - "Offset amount" ); - uiDefButS( - block, NUM, B_NODE_EXEC, "", - butr->xmin+w-ofw, butr->ymin+20, ofw, 20, - &node->custom1, - 2, 99, 0, 0, - "Offset every N rows" ); - - /* Squash */ - uiDefButF( - block, NUM, B_NODE_EXEC, "Squash", - butr->xmin, butr->ymin+0, w-ofw, 20, - &node->custom4, - 0, 99, 0.25, 2, - "Stretch amount" ); - uiDefButS( - block, NUM, B_NODE_EXEC, "", - butr->xmin+w-ofw, butr->ymin+0, ofw, 20, - &node->custom2, - 2, 99, 0, 0, - "Stretch every N rows" ); + col= uiLayoutColumn(layout, 1); + uiItemR(col, "Offset", 0, ptr, "offset", 0); + uiItemR(col, "Frequency", 0, ptr, "offset_frequency", 0); - uiBlockEndAlign(block); + col= uiLayoutColumn(layout, 1); + uiItemR(col, "Squash", 0, ptr, "squash", 0); + uiItemR(col, "Frequency", 0, ptr, "squash_frequency", 0); } /* Copied from buttons_shading.c -- needs unifying */ @@ -1938,28 +1788,7 @@ static void node_texture_buts_image(uiLayout *layout, PointerRNA *ptr) static void node_texture_buts_output(uiLayout *layout, PointerRNA *ptr) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - bNode *node= ptr->data; - rctf *butr= &node->butr; - uiBut *bt; - short width; - char *name = ((TexNodeOutput*)node->storage)->name; - - uiBlockBeginAlign(block); - - width = (short)(butr->xmax - butr->xmin); - - bt = uiDefBut( - block, TEX, B_NOP, - "Name:", - butr->xmin, butr->ymin, - width, 19, - name, 0, 31, - 0, 0, - "Name this output" - ); - - uiBlockEndAlign(block); + uiItemR(layout, "", 0, ptr, "output_name", 0); } /* only once called */ diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index 77a8210a2a5..46461eff76b 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -115,7 +115,7 @@ static SpaceLink *node_new(const bContext *C) ar->v2d.max[0]= 32000.0f; ar->v2d.max[1]= 32000.0f; - ar->v2d.minzoom= 0.5f; + ar->v2d.minzoom= 0.2f; ar->v2d.maxzoom= 1.21f; ar->v2d.scroll= (V2D_SCROLL_RIGHT|V2D_SCROLL_BOTTOM); diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 826a313217a..93fdc96e9f7 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -121,6 +121,7 @@ static void outliner_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_KEYINGSET: case ND_FRAME: case ND_RENDER_OPTIONS: + case ND_LAYER: ED_region_tag_redraw(ar); break; } diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index c17793b28f8..df6f932acdf 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -79,6 +79,7 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot) { /* identifiers */ ot->name= "Run python file"; + ot->description= "Run Python file."; ot->idname= "SCRIPT_OT_python_file_run"; /* api callbacks */ @@ -111,6 +112,7 @@ void SCRIPT_OT_python_run_ui_scripts(wmOperatorType *ot) { /* identifiers */ ot->name= "Reload Python Interface"; + ot->description= "Reload Python interface."; ot->idname= "SCRIPT_OT_python_run_ui_scripts"; /* api callbacks */ diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 80b018eec66..a5e89b4023a 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -298,8 +298,6 @@ Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, int sel) if(ed==NULL) return NULL; - if (sel) sel = SELECT; - seq= ed->seqbasep->first; while(seq) { if( (seq!=test) && @@ -2445,3 +2443,229 @@ void SEQUENCER_OT_view_selected(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER; } + + +static int find_next_prev_edit(Scene *scene, int cfra, int side) +{ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *seq,*best_seq = NULL,*frame_seq = NULL; + + int dist, best_dist; + best_dist = MAXFRAME*2; + + if(ed==NULL) return cfra; + + for(seq= ed->seqbasep->first; seq; seq= seq->next) { + dist = MAXFRAME*2; + + switch (side) { + case SEQ_SIDE_LEFT: + if (seq->startdisp < cfra) { + dist = cfra - seq->startdisp; + } + break; + case SEQ_SIDE_RIGHT: + if (seq->startdisp > cfra) { + dist = seq->startdisp - cfra; + } else if (seq->startdisp == cfra) { + frame_seq=seq; + } + break; + } + + if (dist < best_dist) { + best_dist = dist; + best_seq = seq; + } + } + + /* if no sequence to the right is found and the + frame is on the start of the last sequence, + move to the end of the last sequence */ + if (frame_seq) cfra = frame_seq->enddisp; + + return best_seq ? best_seq->startdisp : cfra; +} + +static int next_prev_edit_internal(Scene *scene, int side) +{ + int change=0; + int cfra = CFRA; + int nfra= find_next_prev_edit(scene, cfra, side); + + if (nfra != cfra) { + CFRA = nfra; + change= 1; + } + + return change; +} + +/* select less operator */ +static int sequencer_next_edit_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + + if (next_prev_edit_internal(scene, SEQ_SIDE_RIGHT)) { + ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + } + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_next_edit(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Next Edit"; + ot->idname= "SEQUENCER_OT_next_edit"; + ot->description="Move frame to next edit point."; + + /* api callbacks */ + ot->exec= sequencer_next_edit_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + +/* move frame to previous edit point operator */ +static int sequencer_previous_edit_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + + if (next_prev_edit_internal(scene, SEQ_SIDE_LEFT)) { + ED_area_tag_redraw(CTX_wm_area(C)); + } + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_previous_edit(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Previous Edit"; + ot->idname= "SEQUENCER_OT_previous_edit"; + ot->description="Move frame to previous edit point."; + + /* api callbacks */ + ot->exec= sequencer_previous_edit_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + +static void swap_sequence(Sequence* seqa, Sequence* seqb) +{ + int gap = seqb->startdisp - seqa->enddisp; + seqb->start = seqa->start; + calc_sequence(seqb); + seqa->start = seqb->enddisp + gap; + calc_sequence(seqa); +} + +static Sequence* sequence_find_parent(Scene* scene, Sequence* child) +{ + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *parent= NULL; + Sequence *seq; + + if(ed==NULL) return NULL; + + for(seq= ed->seqbasep->first; seq; seq= seq->next) { + if ( (seq != child) && seq_is_parent(seq, child) ) { + parent = seq; + break; + } + } + return parent; + +} + +static int sequencer_swap_internal_exec(bContext *C, int side) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + Sequence *active_seq = get_last_seq(scene); + Sequence *seq; + + if(ed==NULL) return OPERATOR_CANCELLED; + if(active_seq==NULL) return OPERATOR_CANCELLED; + + seq = find_next_prev_sequence(scene, active_seq, side, -1); + + if(seq) { + + /* disallow effect strips */ + if ((seq->type!=SEQ_COLOR) && (seq->effectdata || seq->seq1 || seq->seq2 || seq->seq3)) + return OPERATOR_CANCELLED; + if ((active_seq->type!=SEQ_COLOR) && (active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3)) + return OPERATOR_CANCELLED; + + /* disallow if parent strip (effect strip) is attached */ + if ( sequence_find_parent(scene, active_seq)) { + return OPERATOR_CANCELLED; + } + + switch (side) { + case SEQ_SIDE_LEFT: + swap_sequence(seq, active_seq); + break; + case SEQ_SIDE_RIGHT: + swap_sequence(active_seq, seq); + break; + } + ED_area_tag_redraw(CTX_wm_area(C)); + } + + return OPERATOR_FINISHED; +} + +static int sequencer_swap_right_exec(bContext *C, wmOperator *op) +{ + return sequencer_swap_internal_exec(C, SEQ_SIDE_RIGHT); +} + +void SEQUENCER_OT_swap_right(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Swap Strip Right"; + ot->idname= "SEQUENCER_OT_swap_right"; + ot->description="Swap active strip with strip to the right."; + + /* api callbacks */ + ot->exec= sequencer_swap_right_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + +static int sequencer_swap_left_exec(bContext *C, wmOperator *op) +{ + return sequencer_swap_internal_exec(C, SEQ_SIDE_LEFT); +} + +void SEQUENCER_OT_swap_left(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Swap Strip Left"; + ot->idname= "SEQUENCER_OT_swap_left"; + ot->description="Swap active strip with strip to the left."; + + /* api callbacks */ + ot->exec= sequencer_swap_left_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index d45d7bf4d18..0a8208fcc2e 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -91,6 +91,10 @@ void SEQUENCER_OT_meta_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_meta_make(struct wmOperatorType *ot); void SEQUENCER_OT_meta_separate(struct wmOperatorType *ot); void SEQUENCER_OT_snap(struct wmOperatorType *ot); +void SEQUENCER_OT_previous_edit(struct wmOperatorType *ot); +void SEQUENCER_OT_next_edit(struct wmOperatorType *ot); +void SEQUENCER_OT_swap_right(struct wmOperatorType *ot); +void SEQUENCER_OT_swap_left(struct wmOperatorType *ot); void SEQUENCER_OT_view_all(struct wmOperatorType *ot); void SEQUENCER_OT_view_selected(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 58ac143d349..90342fc62b5 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -77,6 +77,10 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_meta_make); WM_operatortype_append(SEQUENCER_OT_meta_separate); WM_operatortype_append(SEQUENCER_OT_snap); + WM_operatortype_append(SEQUENCER_OT_next_edit); + WM_operatortype_append(SEQUENCER_OT_previous_edit); + WM_operatortype_append(SEQUENCER_OT_swap_right); + WM_operatortype_append(SEQUENCER_OT_swap_left); WM_operatortype_append(SEQUENCER_OT_view_all); WM_operatortype_append(SEQUENCER_OT_view_selected); @@ -142,6 +146,12 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", HOMEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_next_edit", PAGEUPKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_previous_edit", PAGEDOWNKEY, KM_PRESS, 0, 0); + + WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_left", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_swap_right", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); + /* Mouse selection, a bit verbose :/ */ WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 09a5374a43b..e9cd2644ba6 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -224,6 +224,7 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_OSKEY, 0); WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0); #endif WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_ALT, 0); @@ -252,6 +253,7 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "TEXT_OT_select_line", AKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); WM_keymap_add_item(keymap, "TEXT_OT_indent", TABKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index 26135cd8d31..80a200a8495 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -209,6 +209,7 @@ static short set_pchan_glColor (short colCode, int armflag, int boneflag, int co if (constflag & PCHAN_HAS_STRIDE) glColor4ub(0, 0, 200, 80); else if (constflag & PCHAN_HAS_TARGET) glColor4ub(255, 150, 0, 80); else if (constflag & PCHAN_HAS_IK) glColor4ub(255, 255, 0, 80); + else if (constflag & PCHAN_HAS_SPLINEIK) glColor4ub(200, 255, 0, 80); else if (constflag & PCHAN_HAS_CONST) glColor4ub(0, 255, 120, 80); else if (constflag) UI_ThemeColor4(TH_BONE_POSE); // PCHAN_HAS_ACTION @@ -280,6 +281,7 @@ static short set_pchan_glColor (short colCode, int armflag, int boneflag, int co if (constflag & PCHAN_HAS_STRIDE) glColor3ub(0, 0, 200); else if (constflag & PCHAN_HAS_TARGET) glColor3ub(255, 150, 0); else if (constflag & PCHAN_HAS_IK) glColor3ub(255, 255, 0); + else if (constflag & PCHAN_HAS_SPLINEIK) glColor3ub(200, 255, 0); else if (constflag & PCHAN_HAS_CONST) glColor3ub(0, 255, 120); else if (constflag) UI_ThemeColor(TH_BONE_POSE); /* PCHAN_HAS_ACTION */ } @@ -1296,7 +1298,12 @@ static void pchan_draw_IK_root_lines(bPoseChannel *pchan, short only_temp) bPoseChannel *parchan; for (con= pchan->constraints.first; con; con= con->next) { - if (con->type == CONSTRAINT_TYPE_KINEMATIC && (con->enforce!=0.0)) { + if (con->enforce == 0.0f) + continue; + + switch (con->type) { + case CONSTRAINT_TYPE_KINEMATIC: + { bKinematicConstraint *data = (bKinematicConstraint*)con->data; int segcount= 0; @@ -1327,6 +1334,33 @@ static void pchan_draw_IK_root_lines(bPoseChannel *pchan, short only_temp) glEnd(); setlinestyle(0); } + break; + case CONSTRAINT_TYPE_SPLINEIK: + { + bSplineIKConstraint *data = (bSplineIKConstraint*)con->data; + int segcount= 0; + + setlinestyle(3); + glBegin(GL_LINES); + + parchan= pchan; + glVertex3fv(parchan->pose_tail); + + /* Find the chain's root */ + while (parchan->parent) { + segcount++; + // FIXME: revise the breaking conditions + if(segcount==data->chainlen || segcount>255) break; // 255 is weak + parchan= parchan->parent; + } + if (parchan) // XXX revise the breaking conditions to only stop at the tail? + glVertex3fv(parchan->pose_head); + + glEnd(); + setlinestyle(0); + } + break; + } } } @@ -1743,7 +1777,15 @@ static void draw_pose_channels(Scene *scene, View3D *v3d, ARegion *ar, Base *bas pchan_draw_IK_root_lines(pchan, !(do_dashed & 2)); } } + else if (pchan->constflag & PCHAN_HAS_SPLINEIK) { + if (bone->flag & BONE_SELECTED) { + glColor3ub(150, 200, 50); // add theme! + + glLoadName(index & 0xFFFF); + pchan_draw_IK_root_lines(pchan, !(do_dashed & 2)); } + } + } } glPushMatrix(); diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 695d86bb51b..4a9042aa31c 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -445,6 +445,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_FRAME: case ND_OB_ACTIVE: case ND_OB_SELECT: + case ND_LAYER: ED_region_tag_redraw(ar); break; case ND_MODE: @@ -551,6 +552,7 @@ static void view3d_header_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_MODE: + case ND_LAYER: ED_region_tag_redraw(ar); break; } @@ -598,6 +600,7 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_OB_SELECT: case ND_MODE: + case ND_LAYER: ED_region_tag_redraw(ar); break; } @@ -660,9 +663,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes static const char *dir[] = { "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", "visible_objects", "visible_bases", "selectable_objects", "selectable_bases", - "active_base", "active_object", "visible_bones", "editable_bones", - "selected_bones", "selected_editable_bones", "visible_pchans", - "selected_pchans", "active_bone", "active_pchan", NULL}; + "active_base", "active_object", NULL}; CTX_data_dir_set(result, dir); } @@ -746,154 +747,6 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes return 1; } - else if(CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { - Object *obedit= scene->obedit; // XXX get from context? - bArmature *arm= (obedit) ? obedit->data : NULL; - EditBone *ebone, *flipbone=NULL; - int editable_bones= CTX_data_equals(member, "editable_bones"); - - if (arm && arm->edbo) { - /* Attention: X-Axis Mirroring is also handled here... */ - for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { - /* first and foremost, bone must be visible and selected */ - if (EBONE_VISIBLE(arm, ebone)) { - /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled - * so that most users of this data don't need to explicitly check for it themselves. - * - * We need to make sure that these mirrored copies are not selected, otherwise some - * bones will be operated on twice. - */ - if (arm->flag & ARM_MIRROR_EDIT) - flipbone = ED_armature_bone_get_mirrored(arm->edbo, ebone); - - /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ - if (editable_bones) { - /* only selected + editable */ - if (EBONE_EDITABLE(ebone)) { - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); - - if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); - } - } - else { - /* only include bones if visible */ - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); - - if ((flipbone) && EBONE_VISIBLE(arm, flipbone)==0) - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); - } - } - } - - return 1; - } - } - else if(CTX_data_equals(member, "selected_bones") || CTX_data_equals(member, "selected_editable_bones")) { - Object *obedit= scene->obedit; // XXX get from context? - bArmature *arm= (obedit) ? obedit->data : NULL; - EditBone *ebone, *flipbone=NULL; - int selected_editable_bones= CTX_data_equals(member, "selected_editable_bones"); - - if (arm && arm->edbo) { - /* Attention: X-Axis Mirroring is also handled here... */ - for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { - /* first and foremost, bone must be visible and selected */ - if (EBONE_VISIBLE(arm, ebone) && (ebone->flag & BONE_SELECTED)) { - /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled - * so that most users of this data don't need to explicitly check for it themselves. - * - * We need to make sure that these mirrored copies are not selected, otherwise some - * bones will be operated on twice. - */ - if (arm->flag & ARM_MIRROR_EDIT) - flipbone = ED_armature_bone_get_mirrored(arm->edbo, ebone); - - /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ - if (selected_editable_bones) { - /* only selected + editable */ - if (EBONE_EDITABLE(ebone)) { - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); - - if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); - } - } - else { - /* only include bones if selected */ - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, ebone); - - if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) - CTX_data_list_add(result, &arm->id, &RNA_UnknownType, flipbone); - } - } - } - - return 1; - } - } - else if(CTX_data_equals(member, "visible_pchans")) { - Object *obact= OBACT; - bArmature *arm= (obact) ? obact->data : NULL; - bPoseChannel *pchan; - - if (obact && arm) { - for (pchan= obact->pose->chanbase.first; pchan; pchan= pchan->next) { - /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ - if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan); - } - } - - return 1; - } - } - else if(CTX_data_equals(member, "selected_pchans")) { - Object *obact= OBACT; - bArmature *arm= (obact) ? obact->data : NULL; - bPoseChannel *pchan; - - if (obact && arm) { - for (pchan= obact->pose->chanbase.first; pchan; pchan= pchan->next) { - /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ - if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - if (pchan->bone->flag & (BONE_SELECTED|BONE_ACTIVE)) - CTX_data_list_add(result, &obact->id, &RNA_PoseChannel, pchan); - } - } - - return 1; - } - } - else if(CTX_data_equals(member, "active_bone")) { - Object *obedit= scene->obedit; // XXX get from context? - bArmature *arm= (obedit) ? obedit->data : NULL; - EditBone *ebone; - - if (arm && arm->edbo) { - for (ebone= arm->edbo->first; ebone; ebone= ebone->next) { - if (EBONE_VISIBLE(arm, ebone)) { - if (ebone->flag & BONE_ACTIVE) { - CTX_data_pointer_set(result, &arm->id, &RNA_UnknownType, ebone); - - return 1; - } - } - } - } - - } - else if(CTX_data_equals(member, "active_pchan")) { - Object *obact= OBACT; - bPoseChannel *pchan; - - pchan= get_active_posechannel(obact); - if (pchan) { - CTX_data_pointer_set(result, &obact->id, &RNA_PoseChannel, pchan); - return 1; - } - } - return 0; } diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index 7ce1b856309..25ddb64a6d1 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -496,6 +496,80 @@ static void validate_bonebutton_cb(bContext *C, void *bonev, void *namev) } #endif +static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *split, *colsub; + + split = uiLayoutSplit(layout, 0.8); + + if (ptr->type == &RNA_PoseChannel) { + PointerRNA boneptr; + Bone *bone; + + boneptr = RNA_pointer_get(ptr, "bone"); + bone = boneptr.data; + uiLayoutSetActive(split, !(bone->parent && bone->flag & BONE_CONNECTED)); + } + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Location", 0, ptr, "location", 0); + colsub = uiLayoutColumn(split, 1); + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_location", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + + split = uiLayoutSplit(layout, 0.8); + + switch(RNA_enum_get(ptr, "rotation_mode")) { + case ROT_MODE_XYZ: + case ROT_MODE_XZY: + case ROT_MODE_YXZ: + case ROT_MODE_YZX: + case ROT_MODE_ZXY: + case ROT_MODE_ZYX: + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); + colsub = uiLayoutColumn(split, 1); + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + break; + case ROT_MODE_QUAT: + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0); + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + if (RNA_boolean_get(ptr, "lock_rotations_4d")) + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + else + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + break; + case ROT_MODE_AXISANGLE: + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0); + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "W", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + if (RNA_boolean_get(ptr, "lock_rotations_4d")) + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + else + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + break; + } + uiItemR(layout, "", 0, ptr, "rotation_mode", 0); + + split = uiLayoutSplit(layout, 0.8); + colsub = uiLayoutColumn(split, 1); + uiItemR(colsub, "Scale", 0, ptr, "scale", 0); + colsub = uiLayoutColumn(split, 1); + uiItemL(colsub, "", 0); + uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_scale", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + + if (ptr->type == &RNA_Object) { + Object *ob = ptr->data; + if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) + uiItemR(layout, "Dimensions", 0, ptr, "dimensions", 0); + } +} + static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, float lim) { uiBlock *block= uiLayoutGetBlock(layout); @@ -504,7 +578,7 @@ static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo Bone *bone= NULL; TransformProperties *tfp= v3d->properties_storage; PointerRNA pchanptr; - uiLayout *row; + uiLayout *row, *col; arm = ob->data; if (!arm || !ob->pose) return; @@ -514,17 +588,18 @@ static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo if(bone && (bone->flag & BONE_ACTIVE) && (bone->layer & arm->layer)) break; } - if (!pchan) { - uiDefBut(block, LABEL, 0, "No Bone Active", 0, 240, 100, 20, 0, 0, 0, 0, 0, ""); - return; - } - else { - row= uiLayoutRow(layout, 0); +// row= uiLayoutRow(layout, 0); + RNA_pointer_create(&ob->id, &RNA_PoseChannel, pchan, &pchanptr); - uiItemL(row, "", ICON_BONE_DATA); - uiItemR(row, "", 0, &pchanptr, "name", 0); - } + + col= uiLayoutColumn(layout, 0); + /* XXX: RNA buts show data in native types (i.e. quats, 4-component axis/angle, etc.) + * but oldskool UI shows in eulers always. Do we want to be able to still display in Eulers? + * Maybe needs RNA/ui options to display rotations as different types... */ + v3d_transform_butsR(col, &pchanptr); + +#if 0 uiLayoutAbsoluteBlock(layout); if (pchan->rotmode == ROT_MODE_AXISANGLE) { @@ -579,6 +654,7 @@ static void v3d_posearmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo uiDefIconButBitS(block, ICONTOG, OB_LOCK_SCALEY, B_REDR, ICON_UNLOCKED, 125, 40, 25, 19, &(pchan->protectflag), 0, 0, 0, 0, "Protects Y Scale value from being Transformed"); uiDefIconButBitS(block, ICONTOG, OB_LOCK_SCALEZ, B_REDR, ICON_UNLOCKED, 125, 20, 25, 19, &(pchan->protectflag), 0, 0, 0, 0, "Protects z Scale value from being Transformed"); uiBlockEndAlign(block); +#endif } /* assumes armature editmode */ @@ -603,7 +679,7 @@ static void v3d_editarmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo bArmature *arm= ob->data; EditBone *ebone; TransformProperties *tfp= v3d->properties_storage; - uiLayout *row; + uiLayout *row, *col; PointerRNA eboneptr; ebone= arm->edbo->first; @@ -616,69 +692,73 @@ static void v3d_editarmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo if (!ebone) return; - row= uiLayoutRow(layout, 0); +// row= uiLayoutRow(layout, 0); RNA_pointer_create(&arm->id, &RNA_EditBone, ebone, &eboneptr); - uiItemL(row, "", ICON_BONE_DATA); - uiItemR(row, "", 0, &eboneptr, "name", 0); - uiLayoutAbsoluteBlock(layout); - - uiDefBut(block, LABEL, 0, "Head:", 0, 210, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "X:", 0, 190, 100, 19, ebone->head, -lim, lim, 10, 3, "X Location of the head end of the bone"); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Y:", 0, 170, 100, 19, ebone->head+1, -lim, lim, 10, 3, "Y Location of the head end of the bone"); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Z:", 0, 150, 100, 19, ebone->head+2, -lim, lim, 10, 3, "Z Location of the head end of the bone"); - if (ebone->parent && ebone->flag & BONE_CONNECTED ) - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Radius:", 0, 130, 100, 19, &ebone->parent->rad_tail, 0, lim, 10, 3, "Head radius. Visualize with the Envelope display option"); - else - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Radius:", 0, 130, 100, 19, &ebone->rad_head, 0, lim, 10, 3, "Head radius. Visualize with the Envelope display option"); - uiBlockEndAlign(block); - - uiBlockEndAlign(block); - uiDefBut(block, LABEL, 0, "Tail:", 0, 110, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "X:", 0, 90, 100, 19, ebone->tail, -lim, lim, 10, 3, "X Location of the tail end of the bone"); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Y:", 0, 70, 100, 19, ebone->tail+1, -lim, lim, 10, 3, "Y Location of the tail end of the bone"); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Z:", 0, 50, 100, 19, ebone->tail+2, -lim, lim, 10, 3, "Z Location of the tail end of the bone"); - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Radius:", 0, 30, 100, 19, &ebone->rad_tail, 0, lim, 10, 3, "Tail radius. Visualize with the Envelope display option"); - uiBlockEndAlign(block); - - tfp->ob_eul[0]= 180.0*ebone->roll/M_PI; - uiDefButF(block, NUM, B_ARMATUREPANEL1, "Roll:", 0, 0, 100, 19, tfp->ob_eul, -lim, lim, 1000, 3, "Bone rotation around head-tail axis"); - uiBlockBeginAlign(block); + + col= uiLayoutColumn(layout, 0); + uiItemR(col, "Head", 0, &eboneptr, "head", 0); + if (ebone->parent && ebone->flag & BONE_CONNECTED ) { + PointerRNA parptr = RNA_pointer_get(&eboneptr, "parent"); + uiItemR(col, "Radius", 0, &parptr, "tail_radius", 0); + } else { + uiItemR(col, "Radius", 0, &eboneptr, "head_radius", 0); + } + uiItemR(col, "Tail", 0, &eboneptr, "tail", 0); + uiItemR(col, "Radius", 0, &eboneptr, "tail_radius", 0); + uiItemR(col, "Roll", 0, &eboneptr, "roll", 0); } static void v3d_editmetaball_buts(uiLayout *layout, Object *ob, float lim) { - uiBlock *block= uiLayoutAbsoluteBlock(layout); - MetaElem *lastelem= NULL; // XXX - - if(lastelem) { - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_RECALCMBALL, "LocX:", 10, 70, 140, 19, &lastelem->x, -lim, lim, 100, 3, ""); - uiDefButF(block, NUM, B_RECALCMBALL, "LocY:", 10, 50, 140, 19, &lastelem->y, -lim, lim, 100, 3, ""); - uiDefButF(block, NUM, B_RECALCMBALL, "LocZ:", 10, 30, 140, 19, &lastelem->z, -lim, lim, 100, 3, ""); - - uiBlockBeginAlign(block); - if(lastelem->type!=MB_BALL) - uiDefButF(block, NUM, B_RECALCMBALL, "dx:", 160, 70, 140, 19, &lastelem->expx, 0, lim, 100, 3, ""); - if((lastelem->type!=MB_BALL) && (lastelem->type!=MB_TUBE)) - uiDefButF(block, NUM, B_RECALCMBALL, "dy:", 160, 50, 140, 19, &lastelem->expy, 0, lim, 100, 3, ""); - if((lastelem->type==MB_ELIPSOID) || (lastelem->type==MB_CUBE)) - uiDefButF(block, NUM, B_RECALCMBALL, "dz:", 160, 30, 140, 19, &lastelem->expz, 0, lim, 100, 3, ""); - - uiBlockEndAlign(block); + PointerRNA mbptr, ptr; + MetaBall *mball= ob->data; + uiLayout *row, *col; + + if (!mball || !(mball->lastelem)) return; + + RNA_pointer_create(&mball->id, &RNA_MetaBall, mball, &mbptr); + +// row= uiLayoutRow(layout, 0); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_RECALCMBALL, "Radius:", 10, 120, 140, 19, &lastelem->rad, 0, lim, 100, 3, "Size of the active metaball"); - uiDefButF(block, NUM, B_RECALCMBALL, "Stiffness:", 10, 100, 140, 19, &lastelem->s, 0, 10, 100, 3, "Stiffness of the active metaball"); - uiBlockEndAlign(block); + RNA_pointer_create(&mball->id, &RNA_MetaElement, mball->lastelem, &ptr); - uiDefButS(block, MENU, B_RECALCMBALL, "Type%t|Ball%x0|Tube%x4|Plane%x5|Elipsoid%x6|Cube%x7", 160, 120, 140, 19, &lastelem->type, 0.0, 0.0, 0, 0, "Set active element type"); + col= uiLayoutColumn(layout, 0); + uiItemR(col, "Location", 0, &ptr, "location", 0); - } + uiItemR(col, "Radius", 0, &ptr, "radius", 0); + uiItemR(col, "Stiffness", 0, &ptr, "stiffness", 0); + + uiItemR(col, "Type", 0, &ptr, "type", 0); + + col= uiLayoutColumn(layout, 1); + switch (RNA_enum_get(&ptr, "type")) { + case MB_BALL: + break; + case MB_CUBE: + uiItemL(col, "Size:", 0); + uiItemR(col, "X", 0, &ptr, "size_x", 0); + uiItemR(col, "Y", 0, &ptr, "size_y", 0); + uiItemR(col, "Z", 0, &ptr, "size_z", 0); + break; + case MB_TUBE: + uiItemL(col, "Size:", 0); + uiItemR(col, "X", 0, &ptr, "size_x", 0); + break; + case MB_PLANE: + uiItemL(col, "Size:", 0); + uiItemR(col, "X", 0, &ptr, "size_x", 0); + uiItemR(col, "Y", 0, &ptr, "size_y", 0); + break; + case MB_ELIPSOID: + uiItemL(col, "Size:", 0); + uiItemR(col, "X", 0, &ptr, "size_x", 0); + uiItemR(col, "Y", 0, &ptr, "size_y", 0); + uiItemR(col, "Z", 0, &ptr, "size_z", 0); + break; + } } /* test if 'ob' is a parent somewhere in par's parents */ @@ -707,115 +787,8 @@ static void do_view3d_region_buttons(bContext *C, void *arg, int event) case B_OBJECTPANEL: DAG_id_flush_update(&ob->id, OB_RECALC_OB); break; - - case B_OBJECTPANELROT: - if(ob) { - float eul[3]; - - /* make a copy to eul[3], to allow TAB on buttons to work */ - eul[0]= M_PI*tfp->ob_eul[0]/180.0; - eul[1]= M_PI*tfp->ob_eul[1]/180.0; - eul[2]= M_PI*tfp->ob_eul[2]/180.0; - - if (ob->rotmode == ROT_MODE_AXISANGLE) { - float quat[4]; - /* convert to axis-angle, passing through quats */ - EulToQuat(eul, quat); - QuatToAxisAngle(quat, ob->rotAxis, &ob->rotAngle); - } - else if (ob->rotmode == ROT_MODE_QUAT) - EulToQuat(eul, ob->quat); - else - VecCopyf(ob->rot, eul); - - DAG_id_flush_update(&ob->id, OB_RECALC_OB); - } - break; - - case B_OBJECTPANELSCALE: - if(ob) { - /* link scale; figure out which axis changed */ - if (tfp->link_scale) { - float ratio, tmp, max = 0.0; - int axis; - - axis = 0; - max = fabs(tfp->ob_scale[0] - ob->size[0]); - tmp = fabs(tfp->ob_scale[1] - ob->size[1]); - if (tmp > max) { - axis = 1; - max = tmp; - } - tmp = fabs(tfp->ob_scale[2] - ob->size[2]); - if (tmp > max) { - axis = 2; - max = tmp; - } - - if (ob->size[axis] != tfp->ob_scale[axis]) { - if (fabs(ob->size[axis]) > FLT_EPSILON) { - ratio = tfp->ob_scale[axis] / ob->size[axis]; - ob->size[0] *= ratio; - ob->size[1] *= ratio; - ob->size[2] *= ratio; - } - } - } - else { - VECCOPY(ob->size, tfp->ob_scale); - } - DAG_id_flush_update(&ob->id, OB_RECALC_OB); - } - break; - - case B_OBJECTPANELDIMS: - bb= object_get_boundbox(ob); - if(bb) { - float old_dims[3], scale[3], ratio, len[3]; - int axis; - - Mat4ToSize(ob->obmat, scale); - - len[0] = bb->vec[4][0] - bb->vec[0][0]; - len[1] = bb->vec[2][1] - bb->vec[0][1]; - len[2] = bb->vec[1][2] - bb->vec[0][2]; - - old_dims[0] = fabs(scale[0]) * len[0]; - old_dims[1] = fabs(scale[1]) * len[1]; - old_dims[2] = fabs(scale[2]) * len[2]; - - /* for each axis changed */ - for (axis = 0; axis<3; axis++) { - if (fabs(old_dims[axis] - tfp->ob_dims[axis]) > 0.0001) { - if (old_dims[axis] > 0.0) { - ratio = tfp->ob_dims[axis] / old_dims[axis]; - if (tfp->link_scale) { - ob->size[0] *= ratio; - ob->size[1] *= ratio; - ob->size[2] *= ratio; - break; - } - else { - ob->size[axis] *= ratio; - } - } - else { - if (len[axis] > 0) { - ob->size[axis] = tfp->ob_dims[axis] / len[axis]; - } - } - } - } - - /* prevent multiple B_OBJECTPANELDIMS events to keep scaling, cycling with TAB on buttons can cause that */ - VECCOPY(tfp->ob_dims, old_dims); - - DAG_id_flush_update(&ob->id, OB_RECALC_OB); - } - break; - case B_OBJECTPANELMEDIAN: if(ob) { v3d_editvertex_buts(C, NULL, v3d, ob, 1.0); @@ -835,51 +808,7 @@ static void do_view3d_region_buttons(bContext *C, void *arg, int event) } break; - case B_ARMATUREPANEL1: - { - bArmature *arm= obedit->data; - EditBone *ebone, *child; - - for (ebone = arm->edbo->first; ebone; ebone=ebone->next){ - if ((ebone->flag & BONE_ACTIVE) && (ebone->layer & arm->layer)) - break; - } - if (ebone) { - ebone->roll= M_PI*tfp->ob_eul[0]/180.0; - // Update our parent - if (ebone->parent && ebone->flag & BONE_CONNECTED){ - VECCOPY (ebone->parent->tail, ebone->head); - } - - // Update our children if necessary - for (child = arm->edbo->first; child; child=child->next){ - if (child->parent == ebone && (child->flag & BONE_CONNECTED)){ - VECCOPY (child->head, ebone->tail); - } - } - if(arm->flag & ARM_MIRROR_EDIT) { - EditBone *eboflip= ED_armature_bone_get_mirrored(arm->edbo, ebone); - if(eboflip) { - eboflip->roll= -ebone->roll; - eboflip->head[0]= -ebone->head[0]; - eboflip->tail[0]= -ebone->tail[0]; - - // Update our parent - if (eboflip->parent && eboflip->flag & BONE_CONNECTED){ - VECCOPY (eboflip->parent->tail, eboflip->head); - } - - // Update our children if necessary - for (child = arm->edbo->first; child; child=child->next){ - if (child->parent == eboflip && (child->flag & BONE_CONNECTED)){ - VECCOPY (child->head, eboflip->tail); - } - } - } - } - } - } - break; + case B_ARMATUREPANEL3: // rotate button on channel { bArmature *arm; @@ -1146,8 +1075,6 @@ static void view3d_panel_object(const bContext *C, Panel *pa) col= uiLayoutColumn(pa->layout, 0); row= uiLayoutRow(col, 0); RNA_id_pointer_create(&ob->id, &obptr); - uiItemL(row, "", ICON_OBJECT_DATA); - uiItemR(row, "", 0, &obptr, "name", 0); if(ob==obedit) { if(ob->type==OB_ARMATURE) v3d_editarmature_buts(col, v3d, ob, lim); @@ -1158,118 +1085,9 @@ static void view3d_panel_object(const bContext *C, Panel *pa) v3d_posearmature_buts(col, v3d, ob, lim); } else { - BoundBox *bb = NULL; - - uiLayoutAbsoluteBlock(col); - - block= uiLayoutAbsoluteBlock(col); - uiDefBut(block, LABEL, 0, "Location:", 0, 300, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANEL, "X:", 0, 280, 120, 19, &(ob->loc[0]), -lim, lim, 100, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANEL, "Y:", 0, 260, 120, 19, &(ob->loc[1]), -lim, lim, 100, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANEL, "Z:", 0, 240, 120, 19, &(ob->loc[2]), -lim, lim, 100, 3, ""); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_LOCX, B_REDR, ICON_UNLOCKED, 125, 280, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects X Location value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_LOCY, B_REDR, ICON_UNLOCKED, 125, 260, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Y Location value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_LOCZ, B_REDR, ICON_UNLOCKED, 125, 240, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Z Location value from being Transformed"); - uiBlockEndAlign(block); - - if (ob->rotmode == ROT_MODE_AXISANGLE) { - float quat[4]; - /* convert to euler, passing through quats... */ - AxisAngleToQuat(quat, ob->rotAxis, ob->rotAngle); - QuatToEul(quat, tfp->ob_eul); - } - else if (ob->rotmode == ROT_MODE_QUAT) - QuatToEul(ob->quat, tfp->ob_eul); - else - VecCopyf(tfp->ob_eul, ob->rot); - tfp->ob_eul[0]*= 180.0/M_PI; - tfp->ob_eul[1]*= 180.0/M_PI; - tfp->ob_eul[2]*= 180.0/M_PI; - - uiBlockBeginAlign(block); - if ((ob->parent) && (ob->partype == PARBONE)) { - uiDefBut(block, LABEL, 0, "Rotation:", 0, 220, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANELROT, "X:", 0, 200, 120, 19, &(tfp->ob_eul[0]), -lim, lim, 1000, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELROT, "Y:", 0, 180, 120, 19, &(tfp->ob_eul[1]), -lim, lim, 1000, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELROT, "Z:", 0, 160, 120, 19, &(tfp->ob_eul[2]), -lim, lim, 1000, 3, ""); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTX, B_REDR, ICON_UNLOCKED, 125, 200, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects X Rotation from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTY, B_REDR, ICON_UNLOCKED, 125, 180, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Y Rotation value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTZ, B_REDR, ICON_UNLOCKED, 125, 160, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Z Rotation value from being Transformed"); - uiBlockEndAlign(block); + v3d_transform_butsR(col, &obptr); } - else { - uiDefBut(block, LABEL, 0, "Rotation:", 0, 220, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANELROT, "X:", 0, 200, 120, 19, &(tfp->ob_eul[0]), -lim, lim, 1000, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELROT, "Y:", 0, 180, 120, 19, &(tfp->ob_eul[1]), -lim, lim, 1000, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELROT, "Z:", 0, 160, 120, 19, &(tfp->ob_eul[2]), -lim, lim, 1000, 3, ""); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTX, B_REDR, ICON_UNLOCKED, 125, 200, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects X Rotation value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTY, B_REDR, ICON_UNLOCKED, 125, 180, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Y Rotation value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_ROTZ, B_REDR, ICON_UNLOCKED, 125, 160, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Z Rotation value from being Transformed"); - uiBlockEndAlign(block); - } - - tfp->ob_scale[0]= ob->size[0]; - tfp->ob_scale[1]= ob->size[1]; - tfp->ob_scale[2]= ob->size[2]; - - uiDefBut(block, LABEL, 0, "Scale:", 0, 140, 100, 20, 0, 0, 0, 0, 0, ""); - uiDefButS(block, OPTION, B_REDR, "Link", 60, 140, 50, 19, &(tfp->link_scale), 0, 1, 0, 0, "Scale values vary proportionally in all directions"); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANELSCALE, "X:", 0, 120, 120, 19, &(tfp->ob_scale[0]), -lim, lim, 10, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELSCALE, "Y:", 0, 100, 120, 19, &(tfp->ob_scale[1]), -lim, lim, 10, 3, ""); - uiDefButF(block, NUM, B_OBJECTPANELSCALE, "Z:", 0, 80, 120, 19, &(tfp->ob_scale[2]), -lim, lim, 10, 3, ""); - uiBlockEndAlign(block); - - uiBlockBeginAlign(block); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_SCALEX, B_REDR, ICON_UNLOCKED, 125, 120, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects X Scale value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_SCALEY, B_REDR, ICON_UNLOCKED, 125, 100, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Y Scale value from being Transformed"); - uiDefIconButBitS(block, ICONTOG, OB_LOCK_SCALEZ, B_REDR, ICON_UNLOCKED, 125, 80, 25, 19, &(ob->protectflag), 0, 0, 0, 0, "Protects Z Scale value from being Transformed"); - - - - bb= object_get_boundbox(ob); - if (bb) { - float scale[3]; - - Mat4ToSize(ob->obmat, scale); - - tfp->ob_dims[0] = fabs(scale[0]) * (bb->vec[4][0] - bb->vec[0][0]); - tfp->ob_dims[1] = fabs(scale[1]) * (bb->vec[2][1] - bb->vec[0][1]); - tfp->ob_dims[2] = fabs(scale[2]) * (bb->vec[1][2] - bb->vec[0][2]); - - - if ((ob->parent) && (ob->partype == PARBONE)) { - uiDefBut(block, LABEL, 0, "Dimensions:", 0, 60, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "X:", 0, 40, 150, 19, &(tfp->ob_dims[0]), 0.0, lim, 10, 3, "Manipulate X bounding box size"); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "Y:", 0, 20, 150, 19, &(tfp->ob_dims[1]), 0.0, lim, 10, 3, "Manipulate Y bounding box size"); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "Z:", 0, 0, 150, 19, &(tfp->ob_dims[2]), 0.0, lim, 10, 3, "Manipulate Z bounding box size"); - - } - else { - uiDefBut(block, LABEL, 0, "Dimensions:", 0, 60, 100, 20, 0, 0, 0, 0, 0, ""); - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "X:", 0, 40, 150, 19, &(tfp->ob_dims[0]), 0.0, lim, 10, 3, "Manipulate X bounding box size"); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "Y:", 0, 20, 150, 19, &(tfp->ob_dims[1]), 0.0, lim, 10, 3, "Manipulate Y bounding box size"); - uiDefButF(block, NUM, B_OBJECTPANELDIMS, "Z:", 0, 0, 150, 19, &(tfp->ob_dims[2]), 0.0, lim, 10, 3, "Manipulate Z bounding box size"); - } - - uiBlockEndAlign(block); - } - } } #if 0 diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 15e41a66981..e1d814528db 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -395,14 +395,14 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u setlinestyle(0); /* center cross */ - if( ELEM(rv3d->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT)) + if( ELEM(rv3d->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT)) UI_make_axis_color(col, col2, 'y'); else UI_make_axis_color(col, col2, 'x'); glColor3ubv((GLubyte *)col2); fdrawline(0.0, y, (float)ar->winx, y); - if( ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) + if( ELEM(rv3d->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM)) UI_make_axis_color(col, col2, 'y'); else UI_make_axis_color(col, col2, 'z'); glColor3ubv((GLubyte *)col2); @@ -662,11 +662,11 @@ static void draw_view_icon(RegionView3D *rv3d) { BIFIconID icon; - if( ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) + if( ELEM(rv3d->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM)) icon= ICON_AXIS_TOP; - else if( ELEM(rv3d->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) + else if( ELEM(rv3d->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK)) icon= ICON_AXIS_FRONT; - else if( ELEM(rv3d->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT)) + else if( ELEM(rv3d->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT)) icon= ICON_AXIS_SIDE; else return ; @@ -683,33 +683,33 @@ static char *view3d_get_name(View3D *v3d, RegionView3D *rv3d) char *name = NULL; switch (rv3d->view) { - case V3D_VIEW_FRONT: - if (rv3d->persp == V3D_ORTHO) name = "Front Ortho"; + case RV3D_VIEW_FRONT: + if (rv3d->persp == RV3D_ORTHO) name = "Front Ortho"; else name = "Front Persp"; break; - case V3D_VIEW_BACK: - if (rv3d->persp == V3D_ORTHO) name = "Back Ortho"; + case RV3D_VIEW_BACK: + if (rv3d->persp == RV3D_ORTHO) name = "Back Ortho"; else name = "Back Persp"; break; - case V3D_VIEW_TOP: - if (rv3d->persp == V3D_ORTHO) name = "Top Ortho"; + case RV3D_VIEW_TOP: + if (rv3d->persp == RV3D_ORTHO) name = "Top Ortho"; else name = "Top Persp"; break; - case V3D_VIEW_BOTTOM: - if (rv3d->persp == V3D_ORTHO) name = "Bottom Ortho"; + case RV3D_VIEW_BOTTOM: + if (rv3d->persp == RV3D_ORTHO) name = "Bottom Ortho"; else name = "Bottom Persp"; break; - case V3D_VIEW_RIGHT: - if (rv3d->persp == V3D_ORTHO) name = "Right Ortho"; + case RV3D_VIEW_RIGHT: + if (rv3d->persp == RV3D_ORTHO) name = "Right Ortho"; else name = "Right Persp"; break; - case V3D_VIEW_LEFT: - if (rv3d->persp == V3D_ORTHO) name = "Left Ortho"; + case RV3D_VIEW_LEFT: + if (rv3d->persp == RV3D_ORTHO) name = "Left Ortho"; else name = "Left Persp"; break; default: - if (rv3d->persp==V3D_CAMOB) { + if (rv3d->persp==RV3D_CAMOB) { if ((v3d->camera) && (v3d->camera->type == OB_CAMERA)) { Camera *cam; cam = v3d->camera->data; @@ -718,7 +718,7 @@ static char *view3d_get_name(View3D *v3d, RegionView3D *rv3d) name = "Object as Camera"; } } else { - name = (rv3d->persp == V3D_ORTHO) ? "User Ortho" : "User Persp"; + name = (rv3d->persp == RV3D_ORTHO) ? "User Ortho" : "User Persp"; } break; } @@ -1897,28 +1897,23 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen, Scene *scene, Objec return mask; } -void view3d_main_area_draw(const bContext *C, ARegion *ar) +static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, float viewmat[][4], float winmat[][4]) { - Scene *scene= CTX_data_scene(C); - View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); - Scene *sce; - Base *base; - Object *ob; - int retopo= 0, sculptparticle= 0; - Object *obact = OBACT; - char *grid_unit= NULL; - - /* from now on all object derived meshes check this */ - v3d->customdata_mask= get_viewedit_datamask(CTX_wm_screen(C), scene, obact); - - /* shadow buffers, before we setup matrices */ - if(draw_glsl_material(scene, NULL, v3d, v3d->drawtype)) - gpu_update_lamps_shadows(scene, v3d); + RegionView3D *rv3d= ar->regiondata; + + /* setup window matrices */ + if(winmat) + Mat4CpyMat4(rv3d->winmat, winmat); + else + setwinmatrixview3d(ar, v3d, NULL); /* NULL= no pickrect */ - setwinmatrixview3d(ar, v3d, NULL); /* 0= no pick rect */ + /* setup view matrix */ + if(viewmat) + Mat4CpyMat4(rv3d->viewmat, viewmat); + else setviewmatrixview3d(scene, v3d, rv3d); /* note: calls where_is_object for camera... */ + /* update utilitity matrices */ Mat4MulMat4(rv3d->persmat, rv3d->viewmat, rv3d->winmat); Mat4Invert(rv3d->persinv, rv3d->persmat); Mat4Invert(rv3d->viewinv, rv3d->viewmat); @@ -1939,23 +1934,118 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) else rv3d->pixsize/= (float)ar->winy; } + /* set for opengl */ + glMatrixMode(GL_PROJECTION); + wmLoadMatrix(rv3d->winmat); + + glMatrixMode(GL_MODELVIEW); + wmLoadMatrix(rv3d->viewmat); +} + +void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, int winy, float viewmat[][4], float winmat[][4]) +{ + Scene *sce; + Base *base; + int bwinx, bwiny; + + wmPushMatrix(); + + /* set temporary new size */ + bwinx= ar->winx; + bwiny= ar->winy; + ar->winx= winx; + ar->winy= winy; + + /* set flags */ + G.f |= G_RENDER_OGL; + GPU_free_images(); + + /* set background color */ + glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + + /* setup view matrices */ + view3d_main_area_setup_view(scene, v3d, ar, viewmat, winmat); + + /* set zbuffer */ if(v3d->drawtype > OB_WIRE) { - float col[3]; - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + v3d->zbuf= TRUE; + glEnable(GL_DEPTH_TEST); + } + else + v3d->zbuf= FALSE; + + /* draw set first */ + if(scene->set) { + for(SETLOOPER(scene->set, base)) { + if(v3d->lay & base->lay) { + UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f); + draw_object(scene, ar, v3d, base, DRAW_CONSTCOLOR|DRAW_SCENESET); - glLoadIdentity(); + if(base->object->transflag & OB_DUPLI) + draw_dupli_objects_color(scene, ar, v3d, base, TH_WIRE); } - else { + } + } + + /* then draw not selected and the duplis, but skip editmode object */ + for(base= scene->base.first; base; base= base->next) { + if(v3d->lay & base->lay) { + /* dupli drawing */ + if(base->object->transflag & OB_DUPLI) + draw_dupli_objects(scene, ar, v3d, base); + + draw_object(scene, ar, v3d, base, 0); + } + } + + /* transp and X-ray afterdraw stuff */ + view3d_draw_transp(scene, ar, v3d); + view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used! + + /* cleanup */ + if(v3d->zbuf) { + v3d->zbuf= FALSE; + glDisable(GL_DEPTH_TEST); + } + + GPU_free_images(); + + /* restore size */ + ar->winx= bwinx; + ar->winy= bwiny; + + wmPopMatrix(); +} + +void view3d_main_area_draw(const bContext *C, ARegion *ar) +{ + Scene *scene= CTX_data_scene(C); + View3D *v3d = CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); + Scene *sce; + Base *base; + Object *ob; float col[3]; + int retopo= 0, sculptparticle= 0; + Object *obact = OBACT; + char *grid_unit= NULL; + + /* from now on all object derived meshes check this */ + v3d->customdata_mask= get_viewedit_datamask(CTX_wm_screen(C), scene, obact); + + /* shadow buffers, before we setup matrices */ + if(draw_glsl_material(scene, NULL, v3d, v3d->drawtype)) + gpu_update_lamps_shadows(scene, v3d); + + /* clear background */ UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + glClearColor(col[0], col[1], col[2], 0.0); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - } - - wmLoadMatrix(rv3d->viewmat); + /* setup view matrices */ + view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL); + if(rv3d->rflag & RV3D_CLIPPING) view3d_draw_clipping(rv3d); diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 51f257da432..06f8e9fb673 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -103,7 +103,7 @@ static void view3d_boxview_clip(ScrArea *sa) RegionView3D *rv3d= ar->regiondata; if(rv3d->viewlock & RV3D_BOXCLIP) { - if(ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) { + if(ELEM(rv3d->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM)) { if(ar->winx>ar->winy) x1= rv3d->dist; else x1= ar->winx*rv3d->dist/ar->winy; @@ -113,7 +113,7 @@ static void view3d_boxview_clip(ScrArea *sa) ofs[0]= rv3d->ofs[0]; ofs[1]= rv3d->ofs[1]; } - else if(ELEM(rv3d->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) { + else if(ELEM(rv3d->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK)) { ofs[2]= rv3d->ofs[2]; if(ar->winx>ar->winy) z1= ar->winy*rv3d->dist/ar->winx; @@ -181,22 +181,22 @@ static void view3d_boxview_sync(ScrArea *sa, ARegion *ar) if(rv3dtest->viewlock) { rv3dtest->dist= rv3d->dist; - if( ELEM(rv3d->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM) ) { - if( ELEM(rv3dtest->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) + if( ELEM(rv3d->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM) ) { + if( ELEM(rv3dtest->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK)) rv3dtest->ofs[0]= rv3d->ofs[0]; - else if( ELEM(rv3dtest->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT)) + else if( ELEM(rv3dtest->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT)) rv3dtest->ofs[1]= rv3d->ofs[1]; } - else if( ELEM(rv3d->view, V3D_VIEW_FRONT, V3D_VIEW_BACK) ) { - if( ELEM(rv3dtest->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) + else if( ELEM(rv3d->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK) ) { + if( ELEM(rv3dtest->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM)) rv3dtest->ofs[0]= rv3d->ofs[0]; - else if( ELEM(rv3dtest->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT)) + else if( ELEM(rv3dtest->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT)) rv3dtest->ofs[2]= rv3d->ofs[2]; } - else if( ELEM(rv3d->view, V3D_VIEW_RIGHT, V3D_VIEW_LEFT) ) { - if( ELEM(rv3dtest->view, V3D_VIEW_TOP, V3D_VIEW_BOTTOM)) + else if( ELEM(rv3d->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT) ) { + if( ELEM(rv3dtest->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM)) rv3dtest->ofs[1]= rv3d->ofs[1]; - if( ELEM(rv3dtest->view, V3D_VIEW_FRONT, V3D_VIEW_BACK)) + if( ELEM(rv3dtest->view, RV3D_VIEW_FRONT, RV3D_VIEW_BACK)) rv3dtest->ofs[2]= rv3d->ofs[2]; } @@ -325,12 +325,12 @@ static const float thres = 0.93f; //cos(20 deg); static float snapquats[39][6] = { /*{q0, q1, q3, q4, view, oposite_direction}*/ -{COS45, -SIN45, 0.0, 0.0, V3D_VIEW_FRONT, 0}, //front -{0.0, 0.0, -SIN45, -SIN45, V3D_VIEW_BACK, 0}, //back -{1.0, 0.0, 0.0, 0.0, V3D_VIEW_TOP, 0}, //top -{0.0, -1.0, 0.0, 0.0, V3D_VIEW_BOTTOM, 0}, //bottom -{0.5, -0.5, -0.5, -0.5, V3D_VIEW_LEFT, 0}, //left -{0.5, -0.5, 0.5, 0.5, V3D_VIEW_RIGHT, 0}, //right +{COS45, -SIN45, 0.0, 0.0, RV3D_VIEW_FRONT, 0}, //front +{0.0, 0.0, -SIN45, -SIN45, RV3D_VIEW_BACK, 0}, //back +{1.0, 0.0, 0.0, 0.0, RV3D_VIEW_TOP, 0}, //top +{0.0, -1.0, 0.0, 0.0, RV3D_VIEW_BOTTOM, 0}, //bottom +{0.5, -0.5, -0.5, -0.5, RV3D_VIEW_LEFT, 0}, //left +{0.5, -0.5, 0.5, 0.5, RV3D_VIEW_RIGHT, 0}, //right /* some more 45 deg snaps */ {0.65328145027160645, -0.65328145027160645, 0.27059805393218994, 0.27059805393218994, 0, 0}, @@ -601,12 +601,12 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) vod= op->customdata; /* switch from camera view when: */ - if(vod->rv3d->persp != V3D_PERSP) { + if(vod->rv3d->persp != RV3D_PERSP) { if (U.uiflag & USER_AUTOPERSP) - vod->rv3d->persp= V3D_PERSP; - else if(vod->rv3d->persp==V3D_CAMOB) - vod->rv3d->persp= V3D_PERSP; + vod->rv3d->persp= RV3D_PERSP; + else if(vod->rv3d->persp==RV3D_CAMOB) + vod->rv3d->persp= RV3D_PERSP; ED_region_tag_redraw(vod->ar); } @@ -665,7 +665,7 @@ void viewmove_modal_keymap(wmKeyConfig *keyconf) static void viewmove_apply(ViewOpsData *vod, int x, int y) { - if(vod->rv3d->persp==V3D_CAMOB) { + if(vod->rv3d->persp==RV3D_CAMOB) { float max= (float)MAX2(vod->ar->winx, vod->ar->winy); vod->rv3d->camdx += (vod->oldx - x)/(max); @@ -861,7 +861,7 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) view_zoom_mouseloc(vod->ar, zfac, vod->oldx, vod->oldy); - if ((U.uiflag & USER_ORBIT_ZBUF) && (U.viewzoom==USER_ZOOM_CONT) && (vod->rv3d->persp==V3D_PERSP)) { + if ((U.uiflag & USER_ORBIT_ZBUF) && (U.viewzoom==USER_ZOOM_CONT) && (vod->rv3d->persp==RV3D_PERSP)) { float upvec[3], mat[3][3]; /* Secret apricot feature, translate the view when in continues mode */ @@ -877,7 +877,7 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y) if(vod->rv3d->dist>10.0*vod->far) vod->rv3d->dist=10.0*vod->far; } -// XXX if(vod->rv3d->persp==V3D_ORTHO || vod->rv3d->persp==V3D_CAMOB) preview3d_event= 0; +// XXX if(vod->rv3d->persp==RV3D_ORTHO || vod->rv3d->persp==RV3D_CAMOB) preview3d_event= 0; if(vod->rv3d->viewlock & RV3D_BOXVIEW) view3d_boxview_sync(vod->sa, vod->ar); @@ -931,7 +931,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op) if(delta < 0) { /* this min and max is also in viewmove() */ - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { rv3d->camzoom-= 10; if(rv3d->camzoom<-30) rv3d->camzoom= -30; } @@ -940,7 +940,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op) } } else { - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { rv3d->camzoom+= 10; if(rv3d->camzoom>300) rv3d->camzoom= 300; } @@ -1062,8 +1062,8 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. new_dist*= size; } - if (rv3d->persp==V3D_CAMOB) { - rv3d->persp= V3D_PERSP; + if (rv3d->persp==RV3D_CAMOB) { + rv3d->persp= RV3D_PERSP; smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL); } else { @@ -1179,7 +1179,7 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with afm[2]= (max[2]-min[2]); size= MAX3(afm[0], afm[1], afm[2]); /* perspective should be a bit farther away to look nice */ - if(rv3d->persp==V3D_ORTHO) + if(rv3d->persp==RV3D_ORTHO) size*= 0.7; if(size <= v3d->near*1.5f) size= v3d->near*1.5f; @@ -1201,8 +1201,8 @@ static int viewcenter_exec(bContext *C, wmOperator *op) /* like a localview with v3d->cursor[1]= -new_ofs[1]; v3d->cursor[2]= -new_ofs[2]; - if (rv3d->persp==V3D_CAMOB) { - rv3d->persp= V3D_PERSP; + if (rv3d->persp==RV3D_CAMOB) { + rv3d->persp= RV3D_PERSP; smooth_view(C, v3d->camera, NULL, new_ofs, NULL, &new_dist, NULL); } else { @@ -1284,7 +1284,7 @@ static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *eve RegionView3D *rv3d= CTX_wm_region_view3d(C); /* if not in camera view do not exec the operator*/ - if (rv3d->persp == V3D_CAMOB) return WM_border_select_invoke(C, op, event); + if (rv3d->persp == RV3D_CAMOB) return WM_border_select_invoke(C, op, event); else return OPERATOR_PASS_THROUGH; } @@ -1384,7 +1384,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op) cent[0] = (((double)rect.xmin)+((double)rect.xmax)) / 2; cent[1] = (((double)rect.ymin)+((double)rect.ymax)) / 2; - if (rv3d->persp==V3D_PERSP) { + if (rv3d->persp==RV3D_PERSP) { double p_corner[3]; /* no depths to use, we cant do anything! */ @@ -1455,7 +1455,7 @@ static int view3d_zoom_border_invoke(bContext *C, wmOperator *op, wmEvent *event RegionView3D *rv3d= CTX_wm_region_view3d(C); /* if in camera view do not exec the operator so we do not conflict with set render border*/ - if (rv3d->persp != V3D_CAMOB) + if (rv3d->persp != RV3D_CAMOB) return WM_border_select_invoke(C, op, event); else return OPERATOR_PASS_THROUGH; @@ -1489,53 +1489,82 @@ void VIEW3D_OT_zoom_border(wmOperatorType *ot) /* ********************* Changing view operator ****************** */ static EnumPropertyItem prop_view_items[] = { - {V3D_VIEW_FRONT, "FRONT", 0, "Front", "View From the Front"}, - {V3D_VIEW_BACK, "BACK", 0, "Back", "View From the Back"}, - {V3D_VIEW_LEFT, "LEFT", 0, "Left", "View From the Left"}, - {V3D_VIEW_RIGHT, "RIGHT", 0, "Right", "View From the Right"}, - {V3D_VIEW_TOP, "TOP", 0, "Top", "View From the Top"}, - {V3D_VIEW_BOTTOM, "BOTTOM", 0, "Bottom", "View From the Bottom"}, - {V3D_VIEW_CAMERA, "CAMERA", 0, "Camera", "View From the active amera"}, + {RV3D_VIEW_FRONT, "FRONT", 0, "Front", "View From the Front"}, + {RV3D_VIEW_BACK, "BACK", 0, "Back", "View From the Back"}, + {RV3D_VIEW_LEFT, "LEFT", 0, "Left", "View From the Left"}, + {RV3D_VIEW_RIGHT, "RIGHT", 0, "Right", "View From the Right"}, + {RV3D_VIEW_TOP, "TOP", 0, "Top", "View From the Top"}, + {RV3D_VIEW_BOTTOM, "BOTTOM", 0, "Bottom", "View From the Bottom"}, + {RV3D_VIEW_CAMERA, "CAMERA", 0, "Camera", "View From the active amera"}, {0, NULL, 0, NULL, NULL}}; -static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, short view, int perspo) + +/* would like to make this a generic function - outside of transform */ +extern void getTransformOrientationMatrix(const bContext *C, float twmat[][4], int activeOnly); + +static void axis_set_view(bContext *C, float q1, float q2, float q3, float q4, short view, int perspo, int align_active) { View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d= CTX_wm_region_view3d(C); float new_quat[4]; + new_quat[0]= q1; new_quat[1]= q2; + new_quat[2]= q3; new_quat[3]= q4; + + if(align_active) { + /* align to active object */ + Object *obact= CTX_data_active_object(C); + if (obact==NULL) { + /* no active object, ignore this option */ + align_active= FALSE; + } + else { + float obact_quat[4]; + float twmat[4][4]; + + /* same as transform manipulator when normal is set */ + getTransformOrientationMatrix(C, twmat, TRUE); + + Mat4ToQuat(twmat, obact_quat); + QuatInv(obact_quat); + QuatMul(new_quat, new_quat, obact_quat); + + rv3d->view= view= 0; + } + } + + if(align_active==FALSE) { + /* normal operation */ if(rv3d->viewlock) { /* only pass on if */ - if(rv3d->view==V3D_VIEW_FRONT && view==V3D_VIEW_BACK); - else if(rv3d->view==V3D_VIEW_BACK && view==V3D_VIEW_FRONT); - else if(rv3d->view==V3D_VIEW_RIGHT && view==V3D_VIEW_LEFT); - else if(rv3d->view==V3D_VIEW_LEFT && view==V3D_VIEW_RIGHT); - else if(rv3d->view==V3D_VIEW_BOTTOM && view==V3D_VIEW_TOP); - else if(rv3d->view==V3D_VIEW_TOP && view==V3D_VIEW_BOTTOM); + if(rv3d->view==RV3D_VIEW_FRONT && view==RV3D_VIEW_BACK); + else if(rv3d->view==RV3D_VIEW_BACK && view==RV3D_VIEW_FRONT); + else if(rv3d->view==RV3D_VIEW_RIGHT && view==RV3D_VIEW_LEFT); + else if(rv3d->view==RV3D_VIEW_LEFT && view==RV3D_VIEW_RIGHT); + else if(rv3d->view==RV3D_VIEW_BOTTOM && view==RV3D_VIEW_TOP); + else if(rv3d->view==RV3D_VIEW_TOP && view==RV3D_VIEW_BOTTOM); else return; } - new_quat[0]= q1; new_quat[1]= q2; - new_quat[2]= q3; new_quat[3]= q4; - rv3d->view= view; + } if(rv3d->viewlock) { ED_region_tag_redraw(CTX_wm_region(C)); return; } - if (rv3d->persp==V3D_CAMOB && v3d->camera) { + if (rv3d->persp==RV3D_CAMOB && v3d->camera) { - if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO; - else if(rv3d->persp==V3D_CAMOB) rv3d->persp= perspo; + if (U.uiflag & USER_AUTOPERSP) rv3d->persp= RV3D_ORTHO; + else if(rv3d->persp==RV3D_CAMOB) rv3d->persp= perspo; smooth_view(C, v3d->camera, NULL, rv3d->ofs, new_quat, NULL, NULL); } else { - if (U.uiflag & USER_AUTOPERSP) rv3d->persp= V3D_ORTHO; - else if(rv3d->persp==V3D_CAMOB) rv3d->persp= perspo; + if (U.uiflag & USER_AUTOPERSP) rv3d->persp= RV3D_ORTHO; + else if(rv3d->persp==RV3D_CAMOB) rv3d->persp= perspo; smooth_view(C, NULL, NULL, NULL, new_quat, NULL, NULL); } @@ -1547,43 +1576,44 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) View3D *v3d = CTX_wm_view3d(C); RegionView3D *rv3d= CTX_wm_region_view3d(C); Scene *scene= CTX_data_scene(C); - static int perspo=V3D_PERSP; - int viewnum; + static int perspo=RV3D_PERSP; + int viewnum, align_active; viewnum = RNA_enum_get(op->ptr, "type"); + align_active = RNA_boolean_get(op->ptr, "align_active"); /* Use this to test if we started out with a camera */ switch (viewnum) { - case V3D_VIEW_BOTTOM : - axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, perspo); + case RV3D_VIEW_BOTTOM : + axis_set_view(C, 0.0, -1.0, 0.0, 0.0, viewnum, perspo, align_active); break; - case V3D_VIEW_BACK: - axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, perspo); + case RV3D_VIEW_BACK: + axis_set_view(C, 0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0), viewnum, perspo, align_active); break; - case V3D_VIEW_LEFT: - axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, perspo); + case RV3D_VIEW_LEFT: + axis_set_view(C, 0.5, -0.5, 0.5, 0.5, viewnum, perspo, align_active); break; - case V3D_VIEW_TOP: - axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, perspo); + case RV3D_VIEW_TOP: + axis_set_view(C, 1.0, 0.0, 0.0, 0.0, viewnum, perspo, align_active); break; - case V3D_VIEW_FRONT: - axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, perspo); + case RV3D_VIEW_FRONT: + axis_set_view(C, (float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0, viewnum, perspo, align_active); break; - case V3D_VIEW_RIGHT: - axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, perspo); + case RV3D_VIEW_RIGHT: + axis_set_view(C, 0.5, -0.5, -0.5, -0.5, viewnum, perspo, align_active); break; - case V3D_VIEW_CAMERA: + case RV3D_VIEW_CAMERA: if(rv3d->viewlock==0) { /* lastview - */ - if(rv3d->persp != V3D_CAMOB) { + if(rv3d->persp != RV3D_CAMOB) { /* store settings of current view before allowing overwriting with camera view */ QUATCOPY(rv3d->lviewquat, rv3d->viewquat); rv3d->lview= rv3d->view; @@ -1610,14 +1640,14 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) v3d->camera= scene_find_camera(scene); /*handle_view3d_lock();*/ } - rv3d->persp= V3D_CAMOB; + rv3d->persp= RV3D_CAMOB; smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens); } else{ /* return to settings of last view */ /* does smooth_view too */ - axis_set_view(C, rv3d->lviewquat[0], rv3d->lviewquat[1], rv3d->lviewquat[2], rv3d->lviewquat[3], rv3d->lview, rv3d->lpersp); + axis_set_view(C, rv3d->lviewquat[0], rv3d->lviewquat[1], rv3d->lviewquat[2], rv3d->lviewquat[3], rv3d->lview, rv3d->lpersp, 0); } } break; @@ -1626,7 +1656,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) break; } - if(rv3d->persp != V3D_CAMOB) perspo= rv3d->persp; + if(rv3d->persp != RV3D_CAMOB) perspo= rv3d->persp; return OPERATOR_FINISHED; } @@ -1645,6 +1675,7 @@ void VIEW3D_OT_viewnumpad(wmOperatorType *ot) ot->flag= 0; RNA_def_enum(ot->srna, "type", prop_view_items, 0, "View", "The Type of view"); + RNA_def_boolean(ot->srna, "align_active", 0, "Align Active", "Align to the active objects axis"); } static EnumPropertyItem prop_view_orbit_items[] = { @@ -1665,7 +1696,7 @@ static int vieworbit_exec(bContext *C, wmOperator *op) if(rv3d->viewlock==0) { - if(rv3d->persp != V3D_CAMOB) { + if(rv3d->persp != RV3D_CAMOB) { if(orbitdir == V3D_VIEW_STEPLEFT || orbitdir == V3D_VIEW_STEPRIGHT) { /* z-axis */ phi= (float)(M_PI/360.0)*U.pad_rot_angle; @@ -1771,9 +1802,9 @@ static int viewpersportho_exec(bContext *C, wmOperator *op) RegionView3D *rv3d= CTX_wm_region_view3d(C); if(rv3d->viewlock==0) { - if(rv3d->persp!=V3D_ORTHO) - rv3d->persp=V3D_ORTHO; - else rv3d->persp=V3D_PERSP; + if(rv3d->persp!=RV3D_ORTHO) + rv3d->persp=RV3D_ORTHO; + else rv3d->persp=RV3D_PERSP; ED_region_tag_redraw(ar); } @@ -1970,7 +2001,10 @@ void VIEW3D_OT_cursor3d(wmOperatorType *ot) ot->invoke= set_3dcursor_invoke; ot->poll= ED_operator_view3d_active; - + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + /* rna later */ } @@ -2195,7 +2229,7 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode) // until the first draw and doesn't update the menu // to reflect persp mode. - rv3d->persp = V3D_PERSP; + rv3d->persp = RV3D_PERSP; // Correct the distance jump if rv3d->dist != 0 @@ -2357,7 +2391,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) fval[6] = fval[6] / 1000000.0f; // scale more if not in perspective mode - if (rv3d->persp == V3D_ORTHO) { + if (rv3d->persp == RV3D_ORTHO) { fval[0] = fval[0] * 0.05f; fval[1] = fval[1] * 0.05f; fval[2] = fval[2] * 0.05f; @@ -2405,8 +2439,8 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) */ len = zsens * sbadjust * fval[2]; - if (rv3d->persp==V3D_CAMOB) { - if(rv3d->persp==V3D_CAMOB) { /* This is stupid, please fix - TODO */ + if (rv3d->persp==RV3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { /* This is stupid, please fix - TODO */ rv3d->camzoom+= 10.0f * -len; } if (rv3d->camzoom < minZoom) rv3d->camzoom = minZoom; diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index 2cc58f71a58..52c438dcc30 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -135,7 +135,6 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event); #define B_VIEWBUT 104 #define B_PERSP 105 #define B_VIEWRENDER 106 -#define B_STARTGAME 107 #define B_MODESELECT 108 #define B_AROUND 109 #define B_SEL_VERT 110 @@ -170,9 +169,59 @@ static RegionView3D *wm_region_view3d(const bContext *C) return NULL; } +static void copy_view3d_lock_space(View3D *v3d, Scene *scene) +{ + int bit; + + if(v3d->scenelock && v3d->localvd==NULL) { + v3d->lay= scene->lay; + v3d->camera= scene->camera; + + if(v3d->camera==NULL) { + ARegion *ar; + + for(ar=v3d->regionbase.first; ar; ar= ar->next) { + if(ar->regiontype == RGN_TYPE_WINDOW) { + RegionView3D *rv3d= ar->regiondata; + if(rv3d->persp==RV3D_CAMOB) + rv3d->persp= RV3D_PERSP; + } + } + } + + if((v3d->lay & v3d->layact) == 0) { + for(bit= 0; bit<32; bit++) { + if(v3d->lay & (1<<bit)) { + v3d->layact= 1<<bit; + break; + } + } + } + } +} + +void ED_view3d_scene_layers_update(Main *bmain, Scene *scene) +{ + bScreen *sc; + ScrArea *sa; + SpaceLink *sl; + + /* from scene copy to the other views */ + for(sc=bmain->screen.first; sc; sc=sc->id.next) { + if(sc->scene!=scene) + continue; + + for(sa=sc->areabase.first; sa; sa=sa->next) + for(sl=sa->spacedata.first; sl; sl=sl->next) + if(sl->spacetype==SPACE_VIEW3D) + copy_view3d_lock_space((View3D*)sl, scene); + } +} + // XXX quickly ported across static void handle_view3d_lock(bContext *C) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); ScrArea *sa= CTX_wm_area(C); View3D *v3d= CTX_wm_view3d(C); @@ -182,9 +231,13 @@ static void handle_view3d_lock(bContext *C) /* copy to scene */ scene->lay= v3d->lay; scene->camera= v3d->camera; + + /* not through notifiery, listener don't have context + and non-open screens or spaces need to be updated too */ + ED_view3d_scene_layers_update(bmain, scene); /* notifiers for scene update */ - WM_event_add_notifier(C, NC_SCENE, scene); + WM_event_add_notifier(C, NC_SCENE|ND_LAYER, scene); } } } @@ -1714,21 +1767,11 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) } break; - case B_VIEWBUT: - - - case B_PERSP: - - - break; case B_VIEWRENDER: if (sa->spacetype==SPACE_VIEW3D) { // XXX BIF_do_ogl_render(v3d, shift); } break; - case B_STARTGAME: -// XXX start_game(); - break; case B_MODESELECT: WM_operator_properties_create(&props_ptr, "OBJECT_OT_mode_set"); RNA_enum_set(&props_ptr, "mode", v3d->modeselect); @@ -1736,6 +1779,7 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) WM_operator_properties_free(&props_ptr); break; case B_AROUND: + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, 0); // XXX handle_view3d_around(); /* copies to other 3d windows */ break; @@ -1961,6 +2005,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) Object *ob= OBACT; Object *obedit = CTX_data_edit_object(C); uiBlock *block; + uiLayout *row; int a, xco=0, maxco=0, yco= 0; block= uiLayoutAbsoluteBlock(layout); @@ -2117,7 +2162,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) } /* proportional falloff */ - if((obedit && (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { + if((obedit == NULL || (obedit->type == OB_MESH || obedit->type == OB_CURVE || obedit->type == OB_SURF || obedit->type == OB_LATTICE)) || (ob && ob->mode & OB_MODE_PARTICLE_EDIT)) { uiBlockBeginAlign(block); uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_PROP_OFF, "Proportional %t|Off %x0|On %x1|Connected %x2", xco,yco,XIC+10,YIC, &(ts->proportional), 0, 1.0, 0, 0, "Proportional Edit Falloff (Hotkeys: O, Alt O) "); @@ -2199,7 +2244,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) header_xco_step(ar, &xco, &yco, &maxco, XIC); } - uiDefIconBut(block, BUT, B_VIEWRENDER, ICON_SCENE, xco,yco,XIC,YIC, NULL, 0, 1.0, 0, 0, "Render this window (Ctrl Click for anim)"); + /* OpenGL Render */ + row= uiLayoutRow(layout, 1); + uiItemO(row, "", ICON_RENDER_STILL, "SCREEN_OT_opengl_render"); + uiItemBooleanO(row, "", ICON_RENDER_ANIMATION, "SCREEN_OT_opengl_render", "animation", 1); + if (ob && (ob->mode & OB_MODE_POSE)) { PointerRNA *but_ptr; diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 4b692e572e2..adda08202c0 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -137,24 +137,57 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1); /* numpad view hotkeys*/ - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_CAMERA); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_FRONT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_CAMERA); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_RIGHT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT); WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_TOP); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_BACK); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_LEFT); - RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_BOTTOM); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD2, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANDOWN); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD4, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANLEFT); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD6, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANRIGHT); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_pan", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "type", V3D_VIEW_PANUP); + /* active aligned, replaces '*' key in 2.4x */ + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_FRONT); + RNA_boolean_set(km->ptr, "align_active", TRUE); + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_RIGHT); + RNA_boolean_set(km->ptr, "align_active", TRUE); + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_TOP); + RNA_boolean_set(km->ptr, "align_active", TRUE); + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_BACK); + RNA_boolean_set(km->ptr, "align_active", TRUE); + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_LEFT); + RNA_boolean_set(km->ptr, "align_active", TRUE); + km= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(km->ptr, "type", RV3D_VIEW_BOTTOM); + RNA_boolean_set(km->ptr, "align_active", TRUE); + + + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD2, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPDOWN); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_RIGHT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD4, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPLEFT); + WM_keymap_add_item(keymap, "VIEW3D_OT_view_persportho", PAD5, KM_PRESS, 0, 0); + + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD6, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPRIGHT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_TOP); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", PAD8, KM_PRESS, 0, 0)->ptr, "type", V3D_VIEW_STEPUP); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BACK); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_LEFT); + RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_CTRL, 0)->ptr, "type", RV3D_VIEW_BOTTOM); + WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c index fd6a54eac40..e4eaa7671a4 100644 --- a/source/blender/editors/space_view3d/view3d_select.c +++ b/source/blender/editors/space_view3d/view3d_select.c @@ -147,10 +147,6 @@ void view3d_get_transformation(ViewContext *vc, Object *ob, bglMats *mats) /* ********************** view3d_select: selection manipulations ********************* */ -/* XXX to solve *************** */ -static void BIF_undo_push() {} -/* XXX end ********************* */ - /* local prototypes */ void EM_backbuf_checkAndSelectVerts(BMEditMesh *em, int select) @@ -467,8 +463,6 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax); ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ - ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ - if(vc->scene->toolsettings->selectmode & SCE_SELECT_VERTEX) { if (bbsel) { EM_backbuf_checkAndSelectVerts(vc->em, select); @@ -711,7 +705,7 @@ void view3d_lasso_select(bContext *C, ViewContext *vc, short mcords[][2], short { Object *ob = CTX_data_active_object(C); - if(vc->obedit==NULL) { + if(vc->obedit==NULL) { /* Object Mode */ if(paint_facesel_test(ob)) do_lasso_select_facemode(vc, mcords, moves, select); else if(ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)) @@ -721,17 +715,18 @@ void view3d_lasso_select(bContext *C, ViewContext *vc, short mcords[][2], short else do_lasso_select_objects(vc, mcords, moves, select); } - else if(vc->obedit->type==OB_MESH) { + else { /* Edit Mode */ + if(vc->obedit->type==OB_MESH) do_lasso_select_mesh(vc, mcords, moves, select); - } else if(vc->obedit->type==OB_CURVE || vc->obedit->type==OB_SURF) + else if(vc->obedit->type==OB_CURVE || vc->obedit->type==OB_SURF) do_lasso_select_curve(vc, mcords, moves, select); else if(vc->obedit->type==OB_LATTICE) do_lasso_select_lattice(vc, mcords, moves, select); else if(vc->obedit->type==OB_ARMATURE) do_lasso_select_armature(vc, mcords, moves, select); - - BIF_undo_push("Lasso select"); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc->obedit->data); + } } static EnumPropertyItem lasso_select_types[] = { @@ -1834,6 +1829,79 @@ static void lattice_circle_select(ViewContext *vc, int selecting, short *mval, f lattice_foreachScreenVert(vc, latticecurve_circle_doSelect, &data); } + +static short armature_circle_doSelectJoint(void *userData, EditBone *ebone, int x, int y, short head) +{ + struct {ViewContext *vc; short select, mval[2]; float radius; } *data = userData; + int mx = x - data->mval[0], my = y - data->mval[1]; + float r = sqrt(mx*mx + my*my); + + if (r <= data->radius) { + if (head) { + if (data->select) + ebone->flag |= BONE_ROOTSEL; + else + ebone->flag &= ~BONE_ROOTSEL; + } + else { + if (data->select) + ebone->flag |= BONE_TIPSEL; + else + ebone->flag &= ~BONE_TIPSEL; + } + return 1; + } + return 0; +} +static void armature_circle_select(ViewContext *vc, int selecting, short *mval, float rad) +{ + struct {ViewContext *vc; short select, mval[2]; float radius; } data; + bArmature *arm= vc->obedit->data; + EditBone *ebone; + + /* set vc->edit data */ + data.select = selecting; + data.mval[0] = mval[0]; + data.mval[1] = mval[1]; + data.radius = rad; + + ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */ + + /* check each EditBone... */ + // TODO: could be optimised at some point + for (ebone= arm->edbo->first; ebone; ebone=ebone->next) { + short sco1[2], sco2[2], didpoint=0; + float vec[3]; + + /* project head location to screenspace */ + VECCOPY(vec, ebone->head); + Mat4MulVecfl(vc->obedit->obmat, vec); + project_short(vc->ar, vec, sco1); + + /* project tail location to screenspace */ + VECCOPY(vec, ebone->tail); + Mat4MulVecfl(vc->obedit->obmat, vec); + project_short(vc->ar, vec, sco2); + + /* check if the head and/or tail is in the circle + * - the call to check also does the selection already + */ + if (armature_circle_doSelectJoint(&data, ebone, sco1[0], sco1[1], 1)) + didpoint= 1; + if (armature_circle_doSelectJoint(&data, ebone, sco2[0], sco2[1], 0)) + didpoint= 1; + + /* only if the endpoints didn't get selected, deal with the middle of the bone too */ + // XXX should we just do this always? + if ( (didpoint==0) && edge_inside_circle(mval[0], mval[1], rad, sco1[0], sco1[1], sco2[0], sco2[1]) ) { + if (selecting) + ebone->flag |= BONE_TIPSEL|BONE_ROOTSEL|BONE_SELECTED; + else + ebone->flag &= ~(BONE_ACTIVE|BONE_SELECTED|BONE_TIPSEL|BONE_ROOTSEL); + } + } +} + /** Callbacks for circle selection in Editmode */ static void obedit_circle_select(ViewContext *vc, short selecting, short *mval, float rad) @@ -1849,6 +1917,9 @@ static void obedit_circle_select(ViewContext *vc, short selecting, short *mval, case OB_LATTICE: lattice_circle_select(vc, selecting, mval, rad); break; + case OB_ARMATURE: + armature_circle_select(vc, selecting, mval, rad); + break; default: return; } @@ -1865,17 +1936,20 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op) int x= RNA_int_get(op->ptr, "x"); int y= RNA_int_get(op->ptr, "y"); int radius= RNA_int_get(op->ptr, "radius"); + int gesture_mode= RNA_int_get(op->ptr, "gesture_mode"); + int selecting; + selecting= (gesture_mode==GESTURE_MODAL_SELECT); + if(CTX_data_edit_object(C) || (obact && obact->mode & OB_MODE_PARTICLE_EDIT)) { ViewContext vc; - short mval[2], selecting; + short mval[2]; view3d_operator_needs_opengl(C); view3d_set_viewcontext(C, &vc); mval[0]= x; mval[1]= y; - selecting= LEFTMOUSE==RNA_int_get(op->ptr, "event_type"); // XXX solve if(CTX_data_edit_object(C)) { obedit_circle_select(&vc, selecting, mval, (float)radius); @@ -1886,7 +1960,7 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op) } else { Base *base; - + selecting= selecting?BA_SELECT:BA_DESELECT; for(base= FIRSTBASE; base; base= base->next) { if(base->lay & v3d->lay) { project_short(ar, base->object->obmat[3], &base->sx); @@ -1894,7 +1968,7 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op) int dx= base->sx-x; int dy= base->sy-y; if( dx*dx + dy*dy < radius*radius) - ED_base_object_select(base, BA_SELECT); + ED_base_object_select(base, selecting); } } } @@ -1922,5 +1996,5 @@ void VIEW3D_OT_select_circle(wmOperatorType *ot) RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "radius", 0, INT_MIN, INT_MAX, "Radius", "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "event_type", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX); } diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c index 128597d4d5f..6a1f04eed72 100644 --- a/source/blender/editors/space_view3d/view3d_snap.c +++ b/source/blender/editors/space_view3d/view3d_snap.c @@ -282,7 +282,9 @@ static void make_trans_verts(Object *obedit, float *min, float *max, int mode) else if (obedit->type==OB_ARMATURE){ bArmature *arm= obedit->data; int totmalloc= BLI_countlist(arm->edbo); - + + totmalloc *= 2; /* probably overkill but bones can have 2 trans verts each */ + tv=transvmain= MEM_callocN(totmalloc*sizeof(TransVert), "maketransverts armature"); for (ebo= arm->edbo->first; ebo; ebo=ebo->next){ @@ -468,7 +470,6 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); View3D *v3d= CTX_wm_view3d(C); TransVert *tv; - Object *ob; float gridf, imat[3][3], bmat[3][3], vec[3]; int a; @@ -507,9 +508,7 @@ static int snap_sel_to_grid(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; - + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm= ob->data; @@ -602,7 +601,6 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); View3D *v3d= CTX_wm_view3d(C); TransVert *tv; - Object *ob; float *curs, imat[3][3], bmat[3][3], vec[3]; int a; @@ -635,8 +633,7 @@ static int snap_sel_to_curs(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm= ob->data; @@ -801,7 +798,7 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op) transvmain= NULL; } else { - Object *ob= OBACT; + Object *ob= CTX_data_active_object(C); if(ob && (ob->mode & OB_MODE_POSE)) { bArmature *arm= ob->data; @@ -819,8 +816,8 @@ static int snap_curs_to_sel(bContext *C, wmOperator *op) } } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - VECCOPY(vec, base->object->obmat[3]); + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + VECCOPY(vec, ob->obmat[3]); VecAddf(centroid, centroid, vec); DO_MINMAX(vec, min, max); count++; @@ -864,6 +861,7 @@ void VIEW3D_OT_snap_cursor_to_selected(wmOperatorType *ot) static int snap_curs_to_active(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); + Object *obact= CTX_data_active_object(C); Scene *scene= CTX_data_scene(C); View3D *v3d= CTX_wm_view3d(C); float *curs; @@ -884,8 +882,8 @@ static int snap_curs_to_active(bContext *C, wmOperator *op) } } else { - if (BASACT) { - VECCOPY(curs, BASACT->object->obmat[3]); + if (obact) { + VECCOPY(curs, obact->obmat[3]); } } @@ -917,7 +915,6 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); View3D *v3d= CTX_wm_view3d(C); TransVert *tv; - Object *ob; float snaploc[3], imat[3][3], bmat[3][3], vec[3], min[3], max[3], centroid[3]; int count, a; @@ -961,8 +958,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm= ob->data; @@ -980,7 +976,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) } else { /* not armature bones (i.e. objects) */ - VECCOPY(vec, base->object->obmat[3]); + VECCOPY(vec, ob->obmat[3]); VecAddf(centroid, centroid, vec); DO_MINMAX(vec, min, max); count++; @@ -1030,8 +1026,7 @@ static int snap_selected_to_center(bContext *C, wmOperator *op) } else { - CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { - ob= base->object; + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob->mode & OB_MODE_POSE) { bPoseChannel *pchan; bArmature *arm= ob->data; diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index e923813770d..3b62736a2a3 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -285,7 +285,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo rv3d->view= 0; /* ensure it shows correct */ - if(sms.to_camera) rv3d->persp= V3D_PERSP; + if(sms.to_camera) rv3d->persp= RV3D_PERSP; /* keep track of running timer! */ if(rv3d->sms==NULL) @@ -329,7 +329,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event) /* if we went to camera, store the original */ if(sms->to_camera) { - rv3d->persp= V3D_CAMOB; + rv3d->persp= RV3D_CAMOB; VECCOPY(rv3d->ofs, sms->orig_ofs); QUATCOPY(rv3d->viewquat, sms->orig_quat); rv3d->dist = sms->orig_dist; @@ -411,7 +411,7 @@ static int view3d_setcameratoview_exec(bContext *C, wmOperator *op) RegionView3D *rv3d= CTX_wm_region_view3d(C); setcameratoview3d(v3d, rv3d, v3d->camera); - rv3d->persp = V3D_CAMOB; + rv3d->persp = RV3D_CAMOB; WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, CTX_data_scene(C)); @@ -452,7 +452,7 @@ static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); if(BASACT) { - rv3d->persp= V3D_CAMOB; + rv3d->persp= RV3D_CAMOB; v3d->camera= OBACT; if(v3d->scenelock) scene->camera= OBACT; @@ -487,7 +487,7 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float RegionView3D *rv3d= ar->regiondata; float vec[4]; - if(rv3d->persp != V3D_ORTHO){ + if(rv3d->persp != RV3D_ORTHO){ vec[0]= 2.0f * mval[0] / ar->winx - 1; vec[1]= 2.0f * mval[1] / ar->winy - 1; vec[2]= -1.0f; @@ -820,7 +820,7 @@ int get_view3d_ortho(View3D *v3d, RegionView3D *rv3d) { Camera *cam; - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { if(v3d->camera && v3d->camera->type==OB_CAMERA) { cam= v3d->camera->data; @@ -833,7 +833,7 @@ int get_view3d_ortho(View3D *v3d, RegionView3D *rv3d) return 0; } - if(rv3d->persp==V3D_ORTHO) + if(rv3d->persp==RV3D_ORTHO) return 1; return 0; @@ -852,7 +852,7 @@ int get_view3d_viewplane(View3D *v3d, RegionView3D *rv3d, int winxi, int winyi, *clipsta= v3d->near; *clipend= v3d->far; - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { if(v3d->camera) { if(v3d->camera->type==OB_LAMP ) { Lamp *la; @@ -875,7 +875,7 @@ int get_view3d_viewplane(View3D *v3d, RegionView3D *rv3d, int winxi, int winyi, } } - if(rv3d->persp==V3D_ORTHO) { + if(rv3d->persp==RV3D_ORTHO) { if(winx>winy) x1= -rv3d->dist; else x1= -winx*rv3d->dist/winy; x2= -x1; @@ -890,7 +890,7 @@ int get_view3d_viewplane(View3D *v3d, RegionView3D *rv3d, int winxi, int winyi, } else { /* fac for zoom, also used for camdx */ - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { fac= (1.41421+( (float)rv3d->camzoom )/50.0); fac*= fac; } @@ -1009,7 +1009,7 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short Mat3CpyMat4(tmat, rv3d->viewmat); if (smooth) { float new_quat[4]; - if (rv3d->persp==V3D_CAMOB && v3d->camera) { + if (rv3d->persp==RV3D_CAMOB && v3d->camera) { /* were from a camera view */ float orig_ofs[3]; @@ -1020,13 +1020,13 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short /* Switch from camera view */ Mat3ToQuat(tmat, new_quat); - rv3d->persp=V3D_PERSP; + rv3d->persp=RV3D_PERSP; rv3d->dist= 0.0; view_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX - rv3d->persp=V3D_CAMOB; /* just to be polite, not needed */ + rv3d->persp=RV3D_CAMOB; /* just to be polite, not needed */ } else { Mat3ToQuat(tmat, new_quat); @@ -1042,27 +1042,27 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short static void view3d_viewlock(RegionView3D *rv3d) { switch(rv3d->view) { - case V3D_VIEW_BOTTOM : + case RV3D_VIEW_BOTTOM : QUATSET(rv3d->viewquat,0.0, -1.0, 0.0, 0.0); break; - case V3D_VIEW_BACK: + case RV3D_VIEW_BACK: QUATSET(rv3d->viewquat,0.0, 0.0, (float)-cos(M_PI/4.0), (float)-cos(M_PI/4.0)); break; - case V3D_VIEW_LEFT: + case RV3D_VIEW_LEFT: QUATSET(rv3d->viewquat,0.5, -0.5, 0.5, 0.5); break; - case V3D_VIEW_TOP: + case RV3D_VIEW_TOP: QUATSET(rv3d->viewquat,1.0, 0.0, 0.0, 0.0); break; - case V3D_VIEW_FRONT: + case RV3D_VIEW_FRONT: QUATSET(rv3d->viewquat,(float)cos(M_PI/4.0), (float)-sin(M_PI/4.0), 0.0, 0.0); break; - case V3D_VIEW_RIGHT: + case RV3D_VIEW_RIGHT: QUATSET(rv3d->viewquat, 0.5, -0.5, -0.5, -0.5); break; } @@ -1071,7 +1071,7 @@ static void view3d_viewlock(RegionView3D *rv3d) /* dont set windows active in in here, is used by renderwin too */ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d) { - if(rv3d->persp==V3D_CAMOB) { /* obs/camera */ + if(rv3d->persp==RV3D_CAMOB) { /* obs/camera */ if(v3d->camera) { where_is_object(scene, v3d->camera); obmat_to_viewmat(v3d, rv3d, v3d->camera, 0); @@ -1087,7 +1087,7 @@ void setviewmatrixview3d(Scene *scene, View3D *v3d, RegionView3D *rv3d) view3d_viewlock(rv3d); QuatToMat4(rv3d->viewquat, rv3d->viewmat); - if(rv3d->persp==V3D_PERSP) rv3d->viewmat[3][2]-= rv3d->dist; + if(rv3d->persp==RV3D_PERSP) rv3d->viewmat[3][2]-= rv3d->dist; if(v3d->ob_centre) { Object *ob= v3d->ob_centre; float vec[3]; @@ -1324,7 +1324,7 @@ static void initlocalview(Scene *scene, ScrArea *sa) rv3d->dist= size; /* perspective should be a bit farther away to look nice */ - if(rv3d->persp==V3D_ORTHO) + if(rv3d->persp==RV3D_ORTHO) rv3d->dist*= 0.7; // correction for window aspect ratio @@ -1334,7 +1334,7 @@ static void initlocalview(Scene *scene, ScrArea *sa) rv3d->dist*= asp; } - if (rv3d->persp==V3D_CAMOB) rv3d->persp= V3D_PERSP; + if (rv3d->persp==RV3D_CAMOB) rv3d->persp= RV3D_PERSP; v3d->cursor[0]= -rv3d->ofs[0]; v3d->cursor[1]= -rv3d->ofs[1]; @@ -1447,7 +1447,7 @@ void VIEW3D_OT_localview(wmOperatorType *ot) /* identifiers */ ot->name= "Local View"; - ot->description= "Toggle display of selected object(s) seperately and centered in view."; + ot->description= "Toggle display of selected object(s) separately and centered in view."; ot->idname= "VIEW3D_OT_localview"; /* api callbacks */ @@ -1550,7 +1550,7 @@ void game_set_commmandline_options(GameData *gm) } /* maybe we need this defined somewhere else */ -extern void StartKetsjiShell(struct bContext *C, struct ARegion *ar, int always_use_expand_framing); +extern void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *cam_frame, int always_use_expand_framing); #endif // GAMEBLENDER == 1 @@ -1559,41 +1559,76 @@ int game_engine_poll(bContext *C) return CTX_data_mode_enum(C)==CTX_MODE_OBJECT ? 1:0; } -static int game_engine_exec(bContext *C, wmOperator *unused) +int ED_view3d_context_activate(bContext *C) { -#if GAMEBLENDER == 1 - Scene *startscene = CTX_data_scene(C); bScreen *sc= CTX_wm_screen(C); - ScrArea *sa, *prevsa= CTX_wm_area(C); - ARegion *ar, *prevar= CTX_wm_region(C); + ScrArea *sa= CTX_wm_area(C); + ARegion *ar; + RegionView3D *rv3d; - sa= prevsa; - if(sa->spacetype != SPACE_VIEW3D) { + if(sa->spacetype != SPACE_VIEW3D) for(sa=sc->areabase.first; sa; sa= sa->next) if(sa->spacetype==SPACE_VIEW3D) break; - } if(!sa) - return OPERATOR_CANCELLED; + return 0; for(ar=sa->regionbase.first; ar; ar=ar->next) if(ar->regiontype == RGN_TYPE_WINDOW) break; if(!ar) - return OPERATOR_CANCELLED; + return 0; // bad context switch .. CTX_wm_area_set(C, sa); CTX_wm_region_set(C, ar); + rv3d= ar->regiondata; + + return 1; +} + +static int game_engine_exec(bContext *C, wmOperator *unused) +{ +#if GAMEBLENDER == 1 + Scene *startscene = CTX_data_scene(C); + ScrArea *sa, *prevsa= CTX_wm_area(C); + ARegion *ar, *prevar= CTX_wm_region(C); + RegionView3D *rv3d; + rcti cam_frame; + + // bad context switch .. + if(!ED_view3d_context_activate(C)) + return OPERATOR_CANCELLED; + + rv3d= CTX_wm_region_view3d(C); + sa= CTX_wm_area(C); + ar= CTX_wm_region(C); view3d_operator_needs_opengl(C); game_set_commmandline_options(&startscene->gm); + if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS) { /* Letterbox */ + rctf cam_framef; + calc_viewborder(startscene, ar, CTX_wm_view3d(C), &cam_framef); + cam_frame.xmin = cam_framef.xmin + ar->winrct.xmin; + cam_frame.xmax = cam_framef.xmax + ar->winrct.xmin; + cam_frame.ymin = cam_framef.ymin + ar->winrct.ymin; + cam_frame.ymax = cam_framef.ymax + ar->winrct.ymin; + BLI_isect_rcti(&ar->winrct, &cam_frame, &cam_frame); + } + else { + cam_frame.xmin = ar->winrct.xmin; + cam_frame.xmax = ar->winrct.xmax; + cam_frame.ymin = ar->winrct.ymin; + cam_frame.ymax = ar->winrct.ymax; + } + + SaveState(C); - StartKetsjiShell(C, ar, 1); + StartKetsjiShell(C, ar, &cam_frame, 1); RestoreState(C); CTX_wm_region_set(C, prevar); @@ -1770,7 +1805,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) fly->ar = CTX_wm_region(C); fly->scene= CTX_data_scene(C); - if(fly->rv3d->persp==V3D_CAMOB && fly->v3d->camera->id.lib) { + if(fly->rv3d->persp==RV3D_CAMOB && fly->v3d->camera->id.lib) { BKE_report(op->reports, RPT_ERROR, "Cannot fly a camera from an external library"); return FALSE; } @@ -1780,7 +1815,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) return FALSE; } - if(fly->rv3d->persp==V3D_CAMOB && fly->v3d->camera->constraints.first) { + if(fly->rv3d->persp==RV3D_CAMOB && fly->v3d->camera->constraints.first) { BKE_report(op->reports, RPT_ERROR, "Cannot fly an object with constraints"); return FALSE; } @@ -1824,7 +1859,7 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) fly->persp_backup= fly->rv3d->persp; fly->dist_backup= fly->rv3d->dist; - if (fly->rv3d->persp==V3D_CAMOB) { + if (fly->rv3d->persp==RV3D_CAMOB) { /* store the origoinal camera loc and rot */ VECCOPY(fly->ofs_backup, fly->v3d->camera->loc); VECCOPY(fly->rot_backup, fly->v3d->camera->rot); @@ -1842,8 +1877,8 @@ int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *event) } else { /* perspective or ortho */ - if (fly->rv3d->persp==V3D_ORTHO) - fly->rv3d->persp= V3D_PERSP; /*if ortho projection, make perspective */ + if (fly->rv3d->persp==RV3D_ORTHO) + fly->rv3d->persp= RV3D_PERSP; /*if ortho projection, make perspective */ QUATCOPY(fly->rot_backup, fly->rv3d->viewquat); VECCOPY(fly->ofs_backup, fly->rv3d->ofs); fly->rv3d->dist= 0.0; @@ -1873,7 +1908,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) if (fly->state == FLY_CANCEL) { /* Revert to original view? */ - if (fly->persp_backup==V3D_CAMOB) { /* a camera view */ + if (fly->persp_backup==RV3D_CAMOB) { /* a camera view */ rv3d->viewbut=1; VECCOPY(v3d->camera->loc, fly->ofs_backup); VECCOPY(v3d->camera->rot, fly->rot_backup); @@ -1885,7 +1920,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) rv3d->persp= fly->persp_backup; } } - else if (fly->persp_backup==V3D_CAMOB) { /* camera */ + else if (fly->persp_backup==RV3D_CAMOB) { /* camera */ float mat3[3][3]; Mat3CpyMat4(mat3, v3d->camera->obmat); Mat3ToCompatibleEul(mat3, v3d->camera->rot, fly->rot_backup); @@ -2271,7 +2306,7 @@ int flyApply(FlyInfo *fly) /* impose a directional lag */ VecLerpf(dvec, dvec_tmp, fly->dvec_prev, (1.0f/(1.0f+(time_redraw*5.0f)))); - if (rv3d->persp==V3D_CAMOB) { + if (rv3d->persp==RV3D_CAMOB) { if (v3d->camera->protectflag & OB_LOCK_LOCX) dvec[0] = 0.0; if (v3d->camera->protectflag & OB_LOCK_LOCY) @@ -2295,8 +2330,8 @@ int flyApply(FlyInfo *fly) //XXX2.5 do_screenhandlers(G.curscreen); /* advance the next frame */ /* we are in camera view so apply the view ofs and quat to the view matrix and set the camera to the view */ - if (rv3d->persp==V3D_CAMOB) { - rv3d->persp= V3D_PERSP; /*set this so setviewmatrixview3d uses the ofs and quat instead of the camera */ + if (rv3d->persp==RV3D_CAMOB) { + rv3d->persp= RV3D_PERSP; /*set this so setviewmatrixview3d uses the ofs and quat instead of the camera */ setviewmatrixview3d(scene, v3d, rv3d); setcameratoview3d(v3d, rv3d, v3d->camera); @@ -2306,7 +2341,7 @@ int flyApply(FlyInfo *fly) VecNegf(v3d->camera->loc); } - rv3d->persp= V3D_CAMOB; + rv3d->persp= RV3D_CAMOB; #if 0 //XXX2.5 /* record the motion */ if (IS_AUTOKEY_MODE(NORMAL) && (!playing_anim || cfra != G.scene->r.cfra)) { @@ -2439,19 +2474,19 @@ void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, f rv3d->view= 0; - if (rv3d->persp==V3D_CAMOB && v3d->camera) { + if (rv3d->persp==RV3D_CAMOB && v3d->camera) { /* switch out of camera view */ float orig_ofs[3]; float orig_dist= rv3d->dist; float orig_lens= v3d->lens; VECCOPY(orig_ofs, rv3d->ofs); - rv3d->persp= V3D_PERSP; + rv3d->persp= RV3D_PERSP; rv3d->dist= 0.0; view_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX } else { - if (rv3d->persp==V3D_CAMOB) rv3d->persp= V3D_PERSP; /* switch out of camera mode */ + if (rv3d->persp==RV3D_CAMOB) rv3d->persp= RV3D_PERSP; /* switch out of camera mode */ smooth_view(NULL, NULL, NULL, NULL, new_quat, NULL, NULL); // XXX } } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 81e2e44954a..b45a5c29cca 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -140,7 +140,7 @@ void setTransformViewMatrices(TransInfo *t) Mat4One(t->viewinv); Mat4One(t->persmat); Mat4One(t->persinv); - t->persp = V3D_ORTHO; + t->persp = RV3D_ORTHO; } calculateCenter2D(t); @@ -330,13 +330,9 @@ static void viewRedrawForce(bContext *C, TransInfo *t) } else if (t->spacetype==SPACE_IMAGE) { // XXX how to deal with lock? -#if 0 SpaceImage *sima= (SpaceImage*)t->sa->spacedata.first; - if(sima->lock) force_draw_plus(SPACE_VIEW3D, 0); - else force_draw(0); -#endif - - WM_event_add_notifier(C, NC_GEOM|ND_DATA, t->obedit->data); + if(sima->lock) WM_event_add_notifier(C, NC_GEOM|ND_DATA, t->obedit->data); + else ED_area_tag_redraw(t->sa); } } @@ -1012,11 +1008,12 @@ int calculateTransformCenter(bContext *C, wmEvent *event, int centerMode, float VECCOPY(vec, t->con.center); } - postTrans(t); /* aftertrans does insert ipos and action channels, and clears base flags, doesnt read transdata */ special_aftertrans_update(t); + postTrans(t); + MEM_freeN(t); return success; @@ -1573,12 +1570,12 @@ int transformEnd(bContext *C, TransInfo *t) exit_code = OPERATOR_FINISHED; } - /* free data */ - postTrans(t); - /* aftertrans does insert keyframes, and clears base flags, doesnt read transdata */ special_aftertrans_update(t); + /* free data */ + postTrans(t); + /* send events out for redraws */ viewRedrawPost(t); @@ -2342,7 +2339,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { if (t->flag & (T_OBJECT|T_TEXTURE|T_POSE)) { float obsizemat[3][3]; // Reorient the size mat to fit the oriented object. - Mat3MulMat3(obsizemat, td->axismtx, tmat); + Mat3MulMat3(obsizemat, tmat, td->axismtx); //printmatrix3("obsizemat", obsizemat); TransMat3ToSize(obsizemat, td->axismtx, fsize); //printvecf("fsize", fsize); @@ -2356,7 +2353,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't resize objects itself if((td->flag & TD_SINGLESIZE) && !(t->con.mode & CON_APPLY)){ /* scale val and reset size */ - *td->val = td->ival * fsize[0] * td->factor; + *td->val = td->ival * (1 + (fsize[0] - 1) * td->factor); td->ext->size[0] = td->ext->isize[0]; td->ext->size[1] = td->ext->isize[1]; @@ -2367,9 +2364,9 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { if (td->flag & TD_SINGLESIZE) *td->val = td->ival; - td->ext->size[0] = td->ext->isize[0] * (fsize[0]) * td->factor; - td->ext->size[1] = td->ext->isize[1] * (fsize[1]) * td->factor; - td->ext->size[2] = td->ext->isize[2] * (fsize[2]) * td->factor; + td->ext->size[0] = td->ext->isize[0] * (1 + (fsize[0] - 1) * td->factor); + td->ext->size[1] = td->ext->isize[1] * (1 + (fsize[1] - 1) * td->factor); + td->ext->size[2] = td->ext->isize[2] * (1 + (fsize[2] - 1) * td->factor); } } diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 819cb95d948..f6f8d3e4aa2 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -535,6 +535,7 @@ void flushTransNodes(TransInfo *t); void flushTransSeq(TransInfo *t); /*********************** exported from transform_manipulator.c ********** */ +void gimbal_axis(struct Object *ob, float gmat[][3]); int calc_manipulator_stats(const struct bContext *C); float get_drawsize(struct ARegion *ar, float *co); @@ -696,6 +697,9 @@ void applyTransformOrientation(const struct bContext *C, float mat[3][3], char * #define ORIENTATION_FACE 4 int getTransformOrientation(const struct bContext *C, float normal[3], float plane[3], int activeOnly); + +/* also used in view3d_edit.c, todo - move outside of transform */ +void getTransformOrientationMatrix(const struct bContext *C, float twmat[][4], int use_active); int createSpaceNormal(float mat[3][3], float normal[3]); int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3]); diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index 1143203217b..c43344a8745 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -218,25 +218,39 @@ static void axisProjection(TransInfo *t, float axis[3], float in[3], float out[3 VecMulf(out, -factor); /* -factor makes move down going backwards */ } else { - float cb[3], ab[3]; + float v[3], i1[3], i2[3]; + float v2[3], v4[3]; + float norm_center[3]; + float plane[3]; - VECCOPY(out, axis); - - /* Get view vector on axis to define a plane */ - VecAddf(vec, t->con.center, in); - getViewVector(t, vec, norm); + getViewVector(t, t->con.center, norm_center); + Crossf(plane, norm_center, axis); - Crossf(vec, norm, axis); - - /* Project input vector on the plane passing on axis */ - Projf(vec, in, vec); + Projf(vec, in, plane); VecSubf(vec, in, vec); - - /* intersect the two lines: axis and norm */ - Crossf(cb, vec, norm); - Crossf(ab, axis, norm); - - VecMulf(out, Inpf(cb, ab) / Inpf(ab, ab)); + + VecAddf(v, vec, t->con.center); + getViewVector(t, v, norm); + + /* give arbitrary large value if projection is impossible */ + factor = Inpf(axis, norm); + if (1 - fabs(factor) < 0.0002f) { + VECCOPY(out, axis); + if (factor > 0) { + VecMulf(out, 1000000000); + } else { + VecMulf(out, -1000000000); + } + } else { + VecAddf(v2, t->con.center, axis); + VecAddf(v4, v, norm); + + LineIntersectLine(t->con.center, v2, v, v4, i1, i2); + + VecSubf(v, i2, v); + + VecSubf(out, i1, t->con.center); + } } } @@ -575,6 +589,10 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte sprintf(text, ftext, "view"); setConstraint(t, t->spacemtx, mode, text); break; + case V3D_MANIP_GIMBAL: + sprintf(text, ftext, "gimbal"); + setConstraint(t, t->spacemtx, mode, text); + break; default: /* V3D_MANIP_CUSTOM */ sprintf(text, ftext, t->spacename); setConstraint(t, t->spacemtx, mode, text); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index 68c647710a9..942c39ca8b7 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -2429,7 +2429,7 @@ void flushTransSeq(TransInfo *t) tdsq= (TransDataSeq *)td->extra; seq= tdsq->seq; - new_frame= (int)(td2d->loc[0] + 0.5f); + new_frame= (int)floor(td2d->loc[0] + 0.5f); switch (tdsq->sel_flag) { case SELECT: @@ -2437,7 +2437,7 @@ void flushTransSeq(TransInfo *t) seq->start= new_frame - tdsq->start_offset; if (seq->depth==0) { - seq->machine= (int)(td2d->loc[1] + 0.5f); + seq->machine= (int)floor(td2d->loc[1] + 0.5f); CLAMP(seq->machine, 1, MAXSEQ); } break; @@ -4166,7 +4166,8 @@ static void freeSeqData(TransInfo *t) for(a=0; a<t->total; a++, td++) { seq= ((TransDataSeq *)td->extra)->seq; if ((seq != seq_prev)) { - seq->tmp= 1; + /* Tag seq with a non zero value, used by shuffle_seq_time to identify the ones to shuffle */ + seq->tmp= (void*)1; } } @@ -4387,7 +4388,7 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * /* it deselects Bases, so we have to call the clear function always after */ static void set_trans_object_base_flags(bContext *C, TransInfo *t) { - Scene *scene = CTX_data_scene(C); + Scene *scene = t->scene; View3D *v3d = t->view; /* @@ -4412,7 +4413,7 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t) for (base= scene->base.first; base; base= base->next) { base->flag &= ~BA_WAS_SEL; - if(TESTBASELIB_BGMODE(v3d, base)) { + if(TESTBASELIB_BGMODE(v3d, scene, base)) { Object *ob= base->object; Object *parsel= ob->parent; @@ -4424,12 +4425,10 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t) if(parsel) { - if ((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL) - { + /* rotation around local centers are allowed to propagate */ + if ((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL) { base->flag |= BA_TRANSFORM_CHILD; - } - else - { + } else { base->flag &= ~SELECT; base->flag |= BA_WAS_SEL; } @@ -4452,6 +4451,86 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t) } } +static int mark_children(Object *ob) +{ + if (ob->flag & (SELECT|BA_TRANSFORM_CHILD)) + return 1; + + if (ob->parent) + { + if (mark_children(ob->parent)) + { + ob->flag |= BA_TRANSFORM_CHILD; + return 1; + } + } + + return 0; +} + +static int count_proportional_objects(TransInfo *t) +{ + int total = 0; + Scene *scene = t->scene; + View3D *v3d = t->view; + Base *base; + + /* rotations around local centers are allowed to propagate, so we take all objects */ + if (!((t->mode == TFM_ROTATION || t->mode == TFM_TRACKBALL) && t->around == V3D_LOCAL)) + { + /* mark all parents */ + for (base= scene->base.first; base; base= base->next) { + if(TESTBASELIB_BGMODE(v3d, scene, base)) { + Object *parent = base->object->parent; + + /* flag all parents */ + while(parent) { + parent->flag |= BA_TRANSFORM_PARENT; + parent = parent->parent; + } + } + } + + /* mark all children */ + for (base= scene->base.first; base; base= base->next) { + /* all base not already selected or marked that is editable */ + if ((base->object->flag & (SELECT|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT)) == 0 && BASE_EDITABLE_BGMODE(v3d, scene, base)) + { + mark_children(base->object); + } + } + } + + for (base= scene->base.first; base; base= base->next) { + Object *ob= base->object; + + /* if base is not selected, not a parent of selection or not a child of selection and it is editable */ + if ((ob->flag & (SELECT|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT)) == 0 && BASE_EDITABLE_BGMODE(v3d, scene, base)) + { + + /* used for flush, depgraph will change recalcs if needed :) */ + ob->recalc |= OB_RECALC_OB; + + total += 1; + } + } + + + /* all recalc flags get flushed to all layers, so a layer flip later on works fine */ + DAG_scene_flush_update(t->scene, -1, 0); + + /* and we store them temporal in base (only used for transform code) */ + /* this because after doing updates, the object->recalc is cleared */ + for (base= scene->base.first; base; base= base->next) { + if(base->object->recalc & OB_RECALC_OB) + base->flag |= BA_HAS_RECALC_OB; + if(base->object->recalc & OB_RECALC_DATA) + base->flag |= BA_HAS_RECALC_DATA; + } + + return total; +} + static void clear_trans_object_base_flags(TransInfo *t) { Scene *sce = t->scene; @@ -4462,7 +4541,7 @@ static void clear_trans_object_base_flags(TransInfo *t) if(base->flag & BA_WAS_SEL) base->flag |= SELECT; - base->flag &= ~(BA_WAS_SEL|BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA|BA_DO_IPO|BA_TRANSFORM_CHILD); + base->flag &= ~(BA_WAS_SEL|BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA|BA_DO_IPO|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT); } } @@ -4473,7 +4552,7 @@ void autokeyframe_ob_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode) { ID *id= &ob->id; FCurve *fcu; - + // TODO: this should probably be done per channel instead... if (autokeyframe_cfra_can_key(scene, id)) { KeyingSet *active_ks = ANIM_scene_get_active_keyingset(scene); @@ -4574,7 +4653,7 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, bPose *pose= ob->pose; bPoseChannel *pchan; FCurve *fcu; - + // TODO: this should probably be done per channel instead... if (autokeyframe_cfra_can_key(scene, id)) { KeyingSet *active_ks = ANIM_scene_get_active_keyingset(scene); @@ -4698,17 +4777,22 @@ void autokeyframe_pose_cb_func(Scene *scene, View3D *v3d, Object *ob, int tmode, } -/* inserting keys, refresh ipo-keys, pointcache, redraw events... (ton) */ -/* note: transdata has been freed already! */ -/* note: this runs even when createTransData exits early because (t->total==0), is this correct?... (campbell) */ -/* note: sequencer freeing has its own function now because of a conflict with transform's order of freeing (campbell)*/ +/* inserting keys, refresh ipo-keys, pointcache, redraw events... */ +/* + * note: sequencer freeing has its own function now because of a conflict with transform's order of freeing (campbell) + * Order changed, the sequencer stuff should go back in here + * */ void special_aftertrans_update(TransInfo *t) { Object *ob; // short redrawipo=0, resetslowpar=1; int cancelled= (t->state == TRANS_CANCEL); short duplicate= (t->undostr && strstr(t->undostr, "Duplicate")) ? 1 : 0; - + + /* early out when nothing happened */ + if (t->total == 0 || t->mode == TFM_DUMMY) + return; + if (t->spacetype==SPACE_VIEW3D) { if (t->obedit) { if (cancelled==0) { @@ -4716,10 +4800,14 @@ void special_aftertrans_update(TransInfo *t) } } } - else if (t->spacetype == SPACE_SEQ) { + + if (t->spacetype == SPACE_SEQ) { /* freeSeqData in transform_conversions.c does this * keep here so the else at the end wont run... */ } + else if (t->spacetype == SPACE_NODE) { + /* pass */ + } else if (t->spacetype == SPACE_ACTION) { SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; Scene *scene; @@ -4982,19 +5070,20 @@ void special_aftertrans_update(TransInfo *t) else if(t->scene->basact && (ob = t->scene->basact->object) && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(t->scene, ob)) { ; } - else { - /* Objects */ - // XXX ideally, this would go through context iterators, but we don't have context iterator access here, - // so we make do with old data + access styles... - Scene *scene= t->scene; - Base *base; - - for (base= FIRSTBASE; base; base= base->next) { - ob= base->object; + else { /* Objects */ + int i; - if (base->flag & SELECT && (t->mode != TFM_DUMMY)) { + for (i = 0; i < t->total; i++) { + TransData *td = t->data + i; + Object *ob = td->ob; ListBase pidlist; PTCacheID *pid; + + if (td->flag & TD_NOACTION) + break; + + if (td->flag & TD_SKIP) + continue; /* flag object caches as outdated */ BKE_ptcache_ids_from_object(&pidlist, ob); @@ -5005,7 +5094,7 @@ void special_aftertrans_update(TransInfo *t) BLI_freelistN(&pidlist); /* pointcache refresh */ - if (BKE_ptcache_object_reset(scene, ob, PTCACHE_RESET_OUTDATED)) + if (BKE_ptcache_object_reset(t->scene, ob, PTCACHE_RESET_OUTDATED)) ob->recalc |= OB_RECALC_DATA; /* Needed for proper updating of "quick cached" dynamics. */ @@ -5019,7 +5108,6 @@ void special_aftertrans_update(TransInfo *t) autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode); } } - } clear_trans_object_base_flags(t); @@ -5043,19 +5131,23 @@ static void createTransObject(bContext *C, TransInfo *t) { TransData *td = NULL; TransDataExtension *tx; -// IpoKey *ik; -// ListBase elems; + int propmode = t->flag & T_PROP_EDIT; set_trans_object_base_flags(C, t); /* count */ t->total= CTX_DATA_COUNT(C, selected_objects); - + if(!t->total) { /* clear here, main transform function escapes too */ clear_trans_object_base_flags(t); return; } + + if (propmode) + { + t->total += count_proportional_objects(t); + } td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransOb"); tx = t->ext = MEM_callocN(t->total*sizeof(TransDataExtension), "TransObExtension"); @@ -5086,6 +5178,30 @@ static void createTransObject(bContext *C, TransInfo *t) tx++; } CTX_DATA_END; + + if (propmode) + { + Scene *scene = t->scene; + View3D *v3d = t->view; + Base *base; + + for (base= scene->base.first; base; base= base->next) { + Object *ob= base->object; + + /* if base is not selected, not a parent of selection or not a child of selection and it is editable */ + if ((ob->flag & (SELECT|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT)) == 0 && BASE_EDITABLE_BGMODE(v3d, scene, base)) + { + td->protectflag= ob->protectflag; + td->ext = tx; + td->rotOrder= ob->rotmode; + + ObjectToTransData(C, t, td, ob); + td->val = NULL; + td++; + tx++; + } + } + } } /* transcribe given node into TransData2D for Transforming */ @@ -5216,6 +5332,8 @@ void createTransData(bContext *C, TransInfo *t) printf("edit type not implemented!\n"); } + t->flag |= T_EDIT|T_POINTS; + if(t->data && t->flag & T_PROP_EDIT) { if (ELEM(t->obedit->type, OB_CURVE, OB_MESH)) { sort_trans_data(t); // makes selected become first in array @@ -5229,8 +5347,6 @@ void createTransData(bContext *C, TransInfo *t) } } - t->flag |= T_EDIT|T_POINTS; - /* exception... hackish, we want bonesize to use bone orientation matrix (ton) */ if(t->mode==TFM_BONESIZE) { t->flag &= ~(T_EDIT|T_POINTS); @@ -5261,27 +5377,32 @@ void createTransData(bContext *C, TransInfo *t) else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_start_edit(PE_get_current(scene, ob))) { createTransParticleVerts(C, t); + t->flag |= T_POINTS; if(t->data && t->flag & T_PROP_EDIT) { sort_trans_data(t); // makes selected become first in array set_prop_dist(t, 1); sort_trans_data_dist(t); } - - t->flag |= T_POINTS; } else { - t->flag &= ~T_PROP_EDIT; /* no proportional edit in object mode */ + // t->flag &= ~T_PROP_EDIT; /* no proportional edit in object mode */ t->options |= CTX_NO_PET; createTransObject(C, t); t->flag |= T_OBJECT; + if(t->data && t->flag & T_PROP_EDIT) { + // selected objects are already first, no need to presort + set_prop_dist(t, 1); + sort_trans_data_dist(t); + } + if (t->ar->regiontype == RGN_TYPE_WINDOW) { View3D *v3d = t->view; RegionView3D *rv3d = CTX_wm_region_view3d(C); - if(rv3d && (t->flag & T_OBJECT) && v3d->camera == OBACT && rv3d->persp==V3D_CAMOB) + if(rv3d && (t->flag & T_OBJECT) && v3d->camera == OBACT && rv3d->persp==RV3D_CAMOB) { t->flag |= T_CAMERA; } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index d8f7696840d..1a374a64ee9 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -124,7 +124,7 @@ extern ListBase editelems; void getViewVector(TransInfo *t, float coord[3], float vec[3]) { - if (t->persp != V3D_ORTHO) + if (t->persp != RV3D_ORTHO) { float p1[4], p2[4]; @@ -779,6 +779,8 @@ void recalcData(TransInfo *t) flushTransParticles(t); } else { + int i; + for(base= FIRSTBASE; base; base= base->next) { Object *ob= base->object; @@ -787,9 +789,18 @@ void recalcData(TransInfo *t) ob->recalc |= OB_RECALC_OB; if(base->flag & BA_HAS_RECALC_DATA) ob->recalc |= OB_RECALC_DATA; + } + + for (i = 0; i < t->total; i++) { + TransData *td = t->data + i; + Object *ob = td->ob; + + if (td->flag & TD_NOACTION) + break; + + if (td->flag & TD_SKIP) + continue; - /* if object/base is selected */ - if ((base->flag & SELECT) || (ob->flag & SELECT)) { /* if animtimer is running, and the object already has animation data, * check if the auto-record feature means that we should record 'samples' * (i.e. uneditable animation values) @@ -799,7 +810,6 @@ void recalcData(TransInfo *t) animrecord_check_state(t->scene, &ob->id, t->animtimer); autokeyframe_ob_cb_func(t->scene, (View3D *)t->view, ob, t->mode); } - } /* proxy exception */ if(ob->proxy) @@ -1008,7 +1018,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->flag |= T_PROP_EDIT; if(ts->proportional == PROP_EDIT_CONNECTED) - t->flag |= T_PROP_CONNECTED; // yes i know, has to become define + t->flag |= T_PROP_CONNECTED; } } @@ -1308,16 +1318,19 @@ void calculateCenter(TransInfo *t) case V3D_ACTIVE: { /* set median, and if if if... do object center */ -#if 0 // TRANSFORM_FIX_ME - EditSelection ese; + /* EDIT MODE ACTIVE EDITMODE ELEMENT */ - if (t->obedit && t->obedit->type == OB_MESH && EM_get_actSelection(&ese)) { + if (t->obedit && t->obedit->type == OB_MESH) { + EditSelection ese; + EditMesh *em = BKE_mesh_get_editmesh(t->obedit->data); + + if (EM_get_actSelection(em, &ese)) { EM_editselection_center(t->center, &ese); calculateCenter2D(t); break; + } } /* END EDIT MODE ACTIVE ELEMENT */ -#endif calculateCenterMedian(t); if((t->flag & (T_EDIT|T_POSE))==0) @@ -1351,7 +1364,7 @@ void calculateCenter(TransInfo *t) Scene *scene = t->scene; RegionView3D *rv3d = t->ar->regiondata; - if(v3d->camera == OBACT && rv3d->persp==V3D_CAMOB) + if(v3d->camera == OBACT && rv3d->persp==RV3D_CAMOB) { float axis[3]; /* persinv is nasty, use viewinv instead, always right */ diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 19881c7bc5b..3a871500ae7 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -176,6 +176,78 @@ static void stats_editbone(View3D *v3d, EditBone *ebo) protectflag_to_drawflags(OB_LOCK_LOC|OB_LOCK_ROT|OB_LOCK_SCALE, &v3d->twdrawflag); } + +static int test_rotmode_euler(short rotmode) +{ + return (ELEM(rotmode, ROT_MODE_AXISANGLE, ROT_MODE_QUAT)) ? 0:1; +} + +void gimbal_axis(Object *ob, float gmat[][3]) +{ + if(ob->mode & OB_MODE_POSE) + { + bPoseChannel *pchan= NULL; + + /* use channels to get stats */ + for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { + if (pchan->bone && pchan->bone->flag & BONE_ACTIVE) { + if(test_rotmode_euler(pchan->rotmode)) { + break; + } + } + } + + if(pchan) { + float mat[3][3], tmat[3][3], obmat[3][3]; + + EulToGimbalAxis(mat, pchan->eul, pchan->rotmode); + + /* apply bone transformation */ + Mat3MulMat3(tmat, pchan->bone->bone_mat, mat); + + if (pchan->parent) + { + float parent_mat[3][3]; + + Mat3CpyMat4(parent_mat, pchan->parent->pose_mat); + Mat3MulMat3(mat, parent_mat, tmat); + + /* needed if object transformation isn't identity */ + Mat3CpyMat4(obmat, ob->obmat); + Mat3MulMat3(gmat, obmat, mat); + } + else + { + /* needed if object transformation isn't identity */ + Mat3CpyMat4(obmat, ob->obmat); + Mat3MulMat3(gmat, obmat, tmat); + } + + Mat3Ortho(gmat); + } + } + else { + if(test_rotmode_euler(ob->rotmode)) { + + + if (ob->parent) + { + float parent_mat[3][3], amat[3][3]; + + EulToGimbalAxis(amat, ob->rot, ob->rotmode); + Mat3CpyMat4(parent_mat, ob->parent->obmat); + Mat3Ortho(parent_mat); + Mat3MulMat3(gmat, parent_mat, amat); + } + else + { + EulToGimbalAxis(gmat, ob->rot, ob->rotmode); + } + } + } +} + + /* centroid, boundbox, of selection */ /* returns total items selected */ int calc_manipulator_stats(const bContext *C) @@ -188,8 +260,6 @@ int calc_manipulator_stats(const bContext *C) RegionView3D *rv3d= ar->regiondata; Base *base; Object *ob= OBACT; - float normal[3]={0.0, 0.0, 0.0}; - float plane[3]={0.0, 0.0, 0.0}; int a, totsel= 0; /* transform widget matrix */ @@ -419,51 +489,19 @@ int calc_manipulator_stats(const bContext *C) case V3D_MANIP_GLOBAL: break; /* nothing to do */ - case V3D_MANIP_NORMAL: - if(obedit || ob->mode & OB_MODE_POSE) { + case V3D_MANIP_GIMBAL: + { float mat[3][3]; - int type; - - type = getTransformOrientation(C, normal, plane, (v3d->around == V3D_ACTIVE)); - - switch (type) - { - case ORIENTATION_NORMAL: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; - } + Mat3One(mat); + gimbal_axis(ob, mat); + Mat4CpyMat3(rv3d->twmat, mat); break; - case ORIENTATION_VERT: - if (createSpaceNormal(mat, normal) == 0) - { - type = ORIENTATION_NONE; - } - break; - case ORIENTATION_EDGE: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; } + case V3D_MANIP_NORMAL: + if(obedit || ob->mode & OB_MODE_POSE) { + getTransformOrientationMatrix(C, rv3d->twmat, (v3d->around == V3D_ACTIVE)); break; - case ORIENTATION_FACE: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; } - break; - } - - if (type == ORIENTATION_NONE) - { - Mat4One(rv3d->twmat); - } - else - { - Mat4CpyMat3(rv3d->twmat, mat); - } - break; - } /* no break we define 'normal' as 'local' in Object mode */ case V3D_MANIP_LOCAL: Mat4CpyMat4(rv3d->twmat, ob->obmat); @@ -676,12 +714,43 @@ static void draw_manipulator_axes(View3D *v3d, int colcode, int flagx, int flagy } } +static void preOrtho(int ortho, float twmat[][4], int axis) +{ + if (ortho == 0) { + float omat[4][4]; + Mat4CpyMat4(omat, twmat); + Mat4Orthogonal(omat, axis); + glPushMatrix(); + wmMultMatrix(omat); + } +} + +static void preOrthoFront(int ortho, float twmat[][4], int axis) +{ + if (ortho == 0) { + float omat[4][4]; + Mat4CpyMat4(omat, twmat); + Mat4Orthogonal(omat, axis); + glPushMatrix(); + wmMultMatrix(omat); + glFrontFace( is_mat4_flipped(omat)?GL_CW:GL_CCW); + } +} + +static void postOrtho(int ortho) +{ + if (ortho == 0) { + glPopMatrix(); + } +} + /* only called while G.moving */ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int drawflags) { GLUquadricObj *qobj; float size, phi, startphi, vec[3], svec[3], matt[4][4], cross[3], tmat[3][3]; int arcs= (G.rt!=2); + int ortho; glDisable(GL_DEPTH_TEST); @@ -736,11 +805,18 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d Mat3MulVecfl(tmat, svec); // tmat is used further on Normalize(svec); } + + ortho = IsMat4Orthogonal(rv3d->twmat); + if (ortho) { wmMultMatrix(rv3d->twmat); // aligns with original widget + } + /* Z disk */ if(drawflags & MAN_ROT_Z) { + preOrtho(ortho, rv3d->twmat, 2); + if(arcs) { /* correct for squeezed arc */ svec[0]+= tmat[2][0]; @@ -760,9 +836,13 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d if(Inpf(cross, rv3d->twmat[2]) > 0.0) phi= -phi; gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*(phi)/M_PI); } + + postOrtho(ortho); } /* X disk */ if(drawflags & MAN_ROT_X) { + preOrtho(ortho, rv3d->twmat, 0); + if(arcs) { /* correct for squeezed arc */ svec[1]+= tmat[2][1]; @@ -784,9 +864,13 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI); glRotatef(-90.0, 0.0, 1.0, 0.0); } + + postOrtho(ortho); } /* Y circle */ if(drawflags & MAN_ROT_Y) { + preOrtho(ortho, rv3d->twmat, 1); + if(arcs) { /* correct for squeezed arc */ svec[0]+= tmat[2][0]; @@ -808,6 +892,8 @@ static void draw_manipulator_rotate_ghost(View3D *v3d, RegionView3D *rv3d, int d gluPartialDisk(qobj, 0.0, 1.0, 32, 1, 180.0*startphi/M_PI, 180.0*phi/M_PI); glRotatef(90.0, 1.0, 0.0, 0.0); } + + postOrtho(ortho); } glDisable(GL_BLEND); @@ -818,11 +904,13 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, { GLUquadricObj *qobj; double plane[4]; + float matt[4][4]; float size, vec[3], unitmat[4][4]; float cywid= 0.33f*0.01f*(float)U.tw_handlesize; float cusize= cywid*0.65f; int arcs= (G.rt!=2); int colcode; + int ortho; if(moving) colcode= MAN_MOVECOL; else colcode= MAN_RGB; @@ -859,6 +947,15 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, drawcircball(GL_LINE_LOOP, unitmat[3], size, unitmat); } } + + /* Screen aligned trackball rot circle */ + if(drawflags & MAN_ROT_T) { + if(G.f & G_PICKSEL) glLoadName(MAN_ROT_T); + + UI_ThemeColor(TH_TRANSFORM); + drawcircball(GL_LINE_LOOP, unitmat[3], 0.2f*size, unitmat); + } + /* Screen aligned view rot circle */ if(drawflags & MAN_ROT_V) { if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V); @@ -880,68 +977,90 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, } glPopMatrix(); + + ortho = IsMat4Orthogonal(rv3d->twmat); + /* apply the transform delta */ if(moving) { - float matt[4][4]; Mat4CpyMat4(matt, rv3d->twmat); // to copy the parts outside of [3][3] // XXX Mat4MulMat34(matt, t->mat, rv3d->twmat); + if (ortho) { wmMultMatrix(matt); glFrontFace( is_mat4_flipped(matt)?GL_CW:GL_CCW); } + } else { + if (ortho) { glFrontFace( is_mat4_flipped(rv3d->twmat)?GL_CW:GL_CCW); wmMultMatrix(rv3d->twmat); } + } /* axes */ if(arcs==0) { if(!(G.f & G_PICKSEL)) { if( (combo & V3D_MANIP_SCALE)==0) { /* axis */ - glBegin(GL_LINES); if( (drawflags & MAN_ROT_X) || (moving && (drawflags & MAN_ROT_Z)) ) { + preOrthoFront(ortho, rv3d->twmat, 2); manipulator_setcolor(v3d, 'x', colcode); + glBegin(GL_LINES); glVertex3f(0.2f, 0.0f, 0.0f); glVertex3f(1.0f, 0.0f, 0.0f); + glEnd(); + postOrtho(ortho); } if( (drawflags & MAN_ROT_Y) || (moving && (drawflags & MAN_ROT_X)) ) { + preOrthoFront(ortho, rv3d->twmat, 0); manipulator_setcolor(v3d, 'y', colcode); + glBegin(GL_LINES); glVertex3f(0.0f, 0.2f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); + glEnd(); + postOrtho(ortho); } if( (drawflags & MAN_ROT_Z) || (moving && (drawflags & MAN_ROT_Y)) ) { + preOrthoFront(ortho, rv3d->twmat, 1); manipulator_setcolor(v3d, 'z', colcode); + glBegin(GL_LINES); glVertex3f(0.0f, 0.0f, 0.2f); glVertex3f(0.0f, 0.0f, 1.0f); - } glEnd(); + postOrtho(ortho); } } } + } if(arcs==0 && moving) { /* Z circle */ if(drawflags & MAN_ROT_Z) { + preOrthoFront(ortho, matt, 2); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z); manipulator_setcolor(v3d, 'z', colcode); drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat); + postOrtho(ortho); } /* X circle */ if(drawflags & MAN_ROT_X) { + preOrthoFront(ortho, matt, 0); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X); glRotatef(90.0, 0.0, 1.0, 0.0); manipulator_setcolor(v3d, 'x', colcode); drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat); glRotatef(-90.0, 0.0, 1.0, 0.0); + postOrtho(ortho); } /* Y circle */ if(drawflags & MAN_ROT_Y) { + preOrthoFront(ortho, matt, 1); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y); glRotatef(-90.0, 1.0, 0.0, 0.0); manipulator_setcolor(v3d, 'y', colcode); drawcircball(GL_LINE_LOOP, unitmat[3], 1.0, unitmat); glRotatef(90.0, 1.0, 0.0, 0.0); + postOrtho(ortho); } if(arcs) glDisable(GL_CLIP_PLANE0); @@ -952,25 +1071,31 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, /* Z circle */ if(drawflags & MAN_ROT_Z) { + preOrthoFront(ortho, rv3d->twmat, 2); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z); manipulator_setcolor(v3d, 'z', colcode); partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48); + postOrtho(ortho); } /* X circle */ if(drawflags & MAN_ROT_X) { + preOrthoFront(ortho, rv3d->twmat, 0); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X); glRotatef(90.0, 0.0, 1.0, 0.0); manipulator_setcolor(v3d, 'x', colcode); partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48); glRotatef(-90.0, 0.0, 1.0, 0.0); + postOrtho(ortho); } /* Y circle */ if(drawflags & MAN_ROT_Y) { + preOrthoFront(ortho, rv3d->twmat, 1); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y); glRotatef(-90.0, 1.0, 0.0, 0.0); manipulator_setcolor(v3d, 'y', colcode); partial_donut(cusize/4.0f, 1.0f, 0, 48, 8, 48); glRotatef(90.0, 1.0, 0.0, 0.0); + postOrtho(ortho); } glDisable(GL_CLIP_PLANE0); @@ -980,6 +1105,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, /* Z handle on X axis */ if(drawflags & MAN_ROT_Z) { + preOrthoFront(ortho, rv3d->twmat, 2); glPushMatrix(); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z); manipulator_setcolor(v3d, 'z', colcode); @@ -987,10 +1113,12 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64); glPopMatrix(); + postOrtho(ortho); } /* Y handle on X axis */ if(drawflags & MAN_ROT_Y) { + preOrthoFront(ortho, rv3d->twmat, 1); glPushMatrix(); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y); manipulator_setcolor(v3d, 'y', colcode); @@ -1000,10 +1128,12 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64); glPopMatrix(); + postOrtho(ortho); } /* X handle on Z axis */ if(drawflags & MAN_ROT_X) { + preOrthoFront(ortho, rv3d->twmat, 0); glPushMatrix(); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X); manipulator_setcolor(v3d, 'x', colcode); @@ -1013,6 +1143,7 @@ static void draw_manipulator_rotate(View3D *v3d, RegionView3D *rv3d, int moving, partial_donut(0.7f*cusize, 1.0f, 31, 33, 8, 64); glPopMatrix(); + postOrtho(ortho); } } @@ -1407,9 +1538,10 @@ void BIF_draw_manipulator(const bContext *C) int totsel; if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return; - if(G.moving && (G.moving & G_TRANSFORM_MANIP)==0) return; +// if(G.moving && (G.moving & G_TRANSFORM_MANIP)==0) return; - if(G.moving==0) { +// if(G.moving==0) { + { v3d->twflag &= ~V3D_DRAW_MANIPULATOR; totsel= calc_manipulator_stats(C); @@ -1457,7 +1589,7 @@ void BIF_draw_manipulator(const bContext *C) else draw_manipulator_rotate_cyl(v3d, rv3d, 0, drawflags, v3d->twtype, MAN_RGB); } else - draw_manipulator_rotate(v3d, rv3d, G.moving, drawflags, v3d->twtype); + draw_manipulator_rotate(v3d, rv3d, 0 /* G.moving*/, drawflags, v3d->twtype); glDisable(GL_BLEND); } diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index bad744d101b..9b275417915 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -435,7 +435,7 @@ EnumPropertyItem *BIF_enumTransformOrientation(bContext *C) } char * BIF_menustringTransformOrientation(const bContext *C, char *title) { - char menu[] = "%t|Global%x0|Local%x1|Normal%x2|View%x3"; + char menu[] = "%t|Global%x0|Local%x1|Gimbal%x4|Normal%x2|View%x3"; ListBase *transform_spaces = &CTX_data_scene(C)->transform_spaces; TransformOrientation *ts; int i = V3D_MANIP_CUSTOM; @@ -518,64 +518,35 @@ void initTransformOrientation(bContext *C, TransInfo *t) Object *obedit = CTX_data_active_object(C); float normal[3]={0.0, 0.0, 0.0}; float plane[3]={0.0, 0.0, 0.0}; + switch(t->current_orientation) { case V3D_MANIP_GLOBAL: strcpy(t->spacename, "global"); break; - + + case V3D_MANIP_GIMBAL: + Mat3One(t->spacemtx); + if(ob) + gimbal_axis(ob, t->spacemtx); + break; case V3D_MANIP_NORMAL: - if(obedit || ob->mode & OB_MODE_POSE) { - float mat[3][3]; - int type; - + if(obedit || (ob && ob->mode & OB_MODE_POSE)) { strcpy(t->spacename, "normal"); - - type = getTransformOrientation(C, normal, plane, (v3d->around == V3D_ACTIVE)); - - switch (type) - { - case ORIENTATION_NORMAL: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; - } - break; - case ORIENTATION_VERT: - if (createSpaceNormal(mat, normal) == 0) - { - type = ORIENTATION_NONE; - } - break; - case ORIENTATION_EDGE: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; - } + getTransformOrientationMatrix(C, t->spacemtx, (v3d->around == V3D_ACTIVE)); break; - case ORIENTATION_FACE: - if (createSpaceNormalTangent(mat, normal, plane) == 0) - { - type = ORIENTATION_NONE; } - break; - } - - if (type == ORIENTATION_NONE) - { - Mat3One(t->spacemtx); - } - else - { - Mat3CpyMat3(t->spacemtx, mat); - } - break; - } /* no break we define 'normal' as 'local' in Object mode */ case V3D_MANIP_LOCAL: strcpy(t->spacename, "local"); + + if(ob) { Mat3CpyMat4(t->spacemtx, ob->obmat); Mat3Ortho(t->spacemtx); + } else { + Mat3One(t->spacemtx); + } + break; case V3D_MANIP_VIEW: @@ -970,3 +941,51 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], return result; } + +void getTransformOrientationMatrix(const bContext *C, float twmat[][4], int activeOnly) +{ + float normal[3]={0.0, 0.0, 0.0}; + float plane[3]={0.0, 0.0, 0.0}; + + float mat[3][3]; + int type; + + type = getTransformOrientation(C, normal, plane, activeOnly); + + switch (type) + { + case ORIENTATION_NORMAL: + if (createSpaceNormalTangent(mat, normal, plane) == 0) + { + type = ORIENTATION_NONE; + } + break; + case ORIENTATION_VERT: + if (createSpaceNormal(mat, normal) == 0) + { + type = ORIENTATION_NONE; + } + break; + case ORIENTATION_EDGE: + if (createSpaceNormalTangent(mat, normal, plane) == 0) + { + type = ORIENTATION_NONE; + } + break; + case ORIENTATION_FACE: + if (createSpaceNormalTangent(mat, normal, plane) == 0) + { + type = ORIENTATION_NONE; + } + break; + } + + if (type == ORIENTATION_NONE) + { + Mat4One(twmat); + } + else + { + Mat4CpyMat3(twmat, mat); + } +} diff --git a/source/blender/editors/util/editmode_undo.c b/source/blender/editors/util/editmode_undo.c index 93d36805f0c..e4a1b996dc7 100644 --- a/source/blender/editors/util/editmode_undo.c +++ b/source/blender/editors/util/editmode_undo.c @@ -240,13 +240,13 @@ static void undo_clean_stack(bContext *C) /* 1= an undo, -1 is a redo. we have to make sure 'curundo' remains at current situation */ void undo_editmode_step(bContext *C, int step) { - Object *ob = CTX_data_edit_object(C); - + Object *obedit= CTX_data_edit_object(C); + /* prevent undo to happen on wrong object, stack can be a mix */ undo_clean_stack(C); if(step==0) { - undo_restore(curundo, curundo->getdata(C), ob->data); + undo_restore(curundo, curundo->getdata(C), obedit->data); } else if(step==1) { @@ -254,7 +254,7 @@ void undo_editmode_step(bContext *C, int step) else { if(G.f & G_DEBUG) printf("undo %s\n", curundo->name); curundo= curundo->prev; - undo_restore(curundo, curundo->getdata(C), ob->data); + undo_restore(curundo, curundo->getdata(C), obedit->data); } } else { @@ -262,13 +262,14 @@ void undo_editmode_step(bContext *C, int step) if(curundo==NULL || curundo->next==NULL) error("No more steps to redo"); else { - undo_restore(curundo->next, curundo->getdata(C), ob->data); + undo_restore(curundo->next, curundo->getdata(C), obedit->data); curundo= curundo->next; if(G.f & G_DEBUG) printf("redo %s\n", curundo->name); } } + + DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); -// DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); /* XXX notifiers */ } diff --git a/source/blender/editors/uvedit/uvedit_intern.h b/source/blender/editors/uvedit/uvedit_intern.h index a203fc9b55b..c36631613e4 100644 --- a/source/blender/editors/uvedit/uvedit_intern.h +++ b/source/blender/editors/uvedit/uvedit_intern.h @@ -76,7 +76,6 @@ void UV_OT_average_islands_scale(struct wmOperatorType *ot); void UV_OT_cube_project(struct wmOperatorType *ot); void UV_OT_cylinder_project(struct wmOperatorType *ot); void UV_OT_from_view(struct wmOperatorType *ot); -void UV_OT_mapping_menu(struct wmOperatorType *ot); void UV_OT_minimize_stretch(struct wmOperatorType *ot); void UV_OT_pack_islands(struct wmOperatorType *ot); void UV_OT_reset(struct wmOperatorType *ot); diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index df418e60254..c1bbc49498b 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -1267,6 +1267,7 @@ void UV_OT_align(wmOperatorType *ot) /* identifiers */ ot->name= "Align"; + ot->description= "Align selected UV vertices to an axis."; ot->idname= "UV_OT_align"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1291,6 +1292,7 @@ void UV_OT_weld(wmOperatorType *ot) { /* identifiers */ ot->name= "Weld"; + ot->description= "Weld selected UV vertices together."; ot->idname= "UV_OT_weld"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1458,6 +1460,7 @@ void UV_OT_stitch(wmOperatorType *ot) { /* identifiers */ ot->name= "Stitch"; + ot->description= "Stitch selected UV vertices by proximity."; ot->idname= "UV_OT_stitch"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1517,6 +1520,7 @@ void UV_OT_select_inverse(wmOperatorType *ot) { /* identifiers */ ot->name= "Select Inverse"; + ot->description= "Select inverse of (un)selected UV vertices."; ot->idname= "UV_OT_select_inverse"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1592,6 +1596,7 @@ void UV_OT_select_all_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "Select or Deselect All"; + ot->description= "(de)select all UV vertices."; ot->idname= "UV_OT_select_all_toggle"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1933,6 +1938,7 @@ void UV_OT_select(wmOperatorType *ot) { /* identifiers */ ot->name= "Select"; + ot->description= "Select UV vertice."; ot->idname= "UV_OT_select"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1981,6 +1987,7 @@ void UV_OT_select_loop(wmOperatorType *ot) { /* identifiers */ ot->name= "Loop Select"; + ot->description= "Select a loop of connected UV vertices."; ot->idname= "UV_OT_select_loop"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2028,6 +2035,7 @@ void UV_OT_select_linked(wmOperatorType *ot) { /* identifiers */ ot->name= "Select Linked"; + ot->description= "Select all UV vertices linked to the active UV map."; ot->idname= "UV_OT_select_linked"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2094,6 +2102,7 @@ void UV_OT_unlink_selection(wmOperatorType *ot) { /* identifiers */ ot->name= "Unlink Selection"; + ot->description= "Unlink selected UV vertices from active UV map."; ot->idname= "UV_OT_unlink_selection"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2107,7 +2116,7 @@ void UV_OT_unlink_selection(wmOperatorType *ot) /* This function sets the selection on tagged faces, need because settings the * selection a face is done in a number of places but it also needs to respect * the sticky modes for the UV verts, so dealing with the sticky modes is best - * done in a seperate function. + * done in a separate function. * * De-selects faces that have been tagged on efa->tmp.l. */ @@ -2351,6 +2360,7 @@ void UV_OT_select_border(wmOperatorType *ot) { /* identifiers */ ot->name= "Border Select"; + ot->description= "Select UV vertices using border selection."; ot->idname= "UV_OT_select_border"; /* api callbacks */ @@ -2408,9 +2418,10 @@ int circle_select_exec(bContext *C, wmOperator *op) MTexPoly *tface; int x, y, radius, width, height, select; float zoomx, zoomy, offset[2], ellipse[2]; - + int gesture_mode= RNA_int_get(op->ptr, "gesture_mode"); + /* get operator properties */ - select= (RNA_int_get(op->ptr, "event_type") == LEFTMOUSE); // XXX hardcoded + select= (gesture_mode == GESTURE_MODAL_SELECT); x= RNA_int_get(op->ptr, "x"); y= RNA_int_get(op->ptr, "y"); radius= RNA_int_get(op->ptr, "radius"); @@ -2446,6 +2457,7 @@ void UV_OT_circle_select(wmOperatorType *ot) { /* identifiers */ ot->name= "Circle Select"; + ot->description= "Select UV vertices using circle selection."; ot->idname= "UV_OT_circle_select"; /* api callbacks */ @@ -2461,7 +2473,7 @@ void UV_OT_circle_select(wmOperatorType *ot) RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "radius", 0, INT_MIN, INT_MAX, "Radius", "", INT_MIN, INT_MAX); - RNA_def_int(ot->srna, "event_type", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); } /* ******************** snap cursor operator **************** */ @@ -2521,6 +2533,7 @@ void UV_OT_snap_cursor(wmOperatorType *ot) /* identifiers */ ot->name= "Snap Cursor"; + ot->description= "Snap cursor to target type."; ot->idname= "UV_OT_snap_cursor"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2729,6 +2742,7 @@ void UV_OT_snap_selection(wmOperatorType *ot) /* identifiers */ ot->name= "Snap Selection"; + ot->description= "Snap selected UV vertices to target type."; ot->idname= "UV_OT_snap_selection"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2782,6 +2796,7 @@ void UV_OT_pin(wmOperatorType *ot) { /* identifiers */ ot->name= "Pin"; + ot->description= "Set/clear selected UV vertices as anchored between multiple unwrap operations."; ot->idname= "UV_OT_pin"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2829,6 +2844,7 @@ void UV_OT_select_pinned(wmOperatorType *ot) { /* identifiers */ ot->name= "Selected Pinned"; + ot->description= "Select all pinned UV vertices."; ot->idname= "UV_OT_select_pinned"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2896,6 +2912,7 @@ void UV_OT_hide(wmOperatorType *ot) { /* identifiers */ ot->name= "Hide Selected"; + ot->description= "Hide (un)selected UV vertices."; ot->idname= "UV_OT_hide"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2959,6 +2976,7 @@ void UV_OT_reveal(wmOperatorType *ot) { /* identifiers */ ot->name= "Reveal Hidden"; + ot->description= "Reveal all hidden UV vertices."; ot->idname= "UV_OT_reveal"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -3000,7 +3018,8 @@ static int set_2d_cursor_invoke(bContext *C, wmOperator *op, wmEvent *event) void UV_OT_cursor_set(wmOperatorType *ot) { /* identifiers */ - ot->name= "Set 3D Cursor"; + ot->name= "Set 2D Cursor"; + ot->description= "Set 2D cursor location."; ot->idname= "UV_OT_cursor_set"; /* api callbacks */ @@ -3066,6 +3085,7 @@ void UV_OT_tile_set(wmOperatorType *ot) { /* identifiers */ ot->name= "Set Tile"; + ot->description= "Set UV image tile coordinates."; ot->idname= "UV_OT_tile_set"; /* api callbacks */ @@ -3106,7 +3126,6 @@ void ED_operatortypes_uvedit(void) WM_operatortype_append(UV_OT_cube_project); WM_operatortype_append(UV_OT_cylinder_project); WM_operatortype_append(UV_OT_from_view); - WM_operatortype_append(UV_OT_mapping_menu); WM_operatortype_append(UV_OT_minimize_stretch); WM_operatortype_append(UV_OT_pack_islands); WM_operatortype_append(UV_OT_reset); diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 89d28a46d28..7c214c576ff 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -1383,69 +1383,3 @@ void UV_OT_cube_project(wmOperatorType *ot) RNA_def_float(ot->srna, "cube_size", 1.0f, 0.0f, FLT_MAX, "Cube Size", "Size of the cube to project on.", 0.001f, 100.0f); uv_map_clip_correct_properties(ot); } - -/******************* Mapping Menu operator ****************/ - -static int mapping_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - uiPopupMenu *pup; - uiLayout *layout; - - pup= uiPupMenuBegin(C, "UV Mapping", 0); - layout= uiPupMenuLayout(pup); - - uiItemO(layout, NULL, 0, "UV_OT_unwrap"); - uiItemS(layout); - uiItemO(layout, NULL, 0, "UV_OT_cube_project"); - uiItemO(layout, NULL, 0, "UV_OT_cylinder_project"); - uiItemO(layout, NULL, 0, "UV_OT_sphere_project"); - uiItemO(layout, NULL, 0, "UV_OT_project_from_view"); - uiItemS(layout); - uiItemO(layout, NULL, 0, "UV_OT_reset"); - - uiPupMenuEnd(C, pup); - - /* XXX python */ -#ifndef DISABLE_PYTHON -#if 0 - /* note that we account for the 10 previous entries with i+10: */ - for(pym = BPyMenuTable[PYMENU_UVCALCULATION]; pym; pym = pym->next, i++) { - - if(!has_pymenu) { - strcat(uvmenu, "|%l"); - has_pymenu = 1; - } - - strcat(uvmenu, "|"); - strcat(uvmenu, pym->name); - strcat(uvmenu, " %x"); - sprintf(menu_number, "%d", i+10); - strcat(uvmenu, menu_number); - } -#endif -#endif - -#ifndef DISABLE_PYTHON -#if 0 - mode= pupmenu(uvmenu); - if(mode >= 10) { - BPY_menu_do_python(PYMENU_UVCALCULATION, mode - 10); - return; - } -#endif -#endif - - return OPERATOR_CANCELLED; -} - -void UV_OT_mapping_menu(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "UV Mapping"; - ot->idname= "UV_OT_mapping_menu"; - - /* api callbacks */ - ot->invoke= mapping_menu_invoke; - ot->poll= ED_operator_uvmap; -} - diff --git a/source/blender/gpu/GPU_extensions.h b/source/blender/gpu/GPU_extensions.h index a910ff9c3e7..c2af4e8fcb1 100644 --- a/source/blender/gpu/GPU_extensions.h +++ b/source/blender/gpu/GPU_extensions.h @@ -48,6 +48,9 @@ typedef struct GPUTexture GPUTexture; struct GPUFrameBuffer; typedef struct GPUFrameBuffer GPUFrameBuffer; +struct GPUOffScreen; +typedef struct GPUOffScreen GPUOffScreen; + struct GPUShader; typedef struct GPUShader GPUShader; @@ -107,6 +110,14 @@ void GPU_framebuffer_free(GPUFrameBuffer *fb); void GPU_framebuffer_restore(); +/* GPU OffScreen + - wrapper around framebuffer and texture for simple offscreen drawing */ + +GPUOffScreen *GPU_offscreen_create(int width, int height); +void GPU_offscreen_free(GPUOffScreen *ofs); +void GPU_offscreen_bind(GPUOffScreen *ofs); +void GPU_offscreen_unbind(GPUOffScreen *ofs); + /* GPU Shader - only for fragment shaders now - must call texture bind before setting a texture as uniform! */ diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index 5c8157be789..5deef4a5200 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -616,7 +616,7 @@ int GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *tex) } else { glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); - glReadBuffer(GL_NONE); + glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); } status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); @@ -727,6 +727,78 @@ void GPU_framebuffer_restore() } } +/* GPUOffScreen */ + +struct GPUOffScreen { + GPUFrameBuffer *fb; + GPUTexture *color; + GPUTexture *depth; +}; + +GPUOffScreen *GPU_offscreen_create(int width, int height) +{ + GPUOffScreen *ofs; + + ofs= MEM_callocN(sizeof(GPUOffScreen), "GPUOffScreen"); + + ofs->fb = GPU_framebuffer_create(); + if(!ofs->fb) { + GPU_offscreen_free(ofs); + return NULL; + } + + ofs->depth = GPU_texture_create_depth(width, height); + if(!ofs->depth) { + GPU_offscreen_free(ofs); + return NULL; + } + + if(!GPU_framebuffer_texture_attach(ofs->fb, ofs->depth)) { + GPU_offscreen_free(ofs); + return NULL; + } + + ofs->color = GPU_texture_create_2D(width, height, NULL); + if(!ofs->color) { + GPU_offscreen_free(ofs); + return NULL; + } + + if(!GPU_framebuffer_texture_attach(ofs->fb, ofs->color)) { + GPU_offscreen_free(ofs); + return NULL; + } + + GPU_framebuffer_restore(); + + return ofs; +} + +void GPU_offscreen_free(GPUOffScreen *ofs) +{ + if(ofs->fb) + GPU_framebuffer_free(ofs->fb); + if(ofs->color) + GPU_texture_free(ofs->color); + if(ofs->depth) + GPU_texture_free(ofs->depth); + + MEM_freeN(ofs); +} + +void GPU_offscreen_bind(GPUOffScreen *ofs) +{ + glDisable(GL_SCISSOR_TEST); + GPU_framebuffer_texture_bind(ofs->fb, ofs->color); +} + +void GPU_offscreen_unbind(GPUOffScreen *ofs) +{ + GPU_framebuffer_texture_unbind(ofs->fb, ofs->color); + GPU_framebuffer_restore(); + glEnable(GL_SCISSOR_TEST); +} + /* GPUShader */ struct GPUShader { diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 0dc17da93a1..0650a0bfa19 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -1509,6 +1509,7 @@ void GPU_lamp_shadow_buffer_bind(GPULamp *lamp, float viewmat[][4], int *winsize Mat4MulMat4(lamp->persmat, persmat, rangemat); /* opengl */ + glDisable(GL_SCISSOR_TEST); GPU_framebuffer_texture_bind(lamp->fb, lamp->tex); /* set matrices */ @@ -1521,6 +1522,7 @@ void GPU_lamp_shadow_buffer_unbind(GPULamp *lamp) { GPU_framebuffer_texture_unbind(lamp->fb, lamp->tex); GPU_framebuffer_restore(); + glEnable(GL_SCISSOR_TEST); } int GPU_lamp_shadow_layer(GPULamp *lamp) diff --git a/source/blender/ikplugin/intern/iksolver_plugin.c b/source/blender/ikplugin/intern/iksolver_plugin.c index b160e7346bd..6eb1ef56094 100644 --- a/source/blender/ikplugin/intern/iksolver_plugin.c +++ b/source/blender/ikplugin/intern/iksolver_plugin.c @@ -109,7 +109,9 @@ static void initialize_posetree(struct Object *ob, bPoseChannel *pchan_tip) if(tree==NULL) { /* make new tree */ tree= MEM_callocN(sizeof(PoseTree), "posetree"); - + + tree->type= CONSTRAINT_TYPE_KINEMATIC; + tree->iterations= data->iterations; tree->totchannel= segcount; tree->stretch = (data->flag & CONSTRAINT_IK_STRETCH); @@ -503,6 +505,10 @@ void iksolver_execute_tree(struct Scene *scene, struct Object *ob, struct bPose PoseTree *tree= pchan->iktree.first; int a; + /* stop on the first tree that isn't a standard IK chain */ + if (tree->type != CONSTRAINT_TYPE_KINEMATIC) + return; + /* 4. walk over the tree for regular solving */ for(a=0; a<tree->totchannel; a++) { if(!(tree->pchan[a]->flag & POSE_DONE)) // successive trees can set the flag diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt index 5eb98151c14..336f4cc70b0 100644 --- a/source/blender/imbuf/CMakeLists.txt +++ b/source/blender/imbuf/CMakeLists.txt @@ -26,6 +26,7 @@ FILE(GLOB SRC intern/*.c) + SET(INC . ../makesdna ../../../intern/guardedalloc ../../../intern/memutil ../blenlib ../avi ../blenkernel @@ -54,7 +55,7 @@ IF(WITH_FFMPEG) ADD_DEFINITIONS(-DWITH_FFMPEG) ENDIF(WITH_FFMPEG) -if(WITH_DDS) +IF(WITH_DDS) ADD_DEFINITIONS(-DWITH_DDS) ENDIF(WITH_DDS) diff --git a/source/blender/imbuf/SConscript b/source/blender/imbuf/SConscript index 6052b344da7..a8d91b2d31e 100644 --- a/source/blender/imbuf/SConscript +++ b/source/blender/imbuf/SConscript @@ -6,6 +6,7 @@ sources = env.Glob('intern/*.c') incs = '. ../makesdna #/intern/guardedalloc #/intern/memutil ../blenlib' incs += ' ../avi ../blenkernel' + incs += ' ' + env['BF_JPEG_INC'] incs += ' ' + env['BF_PNG_INC'] incs += ' ' + env['BF_TIFF_INC'] diff --git a/source/blender/imbuf/intern/IMB_cocoa.h b/source/blender/imbuf/intern/IMB_cocoa.h new file mode 100644 index 00000000000..0fd12f23c32 --- /dev/null +++ b/source/blender/imbuf/intern/IMB_cocoa.h @@ -0,0 +1,43 @@ +/* + * IMB_cocoa.h + * + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contributor(s): Damien Plisson 10/2009 + * + * ***** END GPL LICENSE BLOCK ***** + */ +/** + * \file IMB_cocoa.h + * \ingroup imbuf + * \brief Function declarations for imbuf_cocoa.m + */ + +#ifndef IMB_COCOA_H +#define IMB_COCOA_H + +/* Foward declaration of ImBuf structure. */ +struct ImBuf; + +/* Declarations for imbuf_cocoa.m */ +struct ImBuf *imb_cocoaLoadImage(unsigned char *mem, int size, int flags); +short imb_cocoaSaveImage(struct ImBuf *ibuf, char *name, int flags); + +#endif /* IMB_COCOA_H */ + diff --git a/source/blender/imbuf/intern/dynlibtiff.c b/source/blender/imbuf/intern/dynlibtiff.c index b9186e482c5..6db83b37c05 100644 --- a/source/blender/imbuf/intern/dynlibtiff.c +++ b/source/blender/imbuf/intern/dynlibtiff.c @@ -78,6 +78,34 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; /* Try to find libtiff in a couple of standard places */ +#ifdef __APPLE__ + /* OSX has version specific library */ + //standard install location + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/resources + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/frameworks + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); + if (libtiff != NULL) return; + //along side the blender app package + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); + if (libtiff != NULL) return; + //inside the blender app package contents/MacOS + libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); + if (libtiff != NULL) return; + libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); + if (libtiff != NULL) return; +#else libtiff = PIL_dynlib_open("libtiff.so"); if (libtiff != NULL) return; libtiff = PIL_dynlib_open("libtiff.so.3"); @@ -88,7 +116,6 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); if (libtiff != NULL) return; - /* OSX has version specific library */ #ifdef __x86_64__ libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); if (libtiff != NULL) return; @@ -97,6 +124,7 @@ void libtiff_loadlibtiff(void) if (libtiff != NULL) return; /* For solaris */ libtiff = PIL_dynlib_open("/usr/openwin/lib/libtiff.so"); +#endif } diff --git a/source/blender/imbuf/intern/imbuf_cocoa.m b/source/blender/imbuf/intern/imbuf_cocoa.m new file mode 100644 index 00000000000..77449d1d8ce --- /dev/null +++ b/source/blender/imbuf/intern/imbuf_cocoa.m @@ -0,0 +1,386 @@ +/* + * imbuf_coca.m + * + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Contributor(s): Damien Plisson 10/2009 + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** + * Provides image file loading and saving for Blender, via Cocoa. + * + */ + +#include <stdint.h> +#include <string.h> +#import <Cocoa/Cocoa.h> + +#include "imbuf.h" +#include "imbuf_patch.h" + +#include "IMB_cocoa.h" + +#include "BKE_global.h" +#include "BKE_colortools.h" + +#include "IMB_imbuf_types.h" +#include "IMB_imbuf.h" + +#include "IMB_allocimbuf.h" + + + +#pragma mark load/save functions + +/** + * Loads an image from the supplied buffer + * + * Loads any Core Graphics supported type + * Currently is : TIFF, BMP, JPEG, GIF, PNG, DIB, ICO, and various RAW formats + * + * @param mem: Memory containing the bitmap image + * @param size: Size of the mem buffer. + * @param flags: If flags has IB_test set then the file is not actually loaded, + * but all other operations take place. + * + * @return: A newly allocated ImBuf structure if successful, otherwise NULL. + */ +struct ImBuf *imb_cocoaLoadImage(unsigned char *mem, int size, int flags) +{ + struct ImBuf *ibuf = NULL; + NSSize bitmapSize; + uchar *rasterRGB = NULL; + uchar *rasterRGBA = NULL; + uchar *toIBuf = NULL; + int x, y, to_i, from_i; + NSData *data; + NSBitmapImageRep *bitmapImage; + NSBitmapImageRep *blBitmapFormatImageRGB,*blBitmapFormatImageRGBA; + NSAutoreleasePool *pool; + + pool = [[NSAutoreleasePool alloc] init]; + + data = [NSData dataWithBytes:mem length:size]; + bitmapImage = [[NSBitmapImageRep alloc] initWithData:data]; + + if (!bitmapImage) { + fprintf(stderr, "imb_cocoaLoadImage: error loading image\n"); + [pool drain]; + return NULL; + } + + bitmapSize.width = [bitmapImage pixelsWide]; + bitmapSize.height = [bitmapImage pixelsHigh]; + + /* Tell cocoa image resolution is same as current system one */ + [bitmapImage setSize:bitmapSize]; + + /* allocate the image buffer */ + ibuf = IMB_allocImBuf(bitmapSize.width, bitmapSize.height, 32/*RGBA*/, 0, 0); + if (!ibuf) { + fprintf(stderr, + "imb_cocoaLoadImage: could not allocate memory for the " \ + "image.\n"); + [bitmapImage release]; + [pool drain]; + return NULL; + } + + /* read in the image data */ + if (!(flags & IB_test)) { + + /* allocate memory for the ibuf->rect */ + imb_addrectImBuf(ibuf); + + /* Convert the image in a RGBA 32bit format */ + /* As Core Graphics does not support contextes with non premutliplied alpha, + we need to get alpha key values in a separate batch */ + + /* First get RGB values w/o Alpha to avoid pre-multiplication, 32bit but last byte is unused */ + blBitmapFormatImageRGB = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL + pixelsWide:bitmapSize.width + pixelsHigh:bitmapSize.height + bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO + colorSpaceName:NSCalibratedRGBColorSpace + bitmapFormat:0 + bytesPerRow:4*bitmapSize.width + bitsPerPixel:32/*RGB format padded to 32bits*/]; + + [NSGraphicsContext saveGraphicsState]; + [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGB]]; + [bitmapImage draw]; + [NSGraphicsContext restoreGraphicsState]; + + rasterRGB = (uchar*)[blBitmapFormatImageRGB bitmapData]; + if (rasterRGB == NULL) { + [bitmapImage release]; + [blBitmapFormatImageRGB release]; + [pool drain]; + return NULL; + } + + /* Then get Alpha values by getting the RGBA image (that is premultiplied btw) */ + blBitmapFormatImageRGBA = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL + pixelsWide:bitmapSize.width + pixelsHigh:bitmapSize.height + bitsPerSample:8 samplesPerPixel:4 hasAlpha:YES isPlanar:NO + colorSpaceName:NSCalibratedRGBColorSpace + bitmapFormat:0 + bytesPerRow:4*bitmapSize.width + bitsPerPixel:32/* RGBA */]; + + [NSGraphicsContext saveGraphicsState]; + [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithBitmapImageRep:blBitmapFormatImageRGBA]]; + [bitmapImage draw]; + [NSGraphicsContext restoreGraphicsState]; + + rasterRGBA = (uchar*)[blBitmapFormatImageRGBA bitmapData]; + if (rasterRGBA == NULL) { + [bitmapImage release]; + [blBitmapFormatImageRGB release]; + [blBitmapFormatImageRGBA release]; + [pool drain]; + return NULL; + } + + /*Copy the image to ibuf, flipping it vertically*/ + toIBuf = (uchar*)ibuf->rect; + for (x = 0; x < bitmapSize.width; x++) { + for (y = 0; y < bitmapSize.height; y++) { + to_i = (bitmapSize.height-y-1)*bitmapSize.width + x; + from_i = y*bitmapSize.width + x; + + toIBuf[4*to_i] = rasterRGB[4*from_i]; /* R */ + toIBuf[4*to_i+1] = rasterRGB[4*from_i+1]; /* G */ + toIBuf[4*to_i+2] = rasterRGB[4*from_i+2]; /* B */ + toIBuf[4*to_i+3] = rasterRGBA[4*from_i+3]; /* A */ + } + } + + [blBitmapFormatImageRGB release]; + [blBitmapFormatImageRGBA release]; + } + + /* release the cocoa objects */ + [bitmapImage release]; + [pool drain]; + + if (ENDIAN_ORDER == B_ENDIAN) IMB_convert_rgba_to_abgr(ibuf); + + /* return successfully */ + return (ibuf); +} + +/** + * Saves an image to a file. + * + * ImBuf structures with 1, 3 or 4 bytes per pixel (GRAY, RGB, RGBA + * respectively) are accepted, and interpreted correctly. + * + * Accepted formats: TIFF, GIF, BMP, PNG, JPEG, JPEG2000 + * + * @param ibuf: Image buffer. + * @param name: Name of the image file to create. + * @param flags: Currently largely ignored. + * + * @return: 1 if the function is successful, 0 on failure. + */ + +#define FTOUSHORT(val) ((val >= 1.0f-0.5f/65535)? 65535: (val <= 0.0f)? 0: (unsigned short)(val*65535.0f + 0.5f)) + +short imb_cocoaSaveImage(struct ImBuf *ibuf, char *name, int flags) +{ + uint16_t samplesperpixel, bitspersample; + unsigned char *from = NULL, *to = NULL; + unsigned short *to16 = NULL; + float *fromf = NULL; + int x, y, from_i, to_i, i; + int success; + BOOL hasAlpha; + NSString* colorSpace; + NSBitmapImageRep *blBitmapFormatImage; + NSData *dataToWrite; + NSDictionary *imageProperties; + + NSAutoreleasePool *pool; + + if (!ibuf) return FALSE; + if (!name) return FALSE; + + /* check for a valid number of bytes per pixel. Like the PNG writer, + * the TIFF writer supports 1, 3 or 4 bytes per pixel, corresponding + * to gray, RGB, RGBA respectively. */ + samplesperpixel = (uint16_t)((ibuf->depth + 7) >> 3); + switch (samplesperpixel) { + case 4: /*RGBA type*/ + hasAlpha = YES; + colorSpace = NSCalibratedRGBColorSpace; + break; + case 3: /*RGB type*/ + hasAlpha = NO; + colorSpace = NSCalibratedRGBColorSpace; + break; + case 1: + hasAlpha = NO; + colorSpace = NSCalibratedWhiteColorSpace; + break; + default: + fprintf(stderr, + "imb_cocoaSaveImage: unsupported number of bytes per " + "pixel: %d\n", samplesperpixel); + return (0); + } + + if((ibuf->ftype & TIF_16BIT) && ibuf->rect_float) + bitspersample = 16; + else + bitspersample = 8; + + pool = [[NSAutoreleasePool alloc] init]; + + /* Create bitmap image rep in blender format */ + blBitmapFormatImage = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL + pixelsWide:ibuf->x + pixelsHigh:ibuf->y + bitsPerSample:bitspersample samplesPerPixel:samplesperpixel hasAlpha:hasAlpha isPlanar:NO + colorSpaceName:colorSpace + bitmapFormat:NSAlphaNonpremultipliedBitmapFormat + bytesPerRow:(ibuf->x*bitspersample*samplesperpixel/8) + bitsPerPixel:(bitspersample*samplesperpixel)]; + if (!blBitmapFormatImage) { + [pool drain]; + return FALSE; + } + + /* setup pointers */ + if(bitspersample == 16) { + fromf = ibuf->rect_float; + to16 = (unsigned short*)[blBitmapFormatImage bitmapData]; + } + else { + from = (unsigned char*)ibuf->rect; + to = (unsigned char*)[blBitmapFormatImage bitmapData]; + } + + /* copy pixel data. While copying, we flip the image vertically. */ + for (x = 0; x < ibuf->x; x++) { + for (y = 0; y < ibuf->y; y++) { + from_i = 4*(y*ibuf->x+x); + to_i = samplesperpixel*((ibuf->y-y-1)*ibuf->x+x); + + if(bitspersample == 16) { + if (ibuf->profile == IB_PROFILE_SRGB) { + switch (samplesperpixel) { + case 4 /*RGBA*/: + to16[to_i] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i])); + to16[to_i+1] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i+1])); + to16[to_i+2] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i+2])); + to16[to_i+3] = FTOUSHORT(fromf[from_i+3]); + break; + case 3 /*RGB*/: + to16[to_i] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i])); + to16[to_i+1] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i+1])); + to16[to_i+2] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i+2])); + break; + case 1 /*BW*/: + to16[to_i] = FTOUSHORT(linearrgb_to_srgb(fromf[from_i])); + break; + } + } + else { + for (i = 0; i < samplesperpixel; i++, to_i++, from_i++) + to16[to_i] = FTOUSHORT(fromf[from_i]); + } + } + else { + /* 8bits per sample*/ + for (i = 0; i < samplesperpixel; i++, to_i++, from_i++) + to[to_i] = from[from_i]; + } + } + } + + /* generate file data */ + if (IS_tiff(ibuf)) { + dataToWrite = [blBitmapFormatImage TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1.0]; + } + else if (IS_png(ibuf)) { + imageProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:false], NSImageInterlaced, + nil]; + dataToWrite = [blBitmapFormatImage representationUsingType:NSPNGFileType properties:imageProperties]; + } + else if (IS_bmp(ibuf)) { + dataToWrite = [blBitmapFormatImage representationUsingType:NSBMPFileType properties:nil]; + } + else {/* JPEG by default */ + int quality; + + quality = ibuf->ftype & 0xff; + if (quality <= 0) quality = 90; /* Standard quality if wrong supplied*/ + if (quality > 100) quality = 100; + + imageProperties = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:quality], NSImageCompressionFactor, + [NSNumber numberWithBool:true], NSImageProgressive, + nil]; + dataToWrite = [blBitmapFormatImage representationUsingType:NSJPEGFileType properties:imageProperties]; + } + + /* Write the file */ + success = [dataToWrite writeToFile:[NSString stringWithCString:name encoding:NSISOLatin1StringEncoding] + atomically:YES]; + + [blBitmapFormatImage release]; + [pool drain]; + + return success; +} + +#pragma mark format checking functions + +/* Currently, only tiff format is handled, so need to include here function that was previously in tiff.c */ + +/** + * Checks whether a given memory buffer contains a TIFF file. + * + * FIXME: Possible memory leak if mem is less than IMB_TIFF_NCB bytes long. + * However, changing this will require up-stream modifications. + * + * This method uses the format identifiers from: + * http://www.faqs.org/faqs/graphics/fileformats-faq/part4/section-9.html + * The first four bytes of big-endian and little-endian TIFF files + * respectively are (hex): + * 4d 4d 00 2a + * 49 49 2a 00 + * Note that TIFF files on *any* platform can be either big- or little-endian; + * it's not platform-specific. + * + * AFAICT, libtiff doesn't provide a method to do this automatically, and + * hence my manual comparison. - Jonathan Merritt (lancelet) 4th Sept 2005. + */ +#define IMB_TIFF_NCB 4 /* number of comparison bytes used */ +int imb_is_a_tiff(void *mem) +{ + char big_endian[IMB_TIFF_NCB] = { 0x4d, 0x4d, 0x00, 0x2a }; + char lil_endian[IMB_TIFF_NCB] = { 0x49, 0x49, 0x2a, 0x00 }; + + return ( (memcmp(big_endian, mem, IMB_TIFF_NCB) == 0) || + (memcmp(lil_endian, mem, IMB_TIFF_NCB) == 0) ); +} diff --git a/source/blender/imbuf/intern/readimage.c b/source/blender/imbuf/intern/readimage.c index 4104a8db65c..f248e6bb6c4 100644 --- a/source/blender/imbuf/intern/readimage.c +++ b/source/blender/imbuf/intern/readimage.c @@ -53,11 +53,16 @@ #include "IMB_hamx.h" #include "IMB_jpeg.h" #include "IMB_bmp.h" -#include "IMB_tiff.h" #include "IMB_radiance_hdr.h" #include "IMB_dpxcineon.h" #include "BKE_global.h" +#if defined(__APPLE__) && defined(IMBUF_COCOA) +#include "IMB_cocoa.h" +#else +#include "IMB_tiff.h" +#endif + #ifdef WITH_OPENJPEG #include "IMB_jp2.h" #endif @@ -152,11 +157,19 @@ ImBuf *IMB_ibImageFromMemory(int *mem, int size, int flags) { ibuf = imb_loadcineon((uchar *)mem, size, flags); if (ibuf) return(ibuf); +#if defined(__APPLE__) && defined(IMBUF_COCOA) + ibuf = imb_cocoaLoadImage((uchar *)mem, size, flags); + if(ibuf) { + ibuf->ftype = TIF; + return ibuf; + } +#else if (G.have_libtiff) { ibuf = imb_loadtiff((uchar *)mem, size, flags); if (ibuf) return(ibuf); } - +#endif + ibuf = imb_loadhdr((uchar*)mem, size, flags); if (ibuf) return (ibuf); diff --git a/source/blender/imbuf/intern/writeimage.c b/source/blender/imbuf/intern/writeimage.c index b3af727190a..06ce59cddec 100644 --- a/source/blender/imbuf/intern/writeimage.c +++ b/source/blender/imbuf/intern/writeimage.c @@ -51,14 +51,22 @@ #include "IMB_amiga.h" #include "IMB_png.h" #include "IMB_bmp.h" -#include "IMB_tiff.h" #include "IMB_radiance_hdr.h" + +#if defined(__APPLE__) && defined(IMBUF_COCOA) +#include "IMB_cocoa.h" +#else +#include "IMB_tiff.h" +#endif + #ifdef WITH_OPENJPEG #include "IMB_jp2.h" #endif + #ifdef WITH_OPENEXR #include "openexr/openexr_api.h" #endif + #ifdef WITH_DDS #include "dds/dds_api.h" #endif @@ -110,11 +118,21 @@ short IMB_saveiff(struct ImBuf *ibuf, char *name, int flags) IMB_rect_from_float(ibuf); return imb_saveiris(ibuf, name, flags); } + +#if defined(__APPLE__) && defined(IMBUF_COCOA) + if (IS_tiff(ibuf)) { + if(ibuf->rect==NULL && ibuf->rect_float) + IMB_rect_from_float(ibuf); + return imb_cocoaSaveImage(ibuf, name, flags); + } +#else if (G.have_libtiff && IS_tiff(ibuf)) { if(ibuf->rect==NULL && ibuf->rect_float) IMB_rect_from_float(ibuf); return imb_savetiff(ibuf, name, flags); } +#endif + #ifdef WITH_OPENEXR if (IS_openexr(ibuf)) { return imb_save_openexr(ibuf, name, flags); diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 8d590692794..7067c967da3 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -159,20 +159,30 @@ typedef struct bPoseChannel { /* PoseChannel (transform) flags */ typedef enum ePchan_Flag { - POSE_LOC = 0x0001, - POSE_ROT = 0x0002, - POSE_SIZE = 0x0004, - POSE_IK_MAT = 0x0008, - POSE_UNUSED2 = 0x0010, - POSE_UNUSED3 = 0x0020, - POSE_UNUSED4 = 0x0040, - POSE_UNUSED5 = 0x0080, - POSE_HAS_IK = 0x0100, - POSE_CHAIN = 0x0200, - POSE_DONE = 0x0400, - POSE_KEY = 0x1000, - POSE_STRIDE = 0x2000, - POSE_IKTREE = 0x4000, + /* has transforms */ + POSE_LOC = (1<<0), + POSE_ROT = (1<<1), + POSE_SIZE = (1<<2), + /* old IK/cache stuff... */ + POSE_IK_MAT = (1<<3), + POSE_UNUSED2 = (1<<4), + POSE_UNUSED3 = (1<<5), + POSE_UNUSED4 = (1<<6), + POSE_UNUSED5 = (1<<7), + /* has Standard IK */ + POSE_HAS_IK = (1<<8), + /* IK/Pose solving*/ + POSE_CHAIN = (1<<9), + POSE_DONE = (1<<10), + /* visualisation */ + POSE_KEY = (1<<11), + POSE_STRIDE = (1<<12), + /* standard IK solving */ + POSE_IKTREE = (1<<13), + /* has Spline IK */ + POSE_HAS_IKS = (1<<14), + /* spline IK solving */ + POSE_IKSPLINE = (1<<15), } ePchan_Flag; /* PoseChannel constflag (constraint detection) */ @@ -183,7 +193,9 @@ typedef enum ePchan_ConstFlag { PCHAN_HAS_ACTION = (1<<2), PCHAN_HAS_TARGET = (1<<3), /* only for drawing Posemode too */ - PCHAN_HAS_STRIDE = (1<<4) + PCHAN_HAS_STRIDE = (1<<4), + /* spline IK */ + PCHAN_HAS_SPLINEIK = (1<<5), } ePchan_ConstFlag; /* PoseChannel->ikflag */ @@ -202,7 +214,6 @@ typedef enum ePchan_IkFlag { BONE_IK_NO_XDOF_TEMP = (1<<10), BONE_IK_NO_YDOF_TEMP = (1<<11), BONE_IK_NO_ZDOF_TEMP = (1<<12), - } ePchan_IkFlag; /* PoseChannel->rotmode and Object->rotmode */ diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 590e7dadcdc..d3e611178fe 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -44,6 +44,7 @@ struct AnimData; typedef struct Bone { struct Bone *next, *prev; /* Next/prev elements within this list */ + IDProperty *prop; /* User-Defined Properties on this Bone */ struct Bone *parent; /* Parent (ik parent if appropriate flag is set */ ListBase childbase; /* Children */ char name[32]; /* Name of the bone - must be unique within the armature */ @@ -72,6 +73,7 @@ typedef struct Bone { typedef struct bArmature { ID id; struct AnimData *adt; + ListBase bonebase; ListBase chainbase; ListBase *edbo; /* editbone listbase, we use pointer so we can check state */ diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index 7232042c876..2b24b673185 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -32,7 +32,6 @@ #define DNA_CONSTRAINT_TYPES_H #include "DNA_ID.h" -#include "DNA_ipo_types.h" #include "DNA_listBase.h" #include "DNA_object_types.h" @@ -41,9 +40,10 @@ struct Text; struct Ipo; /* channels reside in Object or Action (ListBase) constraintChannels */ +// XXX depreceated... old AnimSys typedef struct bConstraintChannel { struct bConstraintChannel *next, *prev; - Ipo *ipo; + struct Ipo *ipo; short flag; char name[30]; } bConstraintChannel; @@ -66,6 +66,7 @@ typedef struct bConstraint { int pad; struct Ipo *ipo; /* local influence ipo or driver */ // XXX depreceated for 2.5... old animation system hack + /* below are readonly fields that are set at runtime by the solver for use in the GE (only IK atm) */ float lin_error; /* residual error on constraint expressed in blender unit*/ float rot_error; /* residual error on constraint expressed in radiant */ @@ -122,7 +123,7 @@ typedef struct bPythonConstraint { } bPythonConstraint; -/* inverse-Kinematics (IK) constraint +/* Inverse-Kinematics (IK) constraint This constraint supports a variety of mode determine by the type field according to B_CONSTRAINT_IK_TYPE. Some fields are used by all types, some are specific to some types @@ -151,6 +152,27 @@ typedef enum B_CONSTRAINT_IK_TYPE { CONSTRAINT_IK_DISTANCE /* maintain distance with target */ } B_CONSTRAINT_IK_TYPE; + +/* Spline IK Constraint + * Aligns 'n' bones to the curvature defined by the curve, + * with the chain ending on the bone that owns this constraint, + * and starting on the nth parent. + */ +typedef struct bSplineIKConstraint { + /* target(s) */ + Object *tar; /* curve object (with follow path enabled) which drives the bone chain */ + + /* binding details */ + float *points; /* array of numpoints items, denoting parametric positions along curve that joints should follow */ + short numpoints; /* number of points to bound in points array */ + short chainlen; /* number of bones ('n') that are in the chain */ + + /* settings */ + short flag; /* general settings for constraint */ + short xzScaleMode; /* method used for determining the x & z scaling of the bones */ +} bSplineIKConstraint; + + /* Single-target subobject constraints --------------------- */ /* Track To Constraint */ typedef struct bTrackToConstraint { @@ -219,6 +241,14 @@ typedef struct bLockTrackConstraint { char subtarget[32]; } bLockTrackConstraint; +/* Damped Tracking constraint */ +typedef struct bDampTrackConstraint { + Object *tar; + int trackflag; + int pad; + char subtarget[32]; +} bDampTrackConstraint; + /* Follow Path constraints */ typedef struct bFollowPathConstraint { Object *tar; /* Must be path object */ @@ -331,6 +361,7 @@ typedef struct bDistLimitConstraint { int pad; } bDistLimitConstraint; +/* ShrinkWrap Constraint */ typedef struct bShrinkwrapConstraint { Object *target; float dist; /* distance to kept from target */ @@ -368,10 +399,11 @@ typedef enum B_CONSTAINT_TYPES { CONSTRAINT_TYPE_CLAMPTO, /* clampto constraint */ CONSTRAINT_TYPE_TRANSFORM, /* transformation (loc/rot/size -> loc/rot/size) constraint */ CONSTRAINT_TYPE_SHRINKWRAP, /* shrinkwrap (loc/rot) constraint */ + CONSTRAINT_TYPE_DAMPTRACK, /* New Tracking constraint that minimises twisting */ + CONSTRAINT_TYPE_SPLINEIK, /* Spline-IK - Align 'n' bones to a curve */ - - /* NOTE: everytime a new constraint is added, update this */ - NUM_CONSTRAINT_TYPES= CONSTRAINT_TYPE_SHRINKWRAP + /* NOTE: no constraints are allowed to be added after this */ + NUM_CONSTRAINT_TYPES } B_CONSTRAINT_TYPES; /* bConstraint->flag */ @@ -512,6 +544,23 @@ typedef enum B_CONSTRAINTCHANNEL_FLAG { /* axis relative to target */ #define CONSTRAINT_IK_TARGETAXIS 16384 +/* bSplineIKConstraint->flag */ + /* chain has been attached to spline */ +#define CONSTRAINT_SPLINEIK_BOUND (1<<0) + /* root of chain is not influenced by the constraint */ +#define CONSTRAINT_SPLINEIK_NO_ROOT (1<<1) + /* bones in the chain should not scale to fit the curve */ +#define CONSTRAINT_SPLINEIK_SCALE_LIMITED (1<<2) + /* evenly distribute the bones along the path regardless of length */ +#define CONSTRAINT_SPLINEIK_EVENSPLITS (1<<3) + +/* bSplineIKConstraint->xzScaleMode */ + /* no x/z scaling */ +#define CONSTRAINT_SPLINEIK_XZS_NONE 0 + /* bones in the chain should take their x/z scales from the curve radius */ +#define CONSTRAINT_SPLINEIK_XZS_RADIUS 1 + /* bones in the chain should take their x/z scales from the original scaling */ +#define CONSTRAINT_SPLINEIK_XZS_ORIGINAL 2 /* MinMax (floor) flags */ #define MINMAX_STICKY 0x01 diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index db1c261556b..fe6a5b050e3 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -508,8 +508,7 @@ typedef struct MeshDeformModifierData { struct Object *object; /* mesh object */ char defgrp_name[32]; /* optional vertexgroup name */ - short gridsize, needbind; - short flag, pad; + short gridsize, flag, pad[2]; /* variables filled in when bound */ float *bindweights, *bindcos; /* computed binding weights */ @@ -522,6 +521,10 @@ typedef struct MeshDeformModifierData { float dyncellmin[3]; /* offset of the dynamic bind grid */ float dyncellwidth; /* width of dynamic bind cell */ float bindmat[4][4]; /* matrix of cage at binding time */ + + /* runtime */ + void (*bindfunc)(struct Scene *scene, struct MeshDeformModifierData *mmd, + float *vertexcos, int totvert, float cagemat[][4]); } MeshDeformModifierData; typedef enum { diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 693621ab711..786edff2622 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -413,6 +413,7 @@ extern Object workob; #define BA_FROMSET 128 #define BA_TRANSFORM_CHILD 256 /* child of a transformed object */ +#define BA_TRANSFORM_PARENT 8192 /* parent of a transformed object */ /* an initial attempt as making selection more specific! */ #define BA_DESELECT 0 diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 157767e1d13..0de48c54fe2 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -231,7 +231,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in char bb_uvname[3][32]; /* billboard uv name */ /* if you change these remember to update array lengths to PSYS_TOT_VG! */ - short vgroup[12], vg_neg, rt3; /* vertex groups */ + short vgroup[12], vg_neg, rt3; /* vertex groups, 0==disable, 1==starting index */ /* temporary storage during render */ void *renderdata; diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index f14f7b58bef..bafe8cc3162 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -669,6 +669,8 @@ typedef struct ToolSettings { /* Transform */ short snap_mode, snap_flag, snap_target; short proportional, prop_mode; + + int auto_normalize, intpad; /*auto normalizing mode in wpaint*/ } ToolSettings; typedef struct bStats { @@ -954,7 +956,8 @@ typedef struct Scene { /* depricate this! */ #define TESTBASE(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) ) #define TESTBASELIB(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0)) -#define TESTBASELIB_BGMODE(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0)) +#define TESTBASELIB_BGMODE(v3d, scene, base) ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0)) +#define BASE_EDITABLE_BGMODE(v3d, scene, base) (((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0)) #define BASE_SELECTABLE(v3d, base) ((base->lay & v3d->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0) #define FIRSTBASE scene->base.first #define LASTBASE scene->base.last diff --git a/source/blender/makesdna/DNA_texture_types.h b/source/blender/makesdna/DNA_texture_types.h index a43e5c7ae13..eac7a97f0c0 100644 --- a/source/blender/makesdna/DNA_texture_types.h +++ b/source/blender/makesdna/DNA_texture_types.h @@ -159,12 +159,10 @@ typedef struct PointDensity { int pdpad; struct Object *object; /* for 'Object' or 'Particle system' type - source object */ - struct ParticleSystem *psys; + int psys; /* index+1 in ob.particlesystem, non-ID pointer not allowed */ short psys_cache_space; /* cache points in worldspace, object space, ... ? */ short ob_cache_space; /* cache points in worldspace, object space, ... ? */ - short pdpad2[2]; - void *point_tree; /* the acceleration tree containing points */ float *point_data; /* dynamically allocated extra for extra information, like particle age */ diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index d67539f8ab0..85e0be4872a 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -269,6 +269,8 @@ typedef struct bTheme { ThemeWireColor tarm[20]; /*ThemeWireColor tobj[20];*/ + int active_theme_group, pad; + } bTheme; typedef struct SolidLight { diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index f67a242b469..422c56fe4c1 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -202,6 +202,11 @@ typedef struct View3D { #define V3D_GLOBAL_STATS 8192 #define V3D_DRAW_CENTERS 32768 +/* RegionView3d->persp */ +#define RV3D_ORTHO 0 +#define RV3D_PERSP 1 +#define RV3D_CAMOB 2 + /* RegionView3d->rflag */ #define RV3D_FLYMODE 2 #define RV3D_CLIPPING 4 @@ -211,6 +216,16 @@ typedef struct View3D { #define RV3D_BOXVIEW 2 #define RV3D_BOXCLIP 4 +/* RegionView3d->view */ +#define RV3D_VIEW_FRONT 1 +#define RV3D_VIEW_BACK 2 +#define RV3D_VIEW_LEFT 3 +#define RV3D_VIEW_RIGHT 4 +#define RV3D_VIEW_TOP 5 +#define RV3D_VIEW_BOTTOM 6 +#define RV3D_VIEW_PERSPORTHO 7 +#define RV3D_VIEW_CAMERA 8 + /* View3d->flag2 (short) */ #define V3D_SOLID_TEX 8 #define V3D_DISPGP 16 @@ -222,28 +237,15 @@ typedef struct View3D { #define V3D_LOCAL 2 #define V3D_ACTIVE 4 -/*View3D view types*/ -#define V3D_VIEW_FRONT 1 -#define V3D_VIEW_BACK 2 -#define V3D_VIEW_LEFT 3 -#define V3D_VIEW_RIGHT 4 -#define V3D_VIEW_TOP 5 -#define V3D_VIEW_BOTTOM 6 -#define V3D_VIEW_PERSPORTHO 7 -#define V3D_VIEW_CAMERA 8 -#define V3D_VIEW_STEPLEFT 9 -#define V3D_VIEW_STEPRIGHT 10 -#define V3D_VIEW_STEPDOWN 11 -#define V3D_VIEW_STEPUP 12 -#define V3D_VIEW_PANLEFT 13 -#define V3D_VIEW_PANRIGHT 14 -#define V3D_VIEW_PANDOWN 15 -#define V3D_VIEW_PANUP 16 - -/* View3d->persp */ -#define V3D_ORTHO 0 -#define V3D_PERSP 1 -#define V3D_CAMOB 2 +/*View3D types (only used in tools, not actually saved)*/ +#define V3D_VIEW_STEPLEFT 1 +#define V3D_VIEW_STEPRIGHT 2 +#define V3D_VIEW_STEPDOWN 3 +#define V3D_VIEW_STEPUP 4 +#define V3D_VIEW_PANLEFT 5 +#define V3D_VIEW_PANRIGHT 6 +#define V3D_VIEW_PANDOWN 7 +#define V3D_VIEW_PANUP 8 /* View3d->gridflag */ #define V3D_SHOW_FLOOR 1 @@ -261,7 +263,8 @@ typedef struct View3D { #define V3D_MANIP_LOCAL 1 #define V3D_MANIP_NORMAL 2 #define V3D_MANIP_VIEW 3 -#define V3D_MANIP_CUSTOM 4 /* anything of value 4 or higher is custom */ +#define V3D_MANIP_GIMBAL 4 +#define V3D_MANIP_CUSTOM 5 /* anything of value 5 or higher is custom */ /* View3d->twflag */ /* USE = user setting, DRAW = based on selection */ diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h index 810fb110f7a..dc730ee46f9 100644 --- a/source/blender/makesrna/RNA_access.h +++ b/source/blender/makesrna/RNA_access.h @@ -172,6 +172,7 @@ extern StructRNA RNA_CurveMapPoint; extern StructRNA RNA_CurveMapping; extern StructRNA RNA_CurveModifier; extern StructRNA RNA_CurvePoint; +extern StructRNA RNA_DampedTrackConstraint; extern StructRNA RNA_DecimateModifier; extern StructRNA RNA_DelaySensor; extern StructRNA RNA_DisplaceModifier; @@ -412,6 +413,7 @@ extern StructRNA RNA_SoftBodyModifier; extern StructRNA RNA_SoftBodySettings; extern StructRNA RNA_Sound; extern StructRNA RNA_SoundSequence; +extern StructRNA RNA_SplineIKConstraint; extern StructRNA RNA_Space; extern StructRNA RNA_Space3DView; extern StructRNA RNA_SpaceConsole; @@ -593,6 +595,8 @@ char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen); /* Property Information */ const char *RNA_property_identifier(PropertyRNA *prop); +const char *RNA_property_description(PropertyRNA *prop); + PropertyType RNA_property_type(PropertyRNA *prop); PropertySubType RNA_property_subtype(PropertyRNA *prop); PropertyUnit RNA_property_unit(PropertyRNA *prop); @@ -671,8 +675,10 @@ void RNA_property_collection_begin(PointerRNA *ptr, PropertyRNA *prop, Collectio void RNA_property_collection_next(CollectionPropertyIterator *iter); void RNA_property_collection_end(CollectionPropertyIterator *iter); int RNA_property_collection_length(PointerRNA *ptr, PropertyRNA *prop); +int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr); int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr); int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, const char *key, PointerRNA *r_ptr); +PropertyRNA *RNA_property_collection_active(PropertyRNA *prop); /* efficient functions to set properties for arrays */ int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array); diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h index 37b175fbf12..ed4a371b9c3 100644 --- a/source/blender/makesrna/RNA_define.h +++ b/source/blender/makesrna/RNA_define.h @@ -164,6 +164,7 @@ void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set); void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *typef); void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *add, const char *remove); +void RNA_def_property_collection_active(PropertyRNA *prop, PropertyRNA *prop_act); /* Function */ diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h index ca44e3405f6..318178d1522 100644 --- a/source/blender/makesrna/RNA_enum_types.h +++ b/source/blender/makesrna/RNA_enum_types.h @@ -31,6 +31,8 @@ extern EnumPropertyItem id_type_items[]; +/* use in cases where only dynamic types are used */ +extern EnumPropertyItem DummyRNA_NULL_items[]; extern EnumPropertyItem object_mode_items[]; @@ -69,6 +71,11 @@ struct bContext; struct PointerRNA; EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free); +/* Generic functions, return an enum from library data, index is the position + * in the linked list can add more for different types as needed */ +EnumPropertyItem *RNA_group_itemf(struct bContext *C, struct PointerRNA *ptr, int *free); +EnumPropertyItem *RNA_scene_itemf(struct bContext *C, struct PointerRNA *ptr, int *free); + #endif /* RNA_ENUM_TYPES */ diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index b16a0f00fd2..6f1e61e6869 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -1834,6 +1834,8 @@ static void rna_generate_property(FILE *f, StructRNA *srna, const char *nest, Pr else fprintf(f, "NULL, "); if(cprop->remove) fprintf(f, "&rna_%s_%s_func, ", srna->identifier, (char*)cprop->remove); else fprintf(f, "NULL, "); + if(cprop->active) fprintf(f, "(PropertyRNA*)&rna_%s%s_%s, ", srna->identifier, strnest, cprop->active->identifier); + else fprintf(f, "NULL, "); if(cprop->type) fprintf(f, "&RNA_%s\n", (char*)cprop->type); else fprintf(f, "NULL\n"); break; @@ -1993,7 +1995,7 @@ RNAProcessItem PROCESS_ITEMS[]= { {"rna_context.c", NULL, RNA_def_context}, {"rna_controller.c", NULL, RNA_def_controller}, {"rna_curve.c", NULL, RNA_def_curve}, - {"rna_fcurve.c", NULL, RNA_def_fcurve}, + {"rna_fcurve.c", "rna_fcurve_api.c", RNA_def_fcurve}, {"rna_fluidsim.c", NULL, RNA_def_fluidsim}, {"rna_gpencil.c", NULL, RNA_def_gpencil}, {"rna_group.c", NULL, RNA_def_group}, diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index 2fc1fcfc681..3de347cf80e 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -69,6 +69,7 @@ EnumPropertyItem id_type_items[] = { #include "BKE_idprop.h" #include "BKE_library.h" +#include "BKE_animsys.h" /* name functions that ignore the first two ID characters */ void rna_ID_name_get(PointerRNA *ptr, char *value) @@ -312,6 +313,10 @@ static void rna_def_ID(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Fake User", "Saves this datablock even if it has no users"); RNA_def_property_boolean_funcs(prop, NULL, "rna_ID_fake_user_set"); + prop= RNA_def_property(srna, "tag", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_DOIT); + RNA_def_property_ui_text(prop, "Tag", "Tools can use this to tag data, (initial state is undefined)."); + prop= RNA_def_property(srna, "library", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "lib"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); @@ -322,6 +327,15 @@ static void rna_def_ID(BlenderRNA *brna) RNA_def_function_ui_description(func, "Create a copy of this datablock (not supported for all datablocks)."); parm= RNA_def_pointer(func, "id", "ID", "", "New copy of the ID."); RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "animation_data_create", "BKE_id_add_animdata"); + RNA_def_function_ui_description(func, "Create animation data to this ID, note that not all ID types support this."); + parm= RNA_def_pointer(func, "anim_data", "AnimData", "", "New animation data or NULL."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "animation_data_clear", "BKE_free_animdata"); + RNA_def_function_ui_description(func, "Clear animation on this this ID."); + } static void rna_def_library(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 525218c5185..93e83492efa 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -381,6 +381,14 @@ static const char *rna_ensure_property_identifier(PropertyRNA *prop) return ((IDProperty*)prop)->name; } +static const char *rna_ensure_property_description(PropertyRNA *prop) +{ + if(prop->magic == RNA_MAGIC) + return prop->description; + else + return ((IDProperty*)prop)->name; /* XXX - not correct */ +} + static const char *rna_ensure_property_name(PropertyRNA *prop) { if(prop->magic == RNA_MAGIC) @@ -561,6 +569,11 @@ const char *RNA_property_identifier(PropertyRNA *prop) return rna_ensure_property_identifier(prop); } +const char *RNA_property_description(PropertyRNA *prop) +{ + return rna_ensure_property_description(prop); +} + PropertyType RNA_property_type(PropertyRNA *prop) { return rna_ensure_property(prop)->type; @@ -721,6 +734,11 @@ StructRNA *RNA_property_pointer_type(PointerRNA *ptr, PropertyRNA *prop) return &RNA_UnknownType; } +/* Reuse for dynamic types */ +EnumPropertyItem DummyRNA_NULL_items[] = { + {0, NULL, 0, NULL, NULL} +}; + void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, EnumPropertyItem **item, int *totitem, int *free) { EnumPropertyRNA *eprop= (EnumPropertyRNA*)rna_ensure_property(prop); @@ -890,6 +908,9 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value) BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop; IDProperty *idprop; + /* just incase other values are passed */ + if(value) value= 1; + if((idprop=rna_idproperty_check(&prop, ptr))) IDP_Int(idprop)= value; else if(bprop->set) @@ -1647,6 +1668,25 @@ void RNA_property_collection_clear(PointerRNA *ptr, PropertyRNA *prop) IDP_ResizeIDPArray(idprop, 0); } +int RNA_property_collection_lookup_index(PointerRNA *ptr, PropertyRNA *prop, PointerRNA *t_ptr) +{ + CollectionPropertyIterator iter; + int index= 0; + + RNA_property_collection_begin(ptr, prop, &iter); + for(index=0; iter.valid; RNA_property_collection_next(&iter), index++) { + if (iter.ptr.data == t_ptr->data) + break; + } + RNA_property_collection_end(&iter); + + /* did we find it? */ + if (iter.valid) + return index; + else + return -1; +} + int RNA_property_collection_lookup_int(PointerRNA *ptr, PropertyRNA *prop, int key, PointerRNA *r_ptr) { CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop; @@ -1721,6 +1761,12 @@ int RNA_property_collection_lookup_string(PointerRNA *ptr, PropertyRNA *prop, co } } +PropertyRNA *RNA_property_collection_active(PropertyRNA *prop) +{ + CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop; + return cprop->active; +} + int RNA_property_collection_raw_array(PointerRNA *ptr, PropertyRNA *prop, PropertyRNA *itemprop, RawArray *array) { CollectionPropertyIterator iter; @@ -2403,14 +2449,14 @@ char *RNA_path_from_ID_to_struct(PointerRNA *ptr) /* if type has a path to some ID, use it */ ptrpath= ptr->type->path(ptr); } - else if(ptr->type->nested) { + else if(ptr->type->nested && RNA_struct_is_ID(ptr->type->nested)) { PointerRNA parentptr; PropertyRNA *userprop; /* find the property in the struct we're nested in that references this struct, and * use its identifier as the first part of the path used... */ - RNA_pointer_create(ptr->id.data, ptr->type->nested, ptr->data, &parentptr); + RNA_id_pointer_create(ptr->id.data, &parentptr); userprop= RNA_struct_find_nested(&parentptr, ptr->type); if(userprop) diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c index 6c9d9263eeb..96dde186260 100644 --- a/source/blender/makesrna/intern/rna_armature.c +++ b/source/blender/makesrna/intern/rna_armature.c @@ -42,6 +42,7 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" +#include "BKE_idprop.h" #include "BKE_main.h" #include "ED_armature.h" @@ -67,6 +68,30 @@ static char *rna_Bone_path(PointerRNA *ptr) return BLI_sprintfN("bones[\"%s\"]", ((Bone*)ptr->data)->name); } +static IDProperty *rna_Bone_idproperties(PointerRNA *ptr, int create) +{ + Bone *bone= ptr->data; + + if(create && !bone->prop) { + IDPropertyTemplate val = {0}; + bone->prop= IDP_New(IDP_GROUP, val, "RNA_Bone ID properties"); + } + + return bone->prop; +} + +static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create) +{ + EditBone *ebone= ptr->data; + + if(create && !ebone->prop) { + IDPropertyTemplate val = {0}; + ebone->prop= IDP_New(IDP_GROUP, val, "RNA_EditBone ID properties"); + } + + return ebone->prop; +} + static void rna_bone_layer_set(short *layer, const int *values) { int i, tot= 0; @@ -442,6 +467,7 @@ static void rna_def_bone(BlenderRNA *brna) RNA_def_struct_ui_text(srna, "Bone", "Bone in an Armature datablock."); RNA_def_struct_ui_icon(srna, ICON_BONE_DATA); RNA_def_struct_path_func(srna, "rna_Bone_path"); + RNA_def_struct_idproperties_func(srna, "rna_Bone_idproperties"); /* pointers/collections */ /* parent (pointer) */ @@ -509,6 +535,7 @@ static void rna_def_edit_bone(BlenderRNA *brna) srna= RNA_def_struct(brna, "EditBone", NULL); RNA_def_struct_sdna(srna, "EditBone"); + RNA_def_struct_idproperties_func(srna, "rna_EditBone_idproperties"); RNA_def_struct_ui_text(srna, "Edit Bone", "Editmode bone in an Armature datablock."); RNA_def_struct_ui_icon(srna, ICON_BONE_DATA); diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 36a648c8a82..37b957a16ca 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -129,7 +129,7 @@ static StructRNA* rna_BoidRule_refine(struct PointerRNA *ptr) static char *rna_BoidRule_path(PointerRNA *ptr) { - return BLI_sprintfN("rules[%s]", ((BoidRule*)ptr->data)->name); // XXX not unique + return BLI_sprintfN("rules[\"%s\"]", ((BoidRule*)ptr->data)->name); // XXX not unique } static PointerRNA rna_BoidState_active_boid_rule_get(PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c index d64e2c7119b..d78544634bc 100644 --- a/source/blender/makesrna/intern/rna_cloth.c +++ b/source/blender/makesrna/intern/rna_cloth.c @@ -152,7 +152,7 @@ static char *rna_ClothSettings_path(PointerRNA *ptr) Object *ob= (Object*)ptr->id.data; ModifierData *md= modifiers_findByType(ob, eModifierType_Cloth); - return md ? BLI_sprintfN("modifiers[%s].settings", md->name) : NULL; + return md ? BLI_sprintfN("modifiers[\"%s\"].settings", md->name) : NULL; } static char *rna_ClothCollisionSettings_path(PointerRNA *ptr) @@ -160,7 +160,7 @@ static char *rna_ClothCollisionSettings_path(PointerRNA *ptr) Object *ob= (Object*)ptr->id.data; ModifierData *md= modifiers_findByType(ob, eModifierType_Cloth); - return md ? BLI_sprintfN("modifiers[%s].collision_settings", md->name) : NULL; + return md ? BLI_sprintfN("modifiers[\"%s\"].collision_settings", md->name) : NULL; } #else diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c index 6a7885c3a16..7f7976c365f 100644 --- a/source/blender/makesrna/intern/rna_constraint.c +++ b/source/blender/makesrna/intern/rna_constraint.c @@ -49,11 +49,13 @@ EnumPropertyItem constraint_type_items[] ={ {CONSTRAINT_TYPE_SIZELIMIT, "LIMIT_SCALE", ICON_CONSTRAINT_DATA, "Limit Scale", ""}, {CONSTRAINT_TYPE_DISTLIMIT, "LIMIT_DISTANCE", ICON_CONSTRAINT_DATA, "Limit Distance", ""}, {0, "", 0, "Tracking", ""}, - {CONSTRAINT_TYPE_TRACKTO, "TRACK_TO", ICON_CONSTRAINT_DATA, "Track To", ""}, - {CONSTRAINT_TYPE_LOCKTRACK, "LOCKED_TRACK", ICON_CONSTRAINT_DATA, "Locked Track", ""}, + {CONSTRAINT_TYPE_TRACKTO, "TRACK_TO", ICON_CONSTRAINT_DATA, "Track To", "Legacy tracking constraint prone to twisting artifacts"}, + {CONSTRAINT_TYPE_LOCKTRACK, "LOCKED_TRACK", ICON_CONSTRAINT_DATA, "Locked Track", "Tracking along a single axis"}, + {CONSTRAINT_TYPE_DAMPTRACK, "DAMPED_TRACK", ICON_CONSTRAINT_DATA, "Damped Track", "Tracking by taking the shortest path"}, {CONSTRAINT_TYPE_CLAMPTO, "CLAMP_TO", ICON_CONSTRAINT_DATA, "Clamp To", ""}, {CONSTRAINT_TYPE_STRETCHTO, "STRETCH_TO",ICON_CONSTRAINT_DATA, "Stretch To", ""}, {CONSTRAINT_TYPE_KINEMATIC, "IK", ICON_CONSTRAINT_DATA, "Inverse Kinematics", ""}, + {CONSTRAINT_TYPE_SPLINEIK, "SPLINE_IK", ICON_CONSTRAINT_DATA, "Spline IK", ""}, {0, "", 0, "Relationship", ""}, {CONSTRAINT_TYPE_CHILDOF, "CHILD_OF", ICON_CONSTRAINT_DATA, "Child Of", ""}, {CONSTRAINT_TYPE_MINMAX, "FLOOR", ICON_CONSTRAINT_DATA, "Floor", ""}, @@ -144,6 +146,10 @@ static StructRNA *rna_ConstraintType_refine(struct PointerRNA *ptr) return &RNA_LimitDistanceConstraint; case CONSTRAINT_TYPE_SHRINKWRAP: return &RNA_ShrinkwrapConstraint; + case CONSTRAINT_TYPE_DAMPTRACK: + return &RNA_DampedTrackConstraint; + case CONSTRAINT_TYPE_SPLINEIK: + return &RNA_SplineIKConstraint; default: return &RNA_UnknownType; } @@ -1166,7 +1172,7 @@ static void rna_def_constraint_clamp_to(BlenderRNA *brna) RNA_def_struct_sdna_from(srna, "bClampToConstraint", "data"); prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "tar"); + RNA_def_property_pointer_sdna(prop, NULL, "tar"); // TODO: curve only! RNA_def_property_ui_text(prop, "Target", "Target Object"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); @@ -1633,6 +1639,95 @@ static void rna_def_constraint_shrinkwrap(BlenderRNA *brna) RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); } +static void rna_def_constraint_damped_track(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static EnumPropertyItem damptrack_items[] = { + {TRACK_X, "TRACK_X", 0, "X", ""}, + {TRACK_Y, "TRACK_Y", 0, "Y", ""}, + {TRACK_Z, "TRACK_Z", 0, "Z", ""}, + {TRACK_nX, "TRACK_NEGATIVE_X", 0, "-X", ""}, + {TRACK_nY, "TRACK_NEGATIVE_Y", 0, "-Y", ""}, + {TRACK_nZ, "TRACK_NEGATIVE_Z", 0, "-Z", ""}, + {0, NULL, 0, NULL, NULL}}; + + srna= RNA_def_struct(brna, "DampedTrackConstraint", "Constraint"); + RNA_def_struct_ui_text(srna, "Damped Track Constraint", "Points toward target by taking the shortest rotation path."); + RNA_def_struct_sdna_from(srna, "bDampTrackConstraint", "data"); + + prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "tar"); + RNA_def_property_ui_text(prop, "Target", "Target Object"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); + + prop= RNA_def_property(srna, "subtarget", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "subtarget"); + RNA_def_property_ui_text(prop, "Sub-Target", ""); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); + + prop= RNA_def_property(srna, "track", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "trackflag"); + RNA_def_property_enum_items(prop, damptrack_items); + RNA_def_property_ui_text(prop, "Track Axis", "Axis that points to the target object."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); +} + +static void rna_def_constraint_spline_ik(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + static EnumPropertyItem splineik_xz_scale_mode[] = { + {CONSTRAINT_SPLINEIK_XZS_NONE, "NONE", 0, "None", "Don't scale the x and z axes, giving a volume preservation effect. (Default)"}, + {CONSTRAINT_SPLINEIK_XZS_RADIUS, "CURVE_RADIUS", 0, "Curve Radius", "Use the radius of the curve."}, + {CONSTRAINT_SPLINEIK_XZS_ORIGINAL, "ORIGINAL", 0, "Original", "Use the original scaling of the bones."}, + {0, NULL, 0, NULL, NULL}}; + + srna= RNA_def_struct(brna, "SplineIKConstraint", "Constraint"); + RNA_def_struct_ui_text(srna, "Spline IK Constraint", "Align 'n' bones along a curve."); + RNA_def_struct_sdna_from(srna, "bSplineIKConstraint", "data"); + + /* target chain */ + prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "tar"); + RNA_def_property_ui_text(prop, "Target", "Curve that controls this relationship"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); + + prop= RNA_def_property(srna, "chain_length", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "chainlen"); + RNA_def_property_range(prop, 1, 255); // TODO: this should really check the max length of the chain the constraint is attached to + RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the chain"); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update"); + + // TODO: add access to the positions array to allow more flexible aligning? + + /* settings */ + prop= RNA_def_property(srna, "affect_root", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_ROOT); + RNA_def_property_ui_text(prop, "Affect Root", "Include the root joint in the calculations."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + + prop= RNA_def_property(srna, "even_divisions", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_EVENSPLITS); + RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + + prop= RNA_def_property(srna, "keep_max_length", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED); + RNA_def_property_ui_text(prop, "Keep Max Length", "Maintain the maximum length of the chain when spline is stretched."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); + + prop= RNA_def_property(srna, "xz_scaling_mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "xzScaleMode"); + RNA_def_property_enum_items(prop, splineik_xz_scale_mode); + RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bone."); + RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update"); +} + /* base struct for constraints */ void RNA_def_constraint(BlenderRNA *brna) { @@ -1733,6 +1828,8 @@ void RNA_def_constraint(BlenderRNA *brna) rna_def_constraint_location_limit(brna); rna_def_constraint_transform(brna); rna_def_constraint_shrinkwrap(brna); + rna_def_constraint_damped_track(brna); + rna_def_constraint_spline_ik(brna); } #endif diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index 1f1caeaa9b5..2ebf47bac99 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -221,6 +221,12 @@ static void rna_Curve_update_data(bContext *C, PointerRNA *ptr) WM_event_add_notifier(C, NC_GEOM|ND_DATA, id); } +static void rna_Curve_update_deps(bContext *C, PointerRNA *ptr) +{ + DAG_scene_sort(CTX_data_scene(C)); + rna_Curve_update_data(C, ptr); +} + static void rna_Nurb_update_handle_data(bContext *C, PointerRNA *ptr) { Nurb *nu= (Nurb*)ptr->data; @@ -552,7 +558,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna) RNA_def_property_pointer_sdna(prop, NULL, "textoncurve"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Text on Curve", "Curve deforming text object."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_update_deps"); prop= RNA_def_property(srna, "font", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "vfont"); @@ -757,12 +763,12 @@ static void rna_def_curve(BlenderRNA *brna) prop= RNA_def_property(srna, "render_resolution_u", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolu_ren"); - RNA_def_property_ui_range(prop, 1, 1024, 1, 0); + RNA_def_property_ui_range(prop, 0, 1024, 1, 0); RNA_def_property_ui_text(prop, "Render Resolution U", "Surface resolution in U direction used while rendering. Zero skips this property."); prop= RNA_def_property(srna, "render_resolution_v", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "resolv_ren"); - RNA_def_property_ui_range(prop, 1, 1024, 1, 0); + RNA_def_property_ui_range(prop, 0, 1024, 1, 0); RNA_def_property_ui_text(prop, "Render Resolution V", "Surface resolution in V direction used while rendering. Zero skips this property."); @@ -776,13 +782,13 @@ static void rna_def_curve(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "bevobj"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Bevel Object", "Curve object name that defines the bevel shape."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_update_deps"); prop= RNA_def_property(srna, "taper_object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "taperobj"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Taper Object", "Curve object name that defines the taper (width)."); - RNA_def_property_update(prop, 0, "rna_Curve_update_data"); + RNA_def_property_update(prop, 0, "rna_Curve_update_deps"); /* Flags */ diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 48de7ace222..46c4a8af73a 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1957,6 +1957,26 @@ void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, con } } +void RNA_def_property_collection_active(PropertyRNA *prop, PropertyRNA *prop_act) +{ + if(!DefRNA.preprocess) { + fprintf(stderr, "RNA_def_property_collection_active: only during preprocessing.\n"); + return; + } + + switch(prop->type) { + case PROP_COLLECTION: { + CollectionPropertyRNA *cprop= (CollectionPropertyRNA*)prop; + cprop->active= prop_act; + break; + } + default: + fprintf(stderr, "RNA_def_property_collection_active: %s.%s, type is not collection.\n", prop->identifier, prop_act->identifier); + DefRNA.error= 1; + break; + } +} + /* Compact definitions */ PropertyRNA *RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, int default_value, const char *ui_name, const char *ui_description) diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c index e69e2cd0e2c..a914deb37a6 100644 --- a/source/blender/makesrna/intern/rna_fcurve.c +++ b/source/blender/makesrna/intern/rna_fcurve.c @@ -83,6 +83,7 @@ static StructRNA *rna_FModifierType_refine(struct PointerRNA *ptr) /* ****************************** */ +#include "BKE_fcurve.h" #include "BKE_depsgraph.h" static void rna_ChannelDriver_update_data(bContext *C, PointerRNA *ptr) @@ -610,8 +611,12 @@ static void rna_def_channeldriver(BlenderRNA *brna) /* Collections */ prop= RNA_def_property(srna, "targets", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "targets", NULL); + RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "add_target", "remove_target"); RNA_def_property_struct_type(prop, "DriverTarget"); RNA_def_property_ui_text(prop, "Target Variables", "Properties acting as targets for this driver."); + + /* Functions */ + RNA_api_drivers(srna); } /* *********************** */ diff --git a/source/blender/makesrna/intern/rna_fcurve_api.c b/source/blender/makesrna/intern/rna_fcurve_api.c new file mode 100644 index 00000000000..12ffb3e26fb --- /dev/null +++ b/source/blender/makesrna/intern/rna_fcurve_api.c @@ -0,0 +1,90 @@ +/** + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * The Original Code is Copyright (C) 2009 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): Joshua Leung + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <time.h> + +#include "RNA_define.h" +#include "RNA_types.h" + +#include "DNA_anim_types.h" + +#ifdef RNA_RUNTIME + +#include <stddef.h> + +#include "BLI_blenlib.h" + +#include "BKE_animsys.h" +#include "BKE_fcurve.h" + +DriverTarget *rna_Driver_add_target(ChannelDriver *driver, char *name) +{ + DriverTarget *dtar= driver_add_new_target(driver); + + /* set the name if given */ + if (name && name[0]) { + BLI_strncpy(dtar->name, name, 64); + BLI_uniquename(&driver->targets, dtar, "var", '_', offsetof(DriverTarget, name), 64); + } + + /* return this target for the users to play with */ + return dtar; +} + +void rna_Driver_remove_target(ChannelDriver *driver, DriverTarget *dtar) +{ + /* call the API function for this */ + driver_free_target(driver, dtar); +} + +#else + +void RNA_api_drivers(StructRNA *srna) +{ + FunctionRNA *func; + PropertyRNA *parm; + + /* add target */ + func= RNA_def_function(srna, "add_target", "rna_Driver_add_target"); + RNA_def_function_ui_description(func, "Add a new target for the driver."); + /* return type */ + parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Newly created Driver Target."); + RNA_def_function_return(func, parm); + /* optional name parameter */ + parm= RNA_def_string(func, "name", "", 64, "Name", "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)"); + + /* remove target */ + func= RNA_def_function(srna, "remove_target", "rna_Driver_remove_target"); + RNA_def_function_ui_description(func, "Remove an existing target from the driver."); + /* target to remove*/ + parm= RNA_def_pointer(func, "target", "DriverTarget", "", "Target to remove from the driver."); + RNA_def_property_flag(parm, PROP_REQUIRED); +} + +#endif diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c index ae52c811c92..2517ee5c8ef 100644 --- a/source/blender/makesrna/intern/rna_fluidsim.c +++ b/source/blender/makesrna/intern/rna_fluidsim.c @@ -157,7 +157,7 @@ static char *rna_FluidSettings_path(PointerRNA *ptr) FluidsimSettings *fss = (FluidsimSettings*)ptr->data; ModifierData *md= (ModifierData *)fss->fmd; - return BLI_sprintfN("modifiers[%s].settings", md->name); + return BLI_sprintfN("modifiers[\"%s\"].settings", md->name); } #else diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index 23592212f68..d90b4f17c85 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -199,9 +199,12 @@ void rna_Object_update_data(struct bContext *C, struct PointerRNA *ptr); void rna_Mesh_update_draw(struct bContext *C, struct PointerRNA *ptr); void rna_TextureSlot_update(struct bContext *C, struct PointerRNA *ptr); +char *rna_TextureSlot_path(struct PointerRNA *ptr); + /* API functions */ void RNA_api_action(StructRNA *srna); +void RNA_api_drivers(StructRNA *srna); void RNA_api_image(struct StructRNA *srna); void RNA_api_keyconfig(struct StructRNA *srna); void RNA_api_keyingset(struct StructRNA *srna); diff --git a/source/blender/makesrna/intern/rna_internal_types.h b/source/blender/makesrna/intern/rna_internal_types.h index 645bc50ed89..434e4ee6fe9 100644 --- a/source/blender/makesrna/intern/rna_internal_types.h +++ b/source/blender/makesrna/intern/rna_internal_types.h @@ -257,6 +257,8 @@ typedef struct CollectionPropertyRNA { PropCollectionLookupStringFunc lookupstring; /* optional */ FunctionRNA *add, *remove; + PropertyRNA *active; + struct StructRNA *type; } CollectionPropertyRNA; diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c index fbecf2b5f07..35eab7645f3 100644 --- a/source/blender/makesrna/intern/rna_material.c +++ b/source/blender/makesrna/intern/rna_material.c @@ -991,7 +991,7 @@ static void rna_def_material_volume(BlenderRNA *brna) prop= RNA_def_property(srna, "step_size", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "stepsize"); RNA_def_property_range(prop, 0.0f, FLT_MAX); - RNA_def_property_ui_range(prop, 0.0f, 1.0f, 1, 3); + RNA_def_property_ui_range(prop, 0.001f, 1.0f, 1, 3); RNA_def_property_ui_text(prop, "Step Size", "Distance between subsequent volume depth samples."); RNA_def_property_update(prop, 0, "rna_Material_update"); diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index 5e4f5d294a4..66c26e2e681 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -133,6 +133,17 @@ static void rna_MeshFace_normal_get(PointerRNA *ptr, float *values) CalcNormFloat(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, values); } +static float rna_MeshFace_area_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->id.data; + MFace *mface= (MFace*)ptr->data; + + if(mface->v4) + return AreaQ3Dfl(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co); + else + return AreaT3Dfl(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co); +} + /* notice red and blue are swapped */ static void rna_MeshColor_color1_get(PointerRNA *ptr, float *values) { @@ -445,6 +456,7 @@ static void rna_MeshTextureFaceLayer_active_set(PointerRNA *ptr, int value) static void rna_MeshTextureFaceLayer_name_set(PointerRNA *ptr, const char *value) { Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_pdata(me); CustomDataLayer *cdl= (CustomDataLayer*)ptr->data; BLI_strncpy(cdl->name, value, sizeof(cdl->name)); CustomData_set_layer_unique_name(&me->pdata, cdl - rna_mesh_pdata(me)->layers); @@ -561,6 +573,7 @@ static void rna_MeshColorLayer_active_set(PointerRNA *ptr, int value) static void rna_MeshColorLayer_name_set(PointerRNA *ptr, const char *value) { Mesh *me= (Mesh*)ptr->id.data; + CustomData *fdata= rna_mesh_pdata(me); CustomDataLayer *cdl= (CustomDataLayer*)ptr->data; BLI_strncpy(cdl->name, value, sizeof(cdl->name)); CustomData_set_layer_unique_name(&me->ldata, cdl - rna_mesh_pdata(me)->layers); @@ -755,7 +768,7 @@ static char *rna_MeshVertex_path(PointerRNA *ptr) static char *rna_MeshTextureFaceLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("uv_textures[%s]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("uv_textures[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static char *rna_CustomDataData_path(PointerRNA *ptr, char *collection, int type) @@ -770,7 +783,7 @@ static char *rna_CustomDataData_path(PointerRNA *ptr, char *collection, int type if(cdl->type == type) { b= ((char*)ptr->data - ((char*)cdl->data))/CustomData_sizeof(type); if(b >= 0 && b < me->totface) - return BLI_sprintfN("%s[%s].data[%d]", collection, cdl->name, b); + return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, cdl->name, b); } } @@ -784,7 +797,7 @@ static char *rna_MeshTextureFace_path(PointerRNA *ptr) static char *rna_MeshColorLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("vertex_colors[%s]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("vertex_colors[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static char *rna_MeshColor_path(PointerRNA *ptr) @@ -799,7 +812,7 @@ static char *rna_MeshSticky_path(PointerRNA *ptr) static char *rna_MeshIntPropertyLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("int_layers[%s]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("int_layers[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static char *rna_MeshIntProperty_path(PointerRNA *ptr) @@ -809,7 +822,7 @@ static char *rna_MeshIntProperty_path(PointerRNA *ptr) static char *rna_MeshFloatPropertyLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("float_layers[%s]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("float_layers[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static char *rna_MeshFloatProperty_path(PointerRNA *ptr) @@ -819,7 +832,7 @@ static char *rna_MeshFloatProperty_path(PointerRNA *ptr) static char *rna_MeshStringPropertyLayer_path(PointerRNA *ptr) { - return BLI_sprintfN("string_layers[%s]", ((CustomDataLayer*)ptr->data)->name); + return BLI_sprintfN("string_layers[\"%s\"]", ((CustomDataLayer*)ptr->data)->name); } static char *rna_MeshStringProperty_path(PointerRNA *ptr) @@ -1017,6 +1030,11 @@ static void rna_def_mface(BlenderRNA *brna) RNA_def_property_float_funcs(prop, "rna_MeshFace_normal_get", NULL, NULL); RNA_def_property_ui_text(prop, "face normal", "local space unit length normal vector for this face"); + prop= RNA_def_property(srna, "area", PROP_FLOAT, PROP_UNSIGNED); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_float_funcs(prop, "rna_MeshFace_area_get", NULL, NULL); + RNA_def_property_ui_text(prop, "face area", "read only area of the face"); + prop= RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_int_funcs(prop, "rna_MeshFace_index_get", NULL, NULL); diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c index 1a4e4da886b..62466047ef4 100644 --- a/source/blender/makesrna/intern/rna_meta.c +++ b/source/blender/makesrna/intern/rna_meta.c @@ -65,6 +65,8 @@ static void rna_MetaBall_update_data(bContext *C, PointerRNA *ptr) WM_event_add_notifier(C, NC_GEOM|ND_DATA, mb); } + + #else static void rna_def_metaelement(BlenderRNA *brna) @@ -105,6 +107,7 @@ static void rna_def_metaelement(BlenderRNA *brna) prop= RNA_def_property(srna, "radius", PROP_FLOAT, PROP_UNSIGNED|PROP_UNIT_LENGTH); RNA_def_property_float_sdna(prop, NULL, "rad"); RNA_def_property_ui_text(prop, "Radius", ""); + RNA_def_property_range(prop, 0.0f, FLT_MAX); RNA_def_property_update(prop, 0, "rna_MetaBall_update_data"); prop= RNA_def_property(srna, "size_x", PROP_FLOAT, PROP_DISTANCE); diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 4c4d733a206..a35bde95c7b 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -795,7 +795,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna) prop= RNA_def_property(srna, "start_position_object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "objectcenter"); RNA_def_property_ui_text(prop, "Start Position Object", ""); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); @@ -824,7 +824,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna) prop= RNA_def_property(srna, "texture_coordinates_object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "map_object"); RNA_def_property_ui_text(prop, "Texture Coordinates Object", ""); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "speed", PROP_FLOAT, PROP_NONE); @@ -1196,7 +1196,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna) prop= RNA_def_property(srna, "texture_coordinate_object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "map_object"); RNA_def_property_ui_text(prop, "Texture Coordinate Object", ""); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); } @@ -1257,7 +1257,7 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna) prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Object"); RNA_def_property_pointer_funcs(prop, "rna_UVProjector_object_get", "rna_UVProjector_object_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_ui_text(prop, "Object", "Object to use as projector transform."); } @@ -1330,7 +1330,7 @@ static void rna_def_modifier_cast(BlenderRNA *brna) prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Object", "Control object: if available, its location determines the center of the effect"); RNA_def_property_pointer_funcs(prop, NULL, "rna_CastModifier_object_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "x", PROP_BOOLEAN, PROP_NONE); @@ -1397,7 +1397,7 @@ static void rna_def_modifier_meshdeform(BlenderRNA *brna) prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Object", "Mesh object to deform with."); RNA_def_property_pointer_funcs(prop, NULL, "rna_MeshDeformModifier_object_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "is_bound", PROP_BOOLEAN, PROP_NONE); @@ -1459,7 +1459,7 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna) prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "ob"); RNA_def_property_ui_text(prop, "Object", "Object that has the particle system."); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "particle_system_number", PROP_INT, PROP_NONE); @@ -1723,14 +1723,14 @@ static void rna_def_modifier_shrinkwrap(BlenderRNA *brna) prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Target", "Mesh target to shrink to."); RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_target_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "auxiliary_target", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "auxTarget"); RNA_def_property_ui_text(prop, "Auxiliary Target", "Additional mesh target to shrink to."); RNA_def_property_pointer_funcs(prop, NULL, "rna_ShrinkwrapModifier_auxiliary_target_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); @@ -1834,7 +1834,7 @@ static void rna_def_modifier_mask(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "ob_arm"); RNA_def_property_ui_text(prop, "Armature", "Armature to use as source of bones to mask."); RNA_def_property_pointer_funcs(prop, NULL, "rna_MaskModifier_armature_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE); @@ -1879,7 +1879,7 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna) prop= RNA_def_property(srna, "origin", PROP_POINTER, PROP_NONE); RNA_def_property_ui_text(prop, "Origin", "Origin of modifier space coordinates."); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update"); prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c index bd018973f5a..2c8243a4f16 100644 --- a/source/blender/makesrna/intern/rna_nodetree.c +++ b/source/blender/makesrna/intern/rna_nodetree.c @@ -59,15 +59,13 @@ static EnumPropertyItem node_blend_type_items[] = { {12, "HUE", 0, "Hue", ""}, {16, "SOFT_LIGHT", 0, "Soft Light", ""}, {17, "LINEAR_LIGHT", 0, "Linear Light",""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem node_flip_items[] = { {0, "X", 0, "Flip X", ""}, {1, "Y", 0, "Flip Y", ""}, {2, "XY", 0, "Flip X & Y", ""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem node_math_items[] = { { 0, "ADD", 0, "Add", ""}, @@ -87,8 +85,7 @@ static EnumPropertyItem node_math_items[] = { {14, "ROUND", 0, "Round", ""}, {15, "LESS_THAN", 0, "Less Than", ""}, {16, "GREATER_THAN", 0, "Greater Than", ""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem node_vec_math_items[] = { {0, "ADD", 0, "Add", ""}, @@ -97,8 +94,7 @@ static EnumPropertyItem node_vec_math_items[] = { {3, "DOT_PRODUCT", 0, "Dot Product", ""}, {4, "CROSS_PRODUCT", 0, "Cross Product", ""}, {5, "NORMALIZE", 0, "Normalize", ""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem node_filter_items[] = { {0, "SOFTEN", 0, "Soften", ""}, @@ -108,8 +104,7 @@ static EnumPropertyItem node_filter_items[] = { {4, "PREWITT", 0, "Prewitt", ""}, {5, "KIRSCH", 0, "Kirsch", ""}, {6, "SHADOW", 0, "Shadow", ""}, - {0, NULL, 0, NULL, NULL} -}; + {0, NULL, 0, NULL, NULL}}; #ifdef RNA_RUNTIME @@ -157,6 +152,29 @@ static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup) return 0; } +/* Button Set Funcs for Matte Nodes */ +static void rna_Matte_t1_set(PointerRNA *ptr, float value) +{ + bNode *node= (bNode*)ptr->data; + NodeChroma *chroma = node->storage; + + chroma->t1 = value; + + if(value < chroma->t2) + chroma->t2 = value; +} + +static void rna_Matte_t2_set(PointerRNA *ptr, float value) +{ + bNode *node= (bNode*)ptr->data; + NodeChroma *chroma = node->storage; + + if(value > chroma->t1) + value = chroma->t1; + + chroma->t2 = value; +} + static void rna_Node_update(bContext *C, PointerRNA *ptr) { Main *bmain= CTX_data_main(C); @@ -560,8 +578,7 @@ static void def_cmp_blur(StructRNA *srna) {R_FILTER_FAST_GAUSS, "FAST_GAUSS", 0, "Fast Gaussian", ""}, {R_FILTER_CATROM, "CATROM", 0, "Catrom", ""}, {R_FILTER_MITCH, "MITCH", 0, "Mitch", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage"); @@ -743,8 +760,7 @@ static void def_cmp_levels(StructRNA *srna) {3, "GREEN", 0, "G", "Green Channel"}, {4, "BLUE", 0, "B", "Blue Channel"}, {5, "LUMINANCE", 0, "L", "Luminance Channel"}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom1"); @@ -762,8 +778,7 @@ static void def_cmp_image(StructRNA *srna) {IMA_SRC_MOVIE, "MOVIE", "Movie", ""}, {IMA_SRC_SEQUENCE, "SEQUENCE", "Sequence", ""}, {IMA_SRC_GENERATED, "GENERATED", "Generated", ""}, - {0, NULL, 0, NULL, NULL} - };*/ + {0, NULL, 0, NULL, NULL}};*/ prop = RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "id"); @@ -859,8 +874,7 @@ static void def_cmp_output_file(StructRNA *srna) {R_CINEON, "CINEON", 0, "Cineon", ""}, {R_DPX, "DPX", 0, "DPX", ""}, {R_OPENEXR, "OPENEXR", 0, "OpenEXR", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem openexr_codec_items[] = { {0, "NONE", 0, "None", ""}, @@ -868,12 +882,11 @@ static void def_cmp_output_file(StructRNA *srna) {2, "ZIP", 0, "ZIP (lossless)", ""}, {3, "PIZ", 0, "PIX (lossless)", ""}, {4, "RLE", 0, "RLE (lossless)", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; RNA_def_struct_sdna_from(srna, "NodeImageFile", "storage"); - prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_NONE); + prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_DIRPATH); RNA_def_property_string_sdna(prop, NULL, "name"); RNA_def_property_ui_text(prop, "Filename", ""); @@ -882,32 +895,27 @@ static void def_cmp_output_file(StructRNA *srna) RNA_def_property_enum_items(prop, type_items); RNA_def_property_ui_text(prop, "Image Type", ""); - /* TODO: openexr only { */ - - prop = RNA_def_property(srna, "half", PROP_BOOLEAN, PROP_NONE); + prop = RNA_def_property(srna, "exr_half", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF); RNA_def_property_ui_text(prop, "Half", ""); - prop = RNA_def_property(srna, "codec", PROP_ENUM, PROP_NONE); + prop = RNA_def_property(srna, "exr_codec", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "codec"); RNA_def_property_enum_items(prop, openexr_codec_items); RNA_def_property_ui_text(prop, "Codec", ""); - /* } else { */ - prop = RNA_def_property(srna, "quality", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "quality"); + RNA_def_property_range(prop, 1, 100); RNA_def_property_ui_text(prop, "Quality", ""); - /* } */ - - prop = RNA_def_property(srna, "start", PROP_INT, PROP_NONE); + prop = RNA_def_property(srna, "start_frame", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "sfra"); RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF); RNA_def_property_ui_text(prop, "Start Frame", ""); RNA_def_property_update(prop, 0, "rna_Node_update"); - prop = RNA_def_property(srna, "end", PROP_INT, PROP_NONE); + prop = RNA_def_property(srna, "end_frame", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "efra"); RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF); RNA_def_property_ui_text(prop, "End Frame", ""); @@ -933,8 +941,7 @@ static void def_cmp_scale(StructRNA *srna) {0, "RELATIVE", 0, "Relative", ""}, {1, "ABSOLUTE", 0, "Absolute", ""}, {2, "SCENE_SIZE", 0, "Scene Size", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "space", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom1"); @@ -948,17 +955,17 @@ static void def_cmp_diff_matte(StructRNA *srna) PropertyRNA *prop; RNA_def_struct_sdna_from(srna, "NodeChroma", "storage"); - - /* TODO: nicer wrapping for tolerances */ prop = RNA_def_property(srna, "tolerance", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t1"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Tolerance", "Color distances below this threshold are keyed."); RNA_def_property_update(prop, 0, "rna_Node_update"); prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t2"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Falloff", "Color distances below this additional threshold are partially keyed."); RNA_def_property_update(prop, 0, "rna_Node_update"); @@ -969,9 +976,7 @@ static void def_cmp_color_matte(StructRNA *srna) PropertyRNA *prop; RNA_def_struct_sdna_from(srna, "NodeChroma", "storage"); - - /* TODO: nicer wrapping for tolerances */ - + prop = RNA_def_property(srna, "h", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t1"); RNA_def_property_range(prop, 0.0f, 1.0f); @@ -997,16 +1002,16 @@ static void def_cmp_distance_matte(StructRNA *srna) RNA_def_struct_sdna_from(srna, "NodeChroma", "storage"); - /* TODO: nicer wrapping for tolerances */ - prop = RNA_def_property(srna, "tolerance", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t1"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Tolerance", "Color distances below this threshold are keyed."); RNA_def_property_update(prop, 0, "rna_Node_update"); prop = RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t2"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Falloff", "Color distances below this additional threshold are partially keyed."); RNA_def_property_update(prop, 0, "rna_Node_update"); @@ -1020,8 +1025,7 @@ static void def_cmp_color_spill(StructRNA *srna) {1, "R", 0, "R", "Red Spill Suppression"}, {2, "G", 0, "G", "Green Spill Suppression"}, {3, "B", 0, "B", "Blue Spill Suppression"}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "channel", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom1"); @@ -1038,6 +1042,27 @@ static void def_cmp_color_spill(StructRNA *srna) RNA_def_property_update(prop, 0, "rna_Node_update"); } +static void def_cmp_luma_matte(StructRNA *srna) +{ + PropertyRNA *prop; + + RNA_def_struct_sdna_from(srna, "NodeChroma", "storage"); + + prop = RNA_def_property(srna, "high", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "t1"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque"); + RNA_def_property_update(prop, 0, "rna_Node_update"); + + prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "t2"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed"); + RNA_def_property_update(prop, 0, "rna_Node_update"); +} + static void def_cmp_chroma_matte(StructRNA *srna) { PropertyRNA *prop; @@ -1046,12 +1071,14 @@ static void def_cmp_chroma_matte(StructRNA *srna) prop = RNA_def_property(srna, "acceptance", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t1"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL); RNA_def_property_range(prop, 1.0f, 80.0f); RNA_def_property_ui_text(prop, "Acceptance", "Tolerance for a color to be considered a keying color"); RNA_def_property_update(prop, 0, "rna_Node_update"); prop = RNA_def_property(srna, "cutoff", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t2"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL); RNA_def_property_range(prop, 0.0f, 30.0f); RNA_def_property_ui_text(prop, "Cutoff", "Tolerance below which colors will be considered as exact matches"); RNA_def_property_update(prop, 0, "rna_Node_update"); @@ -1073,11 +1100,6 @@ static void def_cmp_chroma_matte(StructRNA *srna) RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Shadow Adjust", "Adjusts the brightness of any shadows captured"); RNA_def_property_update(prop, 0, "rna_Node_update"); - - /* TODO: - if(c->t2 > c->t1) - c->t2=c->t1; - */ } static void def_cmp_channel_matte(StructRNA *srna) @@ -1085,12 +1107,11 @@ static void def_cmp_channel_matte(StructRNA *srna) PropertyRNA *prop; static EnumPropertyItem color_space_items[] = { - {1, "RGB", 0, "RGB", ""}, - {2, "HSV", 0, "HSV", ""}, - {3, "YUV", 0, "YUV", ""}, - {4, "YCC", 0, "YCbCr", ""}, - {0, NULL, 0, NULL, NULL} - }; + {1, "RGB", 0, "RGB", "RGB Color Space"}, + {2, "HSV", 0, "HSV", "HSV Color Space"}, + {3, "YUV", 0, "YUV", "YUV Color Space"}, + {4, "YCC", 0, "YCbCr", "YCbCr Color Space"}, + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "color_space", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom1"); @@ -1108,20 +1129,17 @@ static void def_cmp_channel_matte(StructRNA *srna) prop = RNA_def_property(srna, "high", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t1"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque"); RNA_def_property_update(prop, 0, "rna_Node_update"); prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "t2"); + RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t2_set", NULL); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed"); RNA_def_property_update(prop, 0, "rna_Node_update"); - - /* TODO: - if(c->t2 > c->t1) - c->t2=c->t1; - */ } static void def_cmp_flip(StructRNA *srna) @@ -1142,8 +1160,7 @@ static void def_cmp_splitviewer(StructRNA *srna) static EnumPropertyItem axis_items[] = { {0, "X", 0, "X", ""}, {1, "Y", 0, "Y", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "axis", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom2"); @@ -1192,8 +1209,7 @@ static void def_cmp_defocus(StructRNA *srna) {4, "SQUARE", 0, "Square", "4 sides"}, {3, "TRIANGLE", 0, "Triangular", "3 sides"}, {0, "CIRCLE", 0, "Circular", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; RNA_def_struct_sdna_from(srna, "NodeDefocus", "storage"); @@ -1257,28 +1273,6 @@ static void def_cmp_defocus(StructRNA *srna) RNA_def_property_update(prop, 0, "rna_Node_update"); } -static void def_cmp_luma_matte(StructRNA *srna) -{ - PropertyRNA *prop; - - RNA_def_struct_sdna_from(srna, "NodeChroma", "storage"); - - prop = RNA_def_property(srna, "high", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "t1"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "High", "Values higher than this setting are 100% opaque"); - RNA_def_property_update(prop, 0, "rna_Node_update"); - - prop = RNA_def_property(srna, "low", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "t2"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Low", "Values lower than this setting are 100% keyed"); - RNA_def_property_update(prop, 0, "rna_Node_update"); - - /* TODO: keep low less than high */ - -} - static void def_cmp_invert(StructRNA *srna) { PropertyRNA *prop; @@ -1416,8 +1410,7 @@ static void def_cmp_premul_key(StructRNA *srna) static EnumPropertyItem type_items[] = { {0, "KEY_TO_PREMUL", 0, "Key to Premul", ""}, {1, "PREMUL_TO_KEY", 0, "Premul to Key", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "custom1"); @@ -1436,15 +1429,13 @@ static void def_cmp_glare(StructRNA *srna) {2, "STREAKS", 0, "Streaks", ""}, {1, "FOG_GLOW", 0, "Fog Glow", ""}, {0, "SIMPLE_STAR", 0, "Simple Star", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; static EnumPropertyItem quality_items[] = { {0, "HIGH", 0, "High", ""}, {1, "MEDIUM", 0, "Medium", ""}, {2, "LOW", 0, "Low", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; RNA_def_struct_sdna_from(srna, "NodeGlare", "storage"); @@ -1523,8 +1514,7 @@ static void def_cmp_tonemap(StructRNA *srna) static EnumPropertyItem type_items[] = { {1, "RD_PHOTORECEPTOR", 0, "R/D Photoreceptor", ""}, {0, "RH_SIMPLE", 0, "Rh Simple", ""}, - {0, NULL, 0, NULL, NULL} - }; + {0, NULL, 0, NULL, NULL}}; RNA_def_struct_sdna_from(srna, "NodeTonemap", "storage"); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 5e3b8b66281..7e888abf397 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -96,6 +96,7 @@ EnumPropertyItem object_type_items[] = { #include "BKE_depsgraph.h" #include "BKE_effect.h" #include "BKE_key.h" +#include "BKE_object.h" #include "BKE_material.h" #include "BKE_mesh.h" #include "BKE_particle.h" @@ -152,6 +153,25 @@ static void rna_Object_select_update(bContext *C, PointerRNA *ptr) ED_base_object_select(object_in_scene(ob, CTX_data_scene(C)), mode); } +static void rna_Base_select_update(bContext *C, PointerRNA *ptr) +{ + Base *base= (Base*)ptr->data; + short mode = base->flag & BA_SELECT ? BA_SELECT : BA_DESELECT; + ED_base_object_select(base, mode); +} + +static void rna_Object_layer_update__internal(Scene *scene, Base *base, Object *ob) +{ + /* try to avoid scene sort */ + if((ob->lay & scene->lay) && (base->lay & scene->lay)) { + /* pass */ + } else if((ob->lay & scene->lay)==0 && (base->lay & scene->lay)==0) { + /* pass */ + } else { + DAG_scene_sort(scene); + } +} + static void rna_Object_layer_update(bContext *C, PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; @@ -162,15 +182,19 @@ static void rna_Object_layer_update(bContext *C, PointerRNA *ptr) if(!base) return; - /* try to avoid scene sort */ - if((ob->lay & scene->lay) && (base->lay & scene->lay)) base->lay= ob->lay; - else if((ob->lay & scene->lay)==0 && (base->lay & scene->lay)==0) - base->lay= ob->lay; - else { - base->lay= ob->lay; - DAG_scene_sort(scene); - } + rna_Object_layer_update__internal(scene, base, ob); +} + +static void rna_Base_layer_update(bContext *C, PointerRNA *ptr) +{ + Base *base= (Base*)ptr->id.data; + Object *ob= (Object*)base->object; + Scene *scene= CTX_data_scene(C); + + ob->lay= base->lay; + + rna_Object_layer_update__internal(scene, base, ob); } static int rna_Object_data_editable(PointerRNA *ptr) @@ -185,7 +209,7 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value) Object *ob= (Object*)ptr->data; ID *id= value.data; - if(ob->type == OB_EMPTY || id == NULL) + if(ob->type == OB_EMPTY || id == NULL || ob->mode & OB_MODE_EDIT) return; if(ob->type == OB_MESH) { @@ -512,32 +536,47 @@ static void rna_Object_rotation_mode_set(PointerRNA *ptr, int value) ob->rotmode= value; } -/* not called directly */ -static void rna_Object_scale_linked_set(Object *ob, float value, int axis) +static void rna_Object_dimensions_get(PointerRNA *ptr, float *value) { - if(ob->size[axis]==0.0f || value==0.0f) { - ob->size[0]= ob->size[1]= ob->size[2]= value; - } - else { - VecMulf(ob->size, value / ob->size[axis]); + Object *ob= ptr->data; + BoundBox *bb = NULL; + + bb= object_get_boundbox(ob); + if (bb) { + float scale[3]; + + Mat4ToSize(ob->obmat, scale); + + value[0] = fabs(scale[0]) * (bb->vec[4][0] - bb->vec[0][0]); + value[1] = fabs(scale[1]) * (bb->vec[2][1] - bb->vec[0][1]); + value[2] = fabs(scale[2]) * (bb->vec[1][2] - bb->vec[0][2]); + } else { + value[0] = value[1] = value[2] = 0.f; } } -static void rna_Object_scale_x_linked_set(PointerRNA *ptr, float value) +static void rna_Object_dimensions_set(PointerRNA *ptr, const float *value) { - rna_Object_scale_linked_set(ptr->data, value, 0); -} -static void rna_Object_scale_y_linked_set(PointerRNA *ptr, float value) -{ - rna_Object_scale_linked_set(ptr->data, value, 1); -} -static void rna_Object_scale_z_linked_set(PointerRNA *ptr, float value) -{ - rna_Object_scale_linked_set(ptr->data, value, 2); + Object *ob= ptr->data; + BoundBox *bb = NULL; + + bb= object_get_boundbox(ob); + if (bb) { + float scale[3], len[3]; + + Mat4ToSize(ob->obmat, scale); + + len[0] = bb->vec[4][0] - bb->vec[0][0]; + len[1] = bb->vec[2][1] - bb->vec[0][1]; + len[2] = bb->vec[1][2] - bb->vec[0][2]; + + if (len[0] > 0.f) ob->size[0] = value[0] / len[0]; + if (len[1] > 0.f) ob->size[1] = value[1] / len[1]; + if (len[2] > 0.f) ob->size[2] = value[2] / len[2]; + } } - static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr) { Object *ob= (Object*)ptr->id.data; @@ -699,23 +738,47 @@ static PointerRNA rna_Object_game_settings_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_GameObjectSettings, ptr->id.data); } -static void rna_Object_layer_set(PointerRNA *ptr, const int *values) + +static unsigned int rna_Object_layer_validate__internal(const int *values, unsigned int lay) { - Object *ob= (Object*)ptr->data; int i, tot= 0; /* ensure we always have some layer selected */ for(i=0; i<20; i++) if(values[i]) tot++; - + if(tot==0) - return; + return 0; for(i=0; i<20; i++) { - if(values[i]) ob->lay |= (1<<i); - else ob->lay &= ~(1<<i); + if(values[i]) lay |= (1<<i); + else lay &= ~(1<<i); } + + return lay; +} + +static void rna_Object_layer_set(PointerRNA *ptr, const int *values) +{ + Object *ob= (Object*)ptr->data; + unsigned int lay; + + lay= rna_Object_layer_validate__internal(values, ob->lay); + if(lay) + ob->lay= lay; +} + +static void rna_Base_layer_set(PointerRNA *ptr, const int *values) +{ + Base *base= (Base*)ptr->data; + + unsigned int lay; + lay= rna_Object_layer_validate__internal(values, base->lay); + if(lay) + base->lay= lay; + + /* rna_Base_layer_update updates the objects layer */ } static void rna_GameObjectSettings_state_set(PointerRNA *ptr, const int *values) @@ -1292,26 +1355,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_float_sdna(prop, NULL, "size"); RNA_def_property_ui_text(prop, "Scale", "Scaling of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); - - /* linked scale for the transform panel */ - prop= RNA_def_property(srna, "scale_linked_x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "size[0]"); - RNA_def_property_float_funcs(prop, NULL, "rna_Object_scale_x_linked_set", NULL); - RNA_def_property_ui_text(prop, "Scale X", "Scaling of the objects X axis."); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); - prop= RNA_def_property(srna, "scale_linked_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "size[1]"); - RNA_def_property_float_funcs(prop, NULL, "rna_Object_scale_y_linked_set", NULL); - RNA_def_property_ui_text(prop, "Scale Y", "Scaling of the objects X axis."); - RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); - - prop= RNA_def_property(srna, "scale_linked_z", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "size[2]"); - RNA_def_property_float_funcs(prop, NULL, "rna_Object_scale_z_linked_set", NULL); - RNA_def_property_ui_text(prop, "Scale Z", "Scaling of the objects Z axis."); + prop= RNA_def_property(srna, "dimensions", PROP_FLOAT, PROP_XYZ|PROP_UNIT_LENGTH); + RNA_def_property_array(prop, 3); + RNA_def_property_float_funcs(prop, "rna_Object_dimensions_get", "rna_Object_dimensions_set", NULL); + RNA_def_property_ui_text(prop, "Dimensions", "Absolute bounding box dimensions of the object."); RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_update"); - + /* delta transforms */ prop= RNA_def_property(srna, "delta_location", PROP_FLOAT, PROP_TRANSLATION); @@ -1448,6 +1498,7 @@ static void rna_def_object(BlenderRNA *brna) prop= RNA_def_property(srna, "soft_body", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "soft"); + RNA_def_property_struct_type(prop, "SoftBodySettings"); RNA_def_property_ui_text(prop, "Soft Body Settings", "Settings for soft body simulation."); prop= RNA_def_property(srna, "particle_systems", PROP_COLLECTION, PROP_NONE); @@ -1709,10 +1760,44 @@ static void rna_def_dupli_object(BlenderRNA *brna) /* TODO: DupliObject has more properties that can be wrapped */ } +static void rna_def_base(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna= RNA_def_struct(brna, "Base", NULL); + RNA_def_struct_sdna(srna, "Base"); + RNA_def_struct_ui_text(srna, "Object Base", "An objects instance in a scene."); + RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA); + + prop= RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "object"); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Object", "Object this base links to."); + + /* same as object layer */ + prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); + RNA_def_property_boolean_sdna(prop, NULL, "lay", 1); + RNA_def_property_array(prop, 20); + RNA_def_property_ui_text(prop, "Layers", "Layers the object is on."); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Base_layer_set"); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Base_layer_update"); + + prop= RNA_def_property(srna, "selected", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", BA_SELECT); + RNA_def_property_ui_text(prop, "Selected", "Object base selection state."); + RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Base_select_update"); + + /* could use other flags like - BA_WAS_SEL, but for now selected is enough */ + + /* TODO: DupliObject has more properties that can be wrapped */ +} + void RNA_def_object(BlenderRNA *brna) { rna_def_object(brna); rna_def_object_game_settings(brna); + rna_def_base(brna); rna_def_vertex_group(brna); rna_def_material_slot(brna); rna_def_dupli_object(brna); diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c index 2247e5499fb..d6239d92911 100644 --- a/source/blender/makesrna/intern/rna_object_force.c +++ b/source/blender/makesrna/intern/rna_object_force.c @@ -29,10 +29,12 @@ #include "rna_internal.h" +#include "DNA_cloth_types.h" #include "DNA_object_types.h" #include "DNA_object_force.h" #include "DNA_particle_types.h" #include "DNA_scene_types.h" +#include "DNA_smoke_types.h" #include "WM_api.h" #include "WM_types.h" @@ -292,6 +294,15 @@ static void rna_Cache_active_point_cache_index_set(struct PointerRNA *ptr, int v BLI_freelistN(&pidlist); } + +static char *rna_CollisionSettings_path(PointerRNA *ptr) +{ + Object *ob= (Object*)ptr->id.data; + ModifierData *md = (ModifierData *)modifiers_findByType(ob, eModifierType_Collision); + + return BLI_sprintfN("modifiers[\"%s\"].settings", md->name); +} + static int rna_SoftBodySettings_use_edges_get(PointerRNA *ptr) { Object *data= (Object*)(ptr->id.data); @@ -401,15 +412,37 @@ static void rna_SoftBodySettings_goal_vgroup_set(PointerRNA *ptr, const char *va rna_object_vgroup_name_index_set(ptr, value, &sb->vertgroup); } -static int particle_field_check(PointerRNA *ptr) +static void rna_SoftBodySettings_mass_vgroup_set(PointerRNA *ptr, const char *value) +{ + SoftBody *sb= (SoftBody*)ptr->data; + rna_object_vgroup_name_set(ptr, value, sb->namedVG_Mass, sizeof(sb->namedVG_Mass)); +} + +static void rna_SoftBodySettings_spring_vgroup_set(PointerRNA *ptr, const char *value) +{ + SoftBody *sb= (SoftBody*)ptr->data; + rna_object_vgroup_name_set(ptr, value, sb->namedVG_Spring_K, sizeof(sb->namedVG_Spring_K)); +} + + +static char *rna_SoftBodySettings_path(PointerRNA *ptr) +{ + Object *ob= (Object*)ptr->id.data; + ModifierData *md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody); + + return BLI_sprintfN("modifiers[\"%s\"].settings", md->name); +} + +static int particle_id_check(PointerRNA *ptr) { ID *id= ptr->id.data; return (GS(id->name) == ID_PA); } + static void rna_FieldSettings_update(bContext *C, PointerRNA *ptr) { - if(particle_field_check(ptr)) { + if(particle_id_check(ptr)) { ParticleSettings *part = (ParticleSettings*)ptr->id.data; if(part->pd->forcefield != PFIELD_TEXTURE && part->pd->tex) { @@ -443,7 +476,7 @@ static void rna_FieldSettings_shape_update(bContext *C, PointerRNA *ptr) { Scene *scene= CTX_data_scene(C); - if(!particle_field_check(ptr)) { + if(!particle_id_check(ptr)) { Object *ob= (Object*)ptr->id.data; PartDeflect *pd= ob->pd; ModifierData *md= modifiers_findByType(ob, eModifierType_Surface); @@ -467,7 +500,7 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr) { Scene *scene= CTX_data_scene(C); - if(particle_field_check(ptr)) { + if(particle_id_check(ptr)) { DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC|PSYS_RECALC_RESET); } else { @@ -493,6 +526,30 @@ static void rna_FieldSettings_dependency_update(bContext *C, PointerRNA *ptr) } } +static char *rna_FieldSettings_path(PointerRNA *ptr) +{ + PartDeflect *pd = (PartDeflect *)ptr->data; + + /* Check through all possible places the settings can be to find the right one */ + + if(particle_id_check(ptr)) { + /* particle system force field */ + ParticleSettings *part = (ParticleSettings*)ptr->id.data; + + if (part->pd == pd) + return BLI_sprintfN("force_field_1"); + else if (part->pd2 == pd) + return BLI_sprintfN("force_field_2"); + } else { + /* object force field */ + Object *ob= (Object*)ptr->id.data; + + if (ob->pd == pd) + return BLI_sprintfN("field"); + } + return NULL; +} + static void rna_EffectorWeight_update(bContext *C, PointerRNA *ptr) { DAG_id_flush_update((ID*)ptr->id.data, OB_RECALC_DATA|PSYS_RECALC_RESET); @@ -510,6 +567,51 @@ static void rna_EffectorWeight_dependency_update(bContext *C, PointerRNA *ptr) WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); } + +static char *rna_EffectorWeight_path(PointerRNA *ptr) +{ + EffectorWeights *ew = (EffectorWeights *)ptr->data; + /* Check through all possible places the settings can be to find the right one */ + + if(particle_id_check(ptr)) { + /* particle effector weights */ + ParticleSettings *part = (ParticleSettings*)ptr->id.data; + + if (part->effector_weights == ew) + return BLI_sprintfN("effector_weights"); + } else { + Object *ob= (Object*)ptr->id.data; + ModifierData *md; + + /* check softbody modifier */ + md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody); + if (md) { + /* no pointer from modifier data to actual softbody storage, would be good to add */ + if (ob->soft->effector_weights == ew) + return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name); + } + + /* check cloth modifier */ + md = (ModifierData *)modifiers_findByType(ob, eModifierType_Cloth); + if (md) { + ClothModifierData *cmd = (ClothModifierData *)md; + + if (cmd->sim_parms->effector_weights == ew) + return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name); + } + + /* check smoke modifier */ + md = (ModifierData *)modifiers_findByType(ob, eModifierType_Smoke); + if (md) { + SmokeModifierData *smd = (SmokeModifierData *)md; + + if (smd->domain->effector_weights == ew) + return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name); + } + } + return NULL; +} + static void rna_CollisionSettings_dependency_update(bContext *C, PointerRNA *ptr) { Scene *scene= CTX_data_scene(C); @@ -546,7 +648,7 @@ static EnumPropertyItem *rna_Effector_shape_itemf(bContext *C, PointerRNA *ptr, { Object *ob= NULL; - if(particle_field_check(ptr)) + if(particle_id_check(ptr)) return empty_shape_items; ob= (Object*)ptr->id.data; @@ -671,6 +773,7 @@ static void rna_def_collision(BlenderRNA *brna) srna= RNA_def_struct(brna, "CollisionSettings", NULL); RNA_def_struct_sdna(srna, "PartDeflect"); + RNA_def_struct_path_func(srna, "rna_CollisionSettings_path"); RNA_def_struct_ui_text(srna, "Collision Settings", "Collision settings for object in physics simulation."); prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE); @@ -755,6 +858,8 @@ static void rna_def_effector_weight(BlenderRNA *brna) PropertyRNA *prop; srna= RNA_def_struct(brna, "EffectorWeights", NULL); + RNA_def_struct_sdna(srna, "EffectorWeights"); + RNA_def_struct_path_func(srna, "rna_EffectorWeight_path"); RNA_def_struct_ui_text(srna, "Effector Weights", "Effector weights for physics simulation."); RNA_def_struct_ui_icon(srna, ICON_PHYSICS); @@ -929,6 +1034,7 @@ static void rna_def_field(BlenderRNA *brna) srna= RNA_def_struct(brna, "FieldSettings", NULL); RNA_def_struct_sdna(srna, "PartDeflect"); + RNA_def_struct_path_func(srna, "rna_FieldSettings_path"); RNA_def_struct_ui_text(srna, "Field Settings", "Field settings for an object in physics simulation."); RNA_def_struct_ui_icon(srna, ICON_PHYSICS); @@ -1056,12 +1162,12 @@ static void rna_def_field(BlenderRNA *brna) prop= RNA_def_property(srna, "noise", PROP_FLOAT, PROP_NONE); RNA_def_property_float_sdna(prop, NULL, "f_noise"); RNA_def_property_range(prop, 0.0f, 10.0f); - RNA_def_property_ui_text(prop, "Noise", "Noise of the wind force"); + RNA_def_property_ui_text(prop, "Noise", "Noise of the force"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); prop= RNA_def_property(srna, "seed", PROP_INT, PROP_UNSIGNED); RNA_def_property_range(prop, 1, 128); - RNA_def_property_ui_text(prop, "Seed", "Seed of the wind noise"); + RNA_def_property_ui_text(prop, "Seed", "Seed of the noise"); RNA_def_property_update(prop, 0, "rna_FieldSettings_update"); /* Boolean */ @@ -1282,6 +1388,7 @@ static void rna_def_softbody(BlenderRNA *brna) srna= RNA_def_struct(brna, "SoftBodySettings", NULL); RNA_def_struct_sdna(srna, "SoftBody"); + RNA_def_struct_path_func(srna, "rna_SoftBodySettings_path"); RNA_def_struct_ui_text(srna, "Soft Body Settings", "Soft body simulation settings for an object."); /* General Settings */ @@ -1298,6 +1405,12 @@ static void rna_def_softbody(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mass", ""); RNA_def_property_update(prop, 0, "rna_softbody_update"); + prop= RNA_def_property(srna, "mass_vertex_group", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "namedVG_Mass"); + RNA_def_property_ui_text(prop, "Mass Vertex Group", "Control point mass values."); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoftBodySettings_mass_vgroup_set"); + RNA_def_property_update(prop, 0, "rna_softbody_update"); + prop= RNA_def_property(srna, "gravity", PROP_FLOAT, PROP_ACCELERATION); RNA_def_property_float_sdna(prop, NULL, "grav"); RNA_def_property_range(prop, -10.0f, 10.0f); @@ -1396,6 +1509,12 @@ static void rna_def_softbody(BlenderRNA *brna) RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Shear", "Shear Stiffness"); + prop= RNA_def_property(srna, "spring_vertex_group", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "namedVG_Spring_K"); + RNA_def_property_ui_text(prop, "Spring Vertex Group", "Control point spring strength values."); + RNA_def_property_string_funcs(prop, NULL, NULL, "rna_SoftBodySettings_spring_vgroup_set"); + RNA_def_property_update(prop, 0, "rna_softbody_update"); + /* Collision */ prop= RNA_def_property(srna, "collision_type", PROP_ENUM, PROP_NONE); @@ -1501,6 +1620,7 @@ static void rna_def_softbody(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_softbody_update"); prop= RNA_def_property(srna, "effector_weights", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "effector_weights"); RNA_def_property_struct_type(prop, "EffectorWeights"); RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Effector Weights", ""); diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index d261bda739e..ad73f279b45 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -98,6 +98,7 @@ EnumPropertyItem part_hair_ren_as_items[] = { #include "BKE_context.h" #include "BKE_cloth.h" +#include "BKE_deform.h" #include "BKE_depsgraph.h" #include "BKE_effect.h" #include "BKE_modifier.h" @@ -127,6 +128,12 @@ static void rna_Particle_redo(bContext *C, PointerRNA *ptr) particle_recalc(C, ptr, PSYS_RECALC_REDO); } +static void rna_Particle_redo_dependency(bContext *C, PointerRNA *ptr) +{ + DAG_scene_sort(CTX_data_scene(C)); + rna_Particle_redo(C, ptr); +} + static void rna_Particle_reset(bContext *C, PointerRNA *ptr) { particle_recalc(C, ptr, PSYS_RECALC_RESET); @@ -547,6 +554,93 @@ static PointerRNA rna_Particle_field2_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_FieldSettings, part->pd2); } +static void psys_vg_name_get__internal(PointerRNA *ptr, char *value, int index) +{ + Object *ob= ptr->id.data; + ParticleSystem *psys= (ParticleSystem*)ptr->data; + + if(psys->vgroup[index] > 0) { + bDeformGroup *defGroup= BLI_findlink(&ob->defbase, psys->vgroup[index]-1); + + if(defGroup) { + strcpy(value, defGroup->name); + return; + } + } + + value[0]= '\0'; +} +static int psys_vg_name_len__internal(PointerRNA *ptr, int index) +{ + Object *ob= ptr->id.data; + ParticleSystem *psys= (ParticleSystem*)ptr->data; + + if(psys->vgroup[index] > 0) { + bDeformGroup *defGroup= BLI_findlink(&ob->defbase, psys->vgroup[index]-1); + + if(defGroup) { + return strlen(defGroup->name); + } + } + return 0; +} +static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int index) +{ + Object *ob= ptr->id.data; + ParticleSystem *psys= (ParticleSystem*)ptr->data; + + if(value[0]=='\0') { + psys->vgroup[index]= 0; + } + else { + int vgroup_num = get_named_vertexgroup_num(ob, (char*)value); + + if(vgroup_num == -1) + return; + + psys->vgroup[index]= vgroup_num + 1; + } +} + +/* irritating string functions for each index :/ */ +static void rna_ParticleVGroup_name_get_0(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 0); } +static void rna_ParticleVGroup_name_get_1(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 1); } +static void rna_ParticleVGroup_name_get_2(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 2); } +static void rna_ParticleVGroup_name_get_3(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 3); } +static void rna_ParticleVGroup_name_get_4(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 4); } +static void rna_ParticleVGroup_name_get_5(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 5); } +static void rna_ParticleVGroup_name_get_6(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 6); } +static void rna_ParticleVGroup_name_get_7(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 7); } +static void rna_ParticleVGroup_name_get_8(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 8); } +static void rna_ParticleVGroup_name_get_9(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 9); } +static void rna_ParticleVGroup_name_get_10(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 10); } +static void rna_ParticleVGroup_name_get_11(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 11); } + +static int rna_ParticleVGroup_name_len_0(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 0); } +static int rna_ParticleVGroup_name_len_1(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 1); } +static int rna_ParticleVGroup_name_len_2(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 2); } +static int rna_ParticleVGroup_name_len_3(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 3); } +static int rna_ParticleVGroup_name_len_4(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 4); } +static int rna_ParticleVGroup_name_len_5(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 5); } +static int rna_ParticleVGroup_name_len_6(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 6); } +static int rna_ParticleVGroup_name_len_7(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 7); } +static int rna_ParticleVGroup_name_len_8(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 8); } +static int rna_ParticleVGroup_name_len_9(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 9); } +static int rna_ParticleVGroup_name_len_10(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 10); } +static int rna_ParticleVGroup_name_len_11(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 11); } + +static void rna_ParticleVGroup_name_set_0(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 0); } +static void rna_ParticleVGroup_name_set_1(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 1); } +static void rna_ParticleVGroup_name_set_2(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 2); } +static void rna_ParticleVGroup_name_set_3(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 3); } +static void rna_ParticleVGroup_name_set_4(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 4); } +static void rna_ParticleVGroup_name_set_5(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 5); } +static void rna_ParticleVGroup_name_set_6(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 6); } +static void rna_ParticleVGroup_name_set_7(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 7); } +static void rna_ParticleVGroup_name_set_8(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 8); } +static void rna_ParticleVGroup_name_set_9(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 9); } +static void rna_ParticleVGroup_name_set_10(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 10); } +static void rna_ParticleVGroup_name_set_11(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 11); } #else @@ -1713,7 +1807,7 @@ static void rna_def_particle_settings(BlenderRNA *brna) RNA_def_property_struct_type(prop, "Object"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Dupli Object", "Show this Object in place of particles."); - RNA_def_property_update(prop, 0, "rna_Particle_redo"); + RNA_def_property_update(prop, 0, "rna_Particle_redo_dependency"); prop= RNA_def_property(srna, "billboard_object", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "bb_ob"); @@ -1907,18 +2001,27 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Billboard Split UV", "UV Layer to control billboard splitting."); /* vertex groups */ + + /* note, internally store as ints, access as strings */ +#if 0 // int access. works ok but isnt useful for the UI prop= RNA_def_property(srna, "vertex_group_density", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "vgroup[0]"); RNA_def_property_ui_text(prop, "Vertex Group Density", "Vertex group to control density."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); +#endif + + prop= RNA_def_property(srna, "vertex_group_density", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_0", "rna_ParticleVGroup_name_len_0", "rna_ParticleVGroup_name_set_0"); + RNA_def_property_ui_text(prop, "Vertex Group Density", "Vertex group to control density."); + RNA_def_property_update(prop, 0, "rna_Particle_reset"); prop= RNA_def_property(srna, "vertex_group_density_negate", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_DENSITY)); RNA_def_property_ui_text(prop, "Vertex Group Density Negate", "Negate the effect of the density vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "vertex_group_velocity", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[1]"); + prop= RNA_def_property(srna, "vertex_group_velocity", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_1", "rna_ParticleVGroup_name_len_1", "rna_ParticleVGroup_name_set_1"); RNA_def_property_ui_text(prop, "Vertex Group Velocity", "Vertex group to control velocity."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); @@ -1927,8 +2030,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Velocity Negate", "Negate the effect of the velocity vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "vertex_group_length", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[2]"); + prop= RNA_def_property(srna, "vertex_group_length", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_2", "rna_ParticleVGroup_name_len_2", "rna_ParticleVGroup_name_set_2"); RNA_def_property_ui_text(prop, "Vertex Group Length", "Vertex group to control length."); RNA_def_property_update(prop, 0, "rna_Particle_redo"); @@ -1937,8 +2040,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Length Negate", "Negate the effect of the length vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo"); - prop= RNA_def_property(srna, "vertex_group_clump", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[3]"); + prop= RNA_def_property(srna, "vertex_group_clump", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_3", "rna_ParticleVGroup_name_len_3", "rna_ParticleVGroup_name_set_3"); RNA_def_property_ui_text(prop, "Vertex Group Clump", "Vertex group to control clump."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); @@ -1947,8 +2050,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Clump Negate", "Negate the effect of the clump vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - prop= RNA_def_property(srna, "vertex_group_kink", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[4]"); + prop= RNA_def_property(srna, "vertex_group_kink", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_4", "rna_ParticleVGroup_name_len_4", "rna_ParticleVGroup_name_set_4"); RNA_def_property_ui_text(prop, "Vertex Group Kink", "Vertex group to control kink."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); @@ -1957,8 +2060,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Kink Negate", "Negate the effect of the kink vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - prop= RNA_def_property(srna, "vertex_group_roughness1", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[5]"); + prop= RNA_def_property(srna, "vertex_group_roughness1", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_5", "rna_ParticleVGroup_name_len_5", "rna_ParticleVGroup_name_set_5"); RNA_def_property_ui_text(prop, "Vertex Group Roughness 1", "Vertex group to control roughness 1."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); @@ -1967,8 +2070,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Roughness 1 Negate", "Negate the effect of the roughness 1 vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - prop= RNA_def_property(srna, "vertex_group_roughness2", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[6]"); + prop= RNA_def_property(srna, "vertex_group_roughness2", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_6", "rna_ParticleVGroup_name_len_6", "rna_ParticleVGroup_name_set_6"); RNA_def_property_ui_text(prop, "Vertex Group Roughness 2", "Vertex group to control roughness 2."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); @@ -1977,8 +2080,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Roughness 2 Negate", "Negate the effect of the roughness 2 vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - prop= RNA_def_property(srna, "vertex_group_roughness_end", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[7]"); + prop= RNA_def_property(srna, "vertex_group_roughness_end", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_7", "rna_ParticleVGroup_name_len_7", "rna_ParticleVGroup_name_set_7"); RNA_def_property_ui_text(prop, "Vertex Group Roughness End", "Vertex group to control roughness end."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); @@ -1987,8 +2090,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Roughness End Negate", "Negate the effect of the roughness end vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_redo_child"); - prop= RNA_def_property(srna, "vertex_group_size", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[8]"); + prop= RNA_def_property(srna, "vertex_group_size", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_8", "rna_ParticleVGroup_name_len_8", "rna_ParticleVGroup_name_set_8"); RNA_def_property_ui_text(prop, "Vertex Group Size", "Vertex group to control size."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); @@ -1997,8 +2100,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Size Negate", "Negate the effect of the size vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "vertex_group_tangent", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[9]"); + prop= RNA_def_property(srna, "vertex_group_tangent", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_9", "rna_ParticleVGroup_name_len_9", "rna_ParticleVGroup_name_set_9"); RNA_def_property_ui_text(prop, "Vertex Group Tangent", "Vertex group to control tangent."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); @@ -2007,8 +2110,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Tangent Negate", "Negate the effect of the tangent vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "vertex_group_rotation", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[10]"); + prop= RNA_def_property(srna, "vertex_group_rotation", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_10", "rna_ParticleVGroup_name_len_10", "rna_ParticleVGroup_name_set_10"); RNA_def_property_ui_text(prop, "Vertex Group Rotation", "Vertex group to control rotation."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); @@ -2017,8 +2120,8 @@ static void rna_def_particle_system(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Vertex Group Rotation Negate", "Negate the effect of the rotation vertex group."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); - prop= RNA_def_property(srna, "vertex_group_field", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "vgroup[11]"); + prop= RNA_def_property(srna, "vertex_group_field", PROP_STRING, PROP_NONE); + RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_11", "rna_ParticleVGroup_name_len_11", "rna_ParticleVGroup_name_set_11"); RNA_def_property_ui_text(prop, "Vertex Group Field", "Vertex group to control field."); RNA_def_property_update(prop, 0, "rna_Particle_reset"); diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index a67831715a2..3505253b60f 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -269,11 +269,11 @@ static void rna_def_render_engine(BlenderRNA *brna) /* registration */ RNA_define_verify_sdna(0); - prop= RNA_def_property(srna, "idname", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "label", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->name"); RNA_def_property_flag(prop, PROP_REGISTER); diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 3ab147701df..667f88a3a33 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -76,14 +76,16 @@ EnumPropertyItem proportional_editing_items[] = { #include "BKE_context.h" #include "BKE_global.h" -#include "BKE_scene.h" +#include "BKE_main.h" #include "BKE_node.h" #include "BKE_pointcache.h" +#include "BKE_scene.h" #include "BLI_threads.h" #include "ED_info.h" #include "ED_node.h" +#include "ED_view3d.h" #include "RE_pipeline.h" @@ -160,6 +162,14 @@ static void rna_Scene_layer_set(PointerRNA *ptr, const int *values) scene->lay= layer_set(scene->lay, values); } +static void rna_Scene_layer_update(bContext *C, PointerRNA *ptr) +{ + Main *bmain= CTX_data_main(C); + Scene *scene= (Scene*)ptr->data; + + ED_view3d_scene_layers_update(bmain, scene); +} + static void rna_Scene_start_frame_set(PointerRNA *ptr, int value) { Scene *data= (Scene*)ptr->data; @@ -552,6 +562,12 @@ static void rna_def_tool_settings(BlenderRNA *brna) RNA_def_property_struct_type(prop, "Sculpt"); RNA_def_property_ui_text(prop, "Sculpt", ""); + prop = RNA_def_property(srna, "auto_normalize", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "auto_normalize", 1); + RNA_def_property_ui_text(prop, "WPaint Auto-Normalize", + "Ensure all bone-deforming vertex groups add up to 1.0 while " + "weight painting"); + prop= RNA_def_property(srna, "vertex_paint", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "vpaint"); RNA_def_property_ui_text(prop, "Vertex Paint", ""); @@ -2159,6 +2175,7 @@ void RNA_def_scene(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; + PropertyRNA *prop_act; FunctionRNA *func; static EnumPropertyItem audio_distance_model_items[] = { @@ -2190,13 +2207,6 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL); RNA_def_property_ui_text(prop, "Set Scene", "Background set scene."); - prop= RNA_def_property(srna, "active_object", PROP_POINTER, PROP_NONE); - RNA_def_property_struct_type(prop, "Object"); - RNA_def_property_pointer_funcs(prop, "rna_Scene_active_object_get", "rna_Scene_active_object_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Object", "Object to use as projector transform."); - - prop= RNA_def_property(srna, "world", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "World", "World used for rendering the scene."); @@ -2209,19 +2219,47 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_update(prop, NC_WINDOW, NULL); /* Bases/Objects */ + prop= RNA_def_property(srna, "bases", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "base", NULL); + RNA_def_property_struct_type(prop, "Base"); + RNA_def_property_ui_text(prop, "Bases", ""); + + { /* Collection active property */ + prop_act= RNA_def_property(srna, "base_active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop_act, "Base"); + RNA_def_property_pointer_sdna(prop_act, NULL, "basact"); + RNA_def_property_flag(prop_act, PROP_EDITABLE); + RNA_def_property_ui_text(prop_act, "Active Base", "Active object in the scene."); + RNA_def_property_update(prop_act, NC_SCENE|ND_OB_ACTIVE, NULL); + RNA_def_property_collection_active(prop, prop_act); + } + prop= RNA_def_property(srna, "objects", PROP_COLLECTION, PROP_NONE); RNA_def_property_collection_sdna(prop, NULL, "base", NULL); RNA_def_property_struct_type(prop, "Object"); RNA_def_property_ui_text(prop, "Objects", ""); RNA_def_property_collection_funcs(prop, 0, 0, 0, "rna_Scene_objects_get", 0, 0, 0, 0, 0); + { /* Collection active property */ + prop_act= RNA_def_property(srna, "objects_active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop_act, "Object"); + RNA_def_property_pointer_funcs(prop_act, "rna_Scene_active_object_get", "rna_Scene_active_object_set", NULL); + RNA_def_property_flag(prop_act, PROP_EDITABLE); + RNA_def_property_ui_text(prop_act, "Object", "Object to use as projector transform."); + /* Could call: ED_base_object_activate(C, scene->basact); + * but would be a bad level call and it seems the notifier is enough */ + RNA_def_property_update(prop_act, NC_SCENE|ND_OB_ACTIVE, NULL); + + RNA_def_property_collection_active(prop, prop_act); + } + /* Layers */ prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER); RNA_def_property_boolean_sdna(prop, NULL, "lay", 1); RNA_def_property_array(prop, 20); - RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible when rendering the scene."); RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_layer_set"); - + RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible when rendering the scene."); + RNA_def_property_update(prop, NC_SCENE|ND_LAYER, "rna_Scene_layer_update"); /* Frame Range Stuff */ prop= RNA_def_property(srna, "current_frame", PROP_INT, PROP_TIME); diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index c8193bb4005..e302ea90a8a 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -83,7 +83,7 @@ static char *rna_SmokeDomainSettings_path(PointerRNA *ptr) SmokeDomainSettings *settings = (SmokeDomainSettings*)ptr->data; ModifierData *md= (ModifierData *)settings->smd; - return BLI_sprintfN("modifiers[%s].domain_settings", md->name); + return BLI_sprintfN("modifiers[\"%s\"].domain_settings", md->name); } static char *rna_SmokeFlowSettings_path(PointerRNA *ptr) @@ -91,7 +91,7 @@ static char *rna_SmokeFlowSettings_path(PointerRNA *ptr) SmokeFlowSettings *settings = (SmokeFlowSettings*)ptr->data; ModifierData *md= (ModifierData *)settings->smd; - return BLI_sprintfN("modifiers[%s].flow_settings", md->name); + return BLI_sprintfN("modifiers[\"%s\"].flow_settings", md->name); } static char *rna_SmokeCollSettings_path(PointerRNA *ptr) @@ -99,7 +99,7 @@ static char *rna_SmokeCollSettings_path(PointerRNA *ptr) SmokeCollSettings *settings = (SmokeCollSettings*)ptr->data; ModifierData *md= (ModifierData *)settings->smd; - return BLI_sprintfN("modifiers[%s].coll_settings", md->name); + return BLI_sprintfN("modifiers[\"%s\"].coll_settings", md->name); } #else diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index e46ba16e3d9..40b918b1ea2 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -77,6 +77,7 @@ static EnumPropertyItem draw_channels_items[] = { static EnumPropertyItem transform_orientation_items[] = { {V3D_MANIP_GLOBAL, "GLOBAL", 0, "Global", "Align the transformation axes to world space"}, {V3D_MANIP_LOCAL, "LOCAL", 0, "Local", "Align the transformation axes to the selected objects' local space"}, + {V3D_MANIP_GIMBAL, "GIMBAL", 0, "Gimbal", "Align each axis to the euler rotation axis as used for input"}, {V3D_MANIP_NORMAL, "NORMAL", 0, "Normal", "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"}, {V3D_MANIP_VIEW, "VIEW", 0, "View", "Align the transformation axes to the window"}, {V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"}, @@ -152,10 +153,10 @@ static PointerRNA rna_CurrentOrientation_get(PointerRNA *ptr) Scene *scene = ((bScreen*)ptr->id.data)->scene; View3D *v3d= (View3D*)ptr->data; - if (v3d->twmode < 4) + if (v3d->twmode < V3D_MANIP_CUSTOM) return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, NULL); else - return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, BLI_findlink(&scene->transform_spaces, v3d->twmode - 4)); + return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, BLI_findlink(&scene->transform_spaces, v3d->twmode - V3D_MANIP_CUSTOM)); } EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, int *free) @@ -169,6 +170,7 @@ EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, i RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_GLOBAL); RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_NORMAL); + RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_GIMBAL); RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_LOCAL); RNA_enum_items_add_value(&item, &totitem, transform_orientation_items, V3D_MANIP_VIEW); @@ -999,7 +1001,7 @@ static void rna_def_space_sequencer(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Transform Markers", "Transform markers as well as strips."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL); - prop= RNA_def_property(srna, "seperate_color_preview", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "separate_color_preview", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_COLOR_SEPERATED); RNA_def_property_ui_text(prop, "Seperate Colors", "Seperate color channels in preview."); RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL); diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c index f49eb4122c5..44e7d0f68d0 100644 --- a/source/blender/makesrna/intern/rna_texture.c +++ b/source/blender/makesrna/intern/rna_texture.c @@ -34,9 +34,11 @@ #include "DNA_brush_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" +#include "DNA_object_types.h" #include "DNA_texture_types.h" #include "DNA_world_types.h" #include "DNA_node_types.h" +#include "DNA_particle_types.h" #include "DNA_scene_types.h" /* MAXFRAME only */ #include "BKE_node.h" @@ -51,6 +53,10 @@ static EnumPropertyItem texture_filter_items[] = { #ifdef RNA_RUNTIME +#include "MEM_guardedalloc.h" + +#include "RNA_access.h" + #include "BKE_depsgraph.h" #include "BKE_texture.h" #include "BKE_main.h" @@ -155,6 +161,38 @@ void rna_TextureSlot_update(bContext *C, PointerRNA *ptr) } } +char *rna_TextureSlot_path(PointerRNA *ptr) +{ + MTex *mtex= ptr->data; + + /* if there is ID-data, resolve the path using the index instead of by name, + * since the name used is the name of the texture assigned, but the texture + * may be used multiple times in the same stack + */ + if (ptr->id.data) { + PointerRNA id_ptr; + PropertyRNA *prop; + + /* find the 'textures' property of the ID-struct */ + RNA_id_pointer_create(ptr->id.data, &id_ptr); + prop= RNA_struct_find_property(&id_ptr, "textures"); + + /* get an iterator for this property, and try to find the relevant index */ + if (prop) { + int index= RNA_property_collection_lookup_index(&id_ptr, prop, ptr); + + if (index >= 0) + return BLI_sprintfN("textures[%d]", index); + } + } + + /* this is a compromise for the remaining cases... */ + if (mtex->tex) + return BLI_sprintfN("textures[\"%s\"]", mtex->tex->id.name+2); + else + return BLI_strdup("textures[0]"); +} + static int rna_TextureSlot_name_length(PointerRNA *ptr) { MTex *mtex= ptr->data; @@ -285,15 +323,133 @@ static EnumPropertyItem *rna_ImageTexture_filter_itemf(bContext *C, PointerRNA * return item; } +static PointerRNA rna_PointDensity_psys_get(PointerRNA *ptr) +{ + PointDensity *pd= ptr->data; + Object *ob= pd->object; + ParticleSystem *psys= NULL; + PointerRNA value; + + if(ob && pd->psys) + psys= BLI_findlink(&ob->particlesystem, pd->psys-1); + + RNA_pointer_create(&ob->id, &RNA_ParticleSystem, psys, &value); + return value; +} + +static void rna_PointDensity_psys_set(PointerRNA *ptr, PointerRNA value) +{ + PointDensity *pd= ptr->data; + Object *ob= pd->object; + + if(ob && value.id.data == ob) + pd->psys= BLI_findindex(&ob->particlesystem, value.data) + 1; +} + +static char *rna_ColorRamp_path(PointerRNA *ptr) +{ + /* handle the cases where a single datablock may have 2 ramp types */ + if (ptr->id.data) { + ID *id= ptr->id.data; + + switch (GS(id->name)) { + case ID_MA: /* material has 2 cases - diffuse and specular */ + { + Material *ma= (Material*)id; + + if (ptr->data == ma->ramp_col) + return BLI_strdup("diffuse_ramp"); + else if (ptr->data == ma->ramp_spec) + return BLI_strdup("specular_ramp"); + } + break; + } + } + + /* everything else just uses 'color_ramp' */ + return BLI_strdup("color_ramp"); +} + +static char *rna_ColorRampElement_path(PointerRNA *ptr) +{ + PointerRNA ramp_ptr; + PropertyRNA *prop; + char *path = NULL; + int index; + + /* helper macro for use here to try and get the path + * - this calls the standard code for getting a path to a texture... + */ +#define COLRAMP_GETPATH \ + { \ + prop= RNA_struct_find_property(&ramp_ptr, "elements"); \ + if (prop) { \ + index= RNA_property_collection_lookup_index(&ramp_ptr, prop, ptr); \ + if (index >= 0) { \ + char *texture_path= rna_ColorRamp_path(&ramp_ptr); \ + path= BLI_sprintfN("%s.elements[%d]", texture_path, index); \ + MEM_freeN(texture_path); \ + } \ + } \ + } + + /* determine the path from the ID-block to the ramp */ + // FIXME: this is a very slow way to do it, but it will have to suffice... + if (ptr->id.data) { + ID *id= ptr->id.data; + + switch (GS(id->name)) { + case ID_MA: /* 2 cases for material - diffuse and spec */ + { + Material *ma= (Material *)id; + + /* try diffuse first */ + if (ma->ramp_col) { + RNA_pointer_create(id, &RNA_ColorRamp, ma->ramp_col, &ramp_ptr); + COLRAMP_GETPATH; + } + /* try specular if not diffuse */ + if (!path && ma->ramp_spec) { + RNA_pointer_create(id, &RNA_ColorRamp, ma->ramp_spec, &ramp_ptr); + COLRAMP_GETPATH; + } + } + break; + + // TODO: node trees need special attention + case ID_NT: + { + // FIXME: we'll probably have to loop over nodes until we find one that uses the color ramp + } + break; + + default: /* everything else should have a "color_ramp" property */ + { + /* create pointer to the ID block, and try to resolve "color_ramp" pointer */ + RNA_id_pointer_create(id, &ramp_ptr); + if (RNA_path_resolve(&ramp_ptr, "color_ramp", &ramp_ptr, &prop)) { + COLRAMP_GETPATH; + } + } + } + } + + /* cleanup the macro we defined */ +#undef COLRAMP_GETPATH + + return path; +} + #else static void rna_def_color_ramp_element(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; - + srna= RNA_def_struct(brna, "ColorRampElement", NULL); RNA_def_struct_sdna(srna, "CBData"); + RNA_def_struct_path_func(srna, "rna_ColorRampElement_path"); RNA_def_struct_ui_text(srna, "Color Ramp Element", "Element defining a color at a position in the color ramp."); prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); @@ -324,6 +480,7 @@ static void rna_def_color_ramp(BlenderRNA *brna) srna= RNA_def_struct(brna, "ColorRamp", NULL); RNA_def_struct_sdna(srna, "ColorBand"); + RNA_def_struct_path_func(srna, "rna_ColorRamp_path"); RNA_def_struct_ui_text(srna, "Color Ramp", "Color ramp mapping a scalar value to a color."); prop= RNA_def_property(srna, "elements", PROP_COLLECTION, PROP_COLOR); @@ -414,6 +571,7 @@ static void rna_def_mtex(BlenderRNA *brna) srna= RNA_def_struct(brna, "TextureSlot", NULL); RNA_def_struct_sdna(srna, "MTex"); RNA_def_struct_ui_text(srna, "Texture Slot", "Texture slot defining the mapping and influence of a texture."); + RNA_def_struct_path_func(srna, "rna_TextureSlot_path"); RNA_def_struct_ui_icon(srna, ICON_TEXTURE_DATA); prop= RNA_def_property(srna, "texture", PROP_POINTER, PROP_NONE); @@ -487,10 +645,9 @@ static void rna_def_filter_size_common(StructRNA *srna) { PropertyRNA *prop; - /* XXX: not sure about the name of this, "Min" seems a bit off */ - prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "filter_size_minimum", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_FILTER_MIN); - RNA_def_property_ui_text(prop, "Use Filter", "Use Filter Size as a minimal filter value in pixels"); + RNA_def_property_ui_text(prop, "Minimum Filter Size", "Use Filter Size as a minimal filter value in pixels"); RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "filter_size", PROP_FLOAT, PROP_NONE); @@ -927,6 +1084,13 @@ static void rna_def_texture_image(BlenderRNA *brna) {TEX_REPEAT, "REPEAT", 0, "Repeat", "Causes the image to repeat horizontally and vertically"}, {TEX_CHECKER, "CHECKER", 0, "Checker", "Causes the image to repeat in checker board pattern"}, {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem prop_normal_space[] = { + {MTEX_NSPACE_CAMERA, "CAMERA", 0, "Camera", ""}, + {MTEX_NSPACE_WORLD, "WORLD", 0, "World", ""}, + {MTEX_NSPACE_OBJECT, "OBJECT", 0, "Object", ""}, + {MTEX_NSPACE_TANGENT, "TANGENT", 0, "Tangent", ""}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "ImageTexture", "Texture"); RNA_def_struct_ui_text(srna, "Image Texture", ""); @@ -940,7 +1104,7 @@ static void rna_def_texture_image(BlenderRNA *brna) prop= RNA_def_property(srna, "mipmap_gauss", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_GAUSS_MIP); - RNA_def_property_ui_text(prop, "MIP Map Gauss", "Uses Gauss filter to sample down MIP maps"); + RNA_def_property_ui_text(prop, "MIP Map Gaussian filter", "Uses Gauss filter to sample down MIP maps"); RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "interpolation", PROP_BOOLEAN, PROP_NONE); @@ -971,14 +1135,6 @@ static void rna_def_texture_image(BlenderRNA *brna) rna_def_filter_size_common(srna); - prop= RNA_def_property(srna, "normal_map", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NORMALMAP); - RNA_def_property_ui_text(prop, "Normal Map", "Uses image RGB values for normal mapping"); - RNA_def_property_update(prop, 0, "rna_Texture_update"); - - /* XXX: mtex->normapspace "Sets space of normal map image" "Normal Space %t|Camera %x0|World %x1|Object %x2|Tangent %x3" - * not sure why this goes in mtex instead of texture directly? */ - prop= RNA_def_property(srna, "extension", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "extend"); RNA_def_property_enum_items(prop, prop_image_extension); @@ -1097,6 +1253,21 @@ static void rna_def_texture_image(BlenderRNA *brna) RNA_def_property_range(prop, 1, 256); RNA_def_property_ui_text(prop, "Filter Eccentricity", "Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower."); RNA_def_property_update(prop, 0, "rna_Texture_update"); + + /* Normal Map */ + prop= RNA_def_property(srna, "normal_map", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NORMALMAP); + RNA_def_property_ui_text(prop, "Normal Map", "Uses image RGB values for normal mapping"); + RNA_def_property_update(prop, 0, "rna_Texture_update"); + + /* not sure why this goes in mtex instead of texture directly? */ + RNA_def_struct_sdna(srna, "MTex"); + + prop= RNA_def_property(srna, "normal_space", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "normapspace"); + RNA_def_property_enum_items(prop, prop_normal_space); + RNA_def_property_ui_text(prop, "Normal Space", "Sets space of normal map image."); + RNA_def_property_update(prop, 0, "rna_Texture_update"); } static void rna_def_texture_plugin(BlenderRNA *brna) @@ -1406,9 +1577,9 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_Texture_update"); prop= RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "psys"); RNA_def_property_ui_text(prop, "Particle System", "Particle System to render as points"); RNA_def_property_struct_type(prop, "ParticleSystem"); + RNA_def_property_pointer_funcs(prop, "rna_PointDensity_psys_get", "rna_PointDensity_psys_set", NULL); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_update(prop, 0, "rna_Texture_update"); diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c index 8d6a18dd9c2..1bb7fe720a6 100644 --- a/source/blender/makesrna/intern/rna_ui.c +++ b/source/blender/makesrna/intern/rna_ui.c @@ -591,35 +591,35 @@ static void rna_def_panel(BlenderRNA *brna) RNA_def_property_string_sdna(prop, NULL, "drawname"); /* registration */ - prop= RNA_def_property(srna, "idname", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "label", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->label"); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "space_type", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "bl_space_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "type->space_type"); RNA_def_property_enum_items(prop, space_type_items); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "region_type", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "bl_region_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "type->region_type"); RNA_def_property_enum_items(prop, region_type_items); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "context", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_context", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->context"); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); /* should this be optional? - Campbell */ - prop= RNA_def_property(srna, "default_closed", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "bl_default_closed", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "type->flag", PNL_DEFAULT_CLOSED); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); - prop= RNA_def_property(srna, "show_header", PROP_BOOLEAN, PROP_NONE); + prop= RNA_def_property(srna, "bl_show_header", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_negative_sdna(prop, NULL, "type->flag", PNL_NO_HEADER); - RNA_def_property_flag(prop, PROP_REGISTER); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); } static void rna_def_header(BlenderRNA *brna) @@ -647,11 +647,11 @@ static void rna_def_header(BlenderRNA *brna) RNA_def_property_struct_type(prop, "UILayout"); /* registration */ - prop= RNA_def_property(srna, "idname", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "space_type", PROP_ENUM, PROP_NONE); + prop= RNA_def_property(srna, "bl_space_type", PROP_ENUM, PROP_NONE); RNA_def_property_enum_sdna(prop, NULL, "type->space_type"); RNA_def_property_enum_items(prop, space_type_items); RNA_def_property_flag(prop, PROP_REGISTER); @@ -691,11 +691,11 @@ static void rna_def_menu(BlenderRNA *brna) RNA_def_property_struct_type(prop, "UILayout"); /* registration */ - prop= RNA_def_property(srna, "idname", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->idname"); RNA_def_property_flag(prop, PROP_REGISTER); - prop= RNA_def_property(srna, "label", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); RNA_def_property_string_sdna(prop, NULL, "type->label"); RNA_def_property_flag(prop, PROP_REGISTER); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index b5889995a8f..0ca59310abc 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -116,6 +116,11 @@ static PointerRNA rna_UserDef_edit_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesEdit, ptr->data); } +static PointerRNA rna_UserDef_input_get(PointerRNA *ptr) +{ + return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesInput, ptr->data); +} + static PointerRNA rna_UserDef_filepaths_get(PointerRNA *ptr) { return rna_pointer_inherit_refine(ptr, &RNA_UserPreferencesFilePaths, ptr->data); @@ -593,7 +598,7 @@ static void rna_def_userdef_theme_spaces_edge(StructRNA *srna) prop= RNA_def_property(srna, "edge_select", PROP_FLOAT, PROP_COLOR); RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "edge Select", ""); + RNA_def_property_ui_text(prop, "Edge Select", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); prop= RNA_def_property(srna, "edge_seam", PROP_FLOAT, PROP_COLOR); @@ -1170,6 +1175,8 @@ static void rna_def_userdef_theme_space_seq(BlenderRNA *brna) RNA_def_struct_sdna(srna, "ThemeSpace"); RNA_def_struct_ui_text(srna, "Theme Sequence Editor", "Theme settings for the Sequence Editor."); + rna_def_userdef_theme_spaces_main(srna, SPACE_IMAGE); + prop= RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Grid", ""); @@ -1424,6 +1431,25 @@ static void rna_def_userdef_themes(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; + + static EnumPropertyItem active_theme_group[] = { + {0, "USER_INTERFACE", ICON_UI, "User Interface", ""}, + {1, "VIEW_3D", ICON_VIEW3D, "View 3D", ""}, + {2, "GRAPH_EDITOR", ICON_IPO, "Graph Editor", ""}, + {3, "FILE_BROWSER", ICON_FILESEL, "File Browser", ""}, + {4, "NLA_EDITOR", ICON_NLA, "NLA Editor", ""}, + {5, "DOPESHEET_EDITOR", ICON_ACTION, "Dopesheet Editor", ""}, + {6, "IMAGE_EDITOR", ICON_IMAGE_COL, "Image Editor", ""}, + {7, "SEQUENCE_EDITOR", ICON_SEQUENCE, "Sequence Editor", ""}, + {8, "PROPERTIES", ICON_BUTS, "Properties", ""}, + {9, "TEXT_EDITOR", ICON_TEXT, "Text Editor", ""}, + {10, "TIMELINE", ICON_TIME, "Timeline", ""}, + {11, "NODE_EDITOR", ICON_NODE, "Node Editor", ""}, + {12, "LOGIC_EDITOR", ICON_LOGIC, "Logic Editor", ""}, + {13, "OUTLINER", ICON_OOPS, "Outliner", ""}, + {14, "INFO", ICON_INFO, "Info", ""}, + {15, "USER_PREFERENCES", ICON_PREFERENCES, "User Preferences", ""}, + {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "Theme", NULL); RNA_def_struct_sdna(srna, "bTheme"); @@ -1433,6 +1459,11 @@ static void rna_def_userdef_themes(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Name", "Name of the theme."); RNA_def_struct_name_property(srna, prop); + prop= RNA_def_property(srna, "active_theme", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "active_theme_group"); + RNA_def_property_enum_items(prop, active_theme_group); + RNA_def_property_ui_text(prop, "Active Theme", ""); + prop= RNA_def_property(srna, "user_interface", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); RNA_def_property_pointer_sdna(prop, NULL, "tui"); @@ -1595,35 +1626,13 @@ static void rna_def_userdef_view(BlenderRNA *brna) { PropertyRNA *prop; StructRNA *srna; - - static EnumPropertyItem view_zoom_styles[] = { - {USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."}, - {USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."}, - {USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."}, - {0, NULL, 0, NULL, NULL}}; - static EnumPropertyItem select_mouse_items[] = { - {USER_LMOUSESELECT, "LEFT", 0, "Left", "Use left Mouse Button for selection."}, - {0, "RIGHT", 0, "Right", "Use Right Mouse Button for selection."}, - {0, NULL, 0, NULL, NULL}}; - - static EnumPropertyItem middle_mouse_mouse_items[] = { - {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."}, - {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."}, - {0, NULL, 0, NULL, NULL}}; - - static EnumPropertyItem view_rotation_items[] = { - {0, "TURNTABLE", 0, "Turntable", "Use turntable style rotation in the viewport."}, - {USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."}, - {0, NULL, 0, NULL, NULL}}; - - srna= RNA_def_struct(brna, "UserPreferencesView", NULL); RNA_def_struct_sdna(srna, "UserDef"); RNA_def_struct_nested(brna, srna, "UserPreferences"); RNA_def_struct_ui_text(srna, "View & Controls", "Preferences related to viewing data"); - /* View and Controls */ + /* View */ /* display */ prop= RNA_def_property(srna, "tooltips", PROP_BOOLEAN, PROP_NONE); @@ -1693,10 +1702,6 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_boolean_negative_sdna(prop, NULL, "uiflag", USER_MENUFIXEDORDER); RNA_def_property_ui_text(prop, "Contents Follow Opening Direction", "Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction."); - prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE); - RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view"); - prop= RNA_def_property(srna, "global_pivot", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_LOCKAROUND); RNA_def_property_ui_text(prop, "Global Pivot", "Lock the same rotation/scaling pivot in all 3D Views."); @@ -1706,24 +1711,16 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Auto Depth", "Use the depth under the mouse to improve view pan/rotate/zoom functionality."); /* view zoom */ - prop= RNA_def_property(srna, "viewport_zoom_style", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "viewzoom"); - RNA_def_property_enum_items(prop, view_zoom_styles); - RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling."); prop= RNA_def_property(srna, "zoom_to_mouse", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_TO_MOUSEPOS); RNA_def_property_ui_text(prop, "Zoom To Mouse Position", "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center."); /* view rotation */ - prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, view_rotation_items); - RNA_def_property_ui_text(prop, "View Rotation", "Rotation style in the viewport."); - - prop= RNA_def_property(srna, "perspective_orthographic_switch", PROP_BOOLEAN, PROP_NONE); + + prop= RNA_def_property(srna, "auto_perspective", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_AUTOPERSP); - RNA_def_property_ui_text(prop, "Perspective/Orthographic Switch", "Automatically switch between orthographic and perspective when changing from top/front/side views."); + RNA_def_property_ui_text(prop, "Auto Perspective", "Automatically switch between orthographic and perspective when changing from top/front/side views."); prop= RNA_def_property(srna, "rotate_around_selection", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ORBIT_SELECTION); @@ -1731,15 +1728,9 @@ static void rna_def_userdef_view(BlenderRNA *brna) /* select with */ - prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, select_mouse_items); - RNA_def_property_ui_text(prop, "Select Mouse", "The mouse button used for selection."); + + - prop= RNA_def_property(srna, "emulate_3_button_mouse", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE); - RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set"); - RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse", "Emulates Middle Mouse with Alt+LeftMouse (doesnt work with Left Mouse Select option.)"); prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE); @@ -1764,10 +1755,7 @@ static void rna_def_userdef_view(BlenderRNA *brna) /* middle mouse button */ - prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, middle_mouse_mouse_items); - RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view."); + prop= RNA_def_property(srna, "wheel_invert_zoom", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_WHEELZOOMDIR); @@ -1817,15 +1805,7 @@ static void rna_def_userdef_view(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Object Center Size", "Diameter in Pixels for Object/Lamp center display."); RNA_def_property_update(prop, 0, "rna_userdef_update"); - prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "ndof_pan"); - RNA_def_property_range(prop, 0, 200); - RNA_def_property_ui_text(prop, "NDof Pan Speed", "The overall panning speed of an NDOF device, as percent of standard."); - prop= RNA_def_property(srna, "ndof_rotate_speed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "ndof_rotate"); - RNA_def_property_range(prop, 0, 200); - RNA_def_property_ui_text(prop, "NDof Rotation Speed", "The overall rotation speed of an NDOF device, as percent of standard."); } static void rna_def_userdef_edit(BlenderRNA *brna) @@ -2286,6 +2266,77 @@ static void rna_def_userdef_system(BlenderRNA *brna) #endif } +static void rna_def_userdef_input(BlenderRNA *brna) +{ + PropertyRNA *prop; + StructRNA *srna; + + static EnumPropertyItem select_mouse_items[] = { + {USER_LMOUSESELECT, "LEFT", 0, "Left", "Use left Mouse Button for selection."}, + {0, "RIGHT", 0, "Right", "Use Right Mouse Button for selection."}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem view_rotation_items[] = { + {0, "TURNTABLE", 0, "Turntable", "Use turntable style rotation in the viewport."}, + {USER_TRACKBALL, "TRACKBALL", 0, "Trackball", "Use trackball style rotation in the viewport."}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem middle_mouse_mouse_items[] = { + {0, "PAN", 0, "Pan", "Use the middle mouse button for panning the viewport."}, + {USER_VIEWMOVE, "ROTATE", 0, "Rotate", "Use the middle mouse button for rotation the viewport."}, + {0, NULL, 0, NULL, NULL}}; + + static EnumPropertyItem view_zoom_styles[] = { + {USER_ZOOM_CONT, "CONTINUE", 0, "Continue", "Old style zoom, continues while moving mouse up or down."}, + {USER_ZOOM_DOLLY, "DOLLY", 0, "Dolly", "Zooms in and out based on vertical mouse movement."}, + {USER_ZOOM_SCALE, "SCALE", 0, "Scale", "Zooms in and out like scaling the view, mouse movements relative to center."}, + {0, NULL, 0, NULL, NULL}}; + + srna= RNA_def_struct(brna, "UserPreferencesInput", NULL); + RNA_def_struct_sdna(srna, "UserDef"); + RNA_def_struct_nested(brna, srna, "UserPreferences"); + RNA_def_struct_ui_text(srna, "Input", "Settings for input devices."); + + prop= RNA_def_property(srna, "middle_mouse", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, middle_mouse_mouse_items); + RNA_def_property_ui_text(prop, "Middle Mouse", "Use the middle mouse button to pan or zoom the view."); + + prop= RNA_def_property(srna, "select_mouse", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, select_mouse_items); + RNA_def_property_ui_text(prop, "Select Mouse", "The mouse button used for selection."); + + prop= RNA_def_property(srna, "viewport_zoom_style", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "viewzoom"); + RNA_def_property_enum_items(prop, view_zoom_styles); + RNA_def_property_ui_text(prop, "Viewport Zoom Style", "Which style to use for viewport scaling."); + + prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, view_rotation_items); + RNA_def_property_ui_text(prop, "View Rotation", "Rotation style in the viewport."); + + prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE); + RNA_def_property_ui_text(prop, "Continuous Grab", "Experimental option to allow moving the mouse outside the view"); + + prop= RNA_def_property(srna, "ndof_pan_speed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "ndof_pan"); + RNA_def_property_range(prop, 0, 200); + RNA_def_property_ui_text(prop, "NDof Pan Speed", "The overall panning speed of an NDOF device, as percent of standard."); + + prop= RNA_def_property(srna, "ndof_rotate_speed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "ndof_rotate"); + RNA_def_property_range(prop, 0, 200); + RNA_def_property_ui_text(prop, "NDof Rotation Speed", "The overall rotation speed of an NDOF device, as percent of standard."); + + prop= RNA_def_property(srna, "emulate_3_button_mouse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE); + RNA_def_property_boolean_funcs(prop, NULL, "rna_userdef_emulate_set"); + RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse", "Emulates Middle Mouse with Alt+LeftMouse (doesnt work with Left Mouse Select option.)"); +} + static void rna_def_userdef_filepaths(BlenderRNA *brna) { PropertyRNA *prop; @@ -2385,7 +2436,7 @@ void RNA_def_userdef(BlenderRNA *brna) {USER_SECTION_INTERFACE, "INTERFACE", 0, "Interface", ""}, {USER_SECTION_EDIT, "EDITING", 0, "Editing", ""}, {USER_SECTION_INPUT, "INPUT", 0, "Input", ""}, -// {USER_SECTION_THEME, "THEMES", 0, "Themes", ""}, // Leave this out until we figure out a way to manage themes in the prefs. + {USER_SECTION_THEME, "THEMES", 0, "Themes", ""}, {USER_SECTION_FILE, "FILES", 0, "File", ""}, {USER_SECTION_SYSTEM, "SYSTEM", 0, "System", ""}, {0, NULL, 0, NULL, NULL}}; @@ -2426,6 +2477,12 @@ void RNA_def_userdef(BlenderRNA *brna) RNA_def_property_pointer_funcs(prop, "rna_UserDef_edit_get", NULL, NULL); RNA_def_property_ui_text(prop, "Edit Methods", "Settings for interacting with Blender data."); + prop= RNA_def_property(srna, "inputs", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_struct_type(prop, "UserPreferencesInput"); + RNA_def_property_pointer_funcs(prop, "rna_UserDef_input_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Inputs", "Settings for input devices."); + prop= RNA_def_property(srna, "filepaths", PROP_POINTER, PROP_NONE); RNA_def_property_flag(prop, PROP_NEVER_NULL); RNA_def_property_struct_type(prop, "UserPreferencesFilePaths"); @@ -2440,6 +2497,7 @@ void RNA_def_userdef(BlenderRNA *brna) rna_def_userdef_view(brna); rna_def_userdef_edit(brna); + rna_def_userdef_input(brna); rna_def_userdef_filepaths(brna); rna_def_userdef_system(brna); diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c index e2e50b695fd..39c4c340b97 100644 --- a/source/blender/makesrna/intern/rna_wm.c +++ b/source/blender/makesrna/intern/rna_wm.c @@ -183,8 +183,8 @@ EnumPropertyItem event_type_items[] = { {SLASHKEY, "SLASH", 0, "/", ""}, {BACKSLASHKEY, "BACK_SLASH", 0, "\\", ""}, {EQUALKEY, "EQUAL", 0, "=", ""}, - {LEFTBRACKETKEY, "LEFT_BRACKET", 0, "]", ""}, - {RIGHTBRACKETKEY, "RIGHT_BRACKET", 0, "[", ""}, + {LEFTBRACKETKEY, "LEFT_BRACKET", 0, "[", ""}, + {RIGHTBRACKETKEY, "RIGHT_BRACKET", 0, "]", ""}, {LEFTARROWKEY, "LEFT_ARROW", 0, "Left Arrow", ""}, {DOWNARROWKEY, "DOWN_ARROW", 0, "Down Arrow", ""}, {RIGHTARROWKEY, "RIGHT_ARROW", 0, "Right Arrow", ""}, diff --git a/source/blender/makesrna/intern/rna_wm_api.c b/source/blender/makesrna/intern/rna_wm_api.c index 1a5568cb4f4..450b2e9fbc0 100644 --- a/source/blender/makesrna/intern/rna_wm_api.c +++ b/source/blender/makesrna/intern/rna_wm_api.c @@ -73,6 +73,16 @@ void RNA_api_wm(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED); parm= RNA_def_pointer(func, "keyconfig", "KeyConfig", "Key Configuration", "Added key configuration."); RNA_def_function_return(func, parm); + + /* invoke functions, for use with python */ + func= RNA_def_function(srna, "invoke_props_popup", "WM_operator_props_popup"); + RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_USE_CONTEXT); + RNA_def_function_ui_description(func, "Operator popup invoke."); + parm= RNA_def_pointer(func, "operator", "Operator", "", "Operator to call."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "event", "Event", "", "Event."); + RNA_def_property_flag(parm, PROP_REQUIRED); + RNA_def_function_return(func, RNA_def_int(func, "mode", 0, 0, INT_MAX, "Mode", "", 0, INT_MAX)); // XXX, should be an enum/flag thingo } void RNA_api_keyconfig(StructRNA *srna) diff --git a/source/blender/python/epy_doc_gen.py b/source/blender/python/epy_doc_gen.py index 4ff5c8102e2..bf1dd820ce5 100644 --- a/source/blender/python/epy_doc_gen.py +++ b/source/blender/python/epy_doc_gen.py @@ -23,10 +23,10 @@ Usage, run this script from blenders root path once you have compiled blender ./blender.bin -P source/blender/python/epy_doc_gen.py -This will generate rna.py and bpyoperator.py in "./source/blender/python/doc/" +This will generate python files in "./source/blender/python/doc/bpy" Generate html docs by running... - epydoc source/blender/python/doc/*.py -v \\ + epydoc source/blender/python/doc/bpy/ -v \\ -o source/blender/python/doc/html \\ --inheritance=included \\ --no-sourcecode \\ @@ -47,45 +47,45 @@ INIT_SUBMODULES = {} # store initialized files INIT_SUBMODULES_IMPORTS = {} # dont import the same module twice def append_package(package_path, mod_name): - + init_path = os.path.join(os.path.dirname(package_path), "__init__.py") - + # avoid double ups if mod_name: imports = INIT_SUBMODULES_IMPORTS.setdefault(init_path, []) if mod_name in imports: return imports.append(mod_name) - + try: os.makedirs(os.path.dirname(init_path)) # make the dirs if they are not there except: pass - + # Open the new file for the first time, otherwise keep it open. f = INIT_SUBMODULES.get(init_path) if f == None: f = INIT_SUBMODULES[init_path] = open(init_path, 'w') - + if mod_name: f.write("import %s\n" % mod_name) - + return f def append_package_recursive(package_path, BASEPATH): ''' assume the last item of package_path will be a file (not a dir thats created) ''' - + package_path = os.path.splitext(package_path)[0] # incase of .py - + try: os.makedirs(os.path.join(BASEPATH, os.path.dirname(package_path))) # make the dirs if they are not there except: pass - + new_path = BASEPATH - + for mod_name in package_path.split(os.sep): init_path = os.path.join(new_path, "__init__.py") new_path = os.path.join(new_path, mod_name) @@ -96,13 +96,13 @@ def open_submodule(subpath, BASEPATH): ''' This is a utility function that lets us quickly add submodules ''' - + # create all the package paths leading up to this module append_package_recursive(subpath, BASEPATH) - + module_name = os.path.basename( os.path.splitext(subpath)[0] ) mod_path = os.path.join(BASEPATH, subpath) - + # Open the new file for the first time, otherwise keep it open. f = SUBMODULES.get(mod_path) if f == None: @@ -115,13 +115,13 @@ def close_all(): for files in (INIT_SUBMODULES.values(), SUBMODULES.values()): for f in files: if f.name.endswith('.py'): - f_name = f.name + f_name = f.name f.close() - + f = open(f_name, 'a') f.write("\ndel __package__\n") # annoying, no need do show this - - + + f.close() @@ -131,7 +131,7 @@ def range_str(val): if type(val)==float: return '%g' % val else: - return str(val) + return str(val) def get_array_str(length): if length > 0: return ' array of %d items' % length @@ -150,23 +150,23 @@ def full_rna_struct_path(rna_struct): def rna_id_ignore(rna_id): if rna_id == "rna_type": return True - + if "_OT_" in rna_id: return True if "_MT_" in rna_id: return True if "_PT_" in rna_id: return True - + return False def write_func(rna, ident, out, func_type): # Keyword attributes kw_args = [] # "foo = 1", "bar=0.5", "spam='ENUM'" kw_arg_attrs = [] # "@type mode: int" - + rna_struct= rna.rna_type - + # Operators and functions work differently if func_type=='OPERATOR': rna_func_name = rna_struct.identifier.split("_OT_")[-1] @@ -176,41 +176,41 @@ def write_func(rna, ident, out, func_type): rna_func_name = rna.identifier rna_func_desc = rna.description.strip() items = rna.parameters.items() - - + + for rna_prop_identifier, rna_prop in items: if rna_id_ignore(rna_prop_identifier): continue - - # clear vars + + # clear vars val = val_error = val_str = rna_prop_type = None - + # ['rna_type', 'name', 'array_length', 'description', 'hard_max', 'hard_min', 'identifier', 'precision', 'readonly', 'soft_max', 'soft_min', 'step', 'subtype', 'type'] #rna_prop= op_rna.rna_type.properties[attr] rna_prop_type = rna_prop.type.lower() # enum, float, int, boolean - - + + # only for rna functions, operators should not get pointers as args if rna_prop_type=='pointer': rna_prop_type_refine = "L{%s}" % rna_prop.fixed_type.identifier else: rna_prop_type_refine = rna_prop_type - - + + try: length = rna_prop.array_length except: length = 0 - + array_str = get_array_str(length) - + if rna_prop.use_return: kw_type_str= "@rtype: %s%s" % (rna_prop_type_refine, array_str) kw_param_str= "@return: %s" % (rna_prop.description.strip()) else: kw_type_str= "@type %s: %s%s" % (rna_prop_identifier, rna_prop_type_refine, array_str) kw_param_str= "@param %s: %s" % (rna_prop_identifier, rna_prop.description.strip()) - + kw_param_set = False - + if func_type=='OPERATOR': try: val = getattr(rna, rna_prop_identifier) @@ -218,8 +218,8 @@ def write_func(rna, ident, out, func_type): except: val = "'<UNDEFINED>'" val_error = True - - + + if val_error: val_str = val elif rna_prop_type=='float': @@ -230,47 +230,47 @@ def write_func(rna, ident, out, func_type): else: # array val_str = str(tuple(val)) - + kw_param_str += (' in (%s, %s)' % (range_str(rna_prop.hard_min), range_str(rna_prop.hard_max))) kw_param_set= True - + elif rna_prop_type=='int': if length==0: val_str='%d' % val else: val_str = str(tuple(val)) - + # print(dir(rna_prop)) kw_param_str += (' in (%s, %s)' % (range_str(rna_prop.hard_min), range_str(rna_prop.hard_max))) # These strings dont have a max length??? #kw_param_str += ' (maximum length of %s)' % (rna_prop.max_length) kw_param_set= True - + elif rna_prop_type=='boolean': if length==0: if val: val_str='True' else: val_str='False' else: val_str = str(tuple(val)) - + elif rna_prop_type=='enum': # no array here? val_str="'%s'" % val # Too cramped kw_param_str += (' in (%s)' % ', '.join(rna_prop.items.keys())) - + kw_param_set= True - + elif rna_prop_type=='string': # no array here? val_str='"%s"' % val - + # todo - collection - array # print (rna_prop.type) - + kw_args.append('%s = %s' % (rna_prop_identifier, val_str)) - - # stora + + # stora else: # currently functions dont have a default value if not rna_prop.use_return: @@ -278,27 +278,31 @@ def write_func(rna, ident, out, func_type): else: kw_param_set = True - + # Same for operators and functions kw_arg_attrs.append(kw_type_str) if kw_param_set: kw_arg_attrs.append(kw_param_str) + + + + out.write(ident+'def %s(%s):\n' % (rna_func_name, ', '.join(kw_args))) + out.write(ident+'\t"""\n') + # Descriptions could be multiline + for rna_func_desc_line in rna_func_desc.split('\n'): + out.write(ident+'\t%s\n' % rna_func_desc_line.strip()) - - out.write(ident+'def %s(%s):\n' % (rna_func_name, ', '.join(kw_args))) - out.write(ident+'\t"""\n') - out.write(ident+'\t%s\n' % rna_func_desc) for desc in kw_arg_attrs: out.write(ident+'\t%s\n' % desc) - + # out.write(ident+'\t@rtype: None\n') # implicit out.write(ident+'\t"""\n') - + def rna2epy(BASEPATH): - + # Use for faster lookups # use rna_struct.identifier as the key for each dict rna_struct_dict = {} # store identifier:rna lookups @@ -307,15 +311,15 @@ def rna2epy(BASEPATH): rna_references_dict = {} # store a list of rna path strings that reference this type rna_functions_dict = {} # store all functions directly in this type (not inherited) rna_words = set() - + # def write_func(rna_func, ident): - - + + def write_struct(rna_struct, ident): identifier = rna_struct.identifier - + rna_base = rna_struct.base - + if rna_base: out.write(ident+ 'class %s(%s):\n' % (identifier, rna_base.identifier)) rna_base_prop_keys = rna_base.properties.keys() # could be cached @@ -324,63 +328,63 @@ def rna2epy(BASEPATH): out.write(ident+ 'class %s:\n' % identifier) rna_base_prop_keys = [] rna_base_func_keys = [] - + out.write(ident+ '\t"""\n') - + title = 'The %s Object' % rna_struct.name description = rna_struct.description.strip() out.write(ident+ '\t%s\n' % title) out.write(ident+ '\t%s\n' % ('=' * len(title))) out.write(ident+ '\t\t%s\n' % description) rna_words.update(description.split()) - - + + # For convenience, give a list of all places were used. rna_refs= rna_references_dict[identifier] - + if rna_refs: out.write(ident+ '\t\t\n') out.write(ident+ '\t\tReferences\n') out.write(ident+ '\t\t==========\n') - + for rna_ref_string in rna_refs: out.write(ident+ '\t\t\t- L{%s}\n' % rna_ref_string) - + out.write(ident+ '\t\t\n') - + else: out.write(ident+ '\t\t\n') out.write(ident+ '\t\t(no references to this struct found)\n') out.write(ident+ '\t\t\n') - + for rna_prop_identifier, rna_prop in rna_struct.properties.items(): - + if rna_prop_identifier=='RNA': continue if rna_id_ignore(rna_prop_identifier): continue if rna_prop_identifier in rna_base_prop_keys: continue # does this prop exist in our parent class, if so skip - + rna_desc = rna_prop.description.strip() - + if rna_desc: rna_words.update(rna_desc.split()) if not rna_desc: rna_desc = rna_prop.name if not rna_desc: rna_desc = 'Note - No documentation for this property!' - + rna_prop_type = rna_prop.type.lower() - + if rna_prop_type=='collection': collection_str = 'Collection of ' else: collection_str = '' - + try: rna_prop_ptr = rna_prop.fixed_type except: rna_prop_ptr = None - + try: length = rna_prop.array_length except: length = 0 - + array_str = get_array_str(length) - + if rna_prop.editable: readonly_str = '' else: readonly_str = ' (readonly)' - + if rna_prop_ptr: # Use the pointer type out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) out.write(ident+ '\t@type %s: %sL{%s}%s%s\n' % (rna_prop_identifier, collection_str, rna_prop_ptr.identifier, array_str, readonly_str)) @@ -393,7 +397,7 @@ def rna2epy(BASEPATH): for e, e_rna_prop in rna_prop.items.items(): #out.write(ident+ '\t\t- %s: %s\n' % (e, e_rna_prop.description)) # XXX - segfaults, FIXME out.write(ident+ '\t\t- %s\n' % e) - + out.write(ident+ '\t@type %s: %s%s%s\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str)) elif rna_prop_type == 'int' or rna_prop_type == 'float': out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) @@ -404,25 +408,25 @@ def rna2epy(BASEPATH): else: out.write(ident+ '\t@ivar %s: %s\n' % (rna_prop_identifier, rna_desc)) out.write(ident+ '\t@type %s: %s%s%s\n' % (rna_prop_identifier, rna_prop_type, array_str, readonly_str)) - - + + out.write(ident+ '\t"""\n\n') - - - # Write functions + + + # Write functions # for rna_func in rna_struct.functions: # Better ignore inherited (line below) for rna_func in rna_functions_dict[identifier]: if rna_func not in rna_base_func_keys: write_func(rna_func, ident+'\t', out, 'FUNCTION') - + out.write('\n') - + # Now write children recursively for child in rna_children_dict[identifier]: write_struct(child, ident + '\t') - - - + + + # out = open(target_path, 'w') out = open_submodule("types.py", BASEPATH) # bpy.types @@ -439,55 +443,55 @@ def rna2epy(BASEPATH): structs = [] for rna_type_name in dir(bpy.types): rna_type = getattr(bpy.types, rna_type_name) - - try: rna_struct = rna_type.__rna__ + + try: rna_struct = rna_type.bl_rna except: rna_struct = None - + if rna_struct: #if not rna_type_name.startswith('__'): - + identifier = rna_struct.identifier - + if not rna_id_ignore(identifier): - structs.append( (base_id(rna_struct), identifier, rna_struct) ) - + structs.append( (base_id(rna_struct), identifier, rna_struct) ) + # Simple lookup rna_struct_dict[identifier] = rna_struct - + # Store full rna path 'GameObjectSettings' -> 'Object.GameObjectSettings' rna_full_path_dict[identifier] = full_rna_struct_path(rna_struct) - + # Store a list of functions, remove inherited later rna_functions_dict[identifier]= list(rna_struct.functions) - - + + # fill in these later rna_children_dict[identifier]= [] rna_references_dict[identifier]= [] - - + + else: print("Ignoring", rna_type_name) - - + + # Sucks but we need to copy this so we can check original parent functions rna_functions_dict__copy = {} for key, val in rna_functions_dict.items(): rna_functions_dict__copy[key] = val[:] - - + + structs.sort() # not needed but speeds up sort below, setting items without an inheritance first - + # Arrange so classes are always defined in the correct order deps_ok = False while deps_ok == False: deps_ok = True rna_done = set() - + for i, (rna_base, identifier, rna_struct) in enumerate(structs): - + rna_done.add(identifier) - + if rna_base and rna_base not in rna_done: deps_ok = False data = structs.pop(i) @@ -498,92 +502,92 @@ def rna2epy(BASEPATH): ok = True break i+=1 - + if not ok: print('Dependancy "%s" could not be found for "%s"' % (identifier, rna_base)) - + break - + # Done ordering structs - - + + # precalc vars to avoid a lot of looping for (rna_base, identifier, rna_struct) in structs: - + if rna_base: rna_base_prop_keys = rna_struct_dict[rna_base].properties.keys() # could cache rna_base_func_keys = [f.identifier for f in rna_struct_dict[rna_base].functions] else: rna_base_prop_keys = [] rna_base_func_keys= [] - + # rna_struct_path = full_rna_struct_path(rna_struct) rna_struct_path = rna_full_path_dict[identifier] - + for rna_prop_identifier, rna_prop in rna_struct.properties.items(): - + if rna_prop_identifier=='RNA': continue if rna_id_ignore(rna_prop_identifier): continue if rna_prop_identifier in rna_base_prop_keys: continue - + try: rna_prop_ptr = rna_prop.fixed_type except: rna_prop_ptr = None - + # Does this property point to me? if rna_prop_ptr: rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_prop_identifier) ) - + for rna_func in rna_struct.functions: for rna_prop_identifier, rna_prop in rna_func.parameters.items(): - + if rna_prop_identifier=='RNA': continue if rna_id_ignore(rna_prop_identifier): continue if rna_prop_identifier in rna_base_func_keys: continue - - + + try: rna_prop_ptr = rna_prop.fixed_type except: rna_prop_ptr = None - + # Does this property point to me? if rna_prop_ptr: rna_references_dict[rna_prop_ptr.identifier].append( "%s.%s" % (rna_struct_path, rna_func.identifier) ) - - + + # Store nested children nested = rna_struct.nested if nested: rna_children_dict[nested.identifier].append(rna_struct) - - + + if rna_base: rna_funcs = rna_functions_dict[identifier] if rna_funcs: # Remove inherited functions if we have any rna_base_funcs = rna_functions_dict__copy[rna_base] rna_funcs[:] = [f for f in rna_funcs if f not in rna_base_funcs] - + rna_functions_dict__copy.clear() del rna_functions_dict__copy - + # Sort the refs, just reads nicer for rna_refs in rna_references_dict.values(): rna_refs.sort() - + for (rna_base, identifier, rna_struct) in structs: if rna_struct.nested: continue - + write_struct(rna_struct, '') - - + + out.write('\n') out.close() - + # # We could also just run.... # os.system('epydoc source/blender/python/doc/rna.py -o ./source/blender/python/doc/html -v') - + target_path = os.path.join(BASEPATH, "dump.py") # XXX - used for other funcs - + # Write graphviz out= open(target_path.replace('.py', '.dot'), 'w') out.write('digraph "rna data api" {\n') @@ -592,78 +596,78 @@ def rna2epy(BASEPATH): out.write('\trankdir = LR;\n') out.write('\tsplines=true;\n') out.write('\tratio=auto;\n') - - - + + + out.write('\tsize="10,10"\n') #out.write('\tpage="8.5,11"\n') #out.write('\tcenter=""\n') - + def isop(rna_struct): return '_OT_' in rna_struct.identifier - - + + for (rna_base, identifier, rna_struct) in structs: if isop(rna_struct): continue - + base = rna_struct.base - - + + out.write('\t"%s";\n' % identifier) - + for (rna_base, identifier, rna_struct) in structs: - + if isop(rna_struct): continue - + base = rna_struct.base - + if base and not isop(base): out.write('\t"%s" -> "%s" [label="(base)" weight=1.0];\n' % (base.identifier, identifier)) - + nested = rna_struct.nested if nested and not isop(nested): out.write('\t"%s" -> "%s" [label="(nested)" weight=1.0];\n' % (nested.identifier, identifier)) - - - + + + rna_refs= rna_references_dict[identifier] - + for rna_ref_string in rna_refs: - + if '_OT_' in rna_ref_string: continue - + ref = rna_ref_string.split('.')[-2] out.write('\t"%s" -> "%s" [label="%s" weight=0.01];\n' % (ref, identifier, rna_ref_string)) - - + + out.write('}\n') out.close() - + # # We could also just run.... # os.system('dot source/blender/python/doc/rna.dot -Tsvg -o ./source/blender/python/doc/rna.svg') - - + + out= open(target_path.replace('.py', '.words'), 'w') rna_words = list(rna_words) rna_words.sort() for w in rna_words: out.write('%s\n' % w) - + def op2epy(BASEPATH): # out = open(target_path, 'w') - + op_mods = dir(bpy.ops) op_mods.remove('add') op_mods.remove('remove') - + for op_mod_name in sorted(op_mods): if op_mod_name.startswith('__'): continue - + # open the submodule mod_path = os.path.join("ops", op_mod_name + ".py") out = open_submodule(mod_path, BASEPATH) @@ -672,10 +676,10 @@ def op2epy(BASEPATH): op_mod = getattr(bpy.ops, op_mod_name) operators = dir(op_mod) for op in sorted(operators): - # rna = getattr(bpy.types, op).__rna__ + # rna = getattr(bpy.types, op).bl_rna rna = getattr(op_mod, op).get_rna() write_func(rna, '', out, 'OPERATOR') - + out.write('\n') out.close() @@ -683,7 +687,7 @@ def misc2epy(BASEPATH): ''' Hard coded modules, try to avoid adding stuff here ''' - + f = append_package(os.path.join(BASEPATH, ""), ""); # add a slash on the end of the base path f.write(''' """ @@ -715,7 +719,7 @@ def StringProperty(attr, name="", description="", maxlen=0, default=""): def EnumProperty(attr, items, name="", description="", default=""): """ return a new enum property - """ + """ ''') @@ -727,9 +731,9 @@ if __name__ == '__main__': misc2epy('source/blender/python/doc/bpy') # first to write in info in some of the modules. rna2epy('source/blender/python/doc/bpy') op2epy('source/blender/python/doc/bpy') - - + + close_all() - + import sys sys.exit() diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index da3a75e8c59..0677d81407c 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -63,6 +63,7 @@ #include "BKE_context.h" #include "BKE_fcurve.h" #include "BKE_text.h" +#include "BKE_context.h" #include "BPY_extern.h" @@ -100,8 +101,6 @@ void bpy_context_set(bContext *C, PyGILState_STATE *gilstate) if(py_call_level==1) { - BPY_update_modules(); /* can give really bad results if this isnt here */ - if(C) { // XXX - should always be true. BPy_SetContext(C); bpy_import_main_set(CTX_data_main(C)); @@ -110,6 +109,8 @@ void bpy_context_set(bContext *C, PyGILState_STATE *gilstate) fprintf(stderr, "ERROR: Python context called with a NULL Context. this should not happen!\n"); } + BPY_update_modules(); /* can give really bad results if this isnt here */ + #ifdef TIME_PY_RUN if(bpy_timer_count==0) { /* record time from the beginning */ @@ -170,6 +171,7 @@ void BPY_free_compiled_text( struct Text *text ) /***************************************************************************** * Description: Creates the bpy module and adds it to sys.modules for importing *****************************************************************************/ +static BPy_StructRNA *bpy_context_module= NULL; /* for fast access */ static void bpy_init_modules( void ) { PyObject *mod; @@ -199,9 +201,19 @@ static void bpy_init_modules( void ) } bpy_import_test("bpy_ops"); /* adds its self to bpy.ops */ - bpy_import_test("bpy_sys"); /* adds its self to bpy.sys */ + bpy_import_test("bpy_utils"); /* adds its self to bpy.sys */ + bpy_import_test("bpy_ext"); /* extensions to our existing types */ } + /* bpy context */ + { + bpy_context_module= ( BPy_StructRNA * ) PyObject_NEW( BPy_StructRNA, &pyrna_struct_Type ); + RNA_pointer_create(NULL, &RNA_Context, NULL, &bpy_context_module->ptr); + + PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module); + } + + /* stand alone utility modules not related to blender directly */ Geometry_Init(); Mathutils_Init(); @@ -218,7 +230,7 @@ void BPY_update_modules( void ) /* refreshes the main struct */ BPY_update_rna_module(); - + bpy_context_module->ptr.data= (void *)BPy_GetContext(); } /***************************************************************************** @@ -608,7 +620,7 @@ void BPY_run_ui_scripts(bContext *C, int reload) char *file_extension; char *dirname; char path[FILE_MAX]; - char *dirs[] = {"scripts/ui", "scripts/io", NULL}; + char *dirs[] = {"scripts/ui", "scripts/op", "scripts/io", NULL}; int path_flags[] = {BLI_GETHOME_LOCAL|BLI_GETHOME_SYSTEM, BLI_GETHOME_USER}; /* SYSTEM / NON-SYSTEM */ int a, err, flag_iter; @@ -950,3 +962,65 @@ int BPY_button_eval(bContext *C, char *expr, double *value) return error_ret; } + + +int bpy_context_get(bContext *C, const char *member, bContextDataResult *result) +{ + PyObject *pyctx= (PyObject *)CTX_py_dict_get(C); + PyObject *item= PyDict_GetItemString(pyctx, member); + PointerRNA *ptr= NULL; + int done= 0; + + if(item==NULL) { + /* pass */ + } + else if(item==Py_None) { + /* pass */ + } + else if(BPy_StructRNA_Check(item)) { + ptr= &(((BPy_StructRNA *)item)->ptr); + + //result->ptr= ((BPy_StructRNA *)item)->ptr; + CTX_data_pointer_set(result, ptr->id.data, ptr->type, ptr->data); + done= 1; + } + else if (PySequence_Check(item)) { + PyObject *seq_fast= PySequence_Fast(item, "bpy_context_get sequence conversion"); + if (seq_fast==NULL) { + PyErr_Print(); + PyErr_Clear(); + } + else { + int len= PySequence_Fast_GET_SIZE(seq_fast); + int i; + for(i = 0; i < len; i++) { + PyObject *list_item= PySequence_Fast_GET_ITEM(seq_fast, i); + + if(BPy_StructRNA_Check(list_item)) { + /* + CollectionPointerLink *link= MEM_callocN(sizeof(CollectionPointerLink), "bpy_context_get"); + link->ptr= ((BPy_StructRNA *)item)->ptr; + BLI_addtail(&result->list, link); + */ + ptr= &(((BPy_StructRNA *)list_item)->ptr); + CTX_data_list_add(result, ptr->id.data, ptr->type, ptr->data); + } + else { + printf("List item not a valid type\n"); + } + + } + Py_DECREF(seq_fast); + + done= 1; + } + } + + if(done==0) { + if (item) printf("Context '%s' not found\n", member); + else printf("Context '%s' not a valid type\n", member); + } + + return done; +} + diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index 87752ca9c58..274f8089b84 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -48,6 +48,8 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) char *opname; PyObject *kw= NULL; /* optional args */ + PyObject *context_dict= NULL; /* optional args */ + PyObject *context_dict_back; /* note that context is an int, python does the conversion in this case */ int context= WM_OP_EXEC_DEFAULT; @@ -55,7 +57,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) // XXX Todo, work out a better solution for passing on context, could make a tuple from self and pack the name and Context into it... bContext *C = BPy_GetContext(); - if (!PyArg_ParseTuple(args, "s|O!i:bpy.__ops__.call", &opname, &PyDict_Type, &kw, &context)) + if (!PyArg_ParseTuple(args, "sO|O!i:bpy.__ops__.call", &opname, &context_dict, &PyDict_Type, &kw, &context)) return NULL; ot= WM_operatortype_find(opname, TRUE); @@ -65,19 +67,27 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) return NULL; } + if(!PyDict_Check(context_dict)) + context_dict= NULL; + + context_dict_back= CTX_py_dict_get(C); + + CTX_py_dict_set(C, (void *)context_dict); + Py_XINCREF(context_dict); /* so we done loose it */ + if(WM_operator_poll((bContext*)C, ot) == FALSE) { PyErr_SetString( PyExc_SystemError, "bpy.__ops__.call: operator poll() function failed, context is incorrect"); - return NULL; + error_val= -1; } - + else { /* WM_operator_properties_create(&ptr, opname); */ /* Save another lookup */ RNA_pointer_create(NULL, ot->srna, NULL, &ptr); - + if(kw && PyDict_Size(kw)) error_val= pyrna_pydict_to_props(&ptr, kw, 0, "Converting py args to operator properties: "); - + if (error_val==0) { ReportList *reports; @@ -92,13 +102,13 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) /* operator output is nice to have in the terminal/console too */ if(reports->list.first) { char *report_str= BKE_reports_string(reports, 0); /* all reports */ - + if(report_str) { PySys_WriteStdout("%s\n", report_str); MEM_freeN(report_str); } } - + BKE_reports_clear(reports); if ((reports->flag & RPT_FREE) == 0) { @@ -120,6 +130,11 @@ static PyObject *pyop_call( PyObject * self, PyObject * args) WM_operator_name_call(C, opname, WM_OP_EXEC_DEFAULT, NULL); } #endif + } + + /* restore with original context dict, probably NULL but need this for nested operator calls */ + Py_XDECREF(context_dict); + CTX_py_dict_set(C, (void *)context_dict_back); if (error_val==-1) { return NULL; diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c index 769a8336d4a..779a27639a4 100644 --- a/source/blender/python/intern/bpy_operator_wrap.c +++ b/source/blender/python/intern/bpy_operator_wrap.c @@ -41,13 +41,12 @@ #include "../generic/bpy_internal_import.h" // our own imports -#define PYOP_ATTR_PROP "__props__" -#define PYOP_ATTR_UINAME "__label__" -#define PYOP_ATTR_IDNAME "__idname__" /* the name given by python */ -#define PYOP_ATTR_IDNAME_BL "__idname_bl__" /* our own name converted into blender syntax, users wont see this */ +#define PYOP_ATTR_UINAME "bl_label" +#define PYOP_ATTR_IDNAME "bl_idname" /* the name given by python */ +#define PYOP_ATTR_IDNAME_BL "_bl_idname" /* our own name converted into blender syntax, users wont see this */ #define PYOP_ATTR_DESCRIPTION "__doc__" /* use pythons docstring */ -#define PYOP_ATTR_REGISTER "__register__" /* True/False. if this python operator should be registered */ -#define PYOP_ATTR_UNDO "__undo__" /* True/False. if this python operator should be undone */ +#define PYOP_ATTR_REGISTER "bl_register" /* True/False. if this python operator should be registered */ +#define PYOP_ATTR_UNDO "bl_undo" /* True/False. if this python operator should be undone */ static struct BPY_flag_def pyop_ret_flags[] = { {"RUNNING_MODAL", OPERATOR_RUNNING_MODAL}, @@ -91,19 +90,23 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat PointerRNA ptr_context; PointerRNA ptr_operator; PointerRNA ptr_event; - PyObject *py_operator; PyGILState_STATE gilstate; bpy_context_set(C, &gilstate); args = PyTuple_New(1); - PyTuple_SET_ITEM(args, 0, PyObject_GetAttrString(py_class, "__rna__")); // need to use an rna instance as the first arg + + /* poll has no 'op', should be ok still */ + /* use an rna instance as the first arg */ + RNA_pointer_create(NULL, &RNA_Operator, op, &ptr_operator); + PyTuple_SET_ITEM(args, 0, pyrna_struct_CreatePyObject(&ptr_operator)); + py_class_instance = PyObject_Call(py_class, args, NULL); Py_DECREF(args); if (py_class_instance) { /* Initializing the class worked, now run its invoke function */ - + PyObject *class_dict= PyObject_GetAttrString(py_class_instance, "__dict__"); /* Assign instance attributes from operator properties */ if(op) { @@ -115,20 +118,12 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat if (strcmp(arg_name, "rna_type")==0) continue; item = pyrna_prop_to_py(op->ptr, prop); - PyObject_SetAttrString(py_class_instance, arg_name, item); + PyDict_SetItemString(class_dict, arg_name, item); Py_DECREF(item); } RNA_STRUCT_END; } - /* set operator pointer RNA as instance "__operator__" attribute */ - if(op) { - RNA_pointer_create(NULL, &RNA_Operator, op, &ptr_operator); - py_operator= pyrna_struct_CreatePyObject(&ptr_operator); - PyObject_SetAttrString(py_class_instance, "__operator__", py_operator); - Py_DECREF(py_operator); - } - RNA_pointer_create(NULL, &RNA_Context, C, &ptr_context); if (mode==PYOP_INVOKE) { @@ -159,6 +154,11 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat Py_DECREF(args); Py_DECREF(item); + Py_DECREF(class_dict); + } + else { + PyErr_Print(); + PyErr_Clear(); } if (ret == NULL) { /* covers py_class_instance failing too */ @@ -178,8 +178,10 @@ static int PYTHON_OT_generic(int mode, bContext *C, wmOperatorType *ot, wmOperat } else if (BPY_flag_from_seq(pyop_ret_flags, ret, &ret_flag) == -1) { /* the returned value could not be converted into a flag */ - if(op) + if(op) { + fprintf(stderr, "error using return value from \"%s\"\n", op->idname); // for some reason the error raised doesnt include file:line... this helps BPy_errors_to_report(op->reports); + } ret_flag = OPERATOR_CANCELLED; } @@ -246,7 +248,7 @@ static int PYTHON_OT_poll(bContext *C, wmOperatorType *ot) void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) { PyObject *py_class = (PyObject *)userdata; - PyObject *props, *item; + PyObject *item; /* identifiers */ item= PyObject_GetAttrString(py_class, PYOP_ATTR_IDNAME_BL); @@ -300,46 +302,18 @@ void PYTHON_OT_wrapper(wmOperatorType *ot, void *userdata) PyErr_Clear(); } - - - props= PyObject_GetAttrString(py_class, PYOP_ATTR_PROP); - - if (props) { - PyObject *dummy_args = PyTuple_New(0); - int i; - - for(i=0; i<PyList_Size(props); i++) { - PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret; - item = PyList_GET_ITEM(props, i); - - if (PyArg_ParseTuple(item, "O!O!:PYTHON_OT_wrapper", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) { - - PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); - pyfunc = PyCObject_AsVoidPtr(py_func_ptr); - py_srna_cobject = PyCObject_FromVoidPtr(ot->srna, NULL); - - py_ret = pyfunc(py_srna_cobject, dummy_args, py_kw); - if (py_ret) { - Py_DECREF(py_ret); - } else { - fprintf(stderr, "BPy Operator \"%s\" registration error: %s item %d could not run\n", ot->idname, PYOP_ATTR_PROP, i); - PyLineSpit(); + /* Can't use this because it returns a dict proxy + * + * item= PyObject_GetAttrString(py_class, "__dict__"); + */ + item= ((PyTypeObject*)py_class)->tp_dict; + if(item) { + if(pyrna_deferred_register_props(ot->srna, item)!=0) { PyErr_Print(); PyErr_Clear(); } - Py_DECREF(py_srna_cobject); - - } else { - /* cant return NULL from here */ // XXX a bit ugly - PyErr_Print(); - PyErr_Clear(); } - - // expect a tuple with a CObject and a dict - } - Py_DECREF(dummy_args); - Py_DECREF(props); - } else { + else { PyErr_Clear(); } } @@ -354,12 +328,10 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) char *idname= NULL; char idname_bl[OP_MAX_TYPENAME]; /* converted to blender syntax */ - int i; static struct BPY_class_attr_check pyop_class_attr_values[]= { {PYOP_ATTR_IDNAME, 's', -1, OP_MAX_TYPENAME-3, 0}, /* -3 because a.b -> A_OT_b */ {PYOP_ATTR_UINAME, 's', -1,-1, BPY_CLASS_ATTR_OPTIONAL}, - {PYOP_ATTR_PROP, 'l', -1,-1, BPY_CLASS_ATTR_OPTIONAL}, {PYOP_ATTR_DESCRIPTION, 's', -1,-1, BPY_CLASS_ATTR_NONE_OK}, {"execute", 'f', 2, -1, BPY_CLASS_ATTR_OPTIONAL}, {"invoke", 'f', 3, -1, BPY_CLASS_ATTR_OPTIONAL}, @@ -400,24 +372,6 @@ PyObject *PYOP_wrap_add(PyObject *self, PyObject *py_class) WM_operatortype_remove(idname); } - /* If we have properties set, check its a list of dicts */ - item= PyObject_GetAttrString(py_class, PYOP_ATTR_PROP); - if (item) { - for(i=0; i<PyList_Size(item); i++) { - PyObject *py_args = PyList_GET_ITEM(item, i); - PyObject *py_func_ptr, *py_kw; /* place holders */ - - if (!PyArg_ParseTuple(py_args, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) { - PyErr_Format(PyExc_ValueError, "Cant register operator class - %s.properties must contain values from FloatProperty", idname); - return NULL; - } - } - Py_DECREF(item); - } - else { - PyErr_Clear(); - } - Py_INCREF(py_class); WM_operatortype_append_ptr(PYTHON_OT_wrapper, py_class); diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index a60de529e8f..c29eafc8b74 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -41,6 +41,7 @@ /* only for keyframing */ #include "DNA_scene_types.h" +#include "DNA_anim_types.h" #include "ED_keyframing.h" #define USE_MATHUTILS @@ -71,6 +72,7 @@ static int mathutils_rna_vector_set(BPy_PropertyRNA *self, int subtype, float *v return 0; RNA_property_float_set_array(&self->ptr, self->prop, vec_to); + RNA_property_update(BPy_GetContext(), &self->ptr, self->prop); return 1; } @@ -89,6 +91,7 @@ static int mathutils_rna_vector_set_index(BPy_PropertyRNA *self, int subtype, fl return 0; RNA_property_float_set_index(&self->ptr, self->prop, index, vec_to[index]); + RNA_property_update(BPy_GetContext(), &self->ptr, self->prop); return 1; } @@ -119,6 +122,7 @@ static int mathutils_rna_matrix_set(BPy_PropertyRNA *self, int subtype, float *m return 0; RNA_property_float_set_array(&self->ptr, self->prop, mat_to); + RNA_property_update(BPy_GetContext(), &self->ptr, self->prop); return 1; } @@ -1124,11 +1128,24 @@ static int pyrna_prop_contains(BPy_PropertyRNA * self, PyObject *value) return 0; } +static PyObject *pyrna_prop_item(BPy_PropertyRNA * self, Py_ssize_t index) +{ + /* reuse subscript functions */ + if (RNA_property_type(self->prop) == PROP_COLLECTION) { + return prop_subscript_collection_int(self, index); + } else if (RNA_property_array_check(&self->ptr, self->prop)) { + return prop_subscript_array_int(self, index); + } + + PyErr_SetString(PyExc_TypeError, "rna type is not an array or a collection"); + return NULL; +} + static PySequenceMethods pyrna_prop_as_sequence = { NULL, /* Cant set the len otherwise it can evaluate as false */ NULL, /* sq_concat */ NULL, /* sq_repeat */ - NULL, /* sq_item */ + (ssizeargfunc)pyrna_prop_item, /* sq_item */ /* Only set this so PySequence_Check() returns True */ NULL, /* sq_slice */ NULL, /* sq_ass_item */ NULL, /* sq_ass_slice */ @@ -1138,21 +1155,87 @@ static PySequenceMethods pyrna_prop_as_sequence = { static PyObject *pyrna_struct_keyframe_insert(BPy_StructRNA * self, PyObject *args) { - char *path; - int index= 0; + char *path, *path_full; + int index= -1; /* default to all */ float cfra = CTX_data_scene(BPy_GetContext())->r.cfra; + PropertyRNA *prop; + PyObject *result; - if(!RNA_struct_is_ID(self->ptr.type)) { - PyErr_SetString( PyExc_TypeError, "StructRNA - keyframe_insert only for ID type"); + if (!PyArg_ParseTuple(args, "s|if:keyframe_insert", &path, &index, &cfra)) + return NULL; + + if (self->ptr.data==NULL) { + PyErr_Format( PyExc_TypeError, "keyframe_insert, this struct has no data, cant be animated", path); return NULL; } - if (!PyArg_ParseTuple(args, "s|if:keyframe_insert", &path, &index, &cfra)) + prop = RNA_struct_find_property(&self->ptr, path); + + if (prop==NULL) { + PyErr_Format( PyExc_TypeError, "keyframe_insert, property \"%s\" not found", path); return NULL; + } + + if (!RNA_property_animateable(&self->ptr, prop)) { + PyErr_Format( PyExc_TypeError, "keyframe_insert, property \"%s\" not animatable", path); + return NULL; + } + + path_full= RNA_path_from_ID_to_property(&self->ptr, prop); - return PyBool_FromLong( insert_keyframe((ID *)self->ptr.data, NULL, NULL, path, index, cfra, 0)); + if (path_full==NULL) { + PyErr_Format( PyExc_TypeError, "keyframe_insert, could not make path to \"%s\"", path); + return NULL; + } + + result= PyBool_FromLong( insert_keyframe((ID *)self->ptr.id.data, NULL, NULL, path_full, index, cfra, 0)); + MEM_freeN(path_full); + + return result; } + +static PyObject *pyrna_struct_driver_add(BPy_StructRNA * self, PyObject *args) +{ + char *path, *path_full; + int index= -1; /* default to all */ + PropertyRNA *prop; + PyObject *result; + + if (!PyArg_ParseTuple(args, "s|i:driver_add", &path, &index)) + return NULL; + + if (self->ptr.data==NULL) { + PyErr_Format( PyExc_TypeError, "driver_add, this struct has no data, cant be animated", path); + return NULL; + } + + prop = RNA_struct_find_property(&self->ptr, path); + + if (prop==NULL) { + PyErr_Format( PyExc_TypeError, "driver_add, property \"%s\" not found", path); + return NULL; + } + + if (!RNA_property_animateable(&self->ptr, prop)) { + PyErr_Format( PyExc_TypeError, "driver_add, property \"%s\" not animatable", path); + return NULL; + } + + path_full= RNA_path_from_ID_to_property(&self->ptr, prop); + + if (path_full==NULL) { + PyErr_Format( PyExc_TypeError, "driver_add, could not make path to \"%s\"", path); + return NULL; + } + + result= PyBool_FromLong( ANIM_add_driver((ID *)self->ptr.id.data, path_full, index, 0, DRIVER_TYPE_PYTHON)); + MEM_freeN(path_full); + + return result; +} + + static PyObject *pyrna_struct_is_property_set(BPy_StructRNA * self, PyObject *args) { char *name; @@ -1178,7 +1261,6 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA * self, PyObject return PyBool_FromLong(hidden); } - static PyObject *pyrna_struct_dir(BPy_StructRNA * self) { PyObject *ret, *dict; @@ -1263,6 +1345,13 @@ static PyObject *pyrna_struct_dir(BPy_StructRNA * self) BLI_freelistN(&lb); } + /* Hard coded names */ + { + pystring = PyUnicode_FromString("id_data"); + PyList_Append(ret, pystring); + Py_DECREF(pystring); + } + return ret; } @@ -1319,6 +1408,16 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA * self, PyObject *pyname ) BLI_freelistN(&newlb); } + else if (strcmp(name, "id_data")==0) { /* XXX - hard coded */ + if(self->ptr.id.data) { + PointerRNA id_ptr; + RNA_id_pointer_create((ID *)self->ptr.id.data, &id_ptr); + return pyrna_struct_CreatePyObject(&id_ptr); + } + else { + Py_RETURN_NONE; + } + } else { PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name); ret = NULL; @@ -1334,10 +1433,14 @@ static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObje PropertyRNA *prop = RNA_struct_find_property(&self->ptr, name); if (prop==NULL) { + // XXX - This currently allows anything to be assigned to an rna prop, need to see how this should be used + // but for now it makes porting scripts confusing since it fails silently. +#if 0 if (!BPy_StructRNA_CheckExact(self) && PyObject_GenericSetAttr((PyObject *)self, pyname, value) >= 0) { return 0; - } - else { + } else +#endif + { PyErr_Format( PyExc_AttributeError, "StructRNA - Attribute \"%.200s\" not found", name); return -1; } @@ -1352,6 +1455,54 @@ static int pyrna_struct_setattro( BPy_StructRNA * self, PyObject *pyname, PyObje return pyrna_py_to_prop(&self->ptr, prop, NULL, value, "StructRNA - Attribute (setattr):"); } +static PyObject *pyrna_prop_getattro( BPy_PropertyRNA * self, PyObject *pyname ) +{ + char *name = _PyUnicode_AsString(pyname); + + if(strcmp(name, "active")==0) { + PropertyRNA *prop_act; + + if (RNA_property_type(self->prop) != PROP_COLLECTION) { + PyErr_SetString( PyExc_TypeError, "this BPy_PropertyRNA object is not a collection"); + return NULL; + } + + prop_act= RNA_property_collection_active(self->prop); + if (prop_act==NULL) { + PyErr_SetString( PyExc_TypeError, "collection has no active"); + return NULL; + } + + return pyrna_prop_to_py(&self->ptr, prop_act); + } + + return PyObject_GenericGetAttr((PyObject *)self, pyname); +} + +//--------------- setattr------------------------------------------- +static int pyrna_prop_setattro( BPy_PropertyRNA * self, PyObject *pyname, PyObject * value ) +{ + char *name = _PyUnicode_AsString(pyname); + if(strcmp(name, "active")==0) { + PropertyRNA *prop_act; + + if (RNA_property_type(self->prop) != PROP_COLLECTION) { + PyErr_SetString( PyExc_TypeError, "this BPy_PropertyRNA object is not a collection"); + return -1; + } + + prop_act= RNA_property_collection_active(self->prop); + if (prop_act==NULL) { + PyErr_SetString( PyExc_TypeError, "collection has no active"); + return -1; + } + + return pyrna_py_to_prop(&self->ptr, prop_act, NULL, value, "StructRNA - Attribute (setattr):"); + } + + return PyObject_GenericSetAttr((PyObject *)self, pyname, value); +} + static PyObject *pyrna_prop_keys(BPy_PropertyRNA *self) { PyObject *ret; @@ -1770,6 +1921,7 @@ static struct PyMethodDef pyrna_struct_methods[] = { /* maybe this become and ID function */ {"keyframe_insert", (PyCFunction)pyrna_struct_keyframe_insert, METH_VARARGS, NULL}, + {"driver_add", (PyCFunction)pyrna_struct_driver_add, METH_VARARGS, NULL}, {"is_property_set", (PyCFunction)pyrna_struct_is_property_set, METH_VARARGS, NULL}, {"is_property_hidden", (PyCFunction)pyrna_struct_is_property_hidden, METH_VARARGS, NULL}, @@ -1790,7 +1942,6 @@ static struct PyMethodDef pyrna_prop_methods[] = { /* array accessor function */ {"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL}, {"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL}, - {NULL, NULL, 0, NULL} }; @@ -2261,8 +2412,10 @@ PyTypeObject pyrna_prop_Type = { NULL, /* hashfunc tp_hash; */ NULL, /* ternaryfunc tp_call; */ NULL, /* reprfunc tp_str; */ - NULL, /*PyObject_GenericGetAttr - MINGW Complains, assign later */ /* getattrofunc tp_getattro; */ /* will only use these if this is a subtype of a py class */ - NULL, /*PyObject_GenericSetAttr - MINGW Complains, assign later */ /* setattrofunc tp_setattro; */ + + /* will only use these if this is a subtype of a py class */ + ( getattrofunc ) pyrna_prop_getattro, /* getattrofunc tp_getattro; */ + ( setattrofunc ) pyrna_prop_setattro, /* setattrofunc tp_setattro; */ /* Functions to access object as input/output buffer */ NULL, /* PyBufferProcs *tp_as_buffer; */ @@ -2350,7 +2503,7 @@ static void pyrna_subtype_set_rna(PyObject *newclass, StructRNA *srna) item = pyrna_struct_CreatePyObject(&ptr); //item = PyCObject_FromVoidPtr(srna, NULL); - PyDict_SetItemString(((PyTypeObject *)newclass)->tp_dict, "__rna__", item); + PyDict_SetItemString(((PyTypeObject *)newclass)->tp_dict, "bl_rna", item); Py_DECREF(item); /* done with rna instance */ @@ -2529,10 +2682,6 @@ PyObject *BPY_rna_module( void ) mathutils_rna_matrix_cb_index= Mathutils_RegisterCallback(&mathutils_rna_matrix_cb); #endif - /* This can't be set in the pytype struct because some compilers complain */ - pyrna_prop_Type.tp_getattro = PyObject_GenericGetAttr; - pyrna_prop_Type.tp_setattro = PyObject_GenericSetAttr; - if( PyType_Ready( &pyrna_struct_Type ) < 0 ) return NULL; @@ -2666,6 +2815,7 @@ PyObject *BPY_rna_props( void ) { PyObject *submodule; submodule= PyModule_Create(&props_module); + PyDict_SetItemString(PySys_GetObject("modules"), props_module.m_name, submodule); /* INCREF since its its assumed that all these functions return the * module with a new ref like PyDict_New, since they are passed to @@ -2682,26 +2832,26 @@ static StructRNA *pyrna_struct_as_srna(PyObject *self) /* ack, PyObject_GetAttrString wont look up this types tp_dict first :/ */ if(PyType_Check(self)) { - py_srna = (BPy_StructRNA *)PyDict_GetItemString(((PyTypeObject *)self)->tp_dict, "__rna__"); + py_srna = (BPy_StructRNA *)PyDict_GetItemString(((PyTypeObject *)self)->tp_dict, "bl_rna"); Py_XINCREF(py_srna); } if(py_srna==NULL) - py_srna = (BPy_StructRNA*)PyObject_GetAttrString(self, "__rna__"); + py_srna = (BPy_StructRNA*)PyObject_GetAttrString(self, "bl_rna"); if(py_srna==NULL) { - PyErr_SetString(PyExc_SystemError, "internal error, self had no __rna__ attribute, should never happen."); + PyErr_SetString(PyExc_SystemError, "internal error, self had no bl_rna attribute, should never happen."); return NULL; } if(!BPy_StructRNA_Check(py_srna)) { - PyErr_Format(PyExc_SystemError, "internal error, __rna__ was of type %.200s, instead of %.200s instance.", Py_TYPE(py_srna)->tp_name, pyrna_struct_Type.tp_name); + PyErr_Format(PyExc_SystemError, "internal error, bl_rna was of type %.200s, instead of %.200s instance.", Py_TYPE(py_srna)->tp_name, pyrna_struct_Type.tp_name); Py_DECREF(py_srna); return NULL; } if(py_srna->ptr.type != &RNA_Struct) { - PyErr_SetString(PyExc_SystemError, "internal error, __rna__ was not a RNA_Struct type of rna struct."); + PyErr_SetString(PyExc_SystemError, "internal error, bl_rna was not a RNA_Struct type of rna struct."); Py_DECREF(py_srna); return NULL; } @@ -2755,13 +2905,10 @@ static PyObject *bpy_prop_deferred_return(void *func, PyObject *kw) PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "name", "description", "default", NULL}; - char *id, *name="", *description=""; + char *id=NULL, *name="", *description=""; int def=0; PropertyRNA *prop; StructRNA *srna; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssi:BoolProperty", kwlist, &id, &name, &description, &def)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2773,6 +2920,10 @@ PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssi:BoolProperty", kwlist, &id, &name, &description, &def)) + return NULL; + prop= RNA_def_boolean(srna, id, def, name, description); RNA_def_property_duplicate_pointers(prop); Py_RETURN_NONE; @@ -2785,13 +2936,10 @@ PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw) PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "name", "description", "min", "max", "soft_min", "soft_max", "default", NULL}; - char *id, *name="", *description=""; + char *id=NULL, *name="", *description=""; int min=INT_MIN, max=INT_MAX, soft_min=INT_MIN, soft_max=INT_MAX, def=0; PropertyRNA *prop; StructRNA *srna; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiii:IntProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2803,6 +2951,10 @@ PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssiiiii:IntProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def)) + return NULL; + prop= RNA_def_int(srna, id, def, min, max, name, description, soft_min, soft_max); RNA_def_property_duplicate_pointers(prop); Py_RETURN_NONE; @@ -2815,13 +2967,10 @@ PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw) PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "name", "description", "min", "max", "soft_min", "soft_max", "default", NULL}; - char *id, *name="", *description=""; + char *id=NULL, *name="", *description=""; float min=-FLT_MAX, max=FLT_MAX, soft_min=-FLT_MAX, soft_max=FLT_MAX, def=0.0f; PropertyRNA *prop; StructRNA *srna; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssfffff:FloatProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2833,6 +2982,10 @@ PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssfffff:FloatProperty", kwlist, &id, &name, &description, &min, &max, &soft_min, &soft_max, &def)) + return NULL; + prop= RNA_def_float(srna, id, def, min, max, name, description, soft_min, soft_max); RNA_def_property_duplicate_pointers(prop); Py_RETURN_NONE; @@ -2845,13 +2998,10 @@ PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw) PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "name", "description", "maxlen", "default", NULL}; - char *id, *name="", *description="", *def=""; + char *id=NULL, *name="", *description="", *def=""; int maxlen=0; PropertyRNA *prop; StructRNA *srna; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssis:StringProperty", kwlist, &id, &name, &description, &maxlen, &def)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2863,6 +3013,10 @@ PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssis:StringProperty", kwlist, &id, &name, &description, &maxlen, &def)) + return NULL; + prop= RNA_def_string(srna, id, def, maxlen, name, description); RNA_def_property_duplicate_pointers(prop); Py_RETURN_NONE; @@ -2921,15 +3075,12 @@ static EnumPropertyItem *enum_items_from_py(PyObject *value, const char *def, in PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "items", "name", "description", "default", NULL}; - char *id, *name="", *description="", *def=""; + char *id=NULL, *name="", *description="", *def=""; int defvalue=0; PyObject *items= Py_None; EnumPropertyItem *eitems; PropertyRNA *prop; StructRNA *srna; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sss:EnumProperty", kwlist, &id, &items, &name, &description, &def)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2941,6 +3092,10 @@ PyObject *BPy_EnumProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|sss:EnumProperty", kwlist, &id, &items, &name, &description, &def)) + return NULL; + eitems= enum_items_from_py(items, def, &defvalue); if(!eitems) return NULL; @@ -2977,13 +3132,10 @@ static StructRNA *pointer_type_from_py(PyObject *value) PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "type", "name", "description", NULL}; - char *id, *name="", *description=""; + char *id=NULL, *name="", *description=""; PropertyRNA *prop; StructRNA *srna, *ptype; PyObject *type= Py_None; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:PointerProperty", kwlist, &id, &type, &name, &description)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -2995,6 +3147,10 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:PointerProperty", kwlist, &id, &type, &name, &description)) + return NULL; + ptype= pointer_type_from_py(type); if(!ptype) return NULL; @@ -3012,13 +3168,10 @@ PyObject *BPy_PointerProperty(PyObject *self, PyObject *args, PyObject *kw) PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) { static char *kwlist[] = {"attr", "type", "name", "description", NULL}; - char *id, *name="", *description=""; + char *id=NULL, *name="", *description=""; PropertyRNA *prop; StructRNA *srna, *ptype; PyObject *type= Py_None; - - if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:CollectionProperty", kwlist, &id, &type, &name, &description)) - return NULL; if (PyTuple_Size(args) > 0) { PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this. @@ -3030,6 +3183,10 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; /* self's type was compatible but error getting the srna */ } else if(srna) { + + if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ss:CollectionProperty", kwlist, &id, &type, &name, &description)) + return NULL; + ptype= pointer_type_from_py(type); if(!ptype) return NULL; @@ -3044,29 +3201,27 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw) return NULL; } -static int deferred_register_props(PyObject *py_class, StructRNA *srna) +int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict) { - PyObject *props, *dummy_args, *item; - int i; - - props= PyObject_GetAttrString(py_class, "__props__"); - - if(!props) { - PyErr_Clear(); - return 1; - } + PyObject *dummy_args, *item, *key; + Py_ssize_t pos = 0; dummy_args = PyTuple_New(0); - - for(i=0; i<PyList_Size(props); i++) { + + while (PyDict_Next(class_dict, &pos, &key, &item)) { PyObject *py_func_ptr, *py_kw, *py_srna_cobject, *py_ret; - item = PyList_GET_ITEM(props, i); - + /* We only care about results from C which + * are for sure types, save some time with error */ + if(PyTuple_CheckExact(item)) { if(PyArg_ParseTuple(item, "O!O!", &PyCObject_Type, &py_func_ptr, &PyDict_Type, &py_kw)) { + PyObject *(*pyfunc)(PyObject *, PyObject *, PyObject *); pyfunc = PyCObject_AsVoidPtr(py_func_ptr); py_srna_cobject = PyCObject_FromVoidPtr(srna, NULL); - + + /* not 100% nice :/, modifies the dict passed, should be ok */ + PyDict_SetItemString(py_kw, "attr", key); + py_ret = pyfunc(py_srna_cobject, dummy_args, py_kw); Py_DECREF(py_srna_cobject); @@ -3074,20 +3229,30 @@ static int deferred_register_props(PyObject *py_class, StructRNA *srna) Py_DECREF(py_ret); } else { + PyErr_Print(); + PyErr_Clear(); + + PyLineSpit(); + + PyErr_Format(PyExc_ValueError, "StructRNA \"%.200s\" registration error: %.200s could not run\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key)); Py_DECREF(dummy_args); - return 0; + return -1; } } else { + /* Since this is a class dict, ignore args that can't be passed */ + + /* for testing only */ + /* PyObSpit("Why doesn't this work??", item); + PyErr_Print(); */ PyErr_Clear(); - PyErr_SetString(PyExc_AttributeError, "expected list of dicts for __props__."); - Py_DECREF(dummy_args); - return 0; + } } + } Py_DECREF(dummy_args); - return 1; + return 0; } /*-------------------- Type Registration ------------------------*/ @@ -3121,7 +3286,7 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun PyObject *item, *fitem; PyObject *py_arg_count; int i, flag, arg_count, func_arg_count; - char identifier[128]; + const char *identifier; if (base_class) { if (!PyObject_IsSubclass(py_class, base_class)) { @@ -3192,11 +3357,13 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun if(!(flag & PROP_REGISTER)) continue; - BLI_snprintf(identifier, sizeof(identifier), "__%s__", RNA_property_identifier(prop)); + identifier= RNA_property_identifier(prop); item = PyObject_GetAttrString(py_class, identifier); if (item==NULL) { - if(strcmp(identifier, "__idname__") == 0) { + + /* Sneaky workaround to use the class name as the bl_idname */ + if(strcmp(identifier, "bl_idname") == 0) { item= PyObject_GetAttrString(py_class, "__name__"); if(item) { @@ -3207,7 +3374,8 @@ static int bpy_class_validate(PointerRNA *dummyptr, void *py_data, int *have_fun } } - if (item==NULL && (flag & PROP_REGISTER_OPTIONAL)==0) { + + if (item == NULL && (((flag & PROP_REGISTER_OPTIONAL) != PROP_REGISTER_OPTIONAL))) { PyErr_Format( PyExc_AttributeError, "expected %.200s class to have an \"%.200s\" attribute", class_type, identifier); return -1; } @@ -3450,8 +3618,19 @@ PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class) // Py_DECREF(py_class); // shuld be able to do this XXX since the old rna adds a new ref. } - if(!deferred_register_props(py_class, srna_new)) + /* Can't use this because it returns a dict proxy + * + * item= PyObject_GetAttrString(py_class, "__dict__"); + */ + item= ((PyTypeObject*)py_class)->tp_dict; + if(item) { + if(pyrna_deferred_register_props(srna_new, item)!=0) { return NULL; + } + } + else { + PyErr_Clear(); + } Py_RETURN_NONE; } diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index d006b168f45..d480fd3ec9b 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -91,6 +91,8 @@ PyObject *BPy_CollectionProperty(PyObject *self, PyObject *args, PyObject *kw); PyObject *pyrna_basetype_register(PyObject *self, PyObject *args); PyObject *pyrna_basetype_unregister(PyObject *self, PyObject *args); +int pyrna_deferred_register_props(struct StructRNA *srna, PyObject *class_dict); + /* called before stopping python */ void pyrna_alloc_types(void); void pyrna_free_types(void); diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c index 1766be62c83..86407e0c818 100644 --- a/source/blender/python/intern/bpy_util.c +++ b/source/blender/python/intern/bpy_util.c @@ -69,7 +69,7 @@ static char *bpy_flag_error_str(BPY_flag_def *flagdef) BLI_dynstr_appendf(dynstr, fd!=flagdef?", '%s'":"'%s'", fd->name); fd++; } - + cstring = BLI_dynstr_get_cstring(dynstr); BLI_dynstr_free(dynstr); return cstring; @@ -414,7 +414,10 @@ int BPy_errors_to_report(ReportList *reports) { PyObject *pystring; char *cstring; - + + char *filename; + int lineno; + if (!PyErr_Occurred()) return 1; @@ -432,10 +435,15 @@ int BPy_errors_to_report(ReportList *reports) return 0; } + BPY_getFileAndNum(&filename, &lineno); + cstring= _PyUnicode_AsString(pystring); - BKE_report(reports, RPT_ERROR, cstring); - fprintf(stderr, "%s\n", cstring); // not exactly needed. just for testing + BKE_reportf(reports, RPT_ERROR, "%s\nlocation:%s:%d\n", cstring, filename, lineno); + + fprintf(stderr, "%s\nlocation:%s:%d\n", cstring, filename, lineno); // not exactly needed. just for testing + Py_DECREF(pystring); return 1; } + diff --git a/source/blender/python/rna_dump.py b/source/blender/python/rna_dump.py index 66fb76c35aa..3fb0c52c771 100644 --- a/source/blender/python/rna_dump.py +++ b/source/blender/python/rna_dump.py @@ -38,79 +38,79 @@ else: seek_count = [0] def seek(r, txt, recurs): - + seek_count[0] += 1 - + if PRINT_DATA_INT: if not (seek_count[0] % PRINT_DATA_INT): print(seek_count[0], txt) - + if PRINT_DATA: print(txt) - + newtxt = '' - + if recurs > MAX_RECURSIVE: #print ("Recursion is over max") #print (txt) return - + type_r = type(r) - + # print(type_r) # print(dir(r)) - + # basic types if type_r in (float, int, bool, type(None)): if PRINT_DATA: print(txt + ' -> ' + str(r)) return - + if type_r == str: if PRINT_DATA: print(txt + ' -> "' + str(r) + '"') return - + try: keys = r.keys() except: keys = None - + if keys != None: if PRINT_DATA: print(txt + '.keys() - ' + str(r.keys())) - + try: __members__ = dir(r) except: __members__ = [] - + for item in __members__: if item.startswith('__'): continue - + if GEN_PATH: newtxt = txt + '.' + item - + if item == 'rna_type' and VERBOSE_TYPE==False: # just avoid because it spits out loads of data continue - + try: value = getattr(r, item) except: value = None - + seek( value, newtxt, recurs + 1) - - + + if keys: for k in keys: if GEN_PATH: newtxt = txt + '["' + k + '"]' seek(r.__getitem__(k), newtxt, recurs+1) - + else: try: length = len( r ) except: length = 0 - + if VERBOSE==False and length >= 4: for i in (0, length-1): if i>0: if PRINT_DATA: print((' '*len(txt)) + ' ... skipping '+str(length-2)+' items ...') - + if GEN_PATH: newtxt = txt + '[' + str(i) + ']' seek(r[i], newtxt, recurs+1) else: @@ -123,10 +123,10 @@ seek(bpy.data, 'bpy.data', 0) ''' for d in dir(bpy.types): t = getattr(bpy.types, d) - try: r = t.__rna__ + try: r = t.bl_rna except: r = None if r: - seek(r, 'bpy.types.' + d + '.__rna__', 0) + seek(r, 'bpy.types.' + d + '.bl_rna', 0) ''' #print dir(bpy) diff --git a/source/blender/python/simple_enum_gen.py b/source/blender/python/simple_enum_gen.py index 59f048c2842..1b09a45fc86 100644 --- a/source/blender/python/simple_enum_gen.py +++ b/source/blender/python/simple_enum_gen.py @@ -25,7 +25,7 @@ defs = """ SPACE_OUTLINER, SPACE_BUTS, SPACE_FILE, - SPACE_IMAGE, + SPACE_IMAGE, SPACE_INFO, SPACE_SEQ, SPACE_TEXT, @@ -43,23 +43,23 @@ print '\tmod = PyModule_New("dummy");' print '\tPyModule_AddObject( submodule, "key", mod );' for d in defs.split('\n'): - + d = d.replace(',', ' ') w = d.split() - + if not w: continue - + try: w.remove("#define") except: pass - + # print w - + val = w[0] py_val = w[0] - + print '\tPyModule_AddObject( mod, "%s", PyLong_FromSize_t(%s) );' % (val, py_val) - + diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index b7832e74cd1..18ab7d9ffeb 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -41,6 +41,7 @@ #include "BKE_particle.h" #include "BKE_texture.h" +#include "DNA_meshdata_types.h" #include "DNA_texture_types.h" #include "DNA_particle_types.h" @@ -184,38 +185,44 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa } -static void pointdensity_cache_object(Render *re, PointDensity *pd, ObjectRen *obr) +static void pointdensity_cache_object(Render *re, PointDensity *pd, Object *ob) { int i; + DerivedMesh *dm; + MVert *mvert = NULL; + float cam_mat[4][4]; - if (!obr || !pd) return; - if(!obr->vertnodes) return; + dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL); + mvert= dm->getVertArray(dm); /* local object space */ - /* in case ob->imat isn't up-to-date */ - Mat4Invert(obr->ob->imat, obr->ob->obmat); + pd->totpoints= dm->getNumVerts(dm); + if (pd->totpoints == 0) return; + + pd->point_tree = BLI_bvhtree_new(pd->totpoints, 0.0, 4, 6); - pd->point_tree = BLI_bvhtree_new(obr->totvert, 0.0, 4, 6); - pd->totpoints = obr->totvert; + for(i=0; i < pd->totpoints; i++, mvert++) { + float co[3]; - for(i=0; i<obr->totvert; i++) { - float ver_co[3]; - VertRen *ver= RE_findOrAddVert(obr, i); - - VECCOPY(ver_co, ver->co); - Mat4MulVecfl(re->viewinv, ver_co); - - if (pd->ob_cache_space == TEX_PD_OBJECTSPACE) { - Mat4MulVecfl(obr->ob->imat, ver_co); - } else if (pd->psys_cache_space == TEX_PD_OBJECTLOC) { - VecSubf(ver_co, ver_co, obr->ob->loc); - } else { - /* TEX_PD_WORLDSPACE */ + VECCOPY(co, mvert->co); + + switch(pd->ob_cache_space) { + case TEX_PD_OBJECTSPACE: + break; + case TEX_PD_OBJECTLOC: + Mat4MulVecfl(ob->obmat, co); + VecSubf(co, co, ob->loc); + break; + case TEX_PD_WORLDSPACE: + default: + Mat4MulVecfl(ob->obmat, co); + break; } - - BLI_bvhtree_insert(pd->point_tree, i, ver_co, 1); + + BLI_bvhtree_insert(pd->point_tree, i, co, 1); } BLI_bvhtree_balance(pd->point_tree); + dm->release(dm); } static void cache_pointdensity(Render *re, Tex *tex) @@ -229,28 +236,19 @@ static void cache_pointdensity(Render *re, Tex *tex) if (pd->source == TEX_PD_PSYS) { Object *ob = pd->object; + ParticleSystem *psys; - if (!ob) return; - if (!pd->psys) return; + if (!ob || !pd->psys) return; + + psys= BLI_findlink(&ob->particlesystem, pd->psys-1); + if (!psys) return; - pointdensity_cache_psys(re, pd, ob, pd->psys); + pointdensity_cache_psys(re, pd, ob, psys); } else if (pd->source == TEX_PD_OBJECT) { Object *ob = pd->object; - ObjectRen *obr; - int found=0; - - /* find the obren that corresponds to the object */ - for (obr=re->objecttable.first; obr; obr=obr->next) { - if (obr->ob == ob) { - found=1; - break; + if (ob) pointdensity_cache_object(re, pd, ob); } - } - if (!found) return; - - pointdensity_cache_object(re, pd, obr); - } } static void free_pointdensity(Render *re, Tex *tex) diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index 89043a68684..f72041845ff 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1727,6 +1727,10 @@ void shade_lamp_loop(ShadeInput *shi, ShadeResult *shr) shr->combined[0] += shi->r*aodiff[0]; shr->combined[1] += shi->g*aodiff[1]; shr->combined[2] += shi->b*aodiff[2]; + + if (shr->combined[0] < 0.f) shr->combined[0]= 0.f; + if (shr->combined[1] < 0.f) shr->combined[1]= 0.f; + if (shr->combined[2] < 0.f) shr->combined[2]= 0.f; } } diff --git a/source/blender/render/intern/source/volume_precache.c b/source/blender/render/intern/source/volume_precache.c index 25645d9cce2..cfaf333d656 100644 --- a/source/blender/render/intern/source/volume_precache.c +++ b/source/blender/render/intern/source/volume_precache.c @@ -622,6 +622,11 @@ void vol_precache_objectinstance_threads(Render *re, ObjectInstanceRen *obi, Mat vp->data_r = MEM_callocN(sizeof(float)*vp->res[0]*vp->res[1]*vp->res[2], "volume light cache data red channel"); vp->data_g = MEM_callocN(sizeof(float)*vp->res[0]*vp->res[1]*vp->res[2], "volume light cache data green channel"); vp->data_b = MEM_callocN(sizeof(float)*vp->res[0]*vp->res[1]*vp->res[2], "volume light cache data blue channel"); + if (vp->data_r==0 || vp->data_g==0 || vp->data_b==0) { + MEM_freeN(vp); + vp = NULL; + return; + } obi->volume_precache = vp; /* Need a shadeinput to calculate scattering */ diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index 7deac8a4aa0..ec489e5261a 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -50,6 +50,10 @@ IF(WITH_OPENEXR) ADD_DEFINITIONS(-DWITH_OPENEXR) ENDIF(WITH_OPENEXR) +IF(WITH_OPENCOLLADA) + ADD_DEFINITIONS(-DWITH_COLLADA) +ENDIF(WITH_OPENCOLLADA) + IF(WITH_QUICKTIME) SET(INC ${INC} ../quicktime ${QUICKTIME_INC}) ADD_DEFINITIONS(-DWITH_QUICKTIME) diff --git a/source/blender/windowmanager/SConscript b/source/blender/windowmanager/SConscript index 08a291871f1..2a86d42f590 100644 --- a/source/blender/windowmanager/SConscript +++ b/source/blender/windowmanager/SConscript @@ -19,6 +19,9 @@ defs = [] if not env['WITH_BF_PYTHON']: defs.append('DISABLE_PYTHON') +if env['WITH_BF_COLLADA']: + defs.append('WITH_COLLADA') + if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' @@ -26,4 +29,7 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] +if env['WITH_GHOST_COCOA']: + sources.remove('intern/wm_apple.c') + env.BlenderLib ( 'bf_windowmanager', sources, Split(incs), defs, libtype=['core'], priority=[5] ) diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h index d326fadeba4..3d31341c66a 100644 --- a/source/blender/windowmanager/WM_types.h +++ b/source/blender/windowmanager/WM_types.h @@ -165,6 +165,7 @@ typedef struct wmNotifier { #define ND_COMPO_RESULT (11<<16) #define ND_KEYINGSET (12<<16) #define ND_SCENEDELETE (13<<16) +#define ND_LAYER (14<<16) /* NC_OBJECT Object */ #define ND_TRANSFORM (16<<16) diff --git a/source/blender/windowmanager/intern/wm_cursors.c b/source/blender/windowmanager/intern/wm_cursors.c index e2aedf42bd8..df483f9013e 100644 --- a/source/blender/windowmanager/intern/wm_cursors.c +++ b/source/blender/windowmanager/intern/wm_cursors.c @@ -181,7 +181,7 @@ void WM_cursor_grab(wmWindow *win, int wrap, int hide, int *bounds) void WM_cursor_ungrab(wmWindow *win) { if ((G.f & G_DEBUG) == 0) - if(win) + if(win && win->ghostwin) GHOST_SetCursorGrab(win->ghostwin, GHOST_kGrabDisable, NULL); } diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c index 05471329f32..882da1794c6 100644 --- a/source/blender/windowmanager/intern/wm_gesture.c +++ b/source/blender/windowmanager/intern/wm_gesture.c @@ -76,9 +76,13 @@ wmGesture *WM_gesture_new(bContext *C, wmEvent *event, int type) gesture->customdata= rect; rect->xmin= event->x - sx; rect->ymin= event->y - sy; - if(type==WM_GESTURE_CIRCLE) + if(type==WM_GESTURE_CIRCLE) { +#ifdef GESTURE_MEMORY + rect->xmax= circle_select_size; +#else rect->xmax= 25; // XXX temp - else { +#endif + } else { rect->xmax= event->x - sx; rect->ymax= event->y - sy; } diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c index 3caca041be7..48262e40ea7 100644 --- a/source/blender/windowmanager/intern/wm_keymap.c +++ b/source/blender/windowmanager/intern/wm_keymap.c @@ -306,6 +306,11 @@ char *WM_keymap_item_to_string(wmKeyMapItem *kmi, char *str, int len) if(kmi->oskey) strcat(buf, "Cmd "); + + if(kmi->keymodifier) { + strcat(buf, WM_key_event_string(kmi->keymodifier)); + strcat(buf, " "); + } strcat(buf, WM_key_event_string(kmi->type)); BLI_strncpy(str, buf, len); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index e37b6e919c6..1da6637a321 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -81,6 +81,7 @@ #include "wm.h" #include "wm_draw.h" #include "wm_event_system.h" +#include "wm_event_types.h" #include "wm_subwindow.h" #include "wm_window.h" @@ -1345,6 +1346,105 @@ static void WM_OT_save_mainfile(wmOperatorType *ot) } +/* XXX: move these collada operators to a more appropriate place */ +#ifdef WITH_COLLADA + +#include "../../collada/collada.h" + +static int wm_collada_export_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + //char name[FILE_MAX]; + //BLI_strncpy(name, G.sce, FILE_MAX); + //untitled(name); + + /* RNA_string_set(op->ptr, "path", "/tmp/test.dae"); */ + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +/* function used for WM_OT_save_mainfile too */ +static int wm_collada_export_exec(bContext *C, wmOperator *op) +{ + char filename[FILE_MAX]; + + if(RNA_property_is_set(op->ptr, "path")) + RNA_string_get(op->ptr, "path", filename); + else { + BLI_strncpy(filename, G.sce, FILE_MAX); + untitled(filename); + } + + //WM_write_file(C, filename, op->reports); + collada_export(CTX_data_scene(C), filename); + + /* WM_event_add_notifier(C, NC_WM|ND_FILESAVE, NULL); */ + + return OPERATOR_FINISHED; +} + +static void WM_OT_collada_export(wmOperatorType *ot) +{ + ot->name= "Export COLLADA"; + ot->idname= "WM_OT_collada_export"; + + ot->invoke= wm_collada_export_invoke; + ot->exec= wm_collada_export_exec; + ot->poll= WM_operator_winactive; + + ot->flag= 0; + + RNA_def_property(ot->srna, "path", PROP_STRING, PROP_FILEPATH); +} + +static int wm_collada_import_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + /* RNA_string_set(op->ptr, "path", "/tmp/test.dae"); */ + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +/* function used for WM_OT_save_mainfile too */ +static int wm_collada_import_exec(bContext *C, wmOperator *op) +{ + char filename[FILE_MAX]; + + if(RNA_property_is_set(op->ptr, "path")) + RNA_string_get(op->ptr, "path", filename); + else { + BLI_strncpy(filename, G.sce, FILE_MAX); + untitled(filename); + } + + //WM_write_file(C, filename, op->reports); + collada_import(C, filename); + + /* WM_event_add_notifier(C, NC_WM|ND_FILESAVE, NULL); */ + + return OPERATOR_FINISHED; +} + +static void WM_OT_collada_import(wmOperatorType *ot) +{ + ot->name= "Import COLLADA"; + ot->idname= "WM_OT_collada_import"; + + ot->invoke= wm_collada_import_invoke; + ot->exec= wm_collada_import_exec; + ot->poll= WM_operator_winactive; + + ot->flag= 0; + + RNA_def_property(ot->srna, "path", PROP_STRING, PROP_FILEPATH); +} + +#endif + + + /* *********************** */ static void WM_OT_window_fullscreen_toggle(wmOperatorType *ot) @@ -1536,6 +1636,10 @@ int WM_border_select_modal(bContext *C, wmOperator *op, wmEvent *event) /* **************** circle gesture *************** */ /* works now only for selection or modal paint stuff, calls exec while hold mouse, exit on release */ +#ifdef GESTURE_MEMORY +int circle_select_size= 25; // XXX - need some operator memory thing\! +#endif + int WM_gesture_circle_invoke(bContext *C, wmOperator *op, wmEvent *event) { op->customdata= WM_gesture_new(C, event, WM_GESTURE_CIRCLE); @@ -1553,6 +1657,9 @@ static void gesture_circle_apply(bContext *C, wmOperator *op) wmGesture *gesture= op->customdata; rcti *rect= gesture->customdata; + if(RNA_int_get(op->ptr, "gesture_mode")==GESTURE_MODAL_NOP) + return; + /* operator arguments and storage. */ RNA_int_set(op->ptr, "x", rect->xmin); RNA_int_set(op->ptr, "y", rect->ymin); @@ -1560,6 +1667,10 @@ static void gesture_circle_apply(bContext *C, wmOperator *op) if(op->type->exec) op->type->exec(C, op); + +#ifdef GESTURE_MEMORY + circle_select_size= rect->xmax; +#endif } int WM_gesture_circle_modal(bContext *C, wmOperator *op, wmEvent *event) @@ -1567,50 +1678,52 @@ int WM_gesture_circle_modal(bContext *C, wmOperator *op, wmEvent *event) wmGesture *gesture= op->customdata; rcti *rect= gesture->customdata; int sx, sy; - - switch(event->type) { - case MOUSEMOVE: - + + if(event->type== MOUSEMOVE) { wm_subwindow_getorigin(CTX_wm_window(C), gesture->swinid, &sx, &sy); - + rect->xmin= event->x - sx; rect->ymin= event->y - sy; - + wm_gesture_tag_redraw(C); - + if(gesture->mode) gesture_circle_apply(C, op); - - break; - case WHEELUPMOUSE: + } + else if (event->type==EVT_MODAL_MAP) { + switch (event->val) { + case GESTURE_MODAL_ADD: rect->xmax += 2 + rect->xmax/10; wm_gesture_tag_redraw(C); break; - case WHEELDOWNMOUSE: + case GESTURE_MODAL_SUB: rect->xmax -= 2 + rect->xmax/10; if(rect->xmax < 1) rect->xmax= 1; wm_gesture_tag_redraw(C); break; - case LEFTMOUSE: - case MIDDLEMOUSE: - case RIGHTMOUSE: - if(event->val==KM_RELEASE) { /* key release */ - wm_gesture_end(C, op); - return OPERATOR_FINISHED; - } - else { - if( RNA_struct_find_property(op->ptr, "event_type") ) - RNA_int_set(op->ptr, "event_type", event->type); - + case GESTURE_MODAL_SELECT: + case GESTURE_MODAL_DESELECT: + case GESTURE_MODAL_NOP: + if(RNA_struct_find_property(op->ptr, "gesture_mode")) + RNA_int_set(op->ptr, "gesture_mode", event->val); + + if(event->val != GESTURE_MODAL_NOP) { /* apply first click */ gesture_circle_apply(C, op); gesture->mode= 1; } break; - case ESCKEY: + + case GESTURE_MODAL_CANCEL: + case GESTURE_MODAL_CONFIRM: wm_gesture_end(C, op); return OPERATOR_CANCELLED; } + } + else { + return OPERATOR_PASS_THROUGH; + } + return OPERATOR_RUNNING_MODAL; } @@ -2197,7 +2310,22 @@ static void WM_OT_redraw_timer(wmOperatorType *ot) } +/* ************************** memory statistics for testing ***************** */ + +static int memory_statistics_exec(bContext *C, wmOperator *op) +{ + MEM_printmemlist_stats(); + return OPERATOR_FINISHED; +} +static void WM_OT_memory_statistics(wmOperatorType *ot) +{ + ot->name= "Memory Statistics"; + ot->idname= "WM_OT_memory_statistics"; + ot->description= "Print memory statistics to the console."; + + ot->exec= memory_statistics_exec; +} /* ******************************************************* */ @@ -2229,9 +2357,69 @@ void wm_operatortype_init(void) WM_operatortype_append(WM_OT_save_as_mainfile); WM_operatortype_append(WM_OT_save_mainfile); WM_operatortype_append(WM_OT_redraw_timer); + WM_operatortype_append(WM_OT_memory_statistics); WM_operatortype_append(WM_OT_debug_menu); WM_operatortype_append(WM_OT_search_menu); WM_operatortype_append(WM_OT_call_menu); + +#ifdef WITH_COLLADA + /* XXX: move these */ + WM_operatortype_append(WM_OT_collada_export); + WM_operatortype_append(WM_OT_collada_import); +#endif + +} + +/* called in transform_ops.c, on each regeneration of keymaps */ +static void gesture_circle_modal_keymap(wmKeyConfig *keyconf) +{ + static EnumPropertyItem modal_items[] = { + {GESTURE_MODAL_CANCEL, "CANCEL", 0, "Cancel", ""}, + {GESTURE_MODAL_CONFIRM, "CONFIRM", 0, "Confirm", ""}, + {GESTURE_MODAL_ADD, "ADD", 0, "Add", ""}, + {GESTURE_MODAL_SUB, "SUBTRACT", 0, "Subtract", ""}, + + {GESTURE_MODAL_SELECT, "SELECT", 0, "Select", ""}, + {GESTURE_MODAL_DESELECT,"DESELECT", 0, "DeSelect", ""}, + {GESTURE_MODAL_NOP,"NOP", 0, "No Operation", ""}, + + + {0, NULL, 0, NULL, NULL}}; + + wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "View3D Gesture Circle"); + + /* this function is called for each spacetype, only needs to add map once */ + if(keymap) return; + + keymap= WM_modalkeymap_add(keyconf, "View3D Gesture Circle", modal_items); + + /* items for modal map */ + WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CANCEL); + WM_modalkeymap_add_item(keymap, RIGHTMOUSE, KM_ANY, KM_ANY, 0, GESTURE_MODAL_CANCEL); + + WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, GESTURE_MODAL_CONFIRM); + WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, 0, 0, GESTURE_MODAL_CONFIRM); + + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_SELECT); + +// WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_DESELECT); // defailt 2.4x + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_SHIFT, 0, GESTURE_MODAL_DESELECT); + + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); + +// WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, 0, 0, GESTURE_MODAL_NOP); // defailt 2.4x + WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_SHIFT, 0, GESTURE_MODAL_NOP); + + + WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_SUB); + WM_modalkeymap_add_item(keymap, PADMINUS, KM_PRESS, 0, 0, GESTURE_MODAL_SUB); + WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, GESTURE_MODAL_ADD); + WM_modalkeymap_add_item(keymap, PADPLUSKEY, KM_PRESS, 0, 0, GESTURE_MODAL_ADD); + + /* assign map to operators */ + WM_modalkeymap_assign(keymap, "VIEW3D_OT_select_circle"); + WM_modalkeymap_assign(keymap, "UV_OT_circle_select"); + } /* default keymap for windows and screens, only call once per WM */ @@ -2256,7 +2444,9 @@ void wm_window_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "WM_OT_open_mainfile", OKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "WM_OT_link_append", OKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); - WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0); + km= WM_keymap_add_item(keymap, "WM_OT_link_append", F1KEY, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(km->ptr, "link", FALSE); + WM_keymap_add_item(keymap, "WM_OT_save_mainfile", SKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_save_mainfile", WKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "WM_OT_save_as_mainfile", SKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); @@ -2320,5 +2510,37 @@ void wm_window_keymap(wmKeyConfig *keyconf) km = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", F12KEY, KM_PRESS, KM_SHIFT, 0); RNA_string_set(km->ptr, "path", "area.type"); RNA_string_set(km->ptr, "value", "DOPESHEET_EDITOR"); + + gesture_circle_modal_keymap(keyconf); } +/* Generic itemf's for operators that take library args */ +static EnumPropertyItem *rna_id_itemf(bContext *C, PointerRNA *ptr, int *free, ID *id) +{ + EnumPropertyItem *item= NULL, item_tmp; + int totitem= 0; + int i= 0; + + memset(&item_tmp, 0, sizeof(item_tmp)); + + for( ; id; id= id->next) { + item_tmp.identifier= item_tmp.name= id->name+2; + item_tmp.value= i++; + RNA_enum_item_add(&item, &totitem, &item_tmp); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + +/* can add more */ +EnumPropertyItem *RNA_group_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + return rna_id_itemf(C, ptr, free, (ID *)CTX_data_main(C)->group.first); +} +EnumPropertyItem *RNA_scene_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + return rna_id_itemf(C, ptr, free, (ID *)CTX_data_main(C)->scene.first); +} diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h index 609b6142640..c476b7efa1e 100644 --- a/source/blender/windowmanager/wm.h +++ b/source/blender/windowmanager/wm.h @@ -76,5 +76,12 @@ void wm_autosave_delete(void); void wm_autosave_read(bContext *C, struct ReportList *reports); void wm_autosave_location(char *filename); +/* hack to store circle select size - campbell, must replace with nice operator memory */ +#define GESTURE_MEMORY + +#ifdef GESTURE_MEMORY +extern int circle_select_size; +#endif + #endif /* WM_H */ diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index c7588795a15..a07f9f26725 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -261,7 +261,15 @@ #define EVT_BUT_OPEN 0x5021 #define EVT_MODAL_MAP 0x5022 - +/* NOTE: these defines are saved in keymap files, do not change values but just add new ones */ +#define GESTURE_MODAL_CANCEL 1 +#define GESTURE_MODAL_CONFIRM 2 +#define GESTURE_MODAL_ADD 3 +#define GESTURE_MODAL_SUB 4 + +#define GESTURE_MODAL_SELECT 5 +#define GESTURE_MODAL_DESELECT 6 +#define GESTURE_MODAL_NOP 7 #endif /* WM_EVENT_TYPES_H */ diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 5f352e1d67b..dc679101fa5 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -207,7 +207,6 @@ IF(APPLE) ADD_CUSTOM_COMMAND( TARGET blender POST_BUILD MAIN_DEPENDENCY blender COMMAND find ${TARGETDIR} -name .svn -prune -exec rm -rf {} "\;" - COMMAND find ${TARGETDIR} -name __MACOSX -prune -exec rm -rf {} "\;" ) @@ -344,6 +343,7 @@ IF(WIN32) TARGET blender POST_BUILD MAIN_DEPENDENCY blender COMMAND find ${TARGETDIR}/blender.app -name .DS_Store -prune -exec rm -rf {} "\;" COMMAND find ${TARGETDIR}/blender.app -name .svn -prune -exec rm -rf {} "\;" + COMMAND find ${TARGETDIR}/blender.app -name __MACOSX -prune -exec rm -rf {} "\;" ) ENDIF(APPLE) >>>>>>> .merge-right.r23146 @@ -590,7 +590,9 @@ IF(UNIX) bf_cineon bf_openexr bf_dds - bf_readblenfile + bf_readblenfile + bf_collada + blender_BSP blender_bop bf_kernel bf_decimation diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp index ca5faf00bb6..a52570d13b1 100644 --- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp +++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp @@ -120,14 +120,20 @@ static BlendFileData *load_game_data(char *filename) return bfd; } -extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, int always_use_expand_framing) +extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *cam_frame, int always_use_expand_framing) { /* context values */ struct wmWindow *win= CTX_wm_window(C); struct Scene *scene= CTX_data_scene(C); struct Main* maggie1= CTX_data_main(C); - - + + + RAS_Rect area_rect; + area_rect.SetLeft(cam_frame->xmin); + area_rect.SetBottom(cam_frame->ymin); + area_rect.SetRight(cam_frame->xmax); + area_rect.SetTop(cam_frame->ymax); + int exitrequested = KX_EXIT_REQUEST_NO_REQUEST; Main* blenderdata = maggie1; @@ -167,7 +173,7 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, int alw bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0); bool novertexarrays = (SYS_GetCommandLineInt(syshandle, "novertexarrays", 0) != 0); // create the canvas, rasterizer and rendertools - RAS_ICanvas* canvas = new KX_BlenderCanvas(win, ar); + RAS_ICanvas* canvas = new KX_BlenderCanvas(win, area_rect); canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE); RAS_IRenderTools* rendertools = new KX_BlenderRenderTools(); RAS_IRasterizer* rasterizer = NULL; @@ -239,15 +245,22 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, int alw projmat.setElem(i, projmat_linear[i]); } - if(rv3d->persp==V3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { + if(scene->gm.framing.type == SCE_GAMEFRAMING_BARS) { /* Letterbox */ + camzoom = 1.0f; + } + else { camzoom = (1.41421 + (rv3d->camzoom / 50.0)); camzoom *= camzoom; + camzoom = 4.0 / camzoom; } - else + } + else { camzoom = 2.0; + } - camzoom = 4.0 / camzoom; + ketsjiengine->SetDrawType(v3d->drawtype); ketsjiengine->SetCameraZoom(camzoom); @@ -330,14 +343,16 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, int alw if (blscene->gm.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) blscene->gm.stereomode); } + + rasterizer->SetBackColor(blscene->gm.framing.col[0], blscene->gm.framing.col[1], blscene->gm.framing.col[2], 0.0f); } if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME) { - if (rv3d->persp != V3D_CAMOB) + if (rv3d->persp != RV3D_CAMOB) { ketsjiengine->EnableCameraOverride(startscenename); - ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == V3D_ORTHO)); + ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == RV3D_ORTHO)); ketsjiengine->SetCameraOverrideProjectionMatrix(projmat); ketsjiengine->SetCameraOverrideViewMatrix(viewmat); ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far); @@ -589,6 +604,12 @@ extern "C" void StartKetsjiShellSimulation(struct wmWindow *win, Main* blenderdata = maggie; + RAS_Rect area_rect; + area_rect.SetLeft(ar->winrct.xmin); + area_rect.SetBottom(ar->winrct.ymin); + area_rect.SetRight(ar->winrct.xmax); + area_rect.SetTop(ar->winrct.ymax); + char* startscenename = scenename; char pathname[FILE_MAXDIR+FILE_MAXFILE]; STR_String exitstring = ""; @@ -619,7 +640,7 @@ extern "C" void StartKetsjiShellSimulation(struct wmWindow *win, bool usemat = false; // create the canvas, rasterizer and rendertools - RAS_ICanvas* canvas = new KX_BlenderCanvas(win, ar); + RAS_ICanvas* canvas = new KX_BlenderCanvas(win, area_rect); //canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE); RAS_IRenderTools* rendertools = new KX_BlenderRenderTools(); RAS_IRasterizer* rasterizer = NULL; @@ -676,6 +697,7 @@ extern "C" void StartKetsjiShellSimulation(struct wmWindow *win, if (blscene->gm.stereomode != RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) rasterizer->SetStereoMode((RAS_IRasterizer::StereoMode) blscene->gm.stereomode); } + rasterizer->SetBackColor(blscene->gm.framing.col[0], blscene->gm.framing.col[1], blscene->gm.framing.col[2], 0.0f); if (exitrequested != KX_EXIT_REQUEST_QUIT_GAME) { diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp index 360794ceb33..73803846d70 100644 --- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp +++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp @@ -35,9 +35,9 @@ #endif -KX_BlenderCanvas::KX_BlenderCanvas(struct wmWindow *win, ARegion *ar) : +KX_BlenderCanvas::KX_BlenderCanvas(struct wmWindow *win, RAS_Rect &rect) : m_win(win), -m_ar(ar) +m_frame_rect(rect) { } @@ -96,12 +96,12 @@ void KX_BlenderCanvas::ClearBuffer(int type) int KX_BlenderCanvas::GetWidth( ) const { - return m_ar->winx; + return m_frame_rect.GetWidth(); } int KX_BlenderCanvas::GetHeight( ) const { - return m_ar->winy; + return m_frame_rect.GetHeight(); } RAS_Rect & @@ -119,8 +119,8 @@ SetViewPort( ){ int vp_width = (x2 - x1) + 1; int vp_height = (y2 - y1) + 1; - int minx = m_ar->winrct.xmin; - int miny = m_ar->winrct.ymin; + int minx = m_frame_rect.GetLeft(); + int miny = m_frame_rect.GetBottom(); m_area_rect.SetLeft(minx + x1); m_area_rect.SetBottom(miny + y1); @@ -162,9 +162,9 @@ void KX_BlenderCanvas::SetMouseState(RAS_MouseState mousestate) // (0,0) is top left, (width,height) is bottom right void KX_BlenderCanvas::SetMousePosition(int x,int y) { - int winX = m_ar->winrct.xmin; - int winY = m_ar->winrct.ymin; - int winH = m_ar->winy; + int winX = m_frame_rect.GetLeft(); + int winY = m_frame_rect.GetBottom(); + int winH = m_frame_rect.GetHeight(); BL_warp_pointer(winX + x, winY + (winH-y-1)); } @@ -173,5 +173,5 @@ void KX_BlenderCanvas::SetMousePosition(int x,int y) void KX_BlenderCanvas::MakeScreenShot(const char* filename) { - BL_MakeScreenShot(m_ar, filename); +// BL_MakeScreenShot(m_ar, filename); } diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h index d49c877f610..5967ce78b46 100644 --- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h +++ b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.h @@ -64,7 +64,7 @@ public: * * @param area The Blender ARegion to run the game within. */ - KX_BlenderCanvas(struct wmWindow* win, struct ARegion* ar); + KX_BlenderCanvas(struct wmWindow* win, struct RAS_Rect &rect); ~KX_BlenderCanvas(); void @@ -116,10 +116,10 @@ public: return m_displayarea; }; - RAS_Rect & - GetDisplayArea( + void + SetDisplayArea(RAS_Rect *rect ) { - return m_displayarea; + m_displayarea= *rect; }; RAS_Rect & @@ -167,8 +167,8 @@ public: private: /** Blender area the game engine is running within */ - struct ARegion* m_ar; struct wmWindow* m_win; + RAS_Rect m_frame_rect; RAS_Rect m_area_rect; diff --git a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp b/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp index 18724783307..0eb418ddfaf 100644 --- a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp +++ b/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.cpp @@ -72,8 +72,8 @@ GPW_KeyboardDevice::GPW_KeyboardDevice(void) { - m_seperateLeftRight = false; - m_seperateLeftRightInitialized = false; + m_separateLeftRight = false; + m_separateLeftRightInitialized = false; m_reverseKeyTranslateTable['A' ] = KX_AKEY ; m_reverseKeyTranslateTable['B' ] = KX_BKEY ; @@ -222,10 +222,10 @@ void GPW_KeyboardDevice::ConvertModifierKey(WPARAM wParam, bool isDown) It didn't work all that well on some newer hardware, and worked less well with the passage of time, so it was fully disabled in ME. */ - if (!m_seperateLeftRightInitialized && isDown) { + if (!m_separateLeftRightInitialized && isDown) { CheckForSeperateLeftRight(wParam); } - if (m_seperateLeftRight) { + if (m_separateLeftRight) { bool down = HIBYTE(::GetKeyState(VK_LSHIFT)) != 0; ConvertEvent(VK_LSHIFT, down); down = HIBYTE(::GetKeyState(VK_RSHIFT)) != 0; @@ -255,26 +255,26 @@ void GPW_KeyboardDevice::ConvertModifierKey(WPARAM wParam, bool isDown) void GPW_KeyboardDevice::CheckForSeperateLeftRight(WPARAM wParam) { - // Check whether this system supports seperate left and right keys + // Check whether this system supports separate left and right keys switch (wParam) { case VK_SHIFT: - m_seperateLeftRight = + m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LSHIFT)) != 0) || (HIBYTE(::GetKeyState(VK_RSHIFT)) != 0) ? true : false; break; case VK_CONTROL: - m_seperateLeftRight = + m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LCONTROL)) != 0) || (HIBYTE(::GetKeyState(VK_RCONTROL)) != 0) ? true : false; break; case VK_MENU: - m_seperateLeftRight = + m_separateLeftRight = (HIBYTE(::GetKeyState(VK_LMENU)) != 0) || (HIBYTE(::GetKeyState(VK_RMENU)) != 0) ? true : false; break; } - m_seperateLeftRightInitialized = true; + m_separateLeftRightInitialized = true; } diff --git a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.h b/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.h index cae7488c70d..d8185f01ce9 100644 --- a/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.h +++ b/source/gameengine/GamePlayer/common/windows/GPW_KeyboardDevice.h @@ -57,9 +57,9 @@ protected: void CheckForSeperateLeftRight(WPARAM wParam); /** Stores the capability of this system to distinguish left and right modifier keys. */ - bool m_seperateLeftRight; + bool m_separateLeftRight; /** Stores the initialization state of the member m_leftRightDistinguishable. */ - bool m_seperateLeftRightInitialized; + bool m_separateLeftRightInitialized; }; #endif //_GPW_KEYBOARDDEVICE_H_ diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp index f09cdd7d720..1339200a740 100644 --- a/source/gameengine/Ketsji/KX_PythonInit.cpp +++ b/source/gameengine/Ketsji/KX_PythonInit.cpp @@ -200,6 +200,127 @@ static PyObject* gPyExpandPath(PyObject*, PyObject* args) return PyUnicode_FromString(expanded); } +static char gPyStartGame_doc[] = +"startGame(blend)\n\ +Loads the blend file"; + +static PyObject* gPyStartGame(PyObject*, PyObject* args) +{ + char* blendfile; + + if (!PyArg_ParseTuple(args, "s:startGame", &blendfile)) + return NULL; + + gp_KetsjiEngine->RequestExit(KX_EXIT_REQUEST_START_OTHER_GAME); + gp_KetsjiEngine->SetNameNextGame(blendfile); + + Py_RETURN_NONE; +} + +static char gPyEndGame_doc[] = +"endGame()\n\ +Ends the current game"; + +static PyObject* gPyEndGame(PyObject*) +{ + gp_KetsjiEngine->RequestExit(KX_EXIT_REQUEST_QUIT_GAME); + + //printf("%s\n", gp_GamePythonPath); + + Py_RETURN_NONE; +} + +static char gPyRestartGame_doc[] = +"restartGame()\n\ +Restarts the current game by reloading the .blend file"; + +static PyObject* gPyRestartGame(PyObject*) +{ + gp_KetsjiEngine->RequestExit(KX_EXIT_REQUEST_RESTART_GAME); + gp_KetsjiEngine->SetNameNextGame(gp_GamePythonPath); + + Py_RETURN_NONE; +} + +static char gPySaveGlobalDict_doc[] = +"saveGlobalDict()\n\ +Saves GameLogic.globalDict to a file"; + +static PyObject* gPySaveGlobalDict(PyObject*) +{ + char marshal_path[512]; + char *marshal_buffer = NULL; + unsigned int marshal_length; + FILE *fp = NULL; + + pathGamePythonConfig(marshal_path); + marshal_length = saveGamePythonConfig(&marshal_buffer); + + if (marshal_length && marshal_buffer) + { + fp = fopen(marshal_path, "wb"); + + if (fp) + { + if (fwrite(marshal_buffer, 1, marshal_length, fp) != marshal_length) + printf("Warning: could not write marshal data\n"); + + fclose(fp); + } else { + printf("Warning: could not open marshal file\n"); + } + } else { + printf("Warning: could not create marshal buffer\n"); + } + + if (marshal_buffer) + delete [] marshal_buffer; + + Py_RETURN_NONE; +} + +static char gPyLoadGlobalDict_doc[] = +"LoadGlobalDict()\n\ +Loads GameLogic.globalDict from a file"; + +static PyObject* gPyLoadGlobalDict(PyObject*) +{ + char marshal_path[512]; + char *marshal_buffer = NULL; + unsigned int marshal_length; + FILE *fp = NULL; + int result; + + pathGamePythonConfig(marshal_path); + + fp = fopen(marshal_path, "rb"); + + if (fp) { + // obtain file size: + fseek (fp, 0, SEEK_END); + marshal_length = ftell(fp); + rewind(fp); + + marshal_buffer = (char*)malloc (sizeof(char)*marshal_length); + + result = fread(marshal_buffer, 1, marshal_length, fp); + + if (result == marshal_length) { + loadGamePythonConfig(marshal_buffer, marshal_length); + } else { + printf("Warning: could not read all of '%s'\n", marshal_path); + } + + free(marshal_buffer); + fclose(fp); + } else { + printf("Warning: could not open '%s'\n", marshal_path); + } + + Py_RETURN_NONE; +} + + static char gPySendMessage_doc[] = "sendMessage(subject, [body, to, from])\n\ sends a message in same manner as a message actuator\ @@ -466,6 +587,11 @@ static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *) static struct PyMethodDef game_methods[] = { {"expandPath", (PyCFunction)gPyExpandPath, METH_VARARGS, (const char *)gPyExpandPath_doc}, + {"startGame", (PyCFunction)gPyStartGame, METH_VARARGS, (const char *)gPyStartGame_doc}, + {"endGame", (PyCFunction)gPyEndGame, METH_NOARGS, (const char *)gPyEndGame_doc}, + {"restartGame", (PyCFunction)gPyRestartGame, METH_NOARGS, (const char *)gPyRestartGame_doc}, + {"saveGlobalDict", (PyCFunction)gPySaveGlobalDict, METH_NOARGS, (const char *)gPySaveGlobalDict_doc}, + {"loadGlobalDict", (PyCFunction)gPyLoadGlobalDict, METH_NOARGS, (const char *)gPyLoadGlobalDict_doc}, {"sendMessage", (PyCFunction)gPySendMessage, METH_VARARGS, (const char *)gPySendMessage_doc}, {"getCurrentController", (PyCFunction) SCA_PythonController::sPyGetCurrentController, diff --git a/source/gameengine/Rasterizer/RAS_ICanvas.h b/source/gameengine/Rasterizer/RAS_ICanvas.h index dae4fb3f4d2..a5ef18275ac 100644 --- a/source/gameengine/Rasterizer/RAS_ICanvas.h +++ b/source/gameengine/Rasterizer/RAS_ICanvas.h @@ -135,9 +135,9 @@ public: GetDisplayArea( ) const = 0; - virtual - RAS_Rect & - GetDisplayArea( + virtual + void + SetDisplayArea(RAS_Rect *rect ) = 0; /** diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index ad53e1d22e9..1a9ae6e34b0 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -107,11 +107,7 @@ bool RAS_OpenGLRasterizer::Init() { GPU_state_init(); - m_redback = 0.4375; - m_greenback = 0.4375; - m_blueback = 0.4375; - m_alphaback = 0.0; - + m_ambr = 0.0f; m_ambg = 0.0f; m_ambb = 0.0f; @@ -128,6 +124,12 @@ bool RAS_OpenGLRasterizer::Init() glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + m_redback = 0.4375; + m_greenback = 0.4375; + m_blueback = 0.4375; + m_alphaback = 0.0; + glShadeModel(GL_SMOOTH); return true; @@ -386,6 +388,7 @@ void RAS_OpenGLRasterizer::EndFrame() void RAS_OpenGLRasterizer::SetRenderArea() { + RAS_Rect area; // only above/below stereo method needs viewport adjustment switch (m_stereomode) { @@ -394,19 +397,21 @@ void RAS_OpenGLRasterizer::SetRenderArea() { case RAS_STEREO_LEFTEYE: // upper half of window - m_2DCanvas->GetDisplayArea().SetLeft(0); - m_2DCanvas->GetDisplayArea().SetBottom(m_2DCanvas->GetHeight() - + area.SetLeft(0); + area.SetBottom(m_2DCanvas->GetHeight() - int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2); - m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth())); - m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight())); + area.SetRight(int(m_2DCanvas->GetWidth())); + area.SetTop(int(m_2DCanvas->GetHeight())); + m_2DCanvas->SetDisplayArea(&area); break; case RAS_STEREO_RIGHTEYE: // lower half of window - m_2DCanvas->GetDisplayArea().SetLeft(0); - m_2DCanvas->GetDisplayArea().SetBottom(0); - m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth())); - m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2); + area.SetLeft(0); + area.SetBottom(0); + area.SetRight(int(m_2DCanvas->GetWidth())); + area.SetTop(int(m_2DCanvas->GetHeight() - m_noOfScanlines) / 2); + m_2DCanvas->SetDisplayArea(&area); break; } break; @@ -415,26 +420,29 @@ void RAS_OpenGLRasterizer::SetRenderArea() { case RAS_STEREO_LEFTEYE: // Left half of window - m_2DCanvas->GetDisplayArea().SetLeft(0); - m_2DCanvas->GetDisplayArea().SetBottom(0); - m_2DCanvas->GetDisplayArea().SetRight(m_2DCanvas->GetWidth()/2); - m_2DCanvas->GetDisplayArea().SetTop(m_2DCanvas->GetHeight()); + area.SetLeft(0); + area.SetBottom(0); + area.SetRight(m_2DCanvas->GetWidth()/2); + area.SetTop(m_2DCanvas->GetHeight()); + m_2DCanvas->SetDisplayArea(&area); break; case RAS_STEREO_RIGHTEYE: // Right half of window - m_2DCanvas->GetDisplayArea().SetLeft(m_2DCanvas->GetWidth()/2); - m_2DCanvas->GetDisplayArea().SetBottom(0); - m_2DCanvas->GetDisplayArea().SetRight(m_2DCanvas->GetWidth()); - m_2DCanvas->GetDisplayArea().SetTop(m_2DCanvas->GetHeight()); + area.SetLeft(m_2DCanvas->GetWidth()/2); + area.SetBottom(0); + area.SetRight(m_2DCanvas->GetWidth()); + area.SetTop(m_2DCanvas->GetHeight()); + m_2DCanvas->SetDisplayArea(&area); break; } break; default: // every available pixel - m_2DCanvas->GetDisplayArea().SetLeft(0); - m_2DCanvas->GetDisplayArea().SetBottom(0); - m_2DCanvas->GetDisplayArea().SetRight(int(m_2DCanvas->GetWidth())); - m_2DCanvas->GetDisplayArea().SetTop(int(m_2DCanvas->GetHeight())); + area.SetLeft(0); + area.SetBottom(0); + area.SetRight(int(m_2DCanvas->GetWidth())); + area.SetTop(int(m_2DCanvas->GetHeight())); + m_2DCanvas->SetDisplayArea(&area); break; } } diff --git a/tools/Blender.py b/tools/Blender.py index 4a8e8d9bb30..f4007a0145b 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -160,6 +160,13 @@ def setup_staticlibs(lenv): if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross'): libincs += Split(lenv['BF_PTHREADS_LIBPATH']) + if lenv['WITH_BF_COLLADA']: + libincs += Split(lenv['BF_OPENCOLLADA_LIBPATH']) + if lenv['OURPLATFORM'] not in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + libincs += Split(lenv['BF_PCRE_LIBPATH']) + libincs += Split(lenv['BF_EXPAT_LIBPATH']) + + return statlibs, libincs def setup_syslibs(lenv): @@ -212,6 +219,10 @@ def setup_syslibs(lenv): syslibs += Split(lenv['BF_PTHREADS_LIB']) if lenv['WITH_BF_LCMS']: syslibs.append(lenv['BF_LCMS_LIB']) + if lenv['WITH_BF_COLLADA']: + syslibs.append(lenv['BF_PCRE_LIB']) + syslibs += Split(lenv['BF_OPENCOLLADA_LIB']) + syslibs.append(lenv['BF_EXPAT_LIB']) syslibs += lenv['LLIBS'] @@ -457,7 +468,13 @@ def AppIt(target=None, source=None, env=None): a = '%s' % (target[0]) builddir, b = os.path.split(a) libdir = env['LCGDIR'][1:] - + osxarch = env['MACOSX_ARCHITECTURE'] + print("compiled architecture: %s"%(osxarch)) + if libdir == '../lib/darwin-9.x.universal': + python_zip = 'python_' + osxarch + '.zip' # set specific python_arch.zip + else: + python_zip = 'python.zip' # compatibility for darwin8 python.zip + print("unzipping to app-bundle: %s"%(python_zip)) bldroot = env.Dir('.').abspath binary = env['BINARYKIND'] @@ -478,7 +495,7 @@ def AppIt(target=None, source=None, env=None): cmd = 'cp %s/%s %s/%s.app/Contents/MacOS/%s'%(builddir, binary,builddir, binary, binary) commands.getoutput(cmd) cmd = 'mkdir %s/%s.app/Contents/MacOS/.blender/'%(builddir, binary) - print cmd +# print cmd commands.getoutput(cmd) cmd = builddir + '/%s.app/Contents/MacOS/.blender'%binary shutil.copy(bldroot + '/bin/.blender/.bfont.ttf', cmd) @@ -491,7 +508,7 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'mkdir %s/%s.app/Contents/MacOS/.blender/python/'%(builddir,binary) commands.getoutput(cmd) - cmd = 'unzip -q %s/release/python.zip -d %s/%s.app/Contents/MacOS/.blender/python/'%(libdir,builddir,binary) + cmd = 'unzip -q %s/release/%s -d %s/%s.app/Contents/MacOS/.blender/python/'%(libdir,python_zip,builddir,binary) commands.getoutput(cmd) cmd = 'cp -R %s/release/scripts %s/%s.app/Contents/MacOS/.blender/'%(bldroot,builddir,binary) commands.getoutput(cmd) @@ -505,6 +522,8 @@ def AppIt(target=None, source=None, env=None): commands.getoutput(cmd) cmd = 'find %s/%s.app -name .DS_Store -exec rm -rf {} \;'%(builddir, binary) commands.getoutput(cmd) + cmd = 'find %s/%s.app -name __MACOSX -exec rm -rf {} \;'%(builddir, binary) + commands.getoutput(cmd) # extract copy system python, be sure to update other build systems # when making changes to the files that are copied. diff --git a/tools/btools.py b/tools/btools.py index 2a48db4869c..db062ceae35 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -53,6 +53,7 @@ def validate_arguments(args, bc): 'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH', 'WITH_BF_FFTW3', 'BF_FFTW3', 'BF_FFTW3_INC', 'BF_FFTW3_LIB', 'BF_FFTW3_LIBPATH', 'WITH_BF_STATICOPENGL', 'BF_OPENGL', 'BF_OPENGL_INC', 'BF_OPENGL_LIB', 'BF_OPENGL_LIBPATH', 'BF_OPENGL_LIB_STATIC', + 'WITH_BF_COLLADA', 'BF_COLLADA', 'BF_COLLADA_INC', 'BF_COLLADA_LIB', 'BF_OPENCOLLADA', 'BF_OPENCOLLADA_INC', 'BF_OPENCOLLADA_LIB', 'BF_OPENCOLLADA_LIBPATH', 'BF_PCRE', 'BF_PCRE_LIB', 'BF_PCRE_LIBPATH', 'BF_EXPAT', 'BF_EXPAT_LIB', 'BF_EXPAT_LIBPATH', 'WITH_BF_PLAYER', 'WITH_BF_NOBLENDER', 'WITH_BF_BINRELOC', @@ -63,6 +64,7 @@ def validate_arguments(args, bc): 'WITHOUT_BF_INSTALL', 'WITHOUT_BF_PYTHON_INSTALL', 'WITH_BF_OPENMP', + 'WITH_GHOST_COCOA', 'BF_FANCY', 'BF_QUIET', 'BF_X264_CONFIG', 'BF_XVIDCORE_CONFIG', @@ -84,7 +86,7 @@ def validate_arguments(args, bc): 'BF_PROFILE_CFLAGS', 'BF_PROFILE_CCFLAGS', 'BF_PROFILE_CXXFLAGS', 'BF_PROFILE_LINKFLAGS', 'BF_DEBUG_CFLAGS', 'BF_DEBUG_CCFLAGS', 'BF_DEBUG_CXXFLAGS', 'C_WARN', 'CC_WARN', 'CXX_WARN', - 'LLIBS', 'PLATFORM_LINKFLAGS', + 'LLIBS', 'PLATFORM_LINKFLAGS','MACOSX_ARCHITECTURE', ] @@ -312,6 +314,7 @@ def read_opts(cfg, args): ('BF_FREETYPE_LIBPATH', 'Freetype library path', ''), (BoolVariable('WITH_BF_OPENMP', 'Use OpenMP if true', False)), + (BoolVariable('WITH_GHOST_COCOA', 'Use Cocoa-framework if true', False)), (BoolVariable('WITH_BF_QUICKTIME', 'Use QuickTime if true', False)), ('BF_QUICKTIME', 'QuickTime base path', ''), @@ -332,6 +335,21 @@ def read_opts(cfg, args): ('BF_OPENGL_LIBPATH', 'OpenGL library path', ''), ('BF_OPENGL_LIB_STATIC', 'OpenGL static libraries', ''), ('BF_OPENGL_LINKFLAGS', 'OpenGL link flags', ''), + + (BoolVariable('WITH_BF_COLLADA', 'Build COLLADA import/export module if true', False)), + ('BF_COLLADA', 'COLLADA base path', ''), + ('BF_COLLADA_INC', 'COLLADA include path', ''), + ('BF_COLLADA_LIB', 'COLLADA library', ''), + ('BF_OPENCOLLADA', 'OpenCollada base path', ''), + ('BF_OPENCOLLADA_INC', 'OpenCollada base include path', ''), + ('BF_OPENCOLLADA_LIB', 'OpenCollada library', ''), + ('BF_OPENCOLLADA_LIBPATH', 'OpenCollada library path', ''), + ('BF_PCRE', 'PCRE base path', ''), + ('BF_PCRE_LIB', 'PCRE library', ''), + ('BF_PCRE_LIBPATH', 'PCRE library path', ''), + ('BF_EXPAT', 'Expat base path', ''), + ('BF_EXPAT_LIB', 'Expat library', ''), + ('BF_EXPAT_LIBPATH', 'Expat library path', ''), (BoolVariable('WITH_BF_PLAYER', 'Build blenderplayer if true', False)), (BoolVariable('WITH_BF_NOBLENDER', 'Do not build blender if true', False)), @@ -351,6 +369,7 @@ def read_opts(cfg, args): ('LLIBS', 'Platform libs', ''), ('PLATFORM_LINKFLAGS', 'Platform linkflags', ''), + ('MACOSX_ARCHITECTURE', 'python_arch.zip select', ''), (BoolVariable('BF_PROFILE', 'Add profiling information if true', False)), ('BF_PROFILE_CFLAGS', 'C only profiling flags', ''), |